From 2ff9d9ad5fa5a7e0fa62bc716dd8b9c9b3071919 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 22 May 2026 11:30:37 +0200 Subject: [PATCH 01/16] Update SwagCommercial store API schema (#405) * [create-pull-request] automated change (#115) Co-authored-by: shopwareBot * Remove vars * Remove vars * [create-pull-request] automated change (#120) Co-authored-by: shopwareBot * Add version * [create-pull-request] automated change (#130) Co-authored-by: shopwareBot * [create-pull-request] automated change (#129) Co-authored-by: shopwareBot * [create-pull-request] automated change (#140) Co-authored-by: shopwareBot * feat: upgrade to v4 * fix: commercial to 6.6 * fix: remove hardcoded version * fix: upgrade deps * fix: upgrade peter-evans/create-pull-request to v7 * [create-pull-request] automated change (#292) Co-authored-by: shopwareBot * [create-pull-request] automated change (#291) Co-authored-by: shopwareBot * [create-pull-request] automated change (#290) Co-authored-by: shopwareBot * [create-pull-request] automated change (#300) Co-authored-by: shopwareBot * [create-pull-request] automated change (#299) Co-authored-by: shopwareBot * [create-pull-request] automated change (#303) Co-authored-by: shopwareBot * [create-pull-request] automated change (#304) Co-authored-by: shopwareBot * [create-pull-request] automated change (#310) Co-authored-by: shopwareBot * [create-pull-request] automated change (#309) Co-authored-by: shopwareBot * [create-pull-request] automated change (#318) Co-authored-by: shopwareBot * [create-pull-request] automated change (#317) Co-authored-by: shopwareBot * [create-pull-request] automated change (#320) Co-authored-by: shopwareBot * [create-pull-request] automated change (#319) Co-authored-by: shopwareBot * [create-pull-request] automated change (#327) Co-authored-by: shopwareBot * [create-pull-request] automated change (#325) Co-authored-by: shopwareBot * [create-pull-request] automated change (#336) Co-authored-by: shopwareBot * [create-pull-request] automated change (#341) Co-authored-by: shopwareBot * [create-pull-request] automated change (#345) Co-authored-by: shopwareBot * [create-pull-request] automated change (#349) Co-authored-by: shopwareBot * [create-pull-request] automated change (#348) Co-authored-by: shopwareBot * [create-pull-request] automated change (#355) Co-authored-by: shopwareBot * [create-pull-request] automated change (#360) Co-authored-by: shopwareBot * [create-pull-request] automated change (#370) Co-authored-by: shopwareBot * [create-pull-request] automated change (#372) Co-authored-by: shopwareBot * [create-pull-request] automated change (#388) Co-authored-by: shopwareBot * [create-pull-request] automated change (#385) Co-authored-by: shopwareBot * [create-pull-request] automated change (#402) Co-authored-by: shopwareBot * [create-pull-request] automated change (#401) Co-authored-by: shopwareBot * [create-pull-request] automated change (#400) Co-authored-by: shopwareBot * [create-pull-request] automated change (#410) Co-authored-by: shopwareBot * [create-pull-request] automated change * [create-pull-request] automated change (#409) Co-authored-by: shopwareBot Co-authored-by: Micha --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: shopwareBot Co-authored-by: Micha Hobert Co-authored-by: Bojan Rajh --- .github/workflows/manual_versioning.yml | 4 +- SwagCommercial-storeapi.json | 6834 ++++---- SwagCommercial-storeapi.summary.json | 6 + SwagCustomizedProducts-storeapi.json | 5834 +++---- SwagDigitalSalesRooms-storeapi.json | 12700 +++++++------- SwagDigitalSalesRooms-storeapi.summary.json | 6 + storeapi.json | 16441 +++++++++--------- storeapi.summary.json | 12 - 8 files changed, 20831 insertions(+), 21006 deletions(-) diff --git a/.github/workflows/manual_versioning.yml b/.github/workflows/manual_versioning.yml index ae6af74..c73e8ff 100644 --- a/.github/workflows/manual_versioning.yml +++ b/.github/workflows/manual_versioning.yml @@ -41,7 +41,7 @@ jobs: shopware_version: ${{ inputs.shopware_version }} php_version: ${{ inputs.php_version }} secrets: inherit - + generate-commercial-trunk: if: ${{ inputs.trigger_commercial_schema }} uses: ./.github/workflows/plugin_commercial_schema.yml @@ -49,7 +49,7 @@ jobs: shopware_version: ${{ inputs.shopware_version }} php_version: ${{ inputs.php_version }} secrets: inherit - + generate-digitalsalesroom-trunk: if: ${{ inputs.trigger_digitalsalesroom_schema }} uses: ./.github/workflows/plugin_digitalsalesroom_schema.yml diff --git a/SwagCommercial-storeapi.json b/SwagCommercial-storeapi.json index 7d0a15a..232e304 100644 --- a/SwagCommercial-storeapi.json +++ b/SwagCommercial-storeapi.json @@ -742,6 +742,84 @@ }, "type": "object" }, + "AppMcpPrompt": { + "description": "Added since version: 6.7.0.0", + "required": [ + "label" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + }, + "AppMcpResource": { + "description": "Added since version: 6.7.0.0", + "required": [ + "label" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + }, + "AppMcpTool": { + "description": "Added since version: 6.7.0.0", + "required": [ + "label" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + }, "AppPaymentMethod": { "description": "Added since version: 6.4.1.0", "properties": { @@ -4735,6 +4813,11 @@ }, "readOnly": true }, + "requestedGroupId": { + "description": "Unique identity of requested group.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "createdById": { "type": "string", "pattern": "^[0-9a-f]{32}$" @@ -5692,7 +5775,7 @@ "description": "Unique number associated with every document.", "type": "string" }, - "config": { + "customFields": { "type": "object" }, "createdAt": { @@ -5700,8 +5783,9 @@ "format": "date-time", "readOnly": true }, - "customFields": { - "type": "object" + "config": { + "type": "object", + "deprecated": true }, "updatedAt": { "type": "string", @@ -9967,6 +10051,12 @@ "description": "When the value is set to true, the product is hidden when sold out.", "type": "boolean" }, + "availableStock": { + "description": "Indicates the number of products still available. This value results from the stock minus the open orders.", + "type": "integer", + "format": "int64", + "readOnly": true + }, "stock": { "description": "Indicates the number of products available.", "type": "integer", @@ -10154,13 +10244,6 @@ "readOnly": true, "deprecated": true }, - "availableStock": { - "description": "Indicates the number of products still available. This value results from the stock minus the open orders.", - "type": "integer", - "format": "int64", - "readOnly": true, - "deprecated": true - }, "calculatedPrice": { "type": "object" }, @@ -11299,6 +11382,12 @@ "description": "When the value is set to true, the product is hidden when sold out.", "type": "boolean" }, + "availableStock": { + "description": "Indicates the number of products still available. This value results from the stock minus the open orders.", + "type": "integer", + "format": "int64", + "readOnly": true + }, "stock": { "description": "Indicates the number of products available.", "type": "integer", @@ -11486,13 +11575,6 @@ "readOnly": true, "deprecated": true }, - "availableStock": { - "description": "Indicates the number of products still available. This value results from the stock minus the open orders.", - "type": "integer", - "format": "int64", - "readOnly": true, - "deprecated": true - }, "calculatedPrice": { "type": "object", "$ref": "#/components/schemas/CalculatedPrice" @@ -17228,38 +17310,76 @@ }, "type": "object" }, - "CartPriceQuantity": { + "EntitySearchResult": { "type": "object", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_quantity" - ] + "entity": { + "type": "string" }, - "isCalculated": { - "type": "boolean" + "total": { + "type": "integer", + "description": "The total number of found entities" }, - "listPrice": { - "$ref": "#/components/schemas/CartListPrice" + "aggregations": { + "type": "array", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", + "items": { + "type": "object" + } }, - "price": { - "type": "number" + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." }, - "quantity": { - "type": "number" + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." + } + } + }, + "SalesChannelContext": { + "type": "object", + "properties": { + "token": { + "description": "Context the user session", + "type": "string" }, - "regulationPrice": { + "currentCustomerGroup": { + "type": "object", + "description": "Customer group of the current user", "properties": { - "price": { - "type": "number", - "format": "float" + "name": { + "type": "string" + }, + "displayGross": { + "type": "boolean" } - }, - "type": "object" + } + }, + "fallbackCustomerGroup": { + "description": "Fallback group if the default customer group is not applicable", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "displayGross": { + "type": "boolean" + } + } + }, + "currency": { + "$ref": "#/components/schemas/Currency" + }, + "salesChannel": { + "$ref": "#/components/schemas/SalesChannel" + }, + "measurementSystem": { + "$ref": "#/components/schemas/ContextMeasurementSystemInfo" }, "taxRules": { "type": "array", + "description": "Currently active tax rules and/or rates", "items": { "type": "object", "properties": { @@ -17273,1183 +17393,471 @@ } } }, - "type": { - "type": "string" - } - }, - "required": [ - "apiAlias" - ] - }, - "CrossSellingElement": { - "type": "object", - "properties": { - "crossSelling": { - "$ref": "#/components/schemas/ProductCrossSelling" - }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - }, - "total": { - "type": "integer", - "format": "int32" + "customer": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/Customer" + } + ] }, - "streamId": { - "type": "string", - "format": "uuid" + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod" }, - "apiAlias": { - "type": "string", - "enum": [ - "cross_selling_element" - ] - } - }, - "required": [ - "crossSelling", - "products", - "total", - "apiAlias" - ] - }, - "ProductMeasurements": { - "type": "object", - "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", - "properties": { - "width": { + "shippingLocation": { "type": "object", "properties": { - "unit": { + "apiAlias": { "type": "string", "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" + "cart_delivery_shipping_location" + ] }, - "value": { - "type": "number" + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" } } }, - "height": { + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + }, + "context": { + "description": "Core context with general configuration values and state", "type": "object", "properties": { - "unit": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" + "versionId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "currencyFactor": { + "type": "integer" + }, + "currencyPrecision": { + "type": "integer", + "format": "int32" + }, + "languageIdChain": { + "type": "array", + "items": { + "type": "string" + } + }, + "scope": { + "type": "string" + }, + "source": { + "type": "object", + "required": [ + "salesChannelId", + "type" ], - "default": "mm" + "properties": { + "type": { + "type": "string", + "enum": [ + "sales-channel", + "shop-api" + ] + }, + "salesChannelId": { + "type": "string" + } + } }, - "value": { - "type": "number" + "taxState": { + "type": "string" + }, + "useCache": { + "type": "boolean" } } }, - "length": { + "itemRounding": { "type": "object", + "required": [ + "decimals", + "interval", + "roundForNet", + "apiAlias" + ], "properties": { - "unit": { + "apiAlias": { "type": "string", "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" + "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" + ] }, - "value": { - "type": "number" + "decimals": { + "type": "integer", + "format": "int32" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" } } }, - "weight": { + "totalRounding": { "type": "object", + "required": [ + "decimals", + "interval", + "roundForNet", + "apiAlias" + ], "properties": { - "unit": { + "apiAlias": { "type": "string", "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg" + "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" + ] }, - "value": { - "type": "number" + "decimals": { + "type": "integer", + "format": "int32" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" } } - } - } - }, - "ProductListingCriteria": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" }, - { + "languageInfo": { "type": "object", - "description": "Additional search parameters for product listings", + "required": [ + "localeCode", + "name" + ], "properties": { - "order": { - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "type": "string" - }, - "limit": { - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "type": "integer", - "minimum": 0 - }, - "p": { - "description": "Search result page", - "type": "integer", - "default": 1 - }, - "manufacturer": { - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", - "type": "string" - }, - "min-price": { - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 - }, - "max-price": { - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 - }, - "rating": { - "description": "Filter products with a minimum average rating.", - "type": "integer" - }, - "shipping-free": { - "description": "Filters products that are marked as shipping-free.", - "type": "boolean", - "default": false - }, - "properties": { - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "name": { "type": "string" }, - "manufacturer-filter": { - "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "price-filter": { - "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "rating-filter": { - "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "shipping-free-filter": { - "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "property-filter": { - "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "property-whitelist": { - "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", + "localeCode": { "type": "string" - }, - "reduce-aggregations": { - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] } } + }, + "apiAlias": { + "type": "string", + "enum": [ + "sales_channel_context" + ] } + }, + "required": [ + "salesChannel", + "apiAlias", + "itemRounding", + "totalRounding", + "languageInfo" ] }, - "ShippingMethodPageRouteResponse": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "deliveryTimeId": { - "type": "string" - }, - "deliveryTime": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer", - "format": "int32" - }, - "max": { - "type": "integer", - "format": "int32" - }, - "unit": { - "type": "string" - } - } - }, - "translations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - } - } - } - }, - "orderDeliveries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "orderId": { - "type": "string" - }, - "shippingOrderAddressId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "shippingDateEarliest": { - "type": "string", - "format": "date-time" - }, - "shippingDateLatest": { - "type": "string", - "format": "date-time" - }, - "stateId": { - "type": "string" - } - } - } - }, - "salesChannelDefaultAssignments": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" - }, - "hreflangDefaultDomainId": { - "type": "string" - } - } - } - }, - "salesChannels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" - }, - "hreflangDefaultDomainId": { - "type": "string" - } - } - } - }, - "availabilityRule": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "priority": { - "type": "integer", - "format": "int32" - }, - "invalid": { - "type": "boolean" - } - } - }, - "availabilityRuleId": { - "type": "string" - }, - "prices": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "ruleId": { - "type": "string" - }, - "calculation": { - "type": "integer", - "format": "int32" - }, - "quantityStart": { - "type": "number", - "format": "float" - }, - "quantityEnd": { - "type": "number", - "format": "float" - }, - "price": { - "type": "number", - "format": "float" - }, - "calculationRuleId": { - "type": "string" - } - } - } - }, - "mediaId": { - "type": "string" - }, - "media": { - "type": "object", - "properties": { - "userId": { - "type": "string" - }, - "mimeType": { - "type": "string" - }, - "fileExtension": { - "type": "string" - }, - "fileSize": { - "type": "integer", - "format": "int32" - }, - "title": { - "type": "string" - }, - "metaDataRaw": { - "type": "string" - }, - "mediaTypeRaw": { - "type": "string" - }, - "uploadedAt": { - "type": "string", - "format": "date-time" - }, - "alt": { - "type": "string" - }, - "url": { - "type": "string" - }, - "fileName": { - "type": "string" - }, - "mediaFolderId": { - "type": "string" - }, - "private": { - "type": "boolean" - }, - "thumbnailsRo": { - "type": "string" - } - } - }, - "tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - } - } - } - } - } - } - }, - "ProductDetailResponse": { - "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", - "properties": { - "product": { - "$ref": "#/components/schemas/Product" - }, - "configurator": { - "type": "array", - "description": "List of property groups with their corresponding options and information on how to display them.", - "items": { - "$ref": "#/components/schemas/PropertyGroup" - } - } - }, - "required": [ - "product" - ] - }, - "ProductPurchaseLimit": { - "type": "object", - "description": "Current quantity purchase limits for a product.", - "required": [ - "productId", - "minPurchase", - "purchaseSteps", - "maxPurchase", - "stock", - "apiAlias" - ], - "properties": { - "productId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The product ID." - }, - "minPurchase": { - "type": "integer", - "description": "Minimum quantity a customer can purchase." - }, - "purchaseSteps": { - "type": "integer", - "description": "Step increment for quantity selection." - }, - "maxPurchase": { - "type": "integer", - "description": "Maximum quantity a customer can purchase, reflecting current stock for closeout products." - }, - "stock": { - "type": [ - "integer", - "null" - ], - "description": "Current stock level of the product." - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_purchase_limit" - ] - } - } - }, - "CartDeliveryPosition": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" - } - } - }, - "identifier": { - "type": "string" - }, - "lineItem": { - "$ref": "#/components/schemas/LineItem" - }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" - } - } - }, - "LineItemType": { - "type": "string", - "deprecated": true, - "enum": [ - "product", - "credit", - "custom", - "promotion", - "discount", - "container", - "quantity" - ] - }, - "LineItem": { - "type": "object", - "properties": { - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - }, - "cover": { - "$ref": "#/components/schemas/Media" - }, - "dataContextHash": { - "type": "string" - }, - "dataTimestamp": { - "type": "string" - }, - "deliveryInformation": { - "$ref": "#/components/schemas/CartDeliveryInformation" - }, - "description": { - "type": "string" - }, - "good": { - "type": "boolean" - }, - "id": { - "type": "string" - }, - "label": { - "type": "string" - }, - "modified": { - "type": "boolean" - }, - "modifiedByApp": { - "type": "boolean" - }, - "payload": { - "$ref": "#/components/schemas/ProductJsonApi" - }, - "price": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "calculated_price" - ] - }, - "calculatedTaxes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] - }, - "quantity": { - "type": "number" - }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] - }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } - }, - { - "type": "null" - } - ] - }, - "totalPrice": { - "type": "number" - }, - "unitPrice": { - "type": "number" - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } - } - }, - "required": [ - "apiAlias", - "totalPrice", - "quantity", - "unitPrice" - ] - }, - "priceDefinition": { - "$ref": "#/components/schemas/CartPriceQuantity" - }, - "quantity": { - "type": "number" - }, - "quantityInformation": { - "type": "object", - "properties": { - "maxPurchase": { - "type": "number" - }, - "minPurchase": { - "type": "number" - }, - "purchaseSteps": { - "type": "number" - } - } - }, - "referencedId": { - "type": "string" - }, - "removable": { - "type": "boolean" - }, - "stackable": { - "type": "boolean" - }, - "states": { - "deprecated": true, - "type": "array", - "items": { - "type": "string", - "enum": [ - "is-physical", - "is-download" - ] - } - }, - "type": { - "$ref": "#/components/schemas/OrderLineItem/properties/type" - }, - "uniqueIdentifier": { - "type": "string" - } - }, - "required": [ - "id", - "type", - "deliveryInformation", - "payload", - "quantity", - "states" - ] - }, - "CrossSellingElementCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CrossSellingElement" - } - }, - "Sitemap": { - "type": "object", - "properties": { - "filename": { - "type": "string" - }, - "created": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "filename", - "created" - ] - }, - "CartItems": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - } - } - }, - "CookieEntry": { + "CartError": { "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "cookie": { - "type": "string" - }, - "value": { + "key": { "type": "string" }, - "expiration": { - "type": "integer" + "level": { + "type": "number", + "enum": [ + 0, + 10, + 20 + ], + "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" }, - "name": { + "message": { "type": "string" }, - "description": { + "messageKey": { "type": "string" - }, - "hidden": { - "type": "boolean" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cookie_entry" - ] } }, "required": [ - "cookie", - "hidden", - "apiAlias" + "key", + "level", + "message", + "messageKey" ] }, - "CookieRouteResponse": { + "ContextMeasurementSystemInfo": { "type": "object", - "description": "Response containing cookie groups and their configuration hash.", + "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", "properties": { - "apiAlias": { + "system": { "type": "string", "enum": [ - "cookie_groups_hash" - ] - }, - "elements": { - "type": "array", - "description": "Collection of cookie groups", - "items": { - "$ref": "#/components/schemas/CookieGroup" - } - }, - "hash": { - "type": "string", - "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", - "example": "f86b6a872cb83dbd22d838ceda1aa3d4" + "metric", + "imperial" + ], + "default": "metric", + "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." }, - "languageId": { - "type": "string", - "format": "uuid", - "description": "The language ID for which the cookie configuration was generated. Used to store hashes per language.", - "example": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" - } - }, - "required": [ - "elements", - "hash", - "languageId", - "apiAlias" - ], - "example": { - "apiAlias": "cookie_groups_hash", - "elements": [ - { - "isRequired": true, - "description": "Cookies required for this shop to function:", - "name": "Technically required", - "entries": [ - { - "name": "Session", - "hidden": false, - "cookie": "session-", - "apiAlias": "cookie_entry" - }, - { - "name": "Timezone", - "hidden": false, - "cookie": "timezone", - "apiAlias": "cookie_entry" - }, - { - "value": "1", - "expiration": 30, - "name": "Cookie preferences", - "hidden": true, - "cookie": "cookie-preference", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "description": "Cookies used for statistics and shop performance metrics.", - "name": "Statistics", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "Google Analytics", - "hidden": false, - "cookie": "google-analytics-enabled", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "description": "Allows Google to collect personal data for online advertising and marketing.", - "name": "Marketing", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "Google Advertising", - "hidden": false, - "cookie": "google-ads-enabled", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "name": "Comfort features", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "YouTube video", - "hidden": false, - "cookie": "youtube-video", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - } - ], - "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", - "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" - } - }, - "CartDelivery": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "deliveryDate": { + "units": { "type": "object", + "description": "Units used in the measurement system.", "properties": { - "earliest": { + "length": { "type": "string", - "format": "date-time" + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Unit of length." }, - "latest": { + "weight": { "type": "string", - "format": "date-time" + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." } } + } + } + }, + "CustomerAddressRead": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true }, - "location": { - "type": "object", - "properties": { - "apiAlias": { + "customerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "updatedAt": { + "oneOf": [ + { "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" + "format": "date-time" }, - "state": { - "$ref": "#/components/schemas/CountryState" + { + "type": "null" } - } + ] }, - "positions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDeliveryPosition" - } + "country": { + "$ref": "#/components/schemas/Country" }, - "shippingCosts": { - "$ref": "#/components/schemas/CalculatedPrice" + "countryState": { + "oneOf": [ + { + "$ref": "#/components/schemas/CountryState" + }, + { + "type": "null" + } + ] }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" + "salutation": { + "$ref": "#/components/schemas/Salutation" } - } - }, - "CookieEntryCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CookieEntry" - } - }, - "NavigationRouteResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - }, - "NavigationType": { - "type": "string", - "enum": [ - "main-navigation", - "footer-navigation", - "service-navigation" + }, + "required": [ + "customerId", + "createdAt", + "updatedAt", + "country", + "salutation" ] }, - "SalesChannelContext": { - "type": "object", - "properties": { - "token": { - "description": "Context the user session", - "type": "string" + "ProductListingCriteria": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" }, - "currentCustomerGroup": { + { "type": "object", - "description": "Customer group of the current user", + "description": "Additional search parameters for product listings", "properties": { - "name": { + "order": { + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", "type": "string" }, - "displayGross": { - "type": "boolean" + "limit": { + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "type": "integer", + "minimum": 0 + }, + "p": { + "description": "Search result page", + "type": "integer", + "default": 1 + }, + "manufacturer": { + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "type": "string" + }, + "min-price": { + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "max-price": { + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "rating": { + "description": "Filter products with a minimum average rating.", + "type": "integer" + }, + "shipping-free": { + "description": "Filters products that are marked as shipping-free.", + "type": "boolean", + "default": false + }, + "properties": { + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "type": "string" + }, + "manufacturer-filter": { + "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "price-filter": { + "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "rating-filter": { + "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "shipping-free-filter": { + "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-filter": { + "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-whitelist": { + "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", + "type": "string" + }, + "reduce-aggregations": { + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] } } - }, - "fallbackCustomerGroup": { - "description": "Fallback group if the default customer group is not applicable", + } + ] + }, + "WishlistLoadRouteResponse": { + "type": "object", + "required": [ + "products" + ], + "properties": { + "wishlist": { "type": "object", "properties": { - "name": { + "customerId": { "type": "string" }, - "displayGross": { - "type": "boolean" + "salesChannelId": { + "type": "string" } } }, - "currency": { - "$ref": "#/components/schemas/Currency" + "products": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + }, + "Sitemap": { + "type": "object", + "properties": { + "filename": { + "type": "string" }, - "salesChannel": { - "$ref": "#/components/schemas/SalesChannel" + "created": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "filename", + "created" + ] + }, + "CartPriceQuantity": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_quantity" + ] }, - "measurementSystem": { - "$ref": "#/components/schemas/ContextMeasurementSystemInfo" + "isCalculated": { + "type": "boolean" + }, + "listPrice": { + "$ref": "#/components/schemas/CartListPrice" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + } + }, + "type": "object" }, "taxRules": { "type": "array", - "description": "Currently active tax rules and/or rates", "items": { "type": "object", "properties": { @@ -18463,20 +17871,62 @@ } } }, - "customer": { - "oneOf": [ - { - "type": "null" + "type": { + "type": "string" + } + }, + "required": [ + "apiAlias" + ] + }, + "ProductDetailResponse": { + "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", + "properties": { + "product": { + "$ref": "#/components/schemas/Product" + }, + "configurator": { + "type": "array", + "description": "List of property groups with their corresponding options and information on how to display them.", + "items": { + "$ref": "#/components/schemas/PropertyGroup" + } + } + }, + "required": [ + "product" + ] + }, + "NewsletterStatus": { + "type": "string", + "enum": [ + "notSet", + "optIn", + "optOut", + "direct", + "undefined" + ], + "description": "The subscription status. Possible values are: notSet, optIn, optOut, direct, undefined." + }, + "CartDelivery": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" }, - { - "$ref": "#/components/schemas/Customer" + "latest": { + "type": "string", + "format": "date-time" } - ] - }, - "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethod" + } }, - "shippingLocation": { + "location": { "type": "object", "properties": { "apiAlias": { @@ -18490,2235 +17940,2977 @@ }, "address": { "$ref": "#/components/schemas/CustomerAddress" + }, + "state": { + "$ref": "#/components/schemas/CountryState" } } }, + "positions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDeliveryPosition" + } + }, + "shippingCosts": { + "$ref": "#/components/schemas/CalculatedPrice" + }, "shippingMethod": { "$ref": "#/components/schemas/ShippingMethod" + } + } + }, + "ReferencePrice": { + "type": "object", + "properties": { + "purchaseUnit": { + "type": "number" }, - "context": { - "description": "Core context with general configuration values and state", + "referenceUnit": { + "type": "number" + }, + "unitName": { + "type": "string" + }, + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_reference" + ] + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/ListPrice" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" + ] + }, + "CartDeliveryInformation": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_information" + ] + }, + "freeDelivery": { + "type": "boolean" + }, + "deliveryTime": { "type": "object", "properties": { - "versionId": { + "name": { "type": "string" }, - "currencyId": { - "type": "string" + "min": { + "type": "integer" }, - "currencyFactor": { + "max": { "type": "integer" }, - "currencyPrecision": { - "type": "integer", - "format": "int32" + "unit": { + "type": "string" }, - "languageIdChain": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_time" + ] + } + } + }, + "height": { + "type": "integer" + }, + "length": { + "type": "integer" + }, + "restockTime": { + "type": "integer" + }, + "stock": { + "type": "integer" + }, + "weight": { + "type": "integer" + }, + "width": { + "type": "integer" + } + }, + "required": [ + "apiAlias" + ] + }, + "Cart": { + "type": "object", + "properties": { + "name": { + "description": "Name of the cart - for example `guest-cart`", + "type": "string" + }, + "token": { + "description": "Context token identifying the cart and the user session", + "type": "string" + }, + "price": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "lineItems": { + "description": "All items within the cart", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + }, + "errors": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "anyOf": [ + { "type": "array", "items": { - "type": "string" + "$ref": "#/components/schemas/CartError" } }, - "scope": { - "type": "string" - }, - "source": { + { "type": "object", - "required": [ - "salesChannelId", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "sales-channel", - "shop-api" - ] + "additionalProperties": { + "type": "object", + "properties": { + "code": { + "type": "number" + }, + "key": { + "type": "string" + }, + "level": { + "type": "number" + }, + "message": { + "type": "string" + }, + "messageKey": { + "type": "string" + } }, - "salesChannelId": { - "type": "string" - } - } - }, - "taxState": { - "type": "string" - }, - "useCache": { - "type": "boolean" + "required": [ + "code", + "key", + "level", + "message", + "messageKey" + ] + } } + ] + }, + "deliveries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDelivery" } }, - "itemRounding": { - "type": "object", - "required": [ - "decimals", - "interval", - "roundForNet", - "apiAlias" - ], - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" - ] - }, - "decimals": { - "type": "integer", - "format": "int32" - }, - "interval": { - "type": "number", - "format": "float" - }, - "roundForNet": { - "type": "boolean" + "transactions": { + "description": "A list of all payment transactions associated with the current cart.", + "type": "array", + "items": { + "type": "object", + "properties": { + "paymentMethodId": { + "type": "string" + }, + "amount": { + "$ref": "#/components/schemas/CalculatedPrice" + } } } }, - "totalRounding": { - "type": "object", - "required": [ - "decimals", - "interval", - "roundForNet", - "apiAlias" - ], - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" - ] - }, - "decimals": { - "type": "integer", - "format": "int32" - }, - "interval": { - "type": "number", - "format": "float" + "modified": { + "type": "boolean" + }, + "customerComment": { + "description": "A comment that can be added to the cart.", + "oneOf": [ + { + "type": "string" }, - "roundForNet": { - "type": "boolean" + { + "type": "null" } - } + ] }, - "languageInfo": { - "type": "object", - "required": [ - "localeCode", - "name" - ], - "properties": { - "name": { + "affiliateCode": { + "description": "An affiliate tracking code", + "oneOf": [ + { "type": "string" }, - "localeCode": { + { + "type": "null" + } + ] + }, + "campaignCode": { + "description": "A campaign tracking code", + "oneOf": [ + { "type": "string" + }, + { + "type": "null" } - } + ] }, "apiAlias": { "type": "string", "enum": [ - "sales_channel_context" + "cart" ] } }, "required": [ - "salesChannel", - "apiAlias", - "itemRounding", - "totalRounding", - "languageInfo" + "price", + "apiAlias" ] }, - "AggregationMetrics": { + "AccountNewsletterRecipient": { "type": "object", "properties": { - "name": { - "type": "string" + "status": { + "$ref": "#/components/schemas/NewsletterStatus" }, - "type": { + "apiAlias": { "type": "string", "enum": [ - "avg", - "count", - "max", - "min", - "stats", - "sum" + "account_newsletter_recipient" ] - }, - "field": { - "type": "string" } }, "required": [ - "name", - "type", - "field" + "status", + "apiAlias" ] }, - "CookieGroupCollection": { + "CrossSellingElementCollection": { "type": "array", "items": { - "$ref": "#/components/schemas/CookieGroup" + "$ref": "#/components/schemas/CrossSellingElement" } }, - "ProductListingFlags": { + "Criteria": { "type": "object", - "description": "Additional flags for product listings", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "no-aggregations": { - "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", + "type": "string" + }, + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } + }, + "query": { + "type": "string", + "description": "The query string to search for" + }, + "associations": { + "$ref": "#/components/schemas/Associations" + }, + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + }, + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } + }, + "fields": { + "type": "array", + "description": "Fields which should be returned in the search result.", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" }, - "only-aggregations": { - "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] + "excludes": { + "$ref": "#/components/schemas/Excludes" } } }, - "Breadcrumb": { + "NoneFieldsCriteria": { "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "name": { + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", "type": "string" }, - "categoryId": { + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } + }, + "query": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "description": "The query string to search for" }, - "type": { - "$ref": "#/components/schemas/Category/properties/type" + "associations": { + "$ref": "#/components/schemas/Associations" }, - "translated": { - "type": "object", - "additionalProperties": true, - "properties": { - "customFields": { - "type": "object" - }, - "slotConfig": { - "type": "object" - }, - "linkType": { - "$ref": "#/components/schemas/Category/properties/linkType" - }, - "internalLink": { - "type": "string" - }, - "externalLink": { - "type": "string" - }, - "linkNewTab": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "metaTitle": { - "type": "string" - }, - "metaDescription": { - "type": "string" - }, - "keywords": { - "type": "string" - } + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] } }, - "path": { - "type": "string" + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + } }, - "seoUrls": { + "aggregations": { "type": "array", "items": { - "$ref": "#/components/schemas/SeoUrl" + "$ref": "#/components/schemas/Aggregation" } }, - "apiAlias": { - "type": "string", - "enum": [ - "breadcrumb" - ] - } - }, - "required": [ - "name", - "categoryId", - "type", - "translated", - "path", - "apiAlias" - ] - }, - "CartError": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "key": { - "type": "string" + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } }, - "level": { - "type": "number", - "enum": [ - 0, - 10, - 20 - ], - "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" }, - "message": { - "type": "string" + "includes": { + "$ref": "#/components/schemas/Includes" }, - "messageKey": { + "excludes": { + "$ref": "#/components/schemas/Excludes" + } + } + }, + "Associations": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Criteria" + } + }, + "Includes": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { "type": "string" } - }, - "required": [ - "key", - "level", - "message", - "messageKey" - ] + } }, - "CartPriceReference": { + "Excludes": { "type": "object", - "properties": { - "purchaseUnit": { - "type": "number" + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "Aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" }, - "referenceUnit": { - "type": "number" + { + "title": "AggregationEntity", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationEntity" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] }, - "unitName": { - "type": "string" + { + "title": "AggregationFilter", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationFilter" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] }, - "price": { - "type": "number" + { + "title": "AggregationTerms", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_reference" + { + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } ] }, - "listPrice": { - "oneOf": [ + { + "title": "AggregationRange", + "allOf": [ { - "$ref": "#/components/schemas/CartListPrice" + "$ref": "#/components/schemas/AggregationRange" }, { - "type": "null" + "$ref": "#/components/schemas/SubAggregations" } ] - }, - "regulationPrice": { - "oneOf": [ + } + ] + }, + "SubAggregations": { + "type": "object", + "properties": { + "aggregation": { + "anyOf": [ { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } + "$ref": "#/components/schemas/AggregationMetrics" }, { - "type": "null" + "$ref": "#/components/schemas/AggregationEntity" + }, + { + "$ref": "#/components/schemas/AggregationFilter" + }, + { + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/AggregationRange" } ] + } + } + }, + "TotalCountMode": { + "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", + "type": "string", + "default": "none", + "enum": [ + "none", + "exact", + "next-pages" + ] + }, + "Query": { + "type": "object", + "properties": { + "score": { + "type": "number" }, - "hasRange": { - "type": "boolean" - }, - "variantId": { + "query": { "oneOf": [ { - "type": "string", - "format": "^[0-9a-f]{32}$" + "$ref": "#/components/schemas/SimpleFilter" }, { - "type": "null" + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } ] } }, - "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" - ] + "additionalProperties": true }, - "AccountNewsletterRecipient": { + "Sort": { "type": "object", "properties": { - "status": { - "type": "string", - "enum": [ - "undefined", - "notSet", - "direct", - "optIn", - "optOut" - ] + "field": { + "type": "string" }, - "apiAlias": { + "order": { "type": "string", "enum": [ - "account_newsletter_recipient" + "ASC", + "DESC" ] + }, + "naturalSorting": { + "type": "boolean" + }, + "type": { + "type": "string" } }, "required": [ - "status", - "apiAlias" + "field", + "order" ] }, - "SuccessResponse": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - } + "Filters": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] } }, - "EntitySearchResult": { + "SimpleFilter": { "type": "object", "properties": { - "entity": { - "type": "string" - }, - "total": { - "type": "integer", - "description": "The total number of found entities" - }, - "aggregations": { - "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", - "items": { - "type": "object" - } + "type": { + "type": "string", + "enum": [ + "contains", + "equalsAny", + "prefix", + "suffix" + ] }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." + "field": { + "type": "string" }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." + "value": { + "type": "string" } - } + }, + "required": [ + "type", + "field", + "value" + ] }, - "CalculatedPrice": { + "EqualsFilter": { "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "unitPrice": { - "type": "number" - }, - "quantity": { - "type": "number" - }, - "rawTotal": { - "type": "number" - }, - "totalPrice": { - "type": "number" - }, - "taxStatus": { + "type": { "type": "string", "enum": [ - "net", - "tax-free" - ] - }, - "calculatedTaxes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } - }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } + "equals" ] }, - "positionPrice": { - "type": "number" - }, - "netPrice": { - "type": "number" + "field": { + "type": "string" }, - "regulationPrice": { + "value": { "oneOf": [ { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } + "type": "string" }, { - "type": "null" - } - ] - }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "oneOf": [ + "type": "number" + }, { - "type": "string", - "format": "^[0-9a-f]{32}$" + "type": "boolean" }, { "type": "null" } ] + } + }, + "required": [ + "type", + "field", + "value" + ] + }, + "MultiNotFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "multi", + "not" + ] }, - "apiAlias": { + "operator": { "type": "string", "enum": [ - "calculated_price" + "and", + "or", + "nor", + "nand" ] }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } + "queries": { + "$ref": "#/components/schemas/Filters" } }, "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "referencePrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitPrice", - "positionPrice", - "netPrice", - "taxRules", - "rawTotal", - "taxStatus" + "type", + "operator", + "queries" ] }, - "CustomerAddressBody": { - "description": "Added since version: 6.0.0.0", - "required": [ - "countryId", - "firstName", - "lastName", - "city", - "street" - ], + "RangeFilter": { + "type": "object", "properties": { - "countryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryStateId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "salutationId": { + "type": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "zipcode": { - "type": "string" - }, - "city": { - "type": "string" - }, - "company": { - "type": "string" - }, - "street": { - "type": "string" - }, - "department": { - "type": "string" - }, - "title": { - "type": "string" - }, - "phoneNumber": { - "type": "string" - }, - "additionalAddressLine1": { - "type": "string" + "enum": [ + "range" + ] }, - "additionalAddressLine2": { + "field": { "type": "string" }, - "customFields": { - "type": "object" - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "$ref": "#/components/schemas/CountryState" - }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "parameters": { + "type": "object", + "properties": { + "gte": { + "type": "number" + }, + "gt": { + "type": "number" + }, + "lte": { + "type": "number" + }, + "lt": { + "type": "number" + } + } } }, - "type": "object" + "required": [ + "type", + "field", + "parameters" + ] }, - "ReferencePrice": { + "FindProductVariantRouteResponse": { "type": "object", "properties": { - "purchaseUnit": { - "type": "number" + "foundCombination": { + "type": "object", + "properties": { + "variantId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "options": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + }, + "Price": { + "type": "object", + "description": "Price object", + "properties": { + "currencyId": { + "description": "Unique identity of the associated currency.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "referenceUnit": { + "gross": { + "description": "Gross price for the associated currency.", "type": "number" }, - "unitName": { - "type": "string" - }, - "price": { + "net": { + "description": "Net price for the associated currency.", "type": "number" }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_reference" - ] - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/ListPrice" - }, - { - "type": "null" - } - ] + "linked": { + "description": "Whether gross and net prices are linked through the tax configuration.", + "type": "boolean" }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } + "percentage": { + "description": "Discount percentage relative to the list price for the gross and net amounts. `null` when no list price is set.", + "type": [ + "object", + "null" + ], + "properties": { + "gross": { + "description": "Discount percentage relative to the gross list price.", + "type": "number" }, - { - "type": "null" + "net": { + "description": "Discount percentage relative to the net list price.", + "type": "number" } + }, + "required": [ + "gross", + "net" ] }, - "hasRange": { - "type": "boolean" + "listPrice": { + "description": "Reference list price for displaying discounts.", + "type": "object", + "properties": { + "currencyId": { + "description": "Unique identity of the associated currency.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "gross": { + "description": "Gross list price for the associated currency.", + "type": "number" + }, + "net": { + "description": "Net list price for the associated currency.", + "type": "number" + }, + "linked": { + "description": "Whether gross and net list prices are linked through the tax configuration.", + "type": "boolean" + } + }, + "required": [ + "gross", + "net" + ] }, - "variantId": { - "oneOf": [ - { + "regulationPrice": { + "description": "Reference price used for legal price disclosures.", + "type": "object", + "properties": { + "currencyId": { + "description": "Unique identity of the associated currency.", "type": "string", - "format": "^[0-9a-f]{32}$" + "pattern": "^[0-9a-f]{32}$" }, - { - "type": "null" + "gross": { + "description": "Gross regulation price for the associated currency.", + "type": "number" + }, + "net": { + "description": "Net regulation price for the associated currency.", + "type": "number" + }, + "linked": { + "description": "Whether gross and net regulation prices are linked through the tax configuration.", + "type": "boolean" } + }, + "required": [ + "gross", + "net" ] } }, "required": [ - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" + "currencyId", + "gross", + "net" ] }, - "CustomerAddressRead": { + "NavigationType": { + "type": "string", + "enum": [ + "main-navigation", + "footer-navigation", + "service-navigation" + ] + }, + "OrderRouteResponse": { "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true - }, - "customerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true - }, - "createdAt": { - "type": "string", - "format": "date-time" - }, - "updatedAt": { - "oneOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "null" - } - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "oneOf": [ + "orders": { + "type": "object", + "allOf": [ { - "$ref": "#/components/schemas/CountryState" + "type": "object", + "required": [ + "elements" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" + } + } + } }, { - "type": "null" + "$ref": "#/components/schemas/EntitySearchResult" } ] }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "paymentChangeable": { + "type": "object", + "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", + "additionalProperties": { + "type": "boolean" + } } }, "required": [ - "customerId", - "createdAt", - "updatedAt", - "country", - "salutation" + "orders" ] }, - "Criteria": { - "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", - "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "term": { - "description": "Search term", - "type": "string" - }, - "limit": { - "description": "Number of items per result page", - "type": "integer" - }, - "filter": { - "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" - } - }, - "query": { - "type": "string", - "description": "The query string to search for" - }, - "associations": { - "$ref": "#/components/schemas/Associations" + "ProductListingResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EntitySearchResult" }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" + { + "type": "object", + "properties": { + "currentFilters": { + "type": "object", + "description": "Contains the state of the filters. These can be used to create listing filters.", + "properties": { + "navigationId": { + "type": "string" + }, + "manufacturer": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "price": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "default": 0 + }, + "max": { + "type": "integer", + "default": 0 + } + }, + "required": [ + "min", + "max" + ] + }, + "rating": { + "oneOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "shipping-free": { + "type": "boolean", + "default": false + }, + "properties": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "search": { + "type": "string" + } }, - { - "$ref": "#/components/schemas/RangeFilter" + "required": [ + "manufacturer", + "navigationId", + "price", + "properties", + "rating", + "shipping-free" + ] + }, + "availableSortings": { + "type": "array", + "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", + "items": { + "type": "object", + "properties": { + "label": { + "type": "string" + }, + "translated": { + "type": "object", + "properties": { + "label": { + "type": "string" + } + }, + "required": [ + "label" + ] + }, + "key": { + "type": "string" + }, + "priority": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_sorting" + ] + } + }, + "required": [ + "label", + "translated", + "key", + "priority", + "apiAlias" + ] } - ] - } - }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" - } - }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } - }, - "fields": { - "type": "array", - "description": "Fields which should be returned in the search result.", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" - }, - "includes": { - "$ref": "#/components/schemas/Includes" - }, - "excludes": { - "$ref": "#/components/schemas/Excludes" + }, + "sorting": { + "type": "string" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "entity": { + "type": "string", + "enum": [ + "product" + ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_listing" + ] + } + }, + "required": [ + "elements", + "availableSortings", + "currentFilters", + "apiAlias" + ] } - } + ] }, - "NoneFieldsCriteria": { + "ProductMeasurements": { "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", + "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "term": { - "description": "Search term", - "type": "string" - }, - "limit": { - "description": "Number of items per result page", - "type": "integer" - }, - "filter": { - "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" + "width": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" + }, + "value": { + "type": "number" + } } }, - "query": { - "type": "string", - "description": "The query string to search for" - }, - "associations": { - "$ref": "#/components/schemas/Associations" - }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] + "height": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" + }, + "value": { + "type": "number" + } } }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" + "length": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" + }, + "value": { + "type": "number" + } } }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" + "weight": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg" + }, + "value": { + "type": "number" + } } + } + } + }, + "CookieEntryCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CookieEntry" + } + }, + "CrossSellingElement": { + "type": "object", + "properties": { + "crossSelling": { + "$ref": "#/components/schemas/ProductCrossSelling" }, - "grouping": { + "products": { "type": "array", - "description": "Perform groupings over certain fields", "items": { - "type": "string", - "description": "Name of a field" + "$ref": "#/components/schemas/Product" } }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" + "total": { + "type": "integer", + "format": "int32" }, - "includes": { - "$ref": "#/components/schemas/Includes" + "streamId": { + "type": "string", + "format": "uuid" }, - "excludes": { - "$ref": "#/components/schemas/Excludes" + "apiAlias": { + "type": "string", + "enum": [ + "cross_selling_element" + ] } - } - }, - "Associations": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Criteria" - } + }, + "required": [ + "crossSelling", + "products", + "total", + "apiAlias" + ] }, - "Includes": { + "CookieEntry": { "type": "object", - "additionalProperties": { - "type": "array", - "items": { + "properties": { + "cookie": { + "type": "string" + }, + "value": { + "type": "string" + }, + "expiration": { + "type": "integer" + }, + "name": { "type": "string" + }, + "description": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cookie_entry" + ] } - } + }, + "required": [ + "cookie", + "hidden", + "apiAlias" + ] }, - "Excludes": { + "MeasurementUnits": { "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" + "description": "Configuration of the measurement system", + "properties": { + "system": { + "type": "string", + "enum": [ + "metric", + "imperial" + ], + "default": "metric", + "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." + }, + "units": { + "type": "object", + "description": "Units used in the measurement system.", + "properties": { + "length": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Unit of length." + }, + "weight": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." + } + } } } }, - "Aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" + "CartListPrice": { + "type": "object", + "description": "", + "properties": { + "discount": { + "type": "number" }, - { - "title": "AggregationEntity", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "percentage": { + "type": "number" }, - { - "title": "AggregationFilter", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "price": { + "type": "number" }, - { - "title": "AggregationTerms", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } + "apiAlias": { + "type": "string", + "enum": [ + "cart_list_price" ] + } + }, + "required": [ + "apiAlias" + ] + }, + "CookieGroup": { + "type": "object", + "properties": { + "isRequired": { + "type": "boolean" }, - { - "title": "AggregationHistogram", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "name": { + "type": "string" }, - { - "title": "AggregationRange", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationRange" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } + "description": { + "type": "string" + }, + "cookie": { + "type": "string" + }, + "value": { + "type": "string" + }, + "expiration": { + "type": "integer" + }, + "entries": { + "$ref": "#/components/schemas/CookieEntryCollection" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cookie_group" ] } + }, + "not": { + "allOf": [ + { + "required": [ + "cookie" + ] + }, + { + "required": [ + "entries" + ] + } + ] + }, + "required": [ + "name", + "isRequired", + "apiAlias" ] }, - "SubAggregations": { + "SuccessResponse": { "type": "object", "properties": { - "aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/AggregationRange" - } - ] + "success": { + "type": "boolean" } } }, - "TotalCountMode": { - "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", - "type": "string", - "default": "none", - "enum": [ - "none", - "exact", - "next-pages" - ] + "CartItems": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + } + } }, - "Query": { + "AggregationMetrics": { "type": "object", "properties": { - "score": { - "type": "number" + "name": { + "type": "string" }, - "query": { - "oneOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } + "type": { + "type": "string", + "enum": [ + "avg", + "count", + "max", + "min", + "stats", + "sum" ] + }, + "field": { + "type": "string" } }, - "additionalProperties": true + "required": [ + "name", + "type", + "field" + ] }, - "Sort": { + "CartDeliveryPosition": { "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "field": { + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } + }, + "identifier": { "type": "string" }, - "order": { + "lineItem": { + "$ref": "#/components/schemas/LineItem" + }, + "price": { + "$ref": "#/components/schemas/CalculatedPrice" + } + } + }, + "CustomerAddressBody": { + "description": "Added since version: 6.0.0.0", + "required": [ + "countryId", + "firstName", + "lastName", + "city", + "street" + ], + "properties": { + "countryId": { "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "pattern": "^[0-9a-f]{32}$" }, - "naturalSorting": { - "type": "boolean" + "countryStateId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "type": { + "salutationId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "zipcode": { + "type": "string" + }, + "city": { + "type": "string" + }, + "company": { + "type": "string" + }, + "street": { + "type": "string" + }, + "department": { + "type": "string" + }, + "title": { + "type": "string" + }, + "phoneNumber": { + "type": "string" + }, + "additionalAddressLine1": { + "type": "string" + }, + "additionalAddressLine2": { "type": "string" + }, + "customFields": { + "type": "object" + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "$ref": "#/components/schemas/CountryState" + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, + "type": "object" + }, + "ProductPurchaseLimit": { + "type": "object", + "description": "Current quantity purchase limits for a product.", "required": [ - "field", - "order" - ] + "productId", + "minPurchase", + "purchaseSteps", + "maxPurchase", + "stock", + "apiAlias" + ], + "properties": { + "productId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The product ID." + }, + "minPurchase": { + "type": "integer", + "description": "Minimum quantity a customer can purchase." + }, + "purchaseSteps": { + "type": "integer", + "description": "Step increment for quantity selection." + }, + "maxPurchase": { + "type": "integer", + "description": "Maximum quantity a customer can purchase, reflecting current stock for closeout products." + }, + "stock": { + "type": [ + "integer", + "null" + ], + "description": "Current stock level of the product." + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_purchase_limit" + ] + } + } }, - "Filters": { - "type": "array", - "items": { - "anyOf": [ + "CookieRouteResponse": { + "type": "object", + "description": "Response containing cookie groups and their configuration hash.", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cookie_groups_hash" + ] + }, + "elements": { + "type": "array", + "description": "Collection of cookie groups", + "items": { + "$ref": "#/components/schemas/CookieGroup" + } + }, + "hash": { + "type": "string", + "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", + "example": "f86b6a872cb83dbd22d838ceda1aa3d4" + }, + "languageId": { + "type": "string", + "format": "uuid", + "description": "The language ID for which the cookie configuration was generated. Used to store hashes per language.", + "example": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" + } + }, + "required": [ + "elements", + "hash", + "languageId", + "apiAlias" + ], + "example": { + "apiAlias": "cookie_groups_hash", + "elements": [ { - "$ref": "#/components/schemas/SimpleFilter" + "isRequired": true, + "description": "Cookies required for this shop to function:", + "name": "Technically required", + "entries": [ + { + "name": "Session", + "hidden": false, + "cookie": "session-", + "apiAlias": "cookie_entry" + }, + { + "name": "Timezone", + "hidden": false, + "cookie": "timezone", + "apiAlias": "cookie_entry" + }, + { + "value": "1", + "expiration": 30, + "name": "Cookie preferences", + "hidden": true, + "cookie": "cookie-preference", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" }, { - "$ref": "#/components/schemas/EqualsFilter" + "isRequired": false, + "description": "Cookies used for statistics and shop performance metrics.", + "name": "Statistics", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "Google Analytics", + "hidden": false, + "cookie": "google-analytics-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" }, { - "$ref": "#/components/schemas/MultiNotFilter" + "isRequired": false, + "description": "Allows Google to collect personal data for online advertising and marketing.", + "name": "Marketing", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "Google Advertising", + "hidden": false, + "cookie": "google-ads-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" }, { - "$ref": "#/components/schemas/RangeFilter" + "isRequired": false, + "name": "Comfort features", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "YouTube video", + "hidden": false, + "cookie": "youtube-video", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" } - ] + ], + "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", + "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" } }, - "SimpleFilter": { + "CartItemsUpdate": { "type": "object", + "required": [ + "items" + ], "properties": { - "type": { - "type": "string", - "enum": [ - "contains", - "equalsAny", - "prefix", - "suffix" - ] - }, - "field": { - "type": "string" - }, - "value": { - "type": "string" + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartLineItemUpdate" + } } - }, - "required": [ - "type", - "field", - "value" - ] + } }, - "EqualsFilter": { + "CartLineItemUpdate": { "type": "object", + "required": [ + "id" + ], "properties": { + "id": { + "type": "string" + }, "type": { - "type": "string", - "enum": [ - "equals" - ] + "$ref": "#/components/schemas/OrderLineItem/properties/type" }, - "field": { + "quantity": { + "type": "integer" + }, + "referencedId": { "type": "string" }, - "value": { - "oneOf": [ - { + "label": { + "type": "string" + }, + "payload": { + "type": "object" + }, + "stackable": { + "type": "boolean" + }, + "removable": { + "type": "boolean" + }, + "coverId": { + "type": "string" + }, + "priceDefinition": { + "type": "object", + "properties": { + "type": { "type": "string" }, - { + "price": { "type": "number" }, - { + "percentage": { + "type": "number" + }, + "quantity": { + "type": "integer" + }, + "isCalculated": { "type": "boolean" }, - { - "type": "null" + "listPrice": { + "type": "number" + }, + "taxRules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number" + }, + "percentage": { + "type": "number" + } + } + } } - ] + } } - }, - "required": [ - "type", - "field", - "value" - ] + } }, - "MultiNotFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "multi", - "not" - ] - }, - "operator": { - "type": "string", - "enum": [ - "and", - "or", - "nor", - "nand" - ] - }, - "queries": { - "$ref": "#/components/schemas/Filters" - } - }, - "required": [ - "type", - "operator", - "queries" - ] + "NavigationRouteResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + } }, - "RangeFilter": { + "CookieGroupCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CookieGroup" + } + }, + "ProductListingFlags": { "type": "object", + "description": "Additional flags for product listings", "properties": { - "type": { - "type": "string", - "enum": [ - "range" - ] - }, - "field": { - "type": "string" - }, - "parameters": { - "type": "object", - "properties": { - "gte": { - "type": "number" - }, - "gt": { - "type": "number" + "no-aggregations": { + "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", + "oneOf": [ + { + "type": "string" }, - "lte": { - "type": "number" + { + "type": "null" + } + ] + }, + "only-aggregations": { + "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", + "oneOf": [ + { + "type": "string" }, - "lt": { - "type": "number" + { + "type": "null" } - } + ] } - }, - "required": [ - "type", - "field", - "parameters" - ] - }, - "Association": { - "additionalProperties": { - "$ref": "#/components/schemas/Association" } }, - "OrderRouteResponse": { - "type": "object", - "properties": { - "orders": { - "type": "object", - "allOf": [ - { + "ShippingMethodPageRouteResponse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "deliveryTimeId": { + "type": "string" + }, + "deliveryTime": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "min": { + "type": "integer", + "format": "int32" + }, + "max": { + "type": "integer", + "format": "int32" + }, + "unit": { + "type": "string" + } + } + }, + "translations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + } + } + } + }, + "orderDeliveries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "orderId": { + "type": "string" + }, + "shippingOrderAddressId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "shippingDateEarliest": { + "type": "string", + "format": "date-time" + }, + "shippingDateLatest": { + "type": "string", + "format": "date-time" + }, + "stateId": { + "type": "string" + } + } + } + }, + "salesChannelDefaultAssignments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } + } + }, + "salesChannels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } + } + }, + "availabilityRule": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "priority": { + "type": "integer", + "format": "int32" + }, + "invalid": { + "type": "boolean" + } + } + }, + "availabilityRuleId": { + "type": "string" + }, + "prices": { + "type": "array", + "items": { "type": "object", - "required": [ - "elements" - ], "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order" - } + "shippingMethodId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "ruleId": { + "type": "string" + }, + "calculation": { + "type": "integer", + "format": "int32" + }, + "quantityStart": { + "type": "number", + "format": "float" + }, + "quantityEnd": { + "type": "number", + "format": "float" + }, + "price": { + "type": "number", + "format": "float" + }, + "calculationRuleId": { + "type": "string" } } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - }, - "paymentChangeable": { - "type": "object", - "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", - "additionalProperties": { - "type": "boolean" - } - } - }, - "required": [ - "orders" - ] - }, - "CartDeliveryInformation": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_information" - ] - }, - "freeDelivery": { - "type": "boolean" - }, - "deliveryTime": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer" - }, - "max": { - "type": "integer" - }, - "unit": { - "type": "string" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_time" - ] } - } - }, - "height": { - "type": "integer" - }, - "length": { - "type": "integer" - }, - "restockTime": { - "type": "integer" - }, - "stock": { - "type": "integer" - }, - "weight": { - "type": "integer" - }, - "width": { - "type": "integer" - } - }, - "required": [ - "apiAlias" - ] - }, - "WishlistLoadRouteResponse": { - "type": "object", - "required": [ - "products" - ], - "properties": { - "wishlist": { - "type": "object", - "properties": { - "customerId": { - "type": "string" - }, - "salesChannelId": { - "type": "string" + }, + "mediaId": { + "type": "string" + }, + "media": { + "type": "object", + "properties": { + "userId": { + "type": "string" + }, + "mimeType": { + "type": "string" + }, + "fileExtension": { + "type": "string" + }, + "fileSize": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string" + }, + "metaDataRaw": { + "type": "string" + }, + "mediaTypeRaw": { + "type": "string" + }, + "uploadedAt": { + "type": "string", + "format": "date-time" + }, + "alt": { + "type": "string" + }, + "url": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "mediaFolderId": { + "type": "string" + }, + "private": { + "type": "boolean" + }, + "thumbnailsRo": { + "type": "string" + } + } + }, + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } } - } - }, - "products": { - "$ref": "#/components/schemas/ProductListingResult" - } - } - }, - "AggregationEntity": { - "title": "AggregationEntity", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "entity" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "definition": { - "description": "The entity definition e.g \"product_manufacturer\".", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field", - "definition" - ] - }, - "AggregationFilter": { - "title": "AggregationFilter", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "filter" - ] - }, - "filter": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Filters" } } - }, - "required": [ - "name", - "type", - "filter" - ] + } }, - "AggregationTerms": { - "title": "AggregationTerms", + "CartPriceReference": { "type": "object", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" + "purchaseUnit": { + "type": "number" }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "terms" - ] + "referenceUnit": { + "type": "number" }, - "field": { - "description": "The field you want to aggregate over.", + "unitName": { "type": "string" }, - "limit": { - "description": "The number of terms to return", + "price": { "type": "number" }, - "sort": { - "type": "array", - "description": "Sorting the aggregation result.", - "items": { - "$ref": "#/components/schemas/Sort" - } - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "AggregationHistogram": { - "title": "AggregationHistogram", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", + "apiAlias": { "type": "string", "enum": [ - "histogram" + "cart_price_reference" ] }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] }, - "interval": { - "description": "The interval of the histogram", - "type": "number" + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] }, - "format": { - "description": "The format of the histogram", - "type": "string" + "hasRange": { + "type": "boolean" }, - "timeZone": { - "description": "The timezone of the histogram", - "type": "string" + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] } }, "required": [ - "name", - "type", - "field" + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" ] }, - "AggregationRange": { - "title": "AggregationRange", - "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", + "Breadcrumb": { "type": "object", "properties": { "name": { - "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" }, - "type": { - "description": "The type of aggregation", + "categoryId": { "type": "string", - "enum": [ - "range" - ] + "pattern": "^[0-9a-f]{32}$" }, - "field": { - "description": "The field you want to aggregate over.", + "type": { + "$ref": "#/components/schemas/Category/properties/type" + }, + "translated": { + "type": "object", + "additionalProperties": true, + "properties": { + "customFields": { + "type": "object" + }, + "slotConfig": { + "type": "object" + }, + "linkType": { + "$ref": "#/components/schemas/Category/properties/linkType" + }, + "internalLink": { + "type": "string" + }, + "externalLink": { + "type": "string" + }, + "linkNewTab": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "metaTitle": { + "type": "string" + }, + "metaDescription": { + "type": "string" + }, + "keywords": { + "type": "string" + } + } + }, + "path": { "type": "string" }, - "ranges": { - "description": "The ranges of the aggregation", + "seoUrls": { "type": "array", "items": { - "type": "object", - "anyOf": [ - { - "type": "object", - "title": "From and to", - "properties": { - "from": { - "type": "number", - "description": "The lower bound of the range" - }, - "to": { - "type": "number", - "description": "The upper bound of the range" - } - }, - "required": [ - "from", - "to" - ] - }, - { - "type": "object", - "title": "From only", - "properties": { - "from": { - "type": "string", - "description": "The lower bound of the range" - } - }, - "required": [ - "from" - ] - }, - { - "type": "object", - "title": "To only", - "properties": { - "to": { - "type": "string", - "description": "The upper bound of the range" - } - }, - "required": [ - "to" - ] - } - ] + "$ref": "#/components/schemas/SeoUrl" } - } - }, - "required": [ - "name", - "type", - "field", - "ranges" - ] - }, - "CartListPrice": { - "type": "object", - "description": "", - "properties": { - "discount": { - "type": "number" - }, - "percentage": { - "type": "number" - }, - "price": { - "type": "number" }, "apiAlias": { "type": "string", "enum": [ - "cart_list_price" + "breadcrumb" ] } }, "required": [ + "name", + "categoryId", + "type", + "translated", + "path", "apiAlias" ] }, - "Cart": { + "CalculatedPrice": { "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "name": { - "description": "Name of the cart - for example `guest-cart`", - "type": "string" + "unitPrice": { + "type": "number" }, - "token": { - "description": "Context token identifying the cart and the user session", - "type": "string" + "quantity": { + "type": "number" }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" + "rawTotal": { + "type": "number" }, - "lineItems": { - "description": "All items within the cart", - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } + "totalPrice": { + "type": "number" }, - "errors": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "anyOf": [ - { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartError" - } - }, - { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "code": { - "type": "number" - }, - "key": { - "type": "string" - }, - "level": { - "type": "number" - }, - "message": { - "type": "string" - }, - "messageKey": { - "type": "string" - } - }, - "required": [ - "code", - "key", - "level", - "message", - "messageKey" - ] - } - } + "taxStatus": { + "type": "string", + "enum": [ + "net", + "tax-free" ] }, - "deliveries": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDelivery" - } - }, - "transactions": { - "description": "A list of all payment transactions associated with the current cart.", + "calculatedTaxes": { "type": "array", "items": { "type": "object", "properties": { - "paymentMethodId": { - "type": "string" + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] }, - "amount": { - "$ref": "#/components/schemas/CalculatedPrice" + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" } - } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] } }, - "modified": { - "type": "boolean" - }, - "customerComment": { - "description": "A comment that can be added to the cart.", + "referencePrice": { "oneOf": [ { - "type": "string" + "$ref": "#/components/schemas/CartPriceReference" }, { "type": "null" } ] }, - "affiliateCode": { - "description": "An affiliate tracking code", + "listPrice": { "oneOf": [ { - "type": "string" + "$ref": "#/components/schemas/CartListPrice" }, { "type": "null" } ] }, - "campaignCode": { - "description": "A campaign tracking code", + "positionPrice": { + "type": "number" + }, + "netPrice": { + "type": "number" + }, + "regulationPrice": { "oneOf": [ { - "type": "string" + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } }, { "type": "null" } ] }, - "apiAlias": { - "type": "string", - "enum": [ - "cart" - ] - } - }, - "required": [ - "price", - "apiAlias" - ] - }, - "CookieGroup": { - "type": "object", - "properties": { - "isRequired": { + "hasRange": { "type": "boolean" }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "cookie": { - "type": "string" - }, - "value": { - "type": "string" - }, - "expiration": { - "type": "integer" - }, - "entries": { - "$ref": "#/components/schemas/CookieEntryCollection" + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] }, "apiAlias": { "type": "string", "enum": [ - "cookie_group" + "calculated_price" ] - } - }, - "not": { - "allOf": [ - { - "required": [ - "cookie" - ] - }, - { - "required": [ - "entries" - ] - } - ] - }, - "required": [ - "name", - "isRequired", - "apiAlias" - ] - }, - "MeasurementUnits": { - "type": "object", - "description": "Configuration of the measurement system", - "properties": { - "system": { - "type": "string", - "enum": [ - "metric", - "imperial" - ], - "default": "metric", - "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." }, - "units": { - "type": "object", - "description": "Units used in the measurement system.", - "properties": { - "length": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm", - "description": "Unit of length." - }, - "weight": { - "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg", - "description": "Unit of weight." + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } } } } + }, + "required": [ + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "referencePrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitPrice", + "positionPrice", + "netPrice", + "taxRules", + "rawTotal", + "taxStatus" + ] + }, + "Association": { + "additionalProperties": { + "$ref": "#/components/schemas/Association" } }, - "Price": { + "LineItemType": { + "type": "string", + "deprecated": true, + "enum": [ + "product", + "credit", + "custom", + "promotion", + "discount", + "container", + "quantity" + ] + }, + "LineItem": { "type": "object", - "description": "Price object", "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } }, - "gross": { - "description": "", - "type": "number" + "cover": { + "$ref": "#/components/schemas/Media" }, - "net": { - "description": "", - "type": "number" + "dataContextHash": { + "type": "string" }, - "linked": { - "description": "", + "dataTimestamp": { + "type": "string" + }, + "deliveryInformation": { + "$ref": "#/components/schemas/CartDeliveryInformation" + }, + "description": { + "type": "string" + }, + "good": { "type": "boolean" }, - "listPrice": { - "description": "", + "id": { + "type": "string" + }, + "label": { + "type": "string" + }, + "modified": { + "type": "boolean" + }, + "modifiedByApp": { + "type": "boolean" + }, + "payload": { + "$ref": "#/components/schemas/ProductJsonApi" + }, + "price": { "type": "object", "properties": { - "currencyId": { + "apiAlias": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "enum": [ + "calculated_price" + ] }, - "gross": { - "description": "", + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] + }, + "quantity": { "type": "number" }, - "net": { - "description": "", + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] + }, + "totalPrice": { "type": "number" }, - "linked": { - "description": "", - "type": "boolean" + "unitPrice": { + "type": "number" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } } }, "required": [ - "gross", - "net" + "apiAlias", + "totalPrice", + "quantity", + "unitPrice" ] }, - "regulationPrice": { - "description": "", + "priceDefinition": { + "$ref": "#/components/schemas/CartPriceQuantity" + }, + "quantity": { + "type": "number" + }, + "quantityInformation": { "type": "object", "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "", + "maxPurchase": { "type": "number" }, - "net": { - "description": "", + "minPurchase": { "type": "number" }, - "linked": { - "description": "", - "type": "boolean" + "purchaseSteps": { + "type": "number" } - }, - "required": [ - "gross", - "net" + } + }, + "referencedId": { + "type": "string" + }, + "removable": { + "type": "boolean" + }, + "stackable": { + "type": "boolean" + }, + "states": { + "deprecated": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "is-physical", + "is-download" + ] + } + }, + "type": { + "$ref": "#/components/schemas/OrderLineItem/properties/type" + }, + "uniqueIdentifier": { + "type": "string" + } + }, + "required": [ + "id", + "type" + ] + }, + "ListPrice": { + "type": "object", + "description": "", + "properties": { + "discount": { + "type": "number" + }, + "percentage": { + "type": "number" + }, + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_list_price" ] } }, "required": [ - "currencyId", - "gross", - "net" + "apiAlias" ] }, - "ContextMeasurementSystemInfo": { + "AggregationEntity": { + "title": "AggregationEntity", "type": "object", - "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", "properties": { - "system": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", "type": "string", "enum": [ - "metric", - "imperial" - ], - "default": "metric", - "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." + "entity" + ] }, - "units": { - "type": "object", - "description": "Units used in the measurement system.", - "properties": { - "length": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm", - "description": "Unit of length." - }, - "weight": { - "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg", - "description": "Unit of weight." - } - } + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "definition": { + "description": "The entity definition e.g \"product_manufacturer\".", + "type": "string" } - } + }, + "required": [ + "name", + "type", + "field", + "definition" + ] }, - "FindProductVariantRouteResponse": { + "AggregationFilter": { + "title": "AggregationFilter", "type": "object", "properties": { - "foundCombination": { - "type": "object", - "properties": { - "variantId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "options": { - "type": "array", - "items": { - "type": "string" - } - } + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "filter" + ] + }, + "filter": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Filters" } } - } + }, + "required": [ + "name", + "type", + "filter" + ] }, - "ListPrice": { + "AggregationTerms": { + "title": "AggregationTerms", "type": "object", - "description": "", "properties": { - "discount": { - "type": "number" + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "percentage": { - "type": "number" + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "terms" + ] }, - "price": { + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "limit": { + "description": "The number of terms to return", "type": "number" }, - "apiAlias": { + "sort": { + "type": "array", + "description": "Sorting the aggregation result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "AggregationHistogram": { + "title": "AggregationHistogram", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", "type": "string", "enum": [ - "cart_list_price" + "histogram" ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "interval": { + "description": "The interval of the histogram", + "type": "number" + }, + "format": { + "description": "The format of the histogram", + "type": "string" + }, + "timeZone": { + "description": "The timezone of the histogram", + "type": "string" } }, "required": [ - "apiAlias" + "name", + "type", + "field" ] }, - "ProductListingResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EntitySearchResult" + "AggregationRange": { + "title": "AggregationRange", + "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - { - "type": "object", - "properties": { - "currentFilters": { - "type": "object", - "description": "Contains the state of the filters. These can be used to create listing filters.", - "properties": { - "navigationId": { - "type": "string" - }, - "manufacturer": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "price": { - "type": "object", - "properties": { - "min": { - "type": "integer", - "default": 0 - }, - "max": { - "type": "integer", - "default": 0 - } + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "range" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "ranges": { + "description": "The ranges of the aggregation", + "type": "array", + "items": { + "type": "object", + "anyOf": [ + { + "type": "object", + "title": "From and to", + "properties": { + "from": { + "type": "number", + "description": "The lower bound of the range" }, - "required": [ - "min", - "max" - ] - }, - "rating": { - "oneOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "shipping-free": { - "type": "boolean", - "default": false + "to": { + "type": "number", + "description": "The upper bound of the range" + } }, + "required": [ + "from", + "to" + ] + }, + { + "type": "object", + "title": "From only", "properties": { - "type": "array", - "items": { + "from": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "description": "The lower bound of the range" } }, - "search": { - "type": "string" - } + "required": [ + "from" + ] }, - "required": [ - "manufacturer", - "navigationId", - "price", - "properties", - "rating", - "shipping-free" - ] - }, - "availableSortings": { - "type": "array", - "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", - "items": { + { "type": "object", + "title": "To only", "properties": { - "label": { - "type": "string" - }, - "translated": { - "type": "object", - "properties": { - "label": { - "type": "string" - } - }, - "required": [ - "label" - ] - }, - "key": { - "type": "string" - }, - "priority": { - "type": "number" - }, - "apiAlias": { + "to": { "type": "string", - "enum": [ - "product_sorting" - ] + "description": "The upper bound of the range" } }, "required": [ - "label", - "translated", - "key", - "priority", - "apiAlias" + "to" ] } - }, - "sorting": { - "type": "string" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - }, - "entity": { - "type": "string", - "enum": [ - "product" - ] - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_listing" - ] - } - }, - "required": [ - "elements", - "availableSortings", - "currentFilters", - "apiAlias" - ] + ] + } } + }, + "required": [ + "name", + "type", + "field", + "ranges" ] }, "SearchByImageSearchTermResponse": { @@ -21207,38 +21399,25 @@ "204": { "description": "No Content" }, - "CurrencyListResponse": { - "description": "Entity search result containing currencies.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Currency" - } - } - } - } - }, - "ProductListResponse": { - "description": "Entity search result containing products", + "SeoUrlListResponse": { + "description": "Entity search result containing seo urls.", "content": { "application/json": { "schema": { "allOf": [ { - "required": [ - "elements" - ], "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Product" + "$ref": "#/components/schemas/SeoUrl" } } }, - "type": "object" + "type": "object", + "required": [ + "elements" + ] }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -21248,25 +21427,25 @@ } } }, - "SeoUrlListResponse": { - "description": "Entity search result containing seo urls.", + "ProductListResponse": { + "description": "Entity search result containing products", "content": { "application/json": { "schema": { "allOf": [ { + "required": [ + "elements" + ], "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/SeoUrl" + "$ref": "#/components/schemas/Product" } } }, - "type": "object", - "required": [ - "elements" - ] + "type": "object" }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -21276,33 +21455,21 @@ } } }, - "CategoryListResponse": { - "description": "Entity search result containing categories.", + "CurrencyListResponse": { + "description": "Entity search result containing currencies.", "content": { "application/json": { "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - } - } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "type": "array", + "items": { + "$ref": "#/components/schemas/Currency" + } } } } }, - "LanguageListResponse": { - "description": "Entity search result containing languages.", + "CountryListResponse": { + "description": "Entity search result containing countries.", "content": { "application/json": { "schema": { @@ -21312,13 +21479,10 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Language" + "$ref": "#/components/schemas/Country" } } }, - "required": [ - "elements" - ], "type": "object" }, { @@ -21329,8 +21493,8 @@ } } }, - "CountryStateListResponse": { - "description": "Entity search result containing countries.", + "SalutationListResponse": { + "description": "Entity search result containing salutations.", "content": { "application/json": { "schema": { @@ -21340,7 +21504,7 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/CountryState" + "$ref": "#/components/schemas/Salutation" } } }, @@ -21354,46 +21518,22 @@ } } }, - "ContextTokenResponse": { - "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", - "headers": { - "sw-context-token": { - "description": "Contains sw-context-token value", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "description": "Define the URL which browser will be redirected to", - "type": "string" - } - } - } - } - } - }, - "SalutationListResponse": { - "description": "Entity search result containing salutations.", + "CategoryListResponse": { + "description": "Entity search result containing categories.", "content": { "application/json": { "schema": { "allOf": [ { + "type": "object", "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Salutation" + "$ref": "#/components/schemas/Category" } } - }, - "type": "object" + } }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -21403,29 +21543,18 @@ } } }, - "ShippingMethodListResponse": { - "description": "Entity search result containing shipping methods.", + "CountryStateListResponse": { + "description": "Entity search result containing countries.", "content": { "application/json": { "schema": { "allOf": [ { - "required": [ - "elements" - ], "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/ShippingMethod" + "$ref": "#/components/schemas/CountryState" } } }, @@ -21439,8 +21568,8 @@ } } }, - "CountryListResponse": { - "description": "Entity search result containing countries.", + "LanguageListResponse": { + "description": "Entity search result containing languages.", "content": { "application/json": { "schema": { @@ -21450,10 +21579,13 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Country" + "$ref": "#/components/schemas/Language" } } }, + "required": [ + "elements" + ], "type": "object" }, { @@ -21464,6 +21596,30 @@ } } }, + "ContextTokenResponse": { + "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", + "headers": { + "sw-context-token": { + "description": "Contains sw-context-token value", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redirectUrl": { + "description": "Define the URL which browser will be redirected to", + "type": "string" + } + } + } + } + } + }, "OpenApi3": { "description": "Returns information about the store API.", "content": { @@ -21678,6 +21834,42 @@ } } } + }, + "ShippingMethodListResponse": { + "description": "Entity search result containing shipping methods.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "required": [ + "elements" + ], + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingMethod" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } } }, "parameters": { @@ -21904,202 +22096,62 @@ "description": "Specify the fields that should be excluded from the response for the given entities. Object key needs to be the entity name, and the list of fields needs to be the value. Note that the exclude fields will only be stripped on the API-Level, consider using the `fields` parameter for performance reasons.", "schema": { "$ref": "#/components/schemas/Excludes" - }, - "style": "deepObject", - "explode": true - }, - "CompressedCriteria": { - "name": "_criteria", - "in": "query", - "description": "Compressed and encoded criteria object. Format: base64url(gzip(json_encode(criteria))). This parameter allows passing complex criteria as a single encoded string instead of multiple query parameters. The criteria object should be JSON-encoded, then gzipped, and finally base64url-encoded. The criteria object structure is defined in the Criteria schema (see #/components/schemas/Criteria).", - "required": false, - "schema": { - "type": "string", - "format": "base64url", - "example": "H4sIAAAAAAAAA6tWykpNzFGyqlbKz8lPTSxRslJKSi0pzSsFAGcQr7sHAAAA" - } - }, - "CompressedNoneFieldsCriteria": { - "name": "_criteria", - "in": "query", - "description": "Compressed and encoded criteria object. Format: base64url(gzip(json_encode(criteria))). This parameter allows passing complex criteria as a single encoded string instead of multiple query parameters. The criteria object should be JSON-encoded, then gzipped, and finally base64url-encoded. The criteria object structure is defined in the NoneFieldsCriteria schema (see #/components/schemas/NoneFieldsCriteria).", - "required": false, - "schema": { - "type": "string", - "format": "base64url", - "example": "H4sIAAAAAAAAA6tWykpNzFGyqlbKz8lPTSxRslJKSi0pzSsFAGcQr7sHAAAA" - } - } - }, - "securitySchemes": { - "ApiKey": { - "type": "apiKey", - "description": "Identifies the sales channel you want to access the API through", - "name": "sw-access-key", - "in": "header" - }, - "ContextToken": { - "type": "apiKey", - "description": "Identifies an anonymous or identified user session", - "name": "sw-context-token", - "in": "header" - } - } - }, - "security": [ - { - "ApiKey": [] - } - ], - "paths": { - "/permission": { - "get": { - "tags": [ - "B2B Employee Management" - ], - "summary": "Fetch all available permissions", - "description": "This route is used to fetch all available permissions", - "operationId": "readPermissions", - "responses": { - "200": { - "description": "Permission collection", - "content": { - "application/json": { - "schema": { - "type": "object", - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "type": "object", - "properties": { - "permissionName": { - "type": "string" - }, - "permissionDependencies": { - "type": "array", - "items": { - "type": "string" - } - }, - "permissionGroupName": { - "type": "string" - } - } - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - }, - "post": { - "tags": [ - "B2B Employee Management" - ], - "summary": "Add a new permission", - "description": "This route is used to add a new permissions", - "operationId": "addPermission", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "properties": { - "name": { - "description": "Name of the new permission", - "type": "string" - }, - "group": { - "description": "Group of the new permission", - "type": "string" - }, - "dependencies": { - "description": "Optional dependencies for the new permission", - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Permission collection", - "content": { - "application/json": { - "schema": { - "type": "object", - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "type": "object", - "properties": { - "permissionName": { - "type": "string" - }, - "permissionDependencies": { - "type": "array", - "items": { - "type": "string" - } - }, - "permissionGroupName": { - "type": "string" - } - } - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] + }, + "style": "deepObject", + "explode": true + }, + "CompressedCriteria": { + "name": "_criteria", + "in": "query", + "description": "Compressed and encoded criteria object. Format: base64url(gzip(json_encode(criteria))). This parameter allows passing complex criteria as a single encoded string instead of multiple query parameters. The criteria object should be JSON-encoded, then gzipped, and finally base64url-encoded. The criteria object structure is defined in the Criteria schema (see #/components/schemas/Criteria).", + "required": false, + "schema": { + "type": "string", + "format": "base64url", + "example": "H4sIAAAAAAAAA6tWykpNzFGyqlbKz8lPTSxRslJKSi0pzSsFAGcQr7sHAAAA" + } + }, + "CompressedNoneFieldsCriteria": { + "name": "_criteria", + "in": "query", + "description": "Compressed and encoded criteria object. Format: base64url(gzip(json_encode(criteria))). This parameter allows passing complex criteria as a single encoded string instead of multiple query parameters. The criteria object should be JSON-encoded, then gzipped, and finally base64url-encoded. The criteria object structure is defined in the NoneFieldsCriteria schema (see #/components/schemas/NoneFieldsCriteria).", + "required": false, + "schema": { + "type": "string", + "format": "base64url", + "example": "H4sIAAAAAAAAA6tWykpNzFGyqlbKz8lPTSxRslJKSi0pzSsFAGcQr7sHAAAA" + } } }, - "/employee/create": { + "securitySchemes": { + "ApiKey": { + "type": "apiKey", + "description": "Identifies the sales channel you want to access the API through", + "name": "sw-access-key", + "in": "header" + }, + "ContextToken": { + "type": "apiKey", + "description": "Identifies an anonymous or identified user session", + "name": "sw-context-token", + "in": "header" + } + } + }, + "security": [ + { + "ApiKey": [] + } + ], + "paths": { + "/role/create": { "post": { "tags": [ "B2B Employee Management" ], - "summary": "Create a single employee and return the employee", - "description": "This route is used to create and return an employee", - "operationId": "createEmployee", + "summary": "Create a single role and return the role", + "description": "This route is used to create and return an role", + "operationId": "createRole", "parameters": [], "requestBody": { "required": true, @@ -22107,35 +22159,22 @@ "application/json": { "schema": { "properties": { - "firstName": { - "description": "First name of the new employee", - "type": "string" - }, - "lastName": { - "description": "Last name of the new employee", - "type": "string" - }, - "email": { - "description": "Email of the new employee", + "name": { + "description": "Name of the new role", "type": "string" }, - "languageId": { - "description": "Identifier of the [language](#/System%20%26%20Context/readLanguages) to be set for the new employee.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "permissions": { + "description": "Permissions of the new role", + "type": "array", + "items": { + "type": "string" + } }, - "roleId": { - "description": "Id of the role of the new employee", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "isDefaultRole": { + "description": "Ability to set the new role as default", + "type": "boolean" } }, - "required": [ - "firstName", - "lastName", - "email", - "languageId" - ], "type": "object" } } @@ -22143,11 +22182,11 @@ }, "responses": { "200": { - "description": "Employee entity", + "description": "Role entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/B2bEmployee" + "$ref": "#/components/schemas/B2bComponentsRole" } } } @@ -22160,14 +22199,14 @@ ] } }, - "/employee": { + "/role": { "get": { "tags": [ "B2B Employee Management" ], - "summary": "Fetch a list of employees", - "description": "This route is used to load employees", - "operationId": "readEmployees", + "summary": "Fetch a list of roles", + "description": "This route is used to load roles", + "operationId": "readRoles", "parameters": [], "requestBody": { "required": false, @@ -22185,7 +22224,7 @@ }, "responses": { "200": { - "description": "Entity search result containing employees", + "description": "Entity search result containing roles", "content": { "application/json": { "schema": { @@ -22196,7 +22235,7 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/B2bEmployee" + "$ref": "#/components/schemas/B2bComponentsRole" } } }, @@ -22221,9 +22260,9 @@ "tags": [ "B2B Employee Management" ], - "summary": "Fetch a list of employees", - "description": "This route is used to load employees", - "operationId": "readEmployeesPOST", + "summary": "Fetch a list of roles", + "description": "This route is used to load roles", + "operationId": "readRolesPOST", "parameters": [], "requestBody": { "required": false, @@ -22241,7 +22280,7 @@ }, "responses": { "200": { - "description": "Entity search result containing employees", + "description": "Entity search result containing roles", "content": { "application/json": { "schema": { @@ -22252,7 +22291,7 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/B2bEmployee" + "$ref": "#/components/schemas/B2bComponentsRole" } } }, @@ -22274,33 +22313,33 @@ ] } }, - "/employee/{id}": { + "/role/{id}": { "get": { "tags": [ "B2B Employee Management" ], - "summary": "Fetch one employee by id", - "description": "This route is used to fetch one employee by id\n\n**Available Associations:**\n- `role`\n- `language`\n- `organization`", - "operationId": "readB2bEmployee", + "summary": "Fetch one role by id", + "description": "This route is used to fetch one role by id", + "operationId": "readRole", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the employee to be read", + "description": "Identifier of the role to be fetched", "required": true, "schema": { "type": "string", - "format": "uuid" + "pattern": "^[0-9a-f]{32}$" } } ], "responses": { "200": { - "description": "Employee entity", + "description": "Role entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/B2bEmployee" + "$ref": "#/components/schemas/B2bComponentsRole" } } } @@ -22316,14 +22355,14 @@ "tags": [ "B2B Employee Management" ], - "summary": "Update one employee by id", - "description": "This route is used to update one employee by id", - "operationId": "updateEmployee", + "summary": "Update one role by id", + "description": "This route is used to update one role by id", + "operationId": "updateRole", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the employee to be updated", + "description": "Identifier of the role to be updated", "required": true, "schema": { "type": "string", @@ -22337,21 +22376,20 @@ "application/json": { "schema": { "properties": { - "firstName": { - "description": "New first name of the employee", - "type": "string" - }, - "lastName": { - "description": "New last name of the employee", + "name": { + "description": "New name of the role", "type": "string" }, - "email": { - "description": "New email of the employee", - "type": "string" + "permissions": { + "description": "New permissions of the role", + "type": "array", + "items": { + "type": "string" + } }, - "roleId": { - "description": "New id of the role of the employee", - "type": "string" + "isDefaultRole": { + "description": "Ability to set the role as default", + "type": "boolean" } }, "type": "object" @@ -22361,11 +22399,11 @@ }, "responses": { "200": { - "description": "Employee entity", + "description": "Role entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/B2bEmployee" + "$ref": "#/components/schemas/B2bComponentsRole" } } } @@ -22381,62 +22419,152 @@ "tags": [ "B2B Employee Management" ], - "summary": "Delete one employee by id", - "description": "This route is used to delete one employee by id", - "operationId": "deleteEmployee", + "summary": "Delete one role by id", + "description": "This route is used to delete one role by id", + "operationId": "deleteRole", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the employee to be deleted", + "description": "Identifier of the role to be fetched", "required": true, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } } - ], - "responses": { - "204": { - "description": "No content response" - } + ], + "responses": { + "204": { + "description": "No content response" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/role/default": { + "post": { + "tags": [ + "B2B Employee Management" + ], + "summary": "Sets the default role Id for new employees", + "description": "This route is used to update the defaultRoleId for new employees", + "operationId": "updateDefaultRoleId", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "id": { + "description": "Id of the roleId to be set as default", + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "204": { + "description": "No content response" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/permission": { + "get": { + "tags": [ + "B2B Employee Management" + ], + "summary": "Fetch all available permissions", + "description": "This route is used to fetch all available permissions", + "operationId": "readPermissions", + "responses": { + "200": { + "description": "Permission collection", + "content": { + "application/json": { + "schema": { + "type": "object", + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "type": "object", + "properties": { + "permissionName": { + "type": "string" + }, + "permissionDependencies": { + "type": "array", + "items": { + "type": "string" + } + }, + "permissionGroupName": { + "type": "string" + } + } + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + } }, "security": [ { "ApiKey": [] } ] - } - }, - "/employee/reinvite/{id}": { + }, "post": { "tags": [ "B2B Employee Management" ], - "summary": "Reinvite employee by id", - "description": "This route is used to reinvite an employee via email by id", - "operationId": "reinviteEmployee", - "parameters": [ - { - "name": "id", - "in": "path", - "description": "Identifier of the employee to be reinvited", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], + "summary": "Add a new permission", + "description": "This route is used to add a new permissions", + "operationId": "addPermission", "requestBody": { "required": true, "content": { "application/json": { "schema": { "properties": { - "storefrontUrl": { - "description": "URL of the storefront domain", + "name": { + "description": "Name of the new permission", + "type": "string" + }, + "group": { + "description": "Group of the new permission", "type": "string" + }, + "dependencies": { + "description": "Optional dependencies for the new permission", + "type": "array", + "items": { + "type": "string" + } } }, "type": "object" @@ -22444,13 +22572,44 @@ } } }, + "parameters": [], "responses": { "200": { - "description": "Employee entity", + "description": "Permission collection", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/B2bEmployee" + "type": "object", + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "type": "object", + "properties": { + "permissionName": { + "type": "string" + }, + "permissionDependencies": { + "type": "array", + "items": { + "type": "string" + } + }, + "permissionGroupName": { + "type": "string" + } + } + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -22463,14 +22622,14 @@ ] } }, - "/role/create": { + "/employee/create": { "post": { "tags": [ "B2B Employee Management" ], - "summary": "Create a single role and return the role", - "description": "This route is used to create and return an role", - "operationId": "createRole", + "summary": "Create a single employee and return the employee", + "description": "This route is used to create and return an employee", + "operationId": "createEmployee", "parameters": [], "requestBody": { "required": true, @@ -22478,22 +22637,35 @@ "application/json": { "schema": { "properties": { - "name": { - "description": "Name of the new role", + "firstName": { + "description": "First name of the new employee", "type": "string" }, - "permissions": { - "description": "Permissions of the new role", - "type": "array", - "items": { - "type": "string" - } + "lastName": { + "description": "Last name of the new employee", + "type": "string" }, - "isDefaultRole": { - "description": "Ability to set the new role as default", - "type": "boolean" + "email": { + "description": "Email of the new employee", + "type": "string" + }, + "languageId": { + "description": "Identifier of the [language](#/System%20%26%20Context/readLanguages) to be set for the new employee.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "roleId": { + "description": "Id of the role of the new employee", + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, + "required": [ + "firstName", + "lastName", + "email", + "languageId" + ], "type": "object" } } @@ -22501,11 +22673,11 @@ }, "responses": { "200": { - "description": "Role entity", + "description": "Employee entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/B2bComponentsRole" + "$ref": "#/components/schemas/B2bEmployee" } } } @@ -22518,14 +22690,14 @@ ] } }, - "/role": { + "/employee": { "get": { "tags": [ "B2B Employee Management" ], - "summary": "Fetch a list of roles", - "description": "This route is used to load roles", - "operationId": "readRoles", + "summary": "Fetch a list of employees", + "description": "This route is used to load employees", + "operationId": "readEmployees", "parameters": [], "requestBody": { "required": false, @@ -22543,7 +22715,7 @@ }, "responses": { "200": { - "description": "Entity search result containing roles", + "description": "Entity search result containing employees", "content": { "application/json": { "schema": { @@ -22554,7 +22726,7 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/B2bComponentsRole" + "$ref": "#/components/schemas/B2bEmployee" } } }, @@ -22579,9 +22751,9 @@ "tags": [ "B2B Employee Management" ], - "summary": "Fetch a list of roles", - "description": "This route is used to load roles", - "operationId": "readRolesPOST", + "summary": "Fetch a list of employees", + "description": "This route is used to load employees", + "operationId": "readEmployeesPOST", "parameters": [], "requestBody": { "required": false, @@ -22599,7 +22771,7 @@ }, "responses": { "200": { - "description": "Entity search result containing roles", + "description": "Entity search result containing employees", "content": { "application/json": { "schema": { @@ -22610,7 +22782,7 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/B2bComponentsRole" + "$ref": "#/components/schemas/B2bEmployee" } } }, @@ -22632,33 +22804,33 @@ ] } }, - "/role/{id}": { + "/employee/{id}": { "get": { "tags": [ "B2B Employee Management" ], - "summary": "Fetch one role by id", - "description": "This route is used to fetch one role by id", - "operationId": "readRole", + "summary": "Fetch one employee by id", + "description": "This route is used to fetch one employee by id\n\n**Available Associations:**\n- `role`\n- `language`\n- `organization`", + "operationId": "readB2bEmployee", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the role to be fetched", + "description": "Identifier of the employee to be read", "required": true, "schema": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "uuid" } } ], "responses": { "200": { - "description": "Role entity", + "description": "Employee entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/B2bComponentsRole" + "$ref": "#/components/schemas/B2bEmployee" } } } @@ -22674,14 +22846,14 @@ "tags": [ "B2B Employee Management" ], - "summary": "Update one role by id", - "description": "This route is used to update one role by id", - "operationId": "updateRole", + "summary": "Update one employee by id", + "description": "This route is used to update one employee by id", + "operationId": "updateEmployee", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the role to be updated", + "description": "Identifier of the employee to be updated", "required": true, "schema": { "type": "string", @@ -22695,20 +22867,21 @@ "application/json": { "schema": { "properties": { - "name": { - "description": "New name of the role", + "firstName": { + "description": "New first name of the employee", "type": "string" }, - "permissions": { - "description": "New permissions of the role", - "type": "array", - "items": { - "type": "string" - } + "lastName": { + "description": "New last name of the employee", + "type": "string" }, - "isDefaultRole": { - "description": "Ability to set the role as default", - "type": "boolean" + "email": { + "description": "New email of the employee", + "type": "string" + }, + "roleId": { + "description": "New id of the role of the employee", + "type": "string" } }, "type": "object" @@ -22718,11 +22891,11 @@ }, "responses": { "200": { - "description": "Role entity", + "description": "Employee entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/B2bComponentsRole" + "$ref": "#/components/schemas/B2bEmployee" } } } @@ -22738,14 +22911,14 @@ "tags": [ "B2B Employee Management" ], - "summary": "Delete one role by id", - "description": "This route is used to delete one role by id", - "operationId": "deleteRole", + "summary": "Delete one employee by id", + "description": "This route is used to delete one employee by id", + "operationId": "deleteEmployee", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the role to be fetched", + "description": "Identifier of the employee to be deleted", "required": true, "schema": { "type": "string", @@ -22765,22 +22938,34 @@ ] } }, - "/role/default": { + "/employee/reinvite/{id}": { "post": { "tags": [ "B2B Employee Management" ], - "summary": "Sets the default role Id for new employees", - "description": "This route is used to update the defaultRoleId for new employees", - "operationId": "updateDefaultRoleId", + "summary": "Reinvite employee by id", + "description": "This route is used to reinvite an employee via email by id", + "operationId": "reinviteEmployee", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Identifier of the employee to be reinvited", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "properties": { - "id": { - "description": "Id of the roleId to be set as default", + "storefrontUrl": { + "description": "URL of the storefront domain", "type": "string" } }, @@ -22790,8 +22975,15 @@ } }, "responses": { - "204": { - "description": "No content response" + "200": { + "description": "Employee entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/B2bEmployee" + } + } + } } }, "security": [ diff --git a/SwagCommercial-storeapi.summary.json b/SwagCommercial-storeapi.summary.json index 5dcabe8..1de3ab0 100644 --- a/SwagCommercial-storeapi.summary.json +++ b/SwagCommercial-storeapi.summary.json @@ -82,6 +82,9 @@ "AppCmsBlock", "AppFlowAction", "AppFlowEvent", + "AppMcpPrompt", + "AppMcpResource", + "AppMcpTool", "AppPaymentMethod", "AppScriptCondition", "AppShippingMethod", @@ -128,6 +131,8 @@ "CartDeliveryPosition", "CartError", "CartItems", + "CartItemsUpdate", + "CartLineItemUpdate", "CartListPrice", "CartPriceQuantity", "CartPriceReference", @@ -220,6 +225,7 @@ "NavigationType", "NewsletterRecipient", "NewsletterRecipientJsonApi", + "NewsletterStatus", "NoneFieldsCriteria", "Notification", "NumberRange", diff --git a/SwagCustomizedProducts-storeapi.json b/SwagCustomizedProducts-storeapi.json index 98839be..0930bde 100644 --- a/SwagCustomizedProducts-storeapi.json +++ b/SwagCustomizedProducts-storeapi.json @@ -7,7 +7,7 @@ "name": "MIT", "url": "https://github.com/shopware/shopware/blob/trunk/LICENSE" }, - "version": "6.7.9999999-dev" + "version": "6.7.9.0" }, "servers": [ { @@ -704,7 +704,12 @@ }, "type": { "description": "Type of categories like `page`, `folder`, `link`.", - "type": "string" + "type": "string", + "enum": [ + "page", + "link", + "folder" + ] }, "productAssignmentType": { "description": "Type of product assignment: Dynamic product group as or `product_stream` or Manual assignment as `product`.", @@ -718,10 +723,6 @@ "description": "When boolean value is `true`, the category is listed for selection.", "type": "boolean" }, - "cmsPageIdSwitched": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean" - }, "visibleChildCount": { "description": "Runtime field, cannot be used as part of the criteria.", "type": "integer", @@ -734,7 +735,13 @@ "type": "object" }, "linkType": { - "type": "string" + "type": "string", + "enum": [ + "category", + "product", + "external", + "landing_page" + ] }, "internalLink": { "type": "string", @@ -771,6 +778,11 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "cmsPageIdSwitched": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "boolean", + "deprecated": true + }, "seoUrl": { "description": "Runtime field, cannot be used as part of the criteria.", "type": "string" @@ -1060,7 +1072,8 @@ "type": "string", "enum": [ "page", - "link" + "link", + "folder" ] }, "productAssignmentType": { @@ -1075,10 +1088,6 @@ "description": "When boolean value is `true`, the category is listed for selection.", "type": "boolean" }, - "cmsPageIdSwitched": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean" - }, "visibleChildCount": { "description": "Runtime field, cannot be used as part of the criteria.", "type": "integer", @@ -1091,7 +1100,13 @@ "type": "object" }, "linkType": { - "type": "string" + "type": "string", + "enum": [ + "category", + "product", + "external", + "landing_page" + ] }, "internalLink": { "type": "string", @@ -1128,6 +1143,11 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "cmsPageIdSwitched": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "boolean", + "deprecated": true + }, "seoUrl": { "description": "Runtime field, cannot be used as part of the criteria.", "type": "string" @@ -1435,7 +1455,7 @@ "format": "int64" }, "type": { - "description": "Types of sections can be `sidebar` or `fullwidth`.", + "description": "Types of sections can be `default` or `sidebar`.", "type": "string", "enum": [ "default", @@ -2479,7 +2499,7 @@ "format": "date-time" }, "hash": { - "description": "Password hash for customer recovery.", + "description": "Customer registration double opt-in hash for confirming the customer account.", "type": "string" }, "guest": { @@ -3434,6 +3454,9 @@ "description": "Technical name of document type.", "type": "string" }, + "customFields": { + "type": "object" + }, "createdAt": { "type": "string", "format": "date-time", @@ -3444,9 +3467,6 @@ "format": "date-time", "readOnly": true }, - "customFields": { - "type": "object" - }, "translated": { "type": "object" } @@ -5339,10 +5359,6 @@ "description": "Title name given to customer like DR. , Prof., etc.", "type": "string" }, - "vatId": { - "description": "Unique identity of VAT.", - "type": "string" - }, "phoneNumber": { "description": "Phone number of the customer.", "type": "string" @@ -5362,6 +5378,11 @@ "customFields": { "type": "object" }, + "vatId": { + "description": "Unique identity of VAT.", + "type": "string", + "deprecated": true + }, "createdAt": { "type": "string", "format": "date-time", @@ -5944,7 +5965,16 @@ }, "type": { "description": "Type refers to the entity type of an item whether it is product or promotion for instance.", - "type": "string" + "type": "string", + "enum": [ + "product", + "credit", + "custom", + "promotion", + "container", + "discount", + "quantity" + ] }, "customFields": { "type": "object" @@ -7127,7 +7157,11 @@ }, "type": { "description": "The type of the product, e.g., physical or digital.", - "type": "string" + "type": "string", + "enum": [ + "physical", + "digital" + ] }, "states": { "type": "array", @@ -9963,7 +9997,12 @@ }, "routeName": { "description": "A destination routeName that has been registered somewhere in the app's router. For example: \\\\\"frontend.detail.page\\\\\"", - "type": "string" + "type": "string", + "enum": [ + "frontend.detail.page", + "frontend.navigation.page", + "frontend.landing.page" + ] }, "pathInfo": { "description": "Path to product URL. For example: \\\\\"/detail/bbf36734504741c79a3bbe3795b91564\\\\\"", @@ -10045,9 +10084,9 @@ "description": "A destination routeName that has been registered somewhere in the app's router. For example: \\\\\"frontend.detail.page\\\\\"", "type": "string", "enum": [ + "frontend.detail.page", "frontend.navigation.page", - "frontend.landing.page", - "frontend.detail.page" + "frontend.landing.page" ] }, "pathInfo": { @@ -10092,8 +10131,7 @@ "readOnly": true } }, - "type": "object", - "title": "SeoUrlEntity" + "type": "object" }, "SeoUrlTemplate": { "description": "Added since version: 6.0.0.0", @@ -12636,797 +12674,366 @@ }, "type": "object" }, - "EntitySearchResult": { + "CartPriceQuantity": { "type": "object", "properties": { - "entity": { - "type": "string" + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_quantity" + ] }, - "total": { - "type": "integer", - "description": "The total number of found entities" + "isCalculated": { + "type": "boolean" }, - "aggregations": { + "listPrice": { + "$ref": "#/components/schemas/CartListPrice" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + } + }, + "type": "object" + }, + "taxRules": { "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", "items": { - "type": "object" + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } } }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." + "type": { + "type": "string" + } + }, + "required": [ + "apiAlias" + ] + }, + "CrossSellingElement": { + "type": "object", + "properties": { + "crossSelling": { + "$ref": "#/components/schemas/ProductCrossSelling" }, - "limit": { + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "total": { "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." + "format": "int32" + }, + "streamId": { + "type": "string", + "format": "uuid" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cross_selling_element" + ] } - } + }, + "required": [ + "crossSelling", + "products", + "total", + "apiAlias" + ] }, - "CartDelivery": { + "ProductMeasurements": { "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", "properties": { - "deliveryDate": { + "width": { "type": "object", "properties": { - "earliest": { + "unit": { "type": "string", - "format": "date-time" + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" }, - "latest": { - "type": "string", - "format": "date-time" + "value": { + "type": "number" } } }, - "location": { + "height": { "type": "object", "properties": { - "apiAlias": { + "unit": { "type": "string", "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" }, - "state": { - "$ref": "#/components/schemas/CountryState" + "value": { + "type": "number" } } }, - "positions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDeliveryPosition" - } - }, - "shippingCosts": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "CookieGroupCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CookieGroup" - } - }, - "OrderRouteResponse": { - "type": "object", - "properties": { - "orders": { + "length": { "type": "object", - "allOf": [ - { - "type": "object", - "required": [ - "elements" + "properties": { + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" ], - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order" - } - } - } + "default": "mm" }, - { - "$ref": "#/components/schemas/EntitySearchResult" + "value": { + "type": "number" } - ] + } }, - "paymentChangeable": { + "weight": { "type": "object", - "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", - "additionalProperties": { - "type": "boolean" - } - } - }, - "required": [ - "orders" - ] - }, - "ReferencePrice": { - "type": "object", - "properties": { - "purchaseUnit": { - "type": "number" - }, - "referenceUnit": { - "type": "number" - }, - "unitName": { - "type": "string" - }, - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_reference" - ] - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/ListPrice" - }, - { - "type": "null" - } - ] - }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } - }, - { - "type": "null" - } - ] - }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "oneOf": [ - { + "properties": { + "unit": { "type": "string", - "format": "^[0-9a-f]{32}$" + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg" }, - { - "type": "null" + "value": { + "type": "number" } - ] - } - }, - "required": [ - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" - ] - }, - "SuccessResponse": { - "type": "object", - "properties": { - "success": { - "type": "boolean" + } } } }, - "Cart": { - "type": "object", - "properties": { - "name": { - "description": "Name of the cart - for example `guest-cart`", - "type": "string" - }, - "token": { - "description": "Context token identifying the cart and the user session", - "type": "string" - }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "lineItems": { - "description": "All items within the cart", - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } + "ProductListingCriteria": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" }, - "errors": { + { "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "anyOf": [ - { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartError" - } - }, - { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "code": { - "type": "number" - }, - "key": { - "type": "string" - }, - "level": { - "type": "number" - }, - "message": { - "type": "string" - }, - "messageKey": { - "type": "string" - } - }, - "required": [ - "code", - "key", - "level", - "message", - "messageKey" - ] - } - } - ] - }, - "deliveries": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDelivery" - } - }, - "transactions": { - "description": "A list of all payment transactions associated with the current cart.", - "type": "array", - "items": { - "type": "object", - "properties": { - "paymentMethodId": { - "type": "string" - }, - "amount": { - "$ref": "#/components/schemas/CalculatedPrice" - } - } - } - }, - "modified": { - "type": "boolean" - }, - "customerComment": { - "description": "A comment that can be added to the cart.", - "oneOf": [ - { + "description": "Additional search parameters for product listings", + "properties": { + "order": { + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", "type": "string" }, - { - "type": "null" - } - ] - }, - "affiliateCode": { - "description": "An affiliate tracking code", - "oneOf": [ - { + "limit": { + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "type": "integer", + "minimum": 0 + }, + "p": { + "description": "Search result page", + "type": "integer", + "default": 1 + }, + "manufacturer": { + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", "type": "string" }, - { - "type": "null" - } - ] - }, - "campaignCode": { - "description": "A campaign tracking code", - "oneOf": [ - { + "min-price": { + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "max-price": { + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "rating": { + "description": "Filter products with a minimum average rating.", + "type": "integer" + }, + "shipping-free": { + "description": "Filters products that are marked as shipping-free.", + "type": "boolean", + "default": false + }, + "properties": { + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", "type": "string" }, - { - "type": "null" + "manufacturer-filter": { + "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "price-filter": { + "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "rating-filter": { + "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "shipping-free-filter": { + "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-filter": { + "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-whitelist": { + "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", + "type": "string" + }, + "reduce-aggregations": { + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] } - ] - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart" - ] + } } - }, - "required": [ - "price", - "apiAlias" ] }, - "CookieEntryCollection": { + "ShippingMethodPageRouteResponse": { "type": "array", "items": { - "$ref": "#/components/schemas/CookieEntry" - } - }, - "CrossSellingElement": { - "type": "object", - "properties": { - "crossSelling": { - "$ref": "#/components/schemas/ProductCrossSelling" - }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - }, - "total": { - "type": "integer", - "format": "int32" - }, - "streamId": { - "type": "string", - "format": "uuid" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cross_selling_element" - ] - } - }, - "required": [ - "crossSelling", - "products", - "total", - "apiAlias" - ] - }, - "CalculatedPrice": { - "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", - "properties": { - "unitPrice": { - "type": "number" - }, - "quantity": { - "type": "number" - }, - "rawTotal": { - "type": "number" - }, - "totalPrice": { - "type": "number" - }, - "taxStatus": { - "type": "string", - "enum": [ - "net", - "tax-free" - ] - }, - "calculatedTaxes": { - "type": "array", - "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "deliveryTimeId": { + "type": "string" + }, + "deliveryTime": { "type": "object", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] + "name": { + "type": "string" }, - "tax": { - "type": "number" + "min": { + "type": "integer", + "format": "int32" }, - "taxRate": { - "type": "number" + "max": { + "type": "integer", + "format": "int32" }, - "price": { - "type": "number" + "unit": { + "type": "string" } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } - }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" } - ] - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" + }, + "translations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + } + } } - ] - }, - "positionPrice": { - "type": "number" - }, - "netPrice": { - "type": "number" - }, - "regulationPrice": { - "oneOf": [ - { + }, + "orderDeliveries": { + "type": "array", + "items": { "type": "object", "properties": { - "price": { - "type": "number" + "orderId": { + "type": "string" }, - "apiAlias": { + "shippingOrderAddressId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "shippingDateEarliest": { "type": "string", - "enum": [ - "cart_regulation_price" - ] + "format": "date-time" + }, + "shippingDateLatest": { + "type": "string", + "format": "date-time" + }, + "stateId": { + "type": "string" } } - }, - { - "type": "null" - } - ] - }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } - ] - }, - "apiAlias": { - "type": "string", - "enum": [ - "calculated_price" - ] - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } - } - }, - "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "referencePrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitPrice", - "positionPrice", - "netPrice", - "taxRules", - "rawTotal", - "taxStatus" - ] - }, - "CartPriceReference": { - "type": "object", - "properties": { - "purchaseUnit": { - "type": "number" - }, - "referenceUnit": { - "type": "number" - }, - "unitName": { - "type": "string" - }, - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_reference" - ] - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] - }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } - }, - { - "type": "null" - } - ] - }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" - ] - }, - "CartDeliveryPosition": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" - } - } - }, - "identifier": { - "type": "string" - }, - "lineItem": { - "$ref": "#/components/schemas/LineItem" - }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" - } - } - }, - "ProductListingFlags": { - "type": "object", - "description": "Additional flags for product listings", - "properties": { - "no-aggregations": { - "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "only-aggregations": { - "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - } - }, - "CartListPrice": { - "type": "object", - "description": "", - "properties": { - "discount": { - "type": "number" - }, - "percentage": { - "type": "number" - }, - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_list_price" - ] - } - }, - "required": [ - "apiAlias" - ] - }, - "NavigationRouteResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - }, - "ShippingMethodPageRouteResponse": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "deliveryTimeId": { - "type": "string" - }, - "deliveryTime": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer", - "format": "int32" - }, - "max": { - "type": "integer", - "format": "int32" - }, - "unit": { - "type": "string" - } } }, - "translations": { + "salesChannelDefaultAssignments": { "type": "array", "items": { "type": "object", "properties": { - "shippingMethodId": { + "typeId": { "type": "string" }, - "name": { + "languageId": { "type": "string" }, - "description": { - "type": "string" - } - } - } - }, - "orderDeliveries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "orderId": { + "currencyId": { "type": "string" }, - "shippingOrderAddressId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "shippingDateEarliest": { - "type": "string", - "format": "date-time" - }, - "shippingDateLatest": { - "type": "string", - "format": "date-time" - }, - "stateId": { - "type": "string" - } - } - } - }, - "salesChannelDefaultAssignments": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { + "paymentMethodId": { "type": "string" }, "shippingMethodId": { @@ -13657,2346 +13264,2649 @@ "thumbnailsRo": { "type": "string" } - } - }, - "tags": { - "type": "array", - "items": { + } + }, + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + } + } + } + } + }, + "ProductDetailResponse": { + "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", + "properties": { + "product": { + "$ref": "#/components/schemas/Product" + }, + "configurator": { + "type": "array", + "description": "List of property groups with their corresponding options and information on how to display them.", + "items": { + "$ref": "#/components/schemas/PropertyGroup" + } + } + }, + "required": [ + "product" + ] + }, + "CartDeliveryPosition": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } + }, + "identifier": { + "type": "string" + }, + "lineItem": { + "$ref": "#/components/schemas/LineItem" + }, + "price": { + "$ref": "#/components/schemas/CalculatedPrice" + } + } + }, + "LineItemType": { + "type": "string", + "deprecated": true, + "enum": [ + "product", + "credit", + "custom", + "promotion", + "discount", + "container", + "quantity" + ] + }, + "LineItem": { + "type": "object", + "properties": { + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + }, + "cover": { + "$ref": "#/components/schemas/Media" + }, + "dataContextHash": { + "type": "string" + }, + "dataTimestamp": { + "type": "string" + }, + "deliveryInformation": { + "$ref": "#/components/schemas/CartDeliveryInformation" + }, + "description": { + "type": "string" + }, + "good": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "label": { + "type": "string" + }, + "modified": { + "type": "boolean" + }, + "modifiedByApp": { + "type": "boolean" + }, + "payload": { + "$ref": "#/components/schemas/ProductJsonApi" + }, + "price": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] + }, + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] + }, + "quantity": { + "type": "number" + }, + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] + }, + "totalPrice": { + "type": "number" + }, + "unitPrice": { + "type": "number" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } + } + }, + "required": [ + "apiAlias", + "totalPrice", + "quantity", + "unitPrice" + ] + }, + "priceDefinition": { + "$ref": "#/components/schemas/CartPriceQuantity" + }, + "quantity": { + "type": "number" + }, + "quantityInformation": { + "type": "object", + "properties": { + "maxPurchase": { + "type": "number" + }, + "minPurchase": { + "type": "number" + }, + "purchaseSteps": { + "type": "number" + } + } + }, + "referencedId": { + "type": "string" + }, + "removable": { + "type": "boolean" + }, + "stackable": { + "type": "boolean" + }, + "states": { + "deprecated": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "is-physical", + "is-download" + ] + } + }, + "type": { + "$ref": "#/components/schemas/OrderLineItem/properties/type" + }, + "uniqueIdentifier": { + "type": "string" + } + }, + "required": [ + "id", + "type", + "deliveryInformation", + "payload", + "quantity", + "states" + ] + }, + "CrossSellingElementCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrossSellingElement" + } + }, + "Sitemap": { + "type": "object", + "properties": { + "filename": { + "type": "string" + }, + "created": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "filename", + "created" + ] + }, + "CartItems": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + } + } + }, + "CookieEntry": { + "type": "object", + "properties": { + "cookie": { + "type": "string" + }, + "value": { + "type": "string" + }, + "expiration": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cookie_entry" + ] + } + }, + "required": [ + "cookie", + "hidden", + "apiAlias" + ] + }, + "CookieRouteResponse": { + "type": "object", + "description": "Response containing cookie groups and their configuration hash.", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cookie_groups_hash" + ] + }, + "elements": { + "type": "array", + "description": "Collection of cookie groups", + "items": { + "$ref": "#/components/schemas/CookieGroup" + } + }, + "hash": { + "type": "string", + "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", + "example": "f86b6a872cb83dbd22d838ceda1aa3d4" + }, + "languageId": { + "type": "string", + "format": "uuid", + "description": "The language ID for which the cookie configuration was generated. Used to store hashes per language.", + "example": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" + } + }, + "required": [ + "elements", + "hash", + "languageId", + "apiAlias" + ], + "example": { + "apiAlias": "cookie_groups_hash", + "elements": [ + { + "isRequired": true, + "description": "Cookies required for this shop to function:", + "name": "Technically required", + "entries": [ + { + "name": "Session", + "hidden": false, + "cookie": "session-", + "apiAlias": "cookie_entry" + }, + { + "name": "Timezone", + "hidden": false, + "cookie": "timezone", + "apiAlias": "cookie_entry" + }, + { + "value": "1", + "expiration": 30, + "name": "Cookie preferences", + "hidden": true, + "cookie": "cookie-preference", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "description": "Cookies used for statistics and shop performance metrics.", + "name": "Statistics", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "Google Analytics", + "hidden": false, + "cookie": "google-analytics-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "description": "Allows Google to collect personal data for online advertising and marketing.", + "name": "Marketing", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "Google Advertising", + "hidden": false, + "cookie": "google-ads-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "name": "Comfort features", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "YouTube video", + "hidden": false, + "cookie": "youtube-video", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + } + ], + "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", + "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" + } + }, + "CartDelivery": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } + }, + "location": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "state": { + "$ref": "#/components/schemas/CountryState" + } + } + }, + "positions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDeliveryPosition" + } + }, + "shippingCosts": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + } + } + }, + "CookieEntryCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CookieEntry" + } + }, + "NavigationRouteResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + } + }, + "NavigationType": { + "type": "string", + "enum": [ + "main-navigation", + "footer-navigation", + "service-navigation" + ] + }, + "SalesChannelContext": { + "type": "object", + "properties": { + "token": { + "description": "Context the user session", + "type": "string" + }, + "currentCustomerGroup": { + "type": "object", + "description": "Customer group of the current user", + "properties": { + "name": { + "type": "string" + }, + "displayGross": { + "type": "boolean" + } + } + }, + "fallbackCustomerGroup": { + "description": "Fallback group if the default customer group is not applicable", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "displayGross": { + "type": "boolean" + } + } + }, + "currency": { + "$ref": "#/components/schemas/Currency" + }, + "salesChannel": { + "$ref": "#/components/schemas/SalesChannel" + }, + "measurementSystem": { + "$ref": "#/components/schemas/ContextMeasurementSystemInfo" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } + }, + "customer": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/Customer" + } + ] + }, + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod" + }, + "shippingLocation": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + } + } + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + }, + "context": { + "description": "Core context with general configuration values and state", + "type": "object", + "properties": { + "versionId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "currencyFactor": { + "type": "integer" + }, + "currencyPrecision": { + "type": "integer", + "format": "int32" + }, + "languageIdChain": { + "type": "array", + "items": { + "type": "string" + } + }, + "scope": { + "type": "string" + }, + "source": { "type": "object", + "required": [ + "salesChannelId", + "type" + ], "properties": { - "name": { + "type": { + "type": "string", + "enum": [ + "sales-channel", + "shop-api" + ] + }, + "salesChannelId": { "type": "string" } } + }, + "taxState": { + "type": "string" + }, + "useCache": { + "type": "boolean" } } - } - } - }, - "Sitemap": { - "type": "object", - "properties": { - "filename": { - "type": "string" }, - "created": { + "itemRounding": { + "type": "object", + "required": [ + "decimals", + "interval", + "roundForNet", + "apiAlias" + ], + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" + ] + }, + "decimals": { + "type": "integer", + "format": "int32" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" + } + } + }, + "totalRounding": { + "type": "object", + "required": [ + "decimals", + "interval", + "roundForNet", + "apiAlias" + ], + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" + ] + }, + "decimals": { + "type": "integer", + "format": "int32" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" + } + } + }, + "languageInfo": { + "type": "object", + "required": [ + "localeCode", + "name" + ], + "properties": { + "name": { + "type": "string" + }, + "localeCode": { + "type": "string" + } + } + }, + "apiAlias": { "type": "string", - "format": "date-time" + "enum": [ + "sales_channel_context" + ] } }, "required": [ - "filename", - "created" + "salesChannel", + "apiAlias", + "itemRounding", + "totalRounding", + "languageInfo" ] }, - "AggregationEntity": { - "title": "AggregationEntity", + "AggregationMetrics": { "type": "object", "properties": { "name": { - "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" }, "type": { - "description": "The type of aggregation", "type": "string", "enum": [ - "entity" + "avg", + "count", + "max", + "min", + "stats", + "sum" ] }, "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "definition": { - "description": "The entity definition e.g \"product_manufacturer\".", "type": "string" } }, "required": [ "name", "type", - "field", - "definition" + "field" ] }, - "AggregationFilter": { - "title": "AggregationFilter", + "CookieGroupCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CookieGroup" + } + }, + "ProductListingFlags": { "type": "object", + "description": "Additional flags for product listings", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "filter" + "no-aggregations": { + "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } ] }, - "filter": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Filters" - } + "only-aggregations": { + "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] } - }, - "required": [ - "name", - "type", - "filter" - ] + } }, - "AggregationTerms": { - "title": "AggregationTerms", + "Breadcrumb": { "type": "object", "properties": { "name": { - "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" }, - "type": { - "description": "The type of aggregation", + "categoryId": { "type": "string", - "enum": [ - "terms" - ] + "pattern": "^[0-9a-f]{32}$" }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "type": { + "$ref": "#/components/schemas/Category/properties/type" }, - "limit": { - "description": "The number of terms to return", - "type": "number" + "translated": { + "type": "object", + "additionalProperties": true, + "properties": { + "customFields": { + "type": "object" + }, + "slotConfig": { + "type": "object" + }, + "linkType": { + "$ref": "#/components/schemas/Category/properties/linkType" + }, + "internalLink": { + "type": "string" + }, + "externalLink": { + "type": "string" + }, + "linkNewTab": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "metaTitle": { + "type": "string" + }, + "metaDescription": { + "type": "string" + }, + "keywords": { + "type": "string" + } + } }, - "sort": { + "path": { + "type": "string" + }, + "seoUrls": { "type": "array", - "description": "Sorting the aggregation result.", "items": { - "$ref": "#/components/schemas/Sort" + "$ref": "#/components/schemas/SeoUrl" } + }, + "apiAlias": { + "type": "string", + "enum": [ + "breadcrumb" + ] } }, "required": [ "name", + "categoryId", "type", - "field" + "translated", + "path", + "apiAlias" ] }, - "AggregationHistogram": { - "title": "AggregationHistogram", + "CartError": { "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", + "key": { "type": "string" }, - "type": { - "description": "The type of aggregation", - "type": "string", + "level": { + "type": "number", "enum": [ - "histogram" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "interval": { - "description": "The interval of the histogram", - "type": "number" + 0, + 10, + 20 + ], + "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" }, - "format": { - "description": "The format of the histogram", + "message": { "type": "string" }, - "timeZone": { - "description": "The timezone of the histogram", + "messageKey": { "type": "string" } }, "required": [ - "name", - "type", - "field" + "key", + "level", + "message", + "messageKey" ] }, - "AggregationRange": { - "title": "AggregationRange", - "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", + "CartPriceReference": { "type": "object", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", + "purchaseUnit": { + "type": "number" + }, + "referenceUnit": { + "type": "number" + }, + "unitName": { "type": "string" }, - "type": { - "description": "The type of aggregation", + "price": { + "type": "number" + }, + "apiAlias": { "type": "string", "enum": [ - "range" + "cart_price_reference" ] }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] }, - "ranges": { - "description": "The ranges of the aggregation", - "type": "array", - "items": { - "type": "object", - "anyOf": [ - { - "type": "object", - "title": "From and to", - "properties": { - "from": { - "type": "number", - "description": "The lower bound of the range" - }, - "to": { - "type": "number", - "description": "The upper bound of the range" - } - }, - "required": [ - "from", - "to" - ] - }, - { - "type": "object", - "title": "From only", - "properties": { - "from": { - "type": "string", - "description": "The lower bound of the range" - } - }, - "required": [ - "from" - ] - }, - { - "type": "object", - "title": "To only", - "properties": { - "to": { - "type": "string", - "description": "The upper bound of the range" - } + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" }, - "required": [ - "to" - ] + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } } - ] - } + }, + { + "type": "null" + } + ] + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] } }, "required": [ - "name", - "type", - "field", - "ranges" + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" ] }, - "LineItemType": { - "type": "string", - "enum": [ - "product", - "credit", - "custom", - "promotion", - "discount", - "container", - "quantity" + "AccountNewsletterRecipient": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": [ + "undefined", + "notSet", + "direct", + "optIn", + "optOut" + ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "account_newsletter_recipient" + ] + } + }, + "required": [ + "status", + "apiAlias" ] }, - "LineItem": { + "SuccessResponse": { "type": "object", "properties": { - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - }, - "cover": { - "$ref": "#/components/schemas/Media" - }, - "dataContextHash": { - "type": "string" - }, - "dataTimestamp": { + "success": { + "type": "boolean" + } + } + }, + "EntitySearchResult": { + "type": "object", + "properties": { + "entity": { "type": "string" }, - "deliveryInformation": { - "$ref": "#/components/schemas/CartDeliveryInformation" + "total": { + "type": "integer", + "description": "The total number of found entities" }, - "description": { - "type": "string" + "aggregations": { + "type": "array", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", + "items": { + "type": "object" + } }, - "good": { - "type": "boolean" + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." }, - "id": { - "type": "string" + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." + } + } + }, + "CalculatedPrice": { + "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", + "properties": { + "unitPrice": { + "type": "number" }, - "label": { - "type": "string" + "quantity": { + "type": "number" }, - "modified": { - "type": "boolean" + "rawTotal": { + "type": "number" }, - "modifiedByApp": { - "type": "boolean" + "totalPrice": { + "type": "number" }, - "payload": { - "$ref": "#/components/schemas/ProductJsonApi" + "taxStatus": { + "type": "string", + "enum": [ + "net", + "tax-free" + ] }, - "price": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "calculated_price" - ] - }, - "calculatedTaxes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" } }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] - }, - "quantity": { - "type": "number" + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } + }, + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] + { + "type": "null" + } + ] + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } + { + "type": "null" + } + ] + }, + "positionPrice": { + "type": "number" + }, + "netPrice": { + "type": "number" + }, + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" }, - { - "type": "null" + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] } - ] - }, - "totalPrice": { - "type": "number" + } }, - "unitPrice": { - "type": "number" + { + "type": "null" + } + ] + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } + { + "type": "null" } - }, - "required": [ - "apiAlias", - "totalPrice", - "quantity", - "unitPrice" ] }, - "priceDefinition": { - "$ref": "#/components/schemas/CartPriceQuantity" + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } + } + }, + "required": [ + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "referencePrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitPrice", + "positionPrice", + "netPrice", + "taxRules", + "rawTotal", + "taxStatus" + ] + }, + "CustomerAddressBody": { + "description": "Added since version: 6.0.0.0", + "required": [ + "countryId", + "firstName", + "lastName", + "city", + "street" + ], + "properties": { + "countryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryStateId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "quantity": { - "type": "number" + "salutationId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "quantityInformation": { - "type": "object", - "properties": { - "maxPurchase": { - "type": "number" - }, - "minPurchase": { - "type": "number" - }, - "purchaseSteps": { - "type": "number" - } - } + "firstName": { + "type": "string" }, - "referencedId": { + "lastName": { "type": "string" }, - "removable": { - "type": "boolean" + "zipcode": { + "type": "string" }, - "stackable": { - "type": "boolean" + "city": { + "type": "string" }, - "states": { - "deprecated": true, - "type": "array", - "items": { - "type": "string", - "enum": [ - "is-physical", - "is-download" - ] - } + "company": { + "type": "string" }, - "type": { - "$ref": "#/components/schemas/LineItemType" + "street": { + "type": "string" }, - "uniqueIdentifier": { + "department": { "type": "string" - } - }, - "required": [ - "id", - "type", - "deliveryInformation", - "payload", - "quantity", - "states" - ] - }, - "CrossSellingElementCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CrossSellingElement" - } - }, - "CartError": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "key": { + }, + "title": { "type": "string" }, - "level": { - "type": "number", - "enum": [ - 0, - 10, - 20 - ], - "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" + "phoneNumber": { + "type": "string" }, - "message": { + "additionalAddressLine1": { "type": "string" }, - "messageKey": { + "additionalAddressLine2": { "type": "string" - } - }, - "required": [ - "key", - "level", - "message", - "messageKey" - ] - }, - "FindProductVariantRouteResponse": { - "type": "object", - "properties": { - "foundCombination": { - "type": "object", - "properties": { - "variantId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "options": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "ProductListingCriteria": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" }, - { - "type": "object", - "description": "Additional search parameters for product listings", - "properties": { - "order": { - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "type": "string" - }, - "limit": { - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "type": "integer", - "minimum": 0 - }, - "p": { - "description": "Search result page", - "type": "integer", - "default": 1 - }, - "manufacturer": { - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", - "type": "string" - }, - "min-price": { - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 - }, - "max-price": { - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 - }, - "rating": { - "description": "Filter products with a minimum average rating.", - "type": "integer" - }, - "shipping-free": { - "description": "Filters products that are marked as shipping-free.", - "type": "boolean", - "default": false - }, - "properties": { - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", - "type": "string" - }, - "manufacturer-filter": { - "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "price-filter": { - "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "rating-filter": { - "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "shipping-free-filter": { - "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "property-filter": { - "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "property-whitelist": { - "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", - "type": "string" - }, - "reduce-aggregations": { - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - } - } - ] - }, - "NavigationType": { - "type": "string", - "enum": [ - "main-navigation", - "footer-navigation", - "service-navigation" - ] - }, - "WishlistLoadRouteResponse": { - "type": "object", - "required": [ - "products" - ], - "properties": { - "wishlist": { - "type": "object", - "properties": { - "customerId": { - "type": "string" - }, - "salesChannelId": { - "type": "string" - } - } + "customFields": { + "type": "object" }, - "products": { - "$ref": "#/components/schemas/ProductListingResult" + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "$ref": "#/components/schemas/CountryState" + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" } - } + }, + "type": "object" }, - "AggregationMetrics": { + "ReferencePrice": { "type": "object", "properties": { - "name": { + "purchaseUnit": { + "type": "number" + }, + "referenceUnit": { + "type": "number" + }, + "unitName": { "type": "string" }, - "type": { + "price": { + "type": "number" + }, + "apiAlias": { "type": "string", "enum": [ - "avg", - "count", - "max", - "min", - "stats", - "sum" + "cart_price_reference" ] }, - "field": { - "type": "string" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/ListPrice" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] } }, "required": [ - "name", - "type", - "field" + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" ] }, - "CartDeliveryInformation": { + "CustomerAddressRead": { "type": "object", "properties": { - "apiAlias": { + "id": { "type": "string", - "enum": [ - "cart_delivery_information" - ] + "pattern": "^[0-9a-f]{32}$", + "readOnly": true }, - "freeDelivery": { - "type": "boolean" + "customerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true }, - "deliveryTime": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer" - }, - "max": { - "type": "integer" - }, - "unit": { - "type": "string" - }, - "apiAlias": { + "createdAt": { + "type": "string", + "format": "date-time" + }, + "updatedAt": { + "oneOf": [ + { "type": "string", - "enum": [ - "cart_delivery_time" - ] + "format": "date-time" + }, + { + "type": "null" } - } - }, - "height": { - "type": "integer" - }, - "length": { - "type": "integer" - }, - "restockTime": { - "type": "integer" + ] }, - "stock": { - "type": "integer" + "country": { + "$ref": "#/components/schemas/Country" }, - "weight": { - "type": "integer" + "countryState": { + "oneOf": [ + { + "$ref": "#/components/schemas/CountryState" + }, + { + "type": "null" + } + ] }, - "width": { - "type": "integer" + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, "required": [ - "apiAlias" + "customerId", + "createdAt", + "updatedAt", + "country", + "salutation" ] }, - "CartItems": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - } - } - }, - "Breadcrumb": { + "Criteria": { "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "name": { - "type": "string" + "page": { + "description": "Search result page", + "type": "integer" }, - "categoryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "term": { + "description": "Search term", + "type": "string" }, - "type": { - "type": "string", - "enum": [ - "page", - "link", - "folder" - ] + "limit": { + "description": "Number of items per result page", + "type": "integer" }, - "translated": { - "type": "object", - "additionalProperties": true, - "properties": { - "customFields": { - "type": "object" - }, - "slotConfig": { - "type": "object" - }, - "linkType": { - "type": "string", - "enum": [ - "external", - "category", - "product", - "landing_page" - ] - }, - "internalLink": { - "type": "string" - }, - "externalLink": { - "type": "string" - }, - "linkNewTab": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "metaTitle": { - "type": "string" - }, - "metaDescription": { - "type": "string" - }, - "keywords": { - "type": "string" - } + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] } }, - "path": { - "type": "string" - }, - "seoUrls": { + "ids": { "type": "array", + "description": "List of ids to search for", "items": { - "$ref": "#/components/schemas/SeoUrl" + "type": "string" } }, - "apiAlias": { + "query": { "type": "string", - "enum": [ - "breadcrumb" - ] - } - }, - "required": [ - "name", - "categoryId", - "type", - "translated", - "path", - "apiAlias" - ] - }, - "SalesChannelContext": { - "type": "object", - "properties": { - "token": { - "description": "Context the user session", - "type": "string" + "description": "The query string to search for" }, - "currentCustomerGroup": { - "type": "object", - "description": "Customer group of the current user", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } + "associations": { + "$ref": "#/components/schemas/Associations" + }, + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] } }, - "fallbackCustomerGroup": { - "description": "Fallback group if the default customer group is not applicable", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" } }, - "currency": { - "$ref": "#/components/schemas/Currency" + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } }, - "salesChannel": { - "$ref": "#/components/schemas/SalesChannel" + "fields": { + "type": "array", + "description": "Fields which should be returned in the search result.", + "items": { + "type": "string", + "description": "Name of a field" + } }, - "measurementSystem": { - "$ref": "#/components/schemas/ContextMeasurementSystemInfo" + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } }, - "taxRules": { + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" + }, + "excludes": { + "$ref": "#/components/schemas/Excludes" + } + } + }, + "NoneFieldsCriteria": { + "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", + "properties": { + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", + "type": "string" + }, + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { "type": "array", - "description": "Currently active tax rules and/or rates", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "name": { - "type": "string" + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } - } + ] } }, - "customer": { - "oneOf": [ - { - "type": "null" - }, - { - "$ref": "#/components/schemas/Customer" - } - ] - }, - "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethod" - }, - "shippingLocation": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" - } + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" } }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" + "query": { + "type": "string", + "description": "The query string to search for" }, - "context": { - "description": "Core context with general configuration values and state", - "type": "object", - "properties": { - "versionId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "currencyFactor": { - "type": "integer" - }, - "currencyPrecision": { - "type": "integer", - "format": "int32" - }, - "languageIdChain": { - "type": "array", - "items": { - "type": "string" - } - }, - "scope": { - "type": "string" - }, - "source": { - "type": "object", - "required": [ - "salesChannelId", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "sales-channel", - "shop-api" - ] - }, - "salesChannelId": { - "type": "string" - } + "associations": { + "$ref": "#/components/schemas/Associations" + }, + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } - }, - "taxState": { - "type": "string" - }, - "useCache": { - "type": "boolean" - } + ] } }, - "itemRounding": { - "type": "object", - "required": [ - "decimals", - "interval", - "roundForNet", - "apiAlias" - ], - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" - ] - }, - "decimals": { - "type": "integer", - "format": "int32" - }, - "interval": { - "type": "number", - "format": "float" - }, - "roundForNet": { - "type": "boolean" - } + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" } }, - "totalRounding": { - "type": "object", - "required": [ - "decimals", - "interval", - "roundForNet", - "apiAlias" - ], - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" - ] - }, - "decimals": { - "type": "integer", - "format": "int32" - }, - "interval": { - "type": "number", - "format": "float" - }, - "roundForNet": { - "type": "boolean" - } + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" } }, - "languageInfo": { - "type": "object", - "required": [ - "localeCode", - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "localeCode": { - "type": "string" - } + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" } }, - "apiAlias": { - "type": "string", - "enum": [ - "sales_channel_context" - ] + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" + }, + "excludes": { + "$ref": "#/components/schemas/Excludes" } - }, - "required": [ - "salesChannel", - "apiAlias", - "itemRounding", - "totalRounding", - "languageInfo" - ] + } }, - "Association": { + "Associations": { + "type": "object", "additionalProperties": { - "$ref": "#/components/schemas/Association" + "$ref": "#/components/schemas/Criteria" } }, - "ContextMeasurementSystemInfo": { + "Includes": { "type": "object", - "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", - "properties": { - "system": { - "type": "string", - "enum": [ - "metric", - "imperial" - ], - "default": "metric", - "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." - }, - "units": { - "type": "object", - "description": "Units used in the measurement system.", - "properties": { - "length": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm", - "description": "Unit of length." - }, - "weight": { - "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg", - "description": "Unit of weight." - } - } + "additionalProperties": { + "type": "array", + "items": { + "type": "string" } } }, - "ListPrice": { + "Excludes": { "type": "object", - "description": "", - "properties": { - "discount": { - "type": "number" - }, - "percentage": { - "type": "number" - }, - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_list_price" - ] + "additionalProperties": { + "type": "array", + "items": { + "type": "string" } - }, - "required": [ - "apiAlias" - ] + } }, - "Price": { - "type": "object", - "description": "Price object", - "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "", - "type": "number" - }, - "net": { - "description": "", - "type": "number" + "Aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" }, - "linked": { - "description": "", - "type": "boolean" + { + "title": "AggregationEntity", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationEntity" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] }, - "listPrice": { - "description": "", - "type": "object", - "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + { + "title": "AggregationFilter", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationFilter" }, - "gross": { - "description": "", - "type": "number" + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationTerms", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationTerms" }, - "net": { - "description": "", - "type": "number" + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" }, - "linked": { - "description": "", - "type": "boolean" + { + "$ref": "#/components/schemas/SubAggregations" } - }, - "required": [ - "gross", - "net" ] }, - "regulationPrice": { - "description": "", - "type": "object", - "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "", - "type": "number" - }, - "net": { - "description": "", - "type": "number" + { + "title": "AggregationRange", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationRange" }, - "linked": { - "description": "", - "type": "boolean" + { + "$ref": "#/components/schemas/SubAggregations" } - }, - "required": [ - "gross", - "net" ] } - }, - "required": [ - "currencyId", - "gross", - "net" ] }, - "ProductListingResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EntitySearchResult" - }, - { - "type": "object", - "properties": { - "currentFilters": { - "type": "object", - "description": "Contains the state of the filters. These can be used to create listing filters.", - "properties": { - "navigationId": { - "type": "string" - }, - "manufacturer": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "price": { - "type": "object", - "properties": { - "min": { - "type": "integer", - "default": 0 - }, - "max": { - "type": "integer", - "default": 0 - } - }, - "required": [ - "min", - "max" - ] - }, - "rating": { - "oneOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "shipping-free": { - "type": "boolean", - "default": false - }, - "properties": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "search": { - "type": "string" - } - }, - "required": [ - "manufacturer", - "navigationId", - "price", - "properties", - "rating", - "shipping-free" - ] + "SubAggregations": { + "type": "object", + "properties": { + "aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" }, - "availableSortings": { - "type": "array", - "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", - "items": { - "type": "object", - "properties": { - "label": { - "type": "string" - }, - "translated": { - "type": "object", - "properties": { - "label": { - "type": "string" - } - }, - "required": [ - "label" - ] - }, - "key": { - "type": "string" - }, - "priority": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_sorting" - ] - } - }, - "required": [ - "label", - "translated", - "key", - "priority", - "apiAlias" - ] - } + { + "$ref": "#/components/schemas/AggregationEntity" }, - "sorting": { - "type": "string" + { + "$ref": "#/components/schemas/AggregationFilter" }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } + { + "$ref": "#/components/schemas/AggregationTerms" }, - "entity": { - "type": "string", - "enum": [ - "product" - ] + { + "$ref": "#/components/schemas/AggregationHistogram" }, - "apiAlias": { - "type": "string", - "enum": [ - "product_listing" - ] + { + "$ref": "#/components/schemas/AggregationRange" } - }, - "required": [ - "elements", - "availableSortings", - "currentFilters", - "apiAlias" ] } + } + }, + "TotalCountMode": { + "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", + "type": "string", + "default": "none", + "enum": [ + "none", + "exact", + "next-pages" ] }, - "CookieGroup": { + "Query": { "type": "object", "properties": { - "isRequired": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "cookie": { - "type": "string" + "score": { + "type": "number" }, - "value": { + "query": { + "oneOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "additionalProperties": true + }, + "Sort": { + "type": "object", + "properties": { + "field": { "type": "string" }, - "expiration": { - "type": "integer" - }, - "entries": { - "$ref": "#/components/schemas/CookieEntryCollection" - }, - "apiAlias": { + "order": { "type": "string", "enum": [ - "cookie_group" + "ASC", + "DESC" ] + }, + "naturalSorting": { + "type": "boolean" + }, + "type": { + "type": "string" } }, - "not": { - "allOf": [ + "required": [ + "field", + "order" + ] + }, + "Filters": { + "type": "array", + "items": { + "anyOf": [ { - "required": [ - "cookie" - ] + "$ref": "#/components/schemas/SimpleFilter" }, { - "required": [ - "entries" - ] + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } ] - }, - "required": [ - "name", - "isRequired", - "apiAlias" - ] + } }, - "CustomerAddressBody": { - "description": "Added since version: 6.0.0.0", - "required": [ - "countryId", - "firstName", - "lastName", - "city", - "street" - ], + "SimpleFilter": { + "type": "object", "properties": { - "countryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryStateId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "salutationId": { + "type": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "zipcode": { - "type": "string" - }, - "city": { - "type": "string" - }, - "company": { - "type": "string" - }, - "street": { - "type": "string" - }, - "department": { - "type": "string" - }, - "title": { - "type": "string" + "enum": [ + "contains", + "equalsAny", + "prefix", + "suffix" + ] }, - "phoneNumber": { + "field": { "type": "string" }, - "additionalAddressLine1": { + "value": { "type": "string" + } + }, + "required": [ + "type", + "field", + "value" + ] + }, + "EqualsFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "equals" + ] }, - "additionalAddressLine2": { + "field": { "type": "string" }, - "customFields": { - "type": "object" - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "$ref": "#/components/schemas/CountryState" - }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "value": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + } + ] } }, - "type": "object" + "required": [ + "type", + "field", + "value" + ] }, - "ProductDetailResponse": { + "MultiNotFilter": { "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "product": { - "$ref": "#/components/schemas/Product" + "type": { + "type": "string", + "enum": [ + "multi", + "not" + ] }, - "configurator": { - "type": "array", - "description": "List of property groups with their corresponding options and information on how to display them.", - "items": { - "$ref": "#/components/schemas/PropertyGroup" - } + "operator": { + "type": "string", + "enum": [ + "and", + "or", + "nor", + "nand" + ] + }, + "queries": { + "$ref": "#/components/schemas/Filters" } }, "required": [ - "product" + "type", + "operator", + "queries" ] }, - "CartPriceQuantity": { + "RangeFilter": { "type": "object", "properties": { - "apiAlias": { + "type": { "type": "string", "enum": [ - "cart_price_quantity" + "range" ] }, - "isCalculated": { - "type": "boolean" - }, - "listPrice": { - "$ref": "#/components/schemas/CartListPrice" - }, - "price": { - "type": "number" - }, - "quantity": { - "type": "number" + "field": { + "type": "string" }, - "regulationPrice": { + "parameters": { + "type": "object", "properties": { - "price": { - "type": "number", - "format": "float" + "gte": { + "type": "number" + }, + "gt": { + "type": "number" + }, + "lte": { + "type": "number" + }, + "lt": { + "type": "number" } - }, - "type": "object" - }, - "taxRules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" + } + } + }, + "required": [ + "type", + "field", + "parameters" + ] + }, + "Association": { + "additionalProperties": { + "$ref": "#/components/schemas/Association" + } + }, + "OrderRouteResponse": { + "type": "object", + "properties": { + "orders": { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "elements" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" + } + } } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" } - } + ] }, - "type": { - "type": "string" + "paymentChangeable": { + "type": "object", + "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", + "additionalProperties": { + "type": "boolean" + } } }, "required": [ - "apiAlias" + "orders" ] }, - "MeasurementUnits": { + "CartDeliveryInformation": { "type": "object", - "description": "Configuration of the measurement system", "properties": { - "system": { + "apiAlias": { "type": "string", "enum": [ - "metric", - "imperial" - ], - "default": "metric", - "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." + "cart_delivery_information" + ] }, - "units": { + "freeDelivery": { + "type": "boolean" + }, + "deliveryTime": { "type": "object", - "description": "Units used in the measurement system.", "properties": { - "length": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm", - "description": "Unit of length." + "name": { + "type": "string" }, - "weight": { + "min": { + "type": "integer" + }, + "max": { + "type": "integer" + }, + "unit": { + "type": "string" + }, + "apiAlias": { "type": "string", "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg", - "description": "Unit of weight." + "cart_delivery_time" + ] } } - } - } - }, - "CookieEntry": { - "type": "object", - "properties": { - "cookie": { - "type": "string" }, - "value": { - "type": "string" + "height": { + "type": "integer" }, - "expiration": { + "length": { "type": "integer" }, - "name": { - "type": "string" + "restockTime": { + "type": "integer" }, - "description": { - "type": "string" + "stock": { + "type": "integer" }, - "hidden": { - "type": "boolean" + "weight": { + "type": "integer" }, - "apiAlias": { - "type": "string", - "enum": [ - "cookie_entry" - ] + "width": { + "type": "integer" } }, "required": [ - "cookie", - "hidden", "apiAlias" ] }, - "CookieRouteResponse": { + "WishlistLoadRouteResponse": { "type": "object", - "description": "Response containing cookie groups and their configuration hash.", + "required": [ + "products" + ], "properties": { - "apiAlias": { + "wishlist": { + "type": "object", + "properties": { + "customerId": { + "type": "string" + }, + "salesChannelId": { + "type": "string" + } + } + }, + "products": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + }, + "AggregationEntity": { + "title": "AggregationEntity", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", "type": "string", "enum": [ - "cookie_groups_hash" + "entity" ] }, - "elements": { - "type": "array", - "description": "Collection of cookie groups", - "items": { - "$ref": "#/components/schemas/CookieGroup" - } - }, - "hash": { - "type": "string", - "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", - "example": "f86b6a872cb83dbd22d838ceda1aa3d4" + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "languageId": { - "type": "string", - "format": "uuid", - "description": "The language ID for which the cookie configuration was generated. Used to store hashes per language.", - "example": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" + "definition": { + "description": "The entity definition e.g \"product_manufacturer\".", + "type": "string" } }, "required": [ - "elements", - "hash", - "languageId", - "apiAlias" - ], - "example": { - "apiAlias": "cookie_groups_hash", - "elements": [ - { - "isRequired": true, - "description": "Cookies required for this shop to function:", - "name": "Technically required", - "entries": [ - { - "name": "Session", - "hidden": false, - "cookie": "session-", - "apiAlias": "cookie_entry" - }, - { - "name": "Timezone", - "hidden": false, - "cookie": "timezone", - "apiAlias": "cookie_entry" - }, - { - "value": "1", - "expiration": 30, - "name": "Cookie preferences", - "hidden": true, - "cookie": "cookie-preference", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "description": "Cookies used for statistics and shop performance metrics.", - "name": "Statistics", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "Google Analytics", - "hidden": false, - "cookie": "google-analytics-enabled", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "description": "Allows Google to collect personal data for online advertising and marketing.", - "name": "Marketing", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "Google Advertising", - "hidden": false, - "cookie": "google-ads-enabled", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "name": "Comfort features", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "YouTube video", - "hidden": false, - "cookie": "youtube-video", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - } - ], - "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", - "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" - } + "name", + "type", + "field", + "definition" + ] }, - "Criteria": { + "AggregationFilter": { + "title": "AggregationFilter", "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "term": { - "description": "Search term", + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" }, - "limit": { - "description": "Number of items per result page", - "type": "integer" + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "filter" + ] }, "filter": { "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "ids": { - "type": "array", - "description": "List of ids to search for", "items": { - "type": "string" + "$ref": "#/components/schemas/Filters" } + } + }, + "required": [ + "name", + "type", + "filter" + ] + }, + "AggregationTerms": { + "title": "AggregationTerms", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "query": { + "type": { + "description": "The type of aggregation", "type": "string", - "description": "The query string to search for" + "enum": [ + "terms" + ] }, - "associations": { - "$ref": "#/components/schemas/Associations" + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } + "limit": { + "description": "The number of terms to return", + "type": "number" }, "sort": { "type": "array", - "description": "Sorting in the search result.", + "description": "Sorting the aggregation result.", "items": { "$ref": "#/components/schemas/Sort" } + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "AggregationHistogram": { + "title": "AggregationHistogram", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } - }, - "fields": { - "type": "array", - "description": "Fields which should be returned in the search result.", - "items": { - "type": "string", - "description": "Name of a field" - } + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "histogram" + ] }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" + "interval": { + "description": "The interval of the histogram", + "type": "number" }, - "includes": { - "$ref": "#/components/schemas/Includes" + "format": { + "description": "The format of the histogram", + "type": "string" }, - "excludes": { - "$ref": "#/components/schemas/Excludes" + "timeZone": { + "description": "The timezone of the histogram", + "type": "string" } - } + }, + "required": [ + "name", + "type", + "field" + ] }, - "NoneFieldsCriteria": { + "AggregationRange": { + "title": "AggregationRange", + "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "term": { - "description": "Search term", + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" }, - "limit": { - "description": "Number of items per result page", - "type": "integer" - }, - "filter": { - "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" - } - }, - "query": { + "type": { + "description": "The type of aggregation", "type": "string", - "description": "The query string to search for" + "enum": [ + "range" + ] }, - "associations": { - "$ref": "#/components/schemas/Associations" + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "post-filter": { + "ranges": { + "description": "The ranges of the aggregation", "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", "items": { + "type": "object", "anyOf": [ { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" + "type": "object", + "title": "From and to", + "properties": { + "from": { + "type": "number", + "description": "The lower bound of the range" + }, + "to": { + "type": "number", + "description": "The upper bound of the range" + } + }, + "required": [ + "from", + "to" + ] }, { - "$ref": "#/components/schemas/MultiNotFilter" + "type": "object", + "title": "From only", + "properties": { + "from": { + "type": "string", + "description": "The lower bound of the range" + } + }, + "required": [ + "from" + ] }, { - "$ref": "#/components/schemas/RangeFilter" + "type": "object", + "title": "To only", + "properties": { + "to": { + "type": "string", + "description": "The upper bound of the range" + } + }, + "required": [ + "to" + ] } ] } + } + }, + "required": [ + "name", + "type", + "field", + "ranges" + ] + }, + "CartListPrice": { + "type": "object", + "description": "", + "properties": { + "discount": { + "type": "number" }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" - } - }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } - }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" + "percentage": { + "type": "number" }, - "includes": { - "$ref": "#/components/schemas/Includes" + "price": { + "type": "number" }, - "excludes": { - "$ref": "#/components/schemas/Excludes" + "apiAlias": { + "type": "string", + "enum": [ + "cart_list_price" + ] } - } - }, - "Associations": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Criteria" - } + }, + "required": [ + "apiAlias" + ] }, - "Includes": { + "Cart": { "type": "object", - "additionalProperties": { - "type": "array", - "items": { + "properties": { + "name": { + "description": "Name of the cart - for example `guest-cart`", "type": "string" - } - } - }, - "Excludes": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { + }, + "token": { + "description": "Context token identifying the cart and the user session", "type": "string" - } - } - }, - "Aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" }, - { - "title": "AggregationEntity", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "price": { + "$ref": "#/components/schemas/CalculatedPrice" }, - { - "title": "AggregationFilter", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "lineItems": { + "description": "All items within the cart", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } }, - { - "title": "AggregationTerms", - "allOf": [ + "errors": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "anyOf": [ { - "$ref": "#/components/schemas/AggregationTerms" + "type": "array", + "items": { + "$ref": "#/components/schemas/CartError" + } }, { - "$ref": "#/components/schemas/SubAggregations" + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "code": { + "type": "number" + }, + "key": { + "type": "string" + }, + "level": { + "type": "number" + }, + "message": { + "type": "string" + }, + "messageKey": { + "type": "string" + } + }, + "required": [ + "code", + "key", + "level", + "message", + "messageKey" + ] + } } ] }, - { - "title": "AggregationHistogram", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "deliveries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDelivery" + } }, - { - "title": "AggregationRange", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationRange" - }, - { - "$ref": "#/components/schemas/SubAggregations" + "transactions": { + "description": "A list of all payment transactions associated with the current cart.", + "type": "array", + "items": { + "type": "object", + "properties": { + "paymentMethodId": { + "type": "string" + }, + "amount": { + "$ref": "#/components/schemas/CalculatedPrice" + } } - ] - } - ] - }, - "SubAggregations": { - "type": "object", - "properties": { - "aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/AggregationTerms" - }, + } + }, + "modified": { + "type": "boolean" + }, + "customerComment": { + "description": "A comment that can be added to the cart.", + "oneOf": [ { - "$ref": "#/components/schemas/AggregationHistogram" + "type": "string" }, { - "$ref": "#/components/schemas/AggregationRange" + "type": "null" } ] - } - } - }, - "TotalCountMode": { - "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", - "type": "string", - "default": "none", - "enum": [ - "none", - "exact", - "next-pages" - ] - }, - "Query": { - "type": "object", - "properties": { - "score": { - "type": "number" }, - "query": { + "affiliateCode": { + "description": "An affiliate tracking code", "oneOf": [ { - "$ref": "#/components/schemas/SimpleFilter" + "type": "string" }, { - "$ref": "#/components/schemas/EqualsFilter" - }, + "type": "null" + } + ] + }, + "campaignCode": { + "description": "A campaign tracking code", + "oneOf": [ { - "$ref": "#/components/schemas/MultiNotFilter" + "type": "string" }, { - "$ref": "#/components/schemas/RangeFilter" + "type": "null" } ] - } - }, - "additionalProperties": true - }, - "Sort": { - "type": "object", - "properties": { - "field": { - "type": "string" }, - "order": { + "apiAlias": { "type": "string", "enum": [ - "ASC", - "DESC" + "cart" ] - }, - "naturalSorting": { - "type": "boolean" - }, - "type": { - "type": "string" } }, "required": [ - "field", - "order" + "price", + "apiAlias" ] }, - "Filters": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "SimpleFilter": { + "CookieGroup": { "type": "object", "properties": { - "type": { - "type": "string", - "enum": [ - "contains", - "equalsAny", - "prefix", - "suffix" - ] + "isRequired": { + "type": "boolean" }, - "field": { + "name": { "type": "string" }, - "value": { + "description": { "type": "string" - } - }, - "required": [ - "type", - "field", - "value" - ] - }, - "EqualsFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "equals" - ] }, - "field": { + "cookie": { "type": "string" }, "value": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "type", - "field", - "value" - ] - }, - "MultiNotFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "multi", - "not" - ] + "type": "string" }, - "operator": { + "expiration": { + "type": "integer" + }, + "entries": { + "$ref": "#/components/schemas/CookieEntryCollection" + }, + "apiAlias": { "type": "string", "enum": [ - "and", - "or", - "nor", - "nand" + "cookie_group" ] - }, - "queries": { - "$ref": "#/components/schemas/Filters" } }, + "not": { + "allOf": [ + { + "required": [ + "cookie" + ] + }, + { + "required": [ + "entries" + ] + } + ] + }, "required": [ - "type", - "operator", - "queries" + "name", + "isRequired", + "apiAlias" ] }, - "RangeFilter": { + "MeasurementUnits": { "type": "object", + "description": "Configuration of the measurement system", "properties": { - "type": { + "system": { "type": "string", "enum": [ - "range" - ] - }, - "field": { - "type": "string" + "metric", + "imperial" + ], + "default": "metric", + "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." }, - "parameters": { + "units": { "type": "object", + "description": "Units used in the measurement system.", "properties": { - "gte": { - "type": "number" - }, - "gt": { - "type": "number" - }, - "lte": { - "type": "number" + "length": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Unit of length." }, - "lt": { - "type": "number" + "weight": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." } } } - }, - "required": [ - "type", - "field", - "parameters" - ] + } }, - "CustomerAddressRead": { + "Price": { "type": "object", + "description": "Price object", "properties": { - "id": { + "currencyId": { "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "customerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true + "gross": { + "description": "", + "type": "number" }, - "createdAt": { - "type": "string", - "format": "date-time" + "net": { + "description": "", + "type": "number" }, - "updatedAt": { - "oneOf": [ - { + "linked": { + "description": "", + "type": "boolean" + }, + "listPrice": { + "description": "", + "type": "object", + "properties": { + "currencyId": { "type": "string", - "format": "date-time" + "pattern": "^[0-9a-f]{32}$" + }, + "gross": { + "description": "", + "type": "number" + }, + "net": { + "description": "", + "type": "number" }, - { - "type": "null" + "linked": { + "description": "", + "type": "boolean" } + }, + "required": [ + "gross", + "net" ] }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "oneOf": [ - { - "$ref": "#/components/schemas/CountryState" + "regulationPrice": { + "description": "", + "type": "object", + "properties": { + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - { - "type": "null" + "gross": { + "description": "", + "type": "number" + }, + "net": { + "description": "", + "type": "number" + }, + "linked": { + "description": "", + "type": "boolean" } + }, + "required": [ + "gross", + "net" ] - }, - "salutation": { - "$ref": "#/components/schemas/Salutation" } }, "required": [ - "customerId", - "createdAt", - "updatedAt", - "country", - "salutation" + "currencyId", + "gross", + "net" ] }, - "ProductMeasurements": { + "ContextMeasurementSystemInfo": { "type": "object", - "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", + "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", "properties": { - "width": { + "system": { + "type": "string", + "enum": [ + "metric", + "imperial" + ], + "default": "metric", + "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." + }, + "units": { "type": "object", + "description": "Units used in the measurement system.", "properties": { - "unit": { + "length": { "type": "string", "enum": [ "mm", @@ -16005,94 +15915,212 @@ "in", "ft" ], - "default": "mm" + "default": "mm", + "description": "Unit of length." }, - "value": { - "type": "number" + "weight": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." } } - }, - "height": { + } + } + }, + "FindProductVariantRouteResponse": { + "type": "object", + "properties": { + "foundCombination": { "type": "object", "properties": { - "unit": { + "variantId": { "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" + "pattern": "^[0-9a-f]{32}$" }, - "value": { - "type": "number" + "options": { + "type": "array", + "items": { + "type": "string" + } } } + } + } + }, + "ListPrice": { + "type": "object", + "description": "", + "properties": { + "discount": { + "type": "number" }, - "length": { + "percentage": { + "type": "number" + }, + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_list_price" + ] + } + }, + "required": [ + "apiAlias" + ] + }, + "ProductListingResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EntitySearchResult" + }, + { "type": "object", "properties": { - "unit": { + "currentFilters": { + "type": "object", + "description": "Contains the state of the filters. These can be used to create listing filters.", + "properties": { + "navigationId": { + "type": "string" + }, + "manufacturer": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "price": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "default": 0 + }, + "max": { + "type": "integer", + "default": 0 + } + }, + "required": [ + "min", + "max" + ] + }, + "rating": { + "oneOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "shipping-free": { + "type": "boolean", + "default": false + }, + "properties": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "search": { + "type": "string" + } + }, + "required": [ + "manufacturer", + "navigationId", + "price", + "properties", + "rating", + "shipping-free" + ] + }, + "availableSortings": { + "type": "array", + "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", + "items": { + "type": "object", + "properties": { + "label": { + "type": "string" + }, + "translated": { + "type": "object", + "properties": { + "label": { + "type": "string" + } + }, + "required": [ + "label" + ] + }, + "key": { + "type": "string" + }, + "priority": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_sorting" + ] + } + }, + "required": [ + "label", + "translated", + "key", + "priority", + "apiAlias" + ] + } + }, + "sorting": { + "type": "string" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "entity": { "type": "string", "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" + "product" + ] }, - "value": { - "type": "number" - } - } - }, - "weight": { - "type": "object", - "properties": { - "unit": { + "apiAlias": { "type": "string", "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg" - }, - "value": { - "type": "number" + "product_listing" + ] } - } - } - } - }, - "AccountNewsletterRecipient": { - "type": "object", - "properties": { - "status": { - "type": "string", - "enum": [ - "undefined", - "notSet", - "direct", - "optIn", - "optOut" - ] - }, - "apiAlias": { - "type": "string", - "enum": [ - "account_newsletter_recipient" + }, + "required": [ + "elements", + "availableSortings", + "currentFilters", + "apiAlias" ] } - }, - "required": [ - "status", - "apiAlias" ] } }, @@ -16215,25 +16243,221 @@ }, "application/json": { "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "400", + "title": "Bad Request", + "description": "Bad parameters for this endpoint. See documentation for the correct ones." + } + ] + } + } + } + }, + "204": { + "description": "No Content" + }, + "CurrencyListResponse": { + "description": "Entity search result containing currencies.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Currency" + } + } + } + } + }, + "ProductListResponse": { + "description": "Entity search result containing products", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "required": [ + "elements" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + }, + "SeoUrlListResponse": { + "description": "Entity search result containing seo urls.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" + } + } + }, + "type": "object", + "required": [ + "elements" + ] + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + }, + "CategoryListResponse": { + "description": "Entity search result containing categories.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + } + } + } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + }, + "LanguageListResponse": { + "description": "Entity search result containing languages.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + } + } + }, + "required": [ + "elements" + ], + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + }, + "CountryStateListResponse": { + "description": "Entity search result containing countries.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CountryState" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + }, + "ContextTokenResponse": { + "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", + "headers": { + "sw-context-token": { + "description": "Contains sw-context-token value", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redirectUrl": { + "description": "Define the URL which browser will be redirected to", + "type": "string" + } + } + } + } + } + }, + "SalutationListResponse": { + "description": "Entity search result containing salutations.", + "content": { + "application/json": { + "schema": { + "allOf": [ { - "status": "400", - "title": "Bad Request", - "description": "Bad parameters for this endpoint. See documentation for the correct ones." + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Salutation" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" } ] } } } }, - "204": { - "description": "No Content" - }, - "ProductListResponse": { - "description": "Entity search result containing products", + "ShippingMethodListResponse": { + "description": "Entity search result containing shipping methods.", "content": { "application/json": { "schema": { @@ -16243,10 +16467,18 @@ "elements" ], "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Product" + "$ref": "#/components/schemas/ShippingMethod" } } }, @@ -16260,22 +16492,22 @@ } } }, - "CategoryListResponse": { - "description": "Entity search result containing categories.", + "CountryListResponse": { + "description": "Entity search result containing countries.", "content": { "application/json": { "schema": { "allOf": [ { - "type": "object", "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Category" + "$ref": "#/components/schemas/Country" } } - } + }, + "type": "object" }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -16474,72 +16706,6 @@ } } }, - "CountryStateListResponse": { - "description": "Entity search result containing countries.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CountryState" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } - }, - "CurrencyListResponse": { - "description": "Entity search result containing currencies.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Currency" - } - } - } - } - }, - "SeoUrlListResponse": { - "description": "Entity search result containing seo urls.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } - } - }, - "type": "object", - "required": [ - "elements" - ] - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } - }, "PaymentMethodListResponse": { "description": "", "content": { @@ -16565,144 +16731,6 @@ } } } - }, - "ShippingMethodListResponse": { - "description": "Entity search result containing shipping methods.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "required": [ - "elements" - ], - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } - }, - "SalutationListResponse": { - "description": "Entity search result containing salutations.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Salutation" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } - }, - "ContextTokenResponse": { - "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", - "headers": { - "sw-context-token": { - "description": "Contains sw-context-token value", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "description": "Define the URL which browser will be redirected to", - "type": "string" - } - } - } - } - } - }, - "CountryListResponse": { - "description": "Entity search result containing countries.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Country" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } - }, - "LanguageListResponse": { - "description": "Entity search result containing languages.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Language" - } - } - }, - "required": [ - "elements" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } } }, "parameters": { diff --git a/SwagDigitalSalesRooms-storeapi.json b/SwagDigitalSalesRooms-storeapi.json index 0f3a5bc..c01dc51 100644 --- a/SwagDigitalSalesRooms-storeapi.json +++ b/SwagDigitalSalesRooms-storeapi.json @@ -546,6 +546,84 @@ }, "type": "object" }, + "AppMcpPrompt": { + "description": "Added since version: 6.7.0.0", + "required": [ + "label" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + }, + "AppMcpResource": { + "description": "Added since version: 6.7.0.0", + "required": [ + "label" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + }, + "AppMcpTool": { + "description": "Added since version: 6.7.0.0", + "required": [ + "label" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + }, "AppPaymentMethod": { "description": "Added since version: 6.4.1.0", "properties": { @@ -2575,6 +2653,11 @@ }, "readOnly": true }, + "requestedGroupId": { + "description": "Unique identity of requested group.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "createdById": { "type": "string", "pattern": "^[0-9a-f]{32}$" @@ -3393,7 +3476,7 @@ "description": "Unique number associated with every document.", "type": "string" }, - "config": { + "customFields": { "type": "object" }, "createdAt": { @@ -3401,8 +3484,9 @@ "format": "date-time", "readOnly": true }, - "customFields": { - "type": "object" + "config": { + "type": "object", + "deprecated": true }, "updatedAt": { "type": "string", @@ -7419,6 +7503,12 @@ "description": "When the value is set to true, the product is hidden when sold out.", "type": "boolean" }, + "availableStock": { + "description": "Indicates the number of products still available. This value results from the stock minus the open orders.", + "type": "integer", + "format": "int64", + "readOnly": true + }, "stock": { "description": "Indicates the number of products available.", "type": "integer", @@ -7606,13 +7696,6 @@ "readOnly": true, "deprecated": true }, - "availableStock": { - "description": "Indicates the number of products still available. This value results from the stock minus the open orders.", - "type": "integer", - "format": "int64", - "readOnly": true, - "deprecated": true - }, "calculatedPrice": { "type": "object" }, @@ -8562,6 +8645,12 @@ "description": "When the value is set to true, the product is hidden when sold out.", "type": "boolean" }, + "availableStock": { + "description": "Indicates the number of products still available. This value results from the stock minus the open orders.", + "type": "integer", + "format": "int64", + "readOnly": true + }, "stock": { "description": "Indicates the number of products available.", "type": "integer", @@ -8749,13 +8838,6 @@ "readOnly": true, "deprecated": true }, - "availableStock": { - "description": "Indicates the number of products still available. This value results from the stock minus the open orders.", - "type": "integer", - "format": "int64", - "readOnly": true, - "deprecated": true - }, "calculatedPrice": { "type": "object", "$ref": "#/components/schemas/CalculatedPrice" @@ -11780,38 +11862,76 @@ }, "type": "object" }, - "CartPriceQuantity": { + "EntitySearchResult": { "type": "object", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_quantity" - ] + "entity": { + "type": "string" }, - "isCalculated": { - "type": "boolean" + "total": { + "type": "integer", + "description": "The total number of found entities" }, - "listPrice": { - "$ref": "#/components/schemas/CartListPrice" + "aggregations": { + "type": "array", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", + "items": { + "type": "object" + } }, - "price": { - "type": "number" + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." }, - "quantity": { - "type": "number" + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." + } + } + }, + "SalesChannelContext": { + "type": "object", + "properties": { + "token": { + "description": "Context the user session", + "type": "string" }, - "regulationPrice": { + "currentCustomerGroup": { + "type": "object", + "description": "Customer group of the current user", "properties": { - "price": { - "type": "number", - "format": "float" + "name": { + "type": "string" + }, + "displayGross": { + "type": "boolean" } - }, - "type": "object" + } + }, + "fallbackCustomerGroup": { + "description": "Fallback group if the default customer group is not applicable", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "displayGross": { + "type": "boolean" + } + } + }, + "currency": { + "$ref": "#/components/schemas/Currency" + }, + "salesChannel": { + "$ref": "#/components/schemas/SalesChannel" + }, + "measurementSystem": { + "$ref": "#/components/schemas/ContextMeasurementSystemInfo" }, "taxRules": { "type": "array", + "description": "Currently active tax rules and/or rates", "items": { "type": "object", "properties": { @@ -11825,566 +11945,491 @@ } } }, - "type": { - "type": "string" - } - }, - "required": [ - "apiAlias" - ] - }, - "CrossSellingElement": { - "type": "object", - "properties": { - "crossSelling": { - "$ref": "#/components/schemas/ProductCrossSelling" - }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - }, - "total": { - "type": "integer", - "format": "int32" + "customer": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/Customer" + } + ] }, - "streamId": { - "type": "string", - "format": "uuid" + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod" }, - "apiAlias": { - "type": "string", - "enum": [ - "cross_selling_element" - ] - } - }, - "required": [ - "crossSelling", - "products", - "total", - "apiAlias" - ] - }, - "ProductMeasurements": { - "type": "object", - "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", - "properties": { - "width": { + "shippingLocation": { "type": "object", "properties": { - "unit": { + "apiAlias": { "type": "string", "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" + "cart_delivery_shipping_location" + ] }, - "value": { - "type": "number" + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" } } }, - "height": { + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + }, + "context": { + "description": "Core context with general configuration values and state", "type": "object", "properties": { - "unit": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" + "versionId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "currencyFactor": { + "type": "integer" + }, + "currencyPrecision": { + "type": "integer", + "format": "int32" + }, + "languageIdChain": { + "type": "array", + "items": { + "type": "string" + } + }, + "scope": { + "type": "string" + }, + "source": { + "type": "object", + "required": [ + "salesChannelId", + "type" ], - "default": "mm" + "properties": { + "type": { + "type": "string", + "enum": [ + "sales-channel", + "shop-api" + ] + }, + "salesChannelId": { + "type": "string" + } + } }, - "value": { - "type": "number" + "taxState": { + "type": "string" + }, + "useCache": { + "type": "boolean" } } }, - "length": { + "itemRounding": { "type": "object", + "required": [ + "decimals", + "interval", + "roundForNet", + "apiAlias" + ], "properties": { - "unit": { + "apiAlias": { "type": "string", "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" + "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" + ] }, - "value": { - "type": "number" + "decimals": { + "type": "integer", + "format": "int32" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" } } }, - "weight": { + "totalRounding": { "type": "object", + "required": [ + "decimals", + "interval", + "roundForNet", + "apiAlias" + ], "properties": { - "unit": { + "apiAlias": { "type": "string", "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg" + "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" + ] }, - "value": { - "type": "number" + "decimals": { + "type": "integer", + "format": "int32" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" } } - } - } - }, - "ProductListingCriteria": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" }, - { + "languageInfo": { "type": "object", - "description": "Additional search parameters for product listings", + "required": [ + "localeCode", + "name" + ], "properties": { - "order": { - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "type": "string" - }, - "limit": { - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "type": "integer", - "minimum": 0 - }, - "p": { - "description": "Search result page", - "type": "integer", - "default": 1 - }, - "manufacturer": { - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", - "type": "string" - }, - "min-price": { - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 - }, - "max-price": { - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 - }, - "rating": { - "description": "Filter products with a minimum average rating.", - "type": "integer" - }, - "shipping-free": { - "description": "Filters products that are marked as shipping-free.", - "type": "boolean", - "default": false - }, - "properties": { - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "name": { "type": "string" }, - "manufacturer-filter": { - "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "price-filter": { - "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "rating-filter": { - "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "shipping-free-filter": { - "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "property-filter": { - "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "property-whitelist": { - "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", + "localeCode": { "type": "string" - }, - "reduce-aggregations": { - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] } } + }, + "apiAlias": { + "type": "string", + "enum": [ + "sales_channel_context" + ] } + }, + "required": [ + "salesChannel", + "apiAlias", + "itemRounding", + "totalRounding", + "languageInfo" ] }, - "ShippingMethodPageRouteResponse": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "deliveryTimeId": { - "type": "string" - }, - "deliveryTime": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer", - "format": "int32" - }, - "max": { - "type": "integer", - "format": "int32" - }, - "unit": { - "type": "string" - } + "CartError": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "key": { + "type": "string" + }, + "level": { + "type": "number", + "enum": [ + 0, + 10, + 20 + ], + "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" + }, + "message": { + "type": "string" + }, + "messageKey": { + "type": "string" + } + }, + "required": [ + "key", + "level", + "message", + "messageKey" + ] + }, + "ContextMeasurementSystemInfo": { + "type": "object", + "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", + "properties": { + "system": { + "type": "string", + "enum": [ + "metric", + "imperial" + ], + "default": "metric", + "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." + }, + "units": { + "type": "object", + "description": "Units used in the measurement system.", + "properties": { + "length": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Unit of length." + }, + "weight": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." } - }, - "translations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "name": { + } + } + } + }, + "CustomerAddressRead": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true + }, + "customerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "updatedAt": { + "oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "oneOf": [ + { + "$ref": "#/components/schemas/CountryState" + }, + { + "type": "null" + } + ] + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" + } + }, + "required": [ + "customerId", + "createdAt", + "updatedAt", + "country", + "salutation" + ] + }, + "ProductListingCriteria": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + }, + { + "type": "object", + "description": "Additional search parameters for product listings", + "properties": { + "order": { + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "type": "string" + }, + "limit": { + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "type": "integer", + "minimum": 0 + }, + "p": { + "description": "Search result page", + "type": "integer", + "default": 1 + }, + "manufacturer": { + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "type": "string" + }, + "min-price": { + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "max-price": { + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "rating": { + "description": "Filter products with a minimum average rating.", + "type": "integer" + }, + "shipping-free": { + "description": "Filters products that are marked as shipping-free.", + "type": "boolean", + "default": false + }, + "properties": { + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "type": "string" + }, + "manufacturer-filter": { + "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "price-filter": { + "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "rating-filter": { + "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "shipping-free-filter": { + "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-filter": { + "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-whitelist": { + "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", + "type": "string" + }, + "reduce-aggregations": { + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "oneOf": [ + { "type": "string" }, - "description": { - "type": "string" + { + "type": "null" } - } + ] } - }, - "orderDeliveries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "orderId": { - "type": "string" - }, - "shippingOrderAddressId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "shippingDateEarliest": { - "type": "string", - "format": "date-time" - }, - "shippingDateLatest": { - "type": "string", - "format": "date-time" - }, - "stateId": { - "type": "string" - } - } - } - }, - "salesChannelDefaultAssignments": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" - }, - "hreflangDefaultDomainId": { - "type": "string" - } - } + } + } + ] + }, + "WishlistLoadRouteResponse": { + "type": "object", + "required": [ + "products" + ], + "properties": { + "wishlist": { + "type": "object", + "properties": { + "customerId": { + "type": "string" + }, + "salesChannelId": { + "type": "string" } - }, - "salesChannels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" - }, - "hreflangDefaultDomainId": { - "type": "string" - } - } + } + }, + "products": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + }, + "Sitemap": { + "type": "object", + "properties": { + "filename": { + "type": "string" + }, + "created": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "filename", + "created" + ] + }, + "CartPriceQuantity": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_quantity" + ] + }, + "isCalculated": { + "type": "boolean" + }, + "listPrice": { + "$ref": "#/components/schemas/CartListPrice" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" } }, - "availabilityRule": { + "type": "object" + }, + "taxRules": { + "type": "array", + "items": { "type": "object", "properties": { - "name": { - "type": "string" + "taxRate": { + "type": "number", + "format": "float" }, - "description": { + "name": { "type": "string" - }, - "priority": { - "type": "integer", - "format": "int32" - }, - "invalid": { - "type": "boolean" - } - } - }, - "availabilityRuleId": { - "type": "string" - }, - "prices": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "ruleId": { - "type": "string" - }, - "calculation": { - "type": "integer", - "format": "int32" - }, - "quantityStart": { - "type": "number", - "format": "float" - }, - "quantityEnd": { - "type": "number", - "format": "float" - }, - "price": { - "type": "number", - "format": "float" - }, - "calculationRuleId": { - "type": "string" - } - } - } - }, - "mediaId": { - "type": "string" - }, - "media": { - "type": "object", - "properties": { - "userId": { - "type": "string" - }, - "mimeType": { - "type": "string" - }, - "fileExtension": { - "type": "string" - }, - "fileSize": { - "type": "integer", - "format": "int32" - }, - "title": { - "type": "string" - }, - "metaDataRaw": { - "type": "string" - }, - "mediaTypeRaw": { - "type": "string" - }, - "uploadedAt": { - "type": "string", - "format": "date-time" - }, - "alt": { - "type": "string" - }, - "url": { - "type": "string" - }, - "fileName": { - "type": "string" - }, - "mediaFolderId": { - "type": "string" - }, - "private": { - "type": "boolean" - }, - "thumbnailsRo": { - "type": "string" - } - } - }, - "tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - } } } } + }, + "type": { + "type": "string" } - } + }, + "required": [ + "apiAlias" + ] }, "ProductDetailResponse": { "type": "object", @@ -12405,51 +12450,18 @@ "product" ] }, - "ProductPurchaseLimit": { - "type": "object", - "description": "Current quantity purchase limits for a product.", - "required": [ - "productId", - "minPurchase", - "purchaseSteps", - "maxPurchase", - "stock", - "apiAlias" + "NewsletterStatus": { + "type": "string", + "enum": [ + "notSet", + "optIn", + "optOut", + "direct", + "undefined" ], - "properties": { - "productId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The product ID." - }, - "minPurchase": { - "type": "integer", - "description": "Minimum quantity a customer can purchase." - }, - "purchaseSteps": { - "type": "integer", - "description": "Step increment for quantity selection." - }, - "maxPurchase": { - "type": "integer", - "description": "Maximum quantity a customer can purchase, reflecting current stock for closeout products." - }, - "stock": { - "type": [ - "integer", - "null" - ], - "description": "Current stock level of the product." - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_purchase_limit" - ] - } - } + "description": "The subscription status. Possible values are: notSet, optIn, optOut, direct, undefined." }, - "CartDeliveryPosition": { + "CartDelivery": { "type": "object", "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { @@ -12466,982 +12478,782 @@ } } }, - "identifier": { - "type": "string" + "location": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "state": { + "$ref": "#/components/schemas/CountryState" + } + } }, - "lineItem": { - "$ref": "#/components/schemas/LineItem" + "positions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDeliveryPosition" + } }, - "price": { + "shippingCosts": { "$ref": "#/components/schemas/CalculatedPrice" + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" } } }, - "LineItemType": { - "type": "string", - "deprecated": true, - "enum": [ - "product", - "credit", - "custom", - "promotion", - "discount", - "container", - "quantity", - "dsr-line-item-discount", - "dsr-cart-discount" - ] - }, - "LineItem": { + "ReferencePrice": { "type": "object", "properties": { - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - }, - "cover": { - "$ref": "#/components/schemas/Media" - }, - "dataContextHash": { - "type": "string" - }, - "dataTimestamp": { - "type": "string" + "purchaseUnit": { + "type": "number" }, - "deliveryInformation": { - "$ref": "#/components/schemas/CartDeliveryInformation" + "referenceUnit": { + "type": "number" }, - "description": { + "unitName": { "type": "string" }, - "good": { - "type": "boolean" + "price": { + "type": "number" }, - "id": { - "type": "string" + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_reference" + ] }, - "label": { - "type": "string" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/ListPrice" + }, + { + "type": "null" + } + ] }, - "modified": { - "type": "boolean" + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] }, - "modifiedByApp": { + "hasRange": { "type": "boolean" }, - "payload": { - "$ref": "#/components/schemas/ProductJsonApi" - }, - "price": { + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" + ] + }, + "CartDeliveryInformation": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_information" + ] + }, + "freeDelivery": { + "type": "boolean" + }, + "deliveryTime": { "type": "object", "properties": { + "name": { + "type": "string" + }, + "min": { + "type": "integer" + }, + "max": { + "type": "integer" + }, + "unit": { + "type": "string" + }, "apiAlias": { "type": "string", "enum": [ - "calculated_price" + "cart_delivery_time" ] - }, - "calculatedTaxes": { + } + } + }, + "height": { + "type": "integer" + }, + "length": { + "type": "integer" + }, + "restockTime": { + "type": "integer" + }, + "stock": { + "type": "integer" + }, + "weight": { + "type": "integer" + }, + "width": { + "type": "integer" + } + }, + "required": [ + "apiAlias" + ] + }, + "Cart": { + "type": "object", + "properties": { + "name": { + "description": "Name of the cart - for example `guest-cart`", + "type": "string" + }, + "token": { + "description": "Context token identifying the cart and the user session", + "type": "string" + }, + "price": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "lineItems": { + "description": "All items within the cart", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + }, + "errors": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "anyOf": [ + { "type": "array", "items": { + "$ref": "#/components/schemas/CartError" + } + }, + { + "type": "object", + "additionalProperties": { "type": "object", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { + "code": { "type": "number" }, - "taxRate": { - "type": "number" + "key": { + "type": "string" }, - "price": { + "level": { "type": "number" + }, + "message": { + "type": "string" + }, + "messageKey": { + "type": "string" } }, "required": [ - "apiAlias", - "tax", - "taxRate", - "price" + "code", + "key", + "level", + "message", + "messageKey" ] } - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] - }, - "quantity": { - "type": "number" - }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] - }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } - }, - { - "type": "null" - } - ] - }, - "totalPrice": { - "type": "number" - }, - "unitPrice": { - "type": "number" - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } } - }, - "required": [ - "apiAlias", - "totalPrice", - "quantity", - "unitPrice" ] }, - "priceDefinition": { - "$ref": "#/components/schemas/CartPriceQuantity" - }, - "quantity": { - "type": "number" + "deliveries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDelivery" + } }, - "quantityInformation": { - "type": "object", - "properties": { - "maxPurchase": { - "type": "number" - }, - "minPurchase": { - "type": "number" - }, - "purchaseSteps": { - "type": "number" + "transactions": { + "description": "A list of all payment transactions associated with the current cart.", + "type": "array", + "items": { + "type": "object", + "properties": { + "paymentMethodId": { + "type": "string" + }, + "amount": { + "$ref": "#/components/schemas/CalculatedPrice" + } } } }, - "referencedId": { - "type": "string" - }, - "removable": { - "type": "boolean" - }, - "stackable": { + "modified": { "type": "boolean" }, - "states": { - "deprecated": true, - "type": "array", - "items": { - "type": "string", - "enum": [ - "is-physical", - "is-download" - ] - } - }, - "type": { - "$ref": "#/components/schemas/OrderLineItem/properties/type" + "customerComment": { + "description": "A comment that can be added to the cart.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] }, - "uniqueIdentifier": { - "type": "string" + "affiliateCode": { + "description": "An affiliate tracking code", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] }, - "extensions": { - "type": "object", - "properties": { - "meta": { - "type": "object", - "properties": { - "attendees": { - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "id": { - "type": "string" - } - } - } - } - } + "campaignCode": { + "description": "A campaign tracking code", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" } - } + ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart" + ] } }, "required": [ - "id", - "type", - "deliveryInformation", - "payload", - "quantity", - "states" + "price", + "apiAlias" ] }, - "CrossSellingElementCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CrossSellingElement" - } - }, - "Sitemap": { + "AccountNewsletterRecipient": { "type": "object", "properties": { - "filename": { - "type": "string" + "status": { + "$ref": "#/components/schemas/NewsletterStatus" }, - "created": { + "apiAlias": { "type": "string", - "format": "date-time" + "enum": [ + "account_newsletter_recipient" + ] } }, "required": [ - "filename", - "created" + "status", + "apiAlias" ] }, - "CartItems": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - } + "CrossSellingElementCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrossSellingElement" } }, - "CookieEntry": { + "Criteria": { "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "cookie": { - "type": "string" - }, - "value": { - "type": "string" - }, - "expiration": { + "page": { + "description": "Search result page", "type": "integer" }, - "name": { - "type": "string" - }, - "description": { + "term": { + "description": "Search term", "type": "string" }, - "hidden": { - "type": "boolean" + "limit": { + "description": "Number of items per result page", + "type": "integer" }, - "apiAlias": { - "type": "string", - "enum": [ - "cookie_entry" - ] - } - }, - "required": [ - "cookie", - "hidden", - "apiAlias" - ] - }, - "CookieRouteResponse": { - "type": "object", - "description": "Response containing cookie groups and their configuration hash.", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cookie_groups_hash" - ] + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } }, - "elements": { + "ids": { "type": "array", - "description": "Collection of cookie groups", + "description": "List of ids to search for", "items": { - "$ref": "#/components/schemas/CookieGroup" + "type": "string" } }, - "hash": { + "query": { "type": "string", - "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", - "example": "f86b6a872cb83dbd22d838ceda1aa3d4" + "description": "The query string to search for" }, - "languageId": { - "type": "string", - "format": "uuid", - "description": "The language ID for which the cookie configuration was generated. Used to store hashes per language.", - "example": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" - } - }, - "required": [ - "elements", - "hash", - "languageId", - "apiAlias" - ], - "example": { - "apiAlias": "cookie_groups_hash", - "elements": [ - { - "isRequired": true, - "description": "Cookies required for this shop to function:", - "name": "Technically required", - "entries": [ + "associations": { + "$ref": "#/components/schemas/Associations" + }, + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ { - "name": "Session", - "hidden": false, - "cookie": "session-", - "apiAlias": "cookie_entry" + "$ref": "#/components/schemas/SimpleFilter" }, { - "name": "Timezone", - "hidden": false, - "cookie": "timezone", - "apiAlias": "cookie_entry" + "$ref": "#/components/schemas/EqualsFilter" }, { - "value": "1", - "expiration": 30, - "name": "Cookie preferences", - "hidden": true, - "cookie": "cookie-preference", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "description": "Cookies used for statistics and shop performance metrics.", - "name": "Statistics", - "entries": [ + "$ref": "#/components/schemas/MultiNotFilter" + }, { - "value": "1", - "expiration": 30, - "name": "Google Analytics", - "hidden": false, - "cookie": "google-analytics-enabled", - "apiAlias": "cookie_entry" + "$ref": "#/components/schemas/RangeFilter" } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "description": "Allows Google to collect personal data for online advertising and marketing.", - "name": "Marketing", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "Google Advertising", - "hidden": false, - "cookie": "google-ads-enabled", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "name": "Comfort features", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "YouTube video", - "hidden": false, - "cookie": "youtube-video", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" + ] } - ], - "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", - "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" - } - }, - "CartDelivery": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" - } + }, + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" } }, - "location": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "state": { - "$ref": "#/components/schemas/CountryState" - } + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" } }, - "positions": { + "fields": { "type": "array", + "description": "Fields which should be returned in the search result.", "items": { - "$ref": "#/components/schemas/CartDeliveryPosition" + "type": "string", + "description": "Name of a field" } }, - "shippingCosts": { - "$ref": "#/components/schemas/CalculatedPrice" + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" + }, + "excludes": { + "$ref": "#/components/schemas/Excludes" } } }, - "CookieEntryCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CookieEntry" - } - }, - "NavigationRouteResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - }, - "NavigationType": { - "type": "string", - "enum": [ - "main-navigation", - "footer-navigation", - "service-navigation" - ] - }, - "SalesChannelContext": { + "NoneFieldsCriteria": { "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "token": { - "description": "Context the user session", + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", "type": "string" }, - "currentCustomerGroup": { - "type": "object", - "description": "Customer group of the current user", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } - } + "limit": { + "description": "Number of items per result page", + "type": "integer" }, - "fallbackCustomerGroup": { - "description": "Fallback group if the default customer group is not applicable", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] } }, - "currency": { - "$ref": "#/components/schemas/Currency" + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } }, - "salesChannel": { - "$ref": "#/components/schemas/SalesChannel" + "query": { + "type": "string", + "description": "The query string to search for" }, - "measurementSystem": { - "$ref": "#/components/schemas/ContextMeasurementSystemInfo" + "associations": { + "$ref": "#/components/schemas/Associations" }, - "taxRules": { + "post-filter": { "type": "array", - "description": "Currently active tax rules and/or rates", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "name": { - "type": "string" + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } - } + ] } }, - "customer": { - "oneOf": [ - { - "type": "null" - }, - { - "$ref": "#/components/schemas/Customer" - } - ] - }, - "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethod" + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + } }, - "shippingLocation": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" - } + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" } }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" - }, - "context": { - "description": "Core context with general configuration values and state", - "type": "object", - "properties": { - "versionId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "currencyFactor": { - "type": "integer" - }, - "currencyPrecision": { - "type": "integer", - "format": "int32" - }, - "languageIdChain": { - "type": "array", - "items": { - "type": "string" - } - }, - "scope": { - "type": "string" - }, - "source": { - "type": "object", - "required": [ - "salesChannelId", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "sales-channel", - "shop-api" - ] - }, - "salesChannelId": { - "type": "string" - } - } - }, - "taxState": { - "type": "string" - }, - "useCache": { - "type": "boolean" - } - } - }, - "itemRounding": { - "type": "object", - "required": [ - "decimals", - "interval", - "roundForNet", - "apiAlias" - ], - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" - ] - }, - "decimals": { - "type": "integer", - "format": "int32" - }, - "interval": { - "type": "number", - "format": "float" - }, - "roundForNet": { - "type": "boolean" - } + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" } }, - "totalRounding": { - "type": "object", - "required": [ - "decimals", - "interval", - "roundForNet", - "apiAlias" - ], - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" - ] - }, - "decimals": { - "type": "integer", - "format": "int32" - }, - "interval": { - "type": "number", - "format": "float" - }, - "roundForNet": { - "type": "boolean" - } - } + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" }, - "languageInfo": { - "type": "object", - "required": [ - "localeCode", - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "localeCode": { - "type": "string" - } - } + "includes": { + "$ref": "#/components/schemas/Includes" }, - "apiAlias": { - "type": "string", - "enum": [ - "sales_channel_context" - ] + "excludes": { + "$ref": "#/components/schemas/Excludes" } - }, - "required": [ - "salesChannel", - "apiAlias", - "itemRounding", - "totalRounding", - "languageInfo" - ] + } }, - "AggregationMetrics": { + "Associations": { "type": "object", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "avg", - "count", - "max", - "min", - "stats", - "sum" - ] - }, - "field": { + "additionalProperties": { + "$ref": "#/components/schemas/Criteria" + } + }, + "Includes": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { "type": "string" } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "CookieGroupCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CookieGroup" } }, - "ProductListingFlags": { + "Excludes": { "type": "object", - "description": "Additional flags for product listings", - "properties": { - "no-aggregations": { - "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", - "oneOf": [ + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "Aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" + }, + { + "title": "AggregationEntity", + "allOf": [ { - "type": "string" + "$ref": "#/components/schemas/AggregationEntity" }, { - "type": "null" + "$ref": "#/components/schemas/SubAggregations" } ] }, - "only-aggregations": { - "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", - "oneOf": [ + { + "title": "AggregationFilter", + "allOf": [ { - "type": "string" + "$ref": "#/components/schemas/AggregationFilter" }, { - "type": "null" + "$ref": "#/components/schemas/SubAggregations" } ] - } - } - }, - "Breadcrumb": { - "type": "object", - "properties": { - "name": { - "type": "string" }, - "categoryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + { + "title": "AggregationTerms", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] }, - "type": { - "$ref": "#/components/schemas/Category/properties/type" + { + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] }, - "translated": { - "type": "object", - "additionalProperties": true, - "properties": { - "customFields": { - "type": "object" + { + "title": "AggregationRange", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationRange" }, - "slotConfig": { - "type": "object" + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + } + ] + }, + "SubAggregations": { + "type": "object", + "properties": { + "aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" }, - "linkType": { - "$ref": "#/components/schemas/Category/properties/linkType" + { + "$ref": "#/components/schemas/AggregationEntity" }, - "internalLink": { - "type": "string" + { + "$ref": "#/components/schemas/AggregationFilter" }, - "externalLink": { - "type": "string" + { + "$ref": "#/components/schemas/AggregationTerms" }, - "linkNewTab": { - "type": "boolean" + { + "$ref": "#/components/schemas/AggregationHistogram" }, - "description": { - "type": "string" + { + "$ref": "#/components/schemas/AggregationRange" + } + ] + } + } + }, + "TotalCountMode": { + "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", + "type": "string", + "default": "none", + "enum": [ + "none", + "exact", + "next-pages" + ] + }, + "Query": { + "type": "object", + "properties": { + "score": { + "type": "number" + }, + "query": { + "oneOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "metaTitle": { - "type": "string" + { + "$ref": "#/components/schemas/EqualsFilter" }, - "metaDescription": { - "type": "string" + { + "$ref": "#/components/schemas/MultiNotFilter" }, - "keywords": { - "type": "string" + { + "$ref": "#/components/schemas/RangeFilter" } - } - }, - "path": { + ] + } + }, + "additionalProperties": true + }, + "Sort": { + "type": "object", + "properties": { + "field": { "type": "string" }, - "seoUrls": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } - }, - "apiAlias": { + "order": { "type": "string", "enum": [ - "breadcrumb" + "ASC", + "DESC" ] + }, + "naturalSorting": { + "type": "boolean" + }, + "type": { + "type": "string" } }, "required": [ - "name", - "categoryId", - "type", - "translated", - "path", - "apiAlias" + "field", + "order" ] }, - "CartError": { + "Filters": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "SimpleFilter": { "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "key": { - "type": "string" - }, - "level": { - "type": "number", + "type": { + "type": "string", "enum": [ - 0, - 10, - 20 - ], - "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" + "contains", + "equalsAny", + "prefix", + "suffix" + ] }, - "message": { + "field": { "type": "string" }, - "messageKey": { + "value": { "type": "string" } }, "required": [ - "key", - "level", - "message", - "messageKey" + "type", + "field", + "value" ] }, - "CartPriceReference": { + "EqualsFilter": { "type": "object", "properties": { - "purchaseUnit": { - "type": "number" - }, - "referenceUnit": { - "type": "number" - }, - "unitName": { - "type": "string" - }, - "price": { - "type": "number" - }, - "apiAlias": { + "type": { "type": "string", "enum": [ - "cart_price_reference" + "equals" ] }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] + "field": { + "type": "string" }, - "regulationPrice": { + "value": { "oneOf": [ { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } + "type": "string" }, { - "type": "null" - } - ] - }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "oneOf": [ + "type": "number" + }, { - "type": "string", - "format": "^[0-9a-f]{32}$" + "type": "boolean" }, { "type": "null" @@ -13450,310 +13262,598 @@ } }, "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" + "type", + "field", + "value" ] }, - "AccountNewsletterRecipient": { + "MultiNotFilter": { "type": "object", "properties": { - "status": { + "type": { "type": "string", "enum": [ - "undefined", - "notSet", - "direct", - "optIn", - "optOut" + "multi", + "not" ] }, - "apiAlias": { + "operator": { "type": "string", "enum": [ - "account_newsletter_recipient" + "and", + "or", + "nor", + "nand" ] + }, + "queries": { + "$ref": "#/components/schemas/Filters" } }, "required": [ - "status", - "apiAlias" + "type", + "operator", + "queries" ] }, - "SuccessResponse": { + "RangeFilter": { "type": "object", "properties": { - "success": { - "type": "boolean" + "type": { + "type": "string", + "enum": [ + "range" + ] + }, + "field": { + "type": "string" + }, + "parameters": { + "type": "object", + "properties": { + "gte": { + "type": "number" + }, + "gt": { + "type": "number" + }, + "lte": { + "type": "number" + }, + "lt": { + "type": "number" + } + } } - } + }, + "required": [ + "type", + "field", + "parameters" + ] }, - "EntitySearchResult": { + "FindProductVariantRouteResponse": { "type": "object", "properties": { - "entity": { - "type": "string" - }, - "total": { - "type": "integer", - "description": "The total number of found entities" - }, - "aggregations": { - "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", - "items": { - "type": "object" + "foundCombination": { + "type": "object", + "properties": { + "variantId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "options": { + "type": "array", + "items": { + "type": "string" + } + } } - }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." - }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." } } }, - "CalculatedPrice": { + "Price": { "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", + "description": "Price object", "properties": { - "unitPrice": { - "type": "number" - }, - "quantity": { - "type": "number" + "currencyId": { + "description": "Unique identity of the associated currency.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "rawTotal": { + "gross": { + "description": "Gross price for the associated currency.", "type": "number" }, - "totalPrice": { + "net": { + "description": "Net price for the associated currency.", "type": "number" }, - "taxStatus": { - "type": "string", - "enum": [ - "net", - "tax-free" - ] - }, - "calculatedTaxes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } + "linked": { + "description": "Whether gross and net prices are linked through the tax configuration.", + "type": "boolean" }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" + "percentage": { + "description": "Discount percentage relative to the list price for the gross and net amounts. `null` when no list price is set.", + "type": [ + "object", + "null" + ], + "properties": { + "gross": { + "description": "Discount percentage relative to the gross list price.", + "type": "number" }, - { - "type": "null" + "net": { + "description": "Discount percentage relative to the net list price.", + "type": "number" } + }, + "required": [ + "gross", + "net" ] }, "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" + "description": "Reference list price for displaying discounts.", + "type": "object", + "properties": { + "currencyId": { + "description": "Unique identity of the associated currency.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - { - "type": "null" + "gross": { + "description": "Gross list price for the associated currency.", + "type": "number" + }, + "net": { + "description": "Net list price for the associated currency.", + "type": "number" + }, + "linked": { + "description": "Whether gross and net list prices are linked through the tax configuration.", + "type": "boolean" } + }, + "required": [ + "gross", + "net" ] }, - "positionPrice": { - "type": "number" - }, - "netPrice": { - "type": "number" - }, "regulationPrice": { - "oneOf": [ + "description": "Reference price used for legal price disclosures.", + "type": "object", + "properties": { + "currencyId": { + "description": "Unique identity of the associated currency.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "gross": { + "description": "Gross regulation price for the associated currency.", + "type": "number" + }, + "net": { + "description": "Net regulation price for the associated currency.", + "type": "number" + }, + "linked": { + "description": "Whether gross and net regulation prices are linked through the tax configuration.", + "type": "boolean" + } + }, + "required": [ + "gross", + "net" + ] + } + }, + "required": [ + "currencyId", + "gross", + "net" + ] + }, + "NavigationType": { + "type": "string", + "enum": [ + "main-navigation", + "footer-navigation", + "service-navigation" + ] + }, + "OrderRouteResponse": { + "type": "object", + "properties": { + "orders": { + "type": "object", + "allOf": [ { "type": "object", + "required": [ + "elements" + ], "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" + } } } }, { - "type": "null" + "$ref": "#/components/schemas/EntitySearchResult" } ] }, - "hasRange": { - "type": "boolean" + "paymentChangeable": { + "type": "object", + "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", + "additionalProperties": { + "type": "boolean" + } + } + }, + "required": [ + "orders" + ] + }, + "ProductListingResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EntitySearchResult" }, - "variantId": { - "oneOf": [ - { + { + "type": "object", + "properties": { + "currentFilters": { + "type": "object", + "description": "Contains the state of the filters. These can be used to create listing filters.", + "properties": { + "navigationId": { + "type": "string" + }, + "manufacturer": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "price": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "default": 0 + }, + "max": { + "type": "integer", + "default": 0 + } + }, + "required": [ + "min", + "max" + ] + }, + "rating": { + "oneOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "shipping-free": { + "type": "boolean", + "default": false + }, + "properties": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "search": { + "type": "string" + } + }, + "required": [ + "manufacturer", + "navigationId", + "price", + "properties", + "rating", + "shipping-free" + ] + }, + "availableSortings": { + "type": "array", + "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", + "items": { + "type": "object", + "properties": { + "label": { + "type": "string" + }, + "translated": { + "type": "object", + "properties": { + "label": { + "type": "string" + } + }, + "required": [ + "label" + ] + }, + "key": { + "type": "string" + }, + "priority": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_sorting" + ] + } + }, + "required": [ + "label", + "translated", + "key", + "priority", + "apiAlias" + ] + } + }, + "sorting": { + "type": "string" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "entity": { "type": "string", - "format": "^[0-9a-f]{32}$" + "enum": [ + "product" + ] }, - { - "type": "null" + "apiAlias": { + "type": "string", + "enum": [ + "product_listing" + ] } + }, + "required": [ + "elements", + "availableSortings", + "currentFilters", + "apiAlias" ] - }, - "apiAlias": { - "type": "string", - "enum": [ - "calculated_price" - ] - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } } - }, - "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "referencePrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitPrice", - "positionPrice", - "netPrice", - "taxRules", - "rawTotal", - "taxStatus" ] }, - "CustomerAddressBody": { - "description": "Added since version: 6.0.0.0", - "required": [ - "countryId", - "firstName", - "lastName", - "city", - "street" - ], + "ProductMeasurements": { + "type": "object", + "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", "properties": { - "countryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryStateId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "width": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" + }, + "value": { + "type": "number" + } + } }, - "salutationId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "height": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" + }, + "value": { + "type": "number" + } + } }, - "firstName": { - "type": "string" + "length": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" + }, + "value": { + "type": "number" + } + } }, - "lastName": { - "type": "string" - }, - "zipcode": { - "type": "string" + "weight": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg" + }, + "value": { + "type": "number" + } + } + } + } + }, + "CookieEntryCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CookieEntry" + } + }, + "CrossSellingElement": { + "type": "object", + "properties": { + "crossSelling": { + "$ref": "#/components/schemas/ProductCrossSelling" }, - "city": { - "type": "string" + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } }, - "company": { - "type": "string" + "total": { + "type": "integer", + "format": "int32" }, - "street": { - "type": "string" + "streamId": { + "type": "string", + "format": "uuid" }, - "department": { + "apiAlias": { + "type": "string", + "enum": [ + "cross_selling_element" + ] + } + }, + "required": [ + "crossSelling", + "products", + "total", + "apiAlias" + ] + }, + "CookieEntry": { + "type": "object", + "properties": { + "cookie": { "type": "string" }, - "title": { + "value": { "type": "string" }, - "phoneNumber": { - "type": "string" + "expiration": { + "type": "integer" }, - "additionalAddressLine1": { + "name": { "type": "string" }, - "additionalAddressLine2": { + "description": { "type": "string" }, - "customFields": { - "type": "object" - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "$ref": "#/components/schemas/CountryState" + "hidden": { + "type": "boolean" }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "apiAlias": { + "type": "string", + "enum": [ + "cookie_entry" + ] } }, - "type": "object" + "required": [ + "cookie", + "hidden", + "apiAlias" + ] }, - "ReferencePrice": { + "MeasurementUnits": { "type": "object", + "description": "Configuration of the measurement system", "properties": { - "purchaseUnit": { - "type": "number" + "system": { + "type": "string", + "enum": [ + "metric", + "imperial" + ], + "default": "metric", + "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." }, - "referenceUnit": { + "units": { + "type": "object", + "description": "Units used in the measurement system.", + "properties": { + "length": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Unit of length." + }, + "weight": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." + } + } + } + } + }, + "CartListPrice": { + "type": "object", + "description": "", + "properties": { + "discount": { "type": "number" }, - "unitName": { - "type": "string" + "percentage": { + "type": "number" }, "price": { "type": "number" @@ -13761,1697 +13861,1670 @@ "apiAlias": { "type": "string", "enum": [ - "cart_price_reference" - ] - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/ListPrice" - }, - { - "type": "null" - } - ] - }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } - }, - { - "type": "null" - } - ] - }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } + "cart_list_price" ] } }, "required": [ - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" + "apiAlias" ] }, - "CustomerAddressRead": { + "CookieGroup": { "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true + "isRequired": { + "type": "boolean" }, - "customerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true + "name": { + "type": "string" }, - "createdAt": { - "type": "string", - "format": "date-time" + "description": { + "type": "string" }, - "updatedAt": { - "oneOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "null" - } - ] + "cookie": { + "type": "string" }, - "country": { - "$ref": "#/components/schemas/Country" + "value": { + "type": "string" }, - "countryState": { - "oneOf": [ - { - "$ref": "#/components/schemas/CountryState" - }, - { - "type": "null" - } - ] + "expiration": { + "type": "integer" }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "entries": { + "$ref": "#/components/schemas/CookieEntryCollection" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cookie_group" + ] } }, + "not": { + "allOf": [ + { + "required": [ + "cookie" + ] + }, + { + "required": [ + "entries" + ] + } + ] + }, "required": [ - "customerId", - "createdAt", - "updatedAt", - "country", - "salutation" + "name", + "isRequired", + "apiAlias" ] }, - "Criteria": { + "SuccessResponse": { "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "term": { - "description": "Search term", - "type": "string" - }, - "limit": { - "description": "Number of items per result page", - "type": "integer" - }, - "filter": { - "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "ids": { + "success": { + "type": "boolean" + } + } + }, + "CartItems": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { "type": "array", - "description": "List of ids to search for", "items": { - "type": "string" + "$ref": "#/components/schemas/LineItem" } + } + } + }, + "AggregationMetrics": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - "query": { + "type": { "type": "string", - "description": "The query string to search for" - }, - "associations": { - "$ref": "#/components/schemas/Associations" - }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" - } - }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } - }, - "fields": { - "type": "array", - "description": "Fields which should be returned in the search result.", - "items": { - "type": "string", - "description": "Name of a field" - } + "enum": [ + "avg", + "count", + "max", + "min", + "stats", + "sum" + ] }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" + "field": { + "type": "string" + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "CartDeliveryPosition": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } } }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" + "identifier": { + "type": "string" }, - "includes": { - "$ref": "#/components/schemas/Includes" + "lineItem": { + "$ref": "#/components/schemas/LineItem" }, - "excludes": { - "$ref": "#/components/schemas/Excludes" + "price": { + "$ref": "#/components/schemas/CalculatedPrice" } } }, - "NoneFieldsCriteria": { - "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", + "CustomerAddressBody": { + "description": "Added since version: 6.0.0.0", + "required": [ + "countryId", + "firstName", + "lastName", + "city", + "street" + ], "properties": { - "page": { - "description": "Search result page", - "type": "integer" + "countryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "term": { - "description": "Search term", - "type": "string" + "countryStateId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "limit": { - "description": "Number of items per result page", - "type": "integer" + "salutationId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "filter": { - "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } + "firstName": { + "type": "string" }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" - } + "lastName": { + "type": "string" }, - "query": { - "type": "string", - "description": "The query string to search for" + "zipcode": { + "type": "string" }, - "associations": { - "$ref": "#/components/schemas/Associations" - }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" - } + "city": { + "type": "string" }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } + "company": { + "type": "string" }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } + "street": { + "type": "string" }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" + "department": { + "type": "string" }, - "includes": { - "$ref": "#/components/schemas/Includes" + "title": { + "type": "string" }, - "excludes": { - "$ref": "#/components/schemas/Excludes" - } - } - }, - "Associations": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Criteria" - } - }, - "Includes": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { + "phoneNumber": { "type": "string" - } - } - }, - "Excludes": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { + }, + "additionalAddressLine1": { "type": "string" - } - } - }, - "Aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" }, - { - "title": "AggregationEntity", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "additionalAddressLine2": { + "type": "string" }, - { - "title": "AggregationFilter", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "customFields": { + "type": "object" }, - { - "title": "AggregationTerms", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "country": { + "$ref": "#/components/schemas/Country" }, - { - "title": "AggregationHistogram", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "countryState": { + "$ref": "#/components/schemas/CountryState" }, - { - "title": "AggregationRange", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationRange" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - } - ] - }, - "SubAggregations": { - "type": "object", - "properties": { - "aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/AggregationRange" - } - ] + "salutation": { + "$ref": "#/components/schemas/Salutation" } - } - }, - "TotalCountMode": { - "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", - "type": "string", - "default": "none", - "enum": [ - "none", - "exact", - "next-pages" - ] + }, + "type": "object" }, - "Query": { + "ProductPurchaseLimit": { "type": "object", + "description": "Current quantity purchase limits for a product.", + "required": [ + "productId", + "minPurchase", + "purchaseSteps", + "maxPurchase", + "stock", + "apiAlias" + ], "properties": { - "score": { - "type": "number" + "productId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The product ID." }, - "query": { - "oneOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } + "minPurchase": { + "type": "integer", + "description": "Minimum quantity a customer can purchase." + }, + "purchaseSteps": { + "type": "integer", + "description": "Step increment for quantity selection." + }, + "maxPurchase": { + "type": "integer", + "description": "Maximum quantity a customer can purchase, reflecting current stock for closeout products." + }, + "stock": { + "type": [ + "integer", + "null" + ], + "description": "Current stock level of the product." + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_purchase_limit" ] } - }, - "additionalProperties": true + } }, - "Sort": { + "CookieRouteResponse": { "type": "object", + "description": "Response containing cookie groups and their configuration hash.", "properties": { - "field": { - "type": "string" - }, - "order": { + "apiAlias": { "type": "string", "enum": [ - "ASC", - "DESC" + "cookie_groups_hash" ] }, - "naturalSorting": { - "type": "boolean" + "elements": { + "type": "array", + "description": "Collection of cookie groups", + "items": { + "$ref": "#/components/schemas/CookieGroup" + } }, - "type": { - "type": "string" + "hash": { + "type": "string", + "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", + "example": "f86b6a872cb83dbd22d838ceda1aa3d4" + }, + "languageId": { + "type": "string", + "format": "uuid", + "description": "The language ID for which the cookie configuration was generated. Used to store hashes per language.", + "example": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" } }, "required": [ - "field", - "order" - ] - }, - "Filters": { - "type": "array", - "items": { - "anyOf": [ + "elements", + "hash", + "languageId", + "apiAlias" + ], + "example": { + "apiAlias": "cookie_groups_hash", + "elements": [ { - "$ref": "#/components/schemas/SimpleFilter" + "isRequired": true, + "description": "Cookies required for this shop to function:", + "name": "Technically required", + "entries": [ + { + "name": "Session", + "hidden": false, + "cookie": "session-", + "apiAlias": "cookie_entry" + }, + { + "name": "Timezone", + "hidden": false, + "cookie": "timezone", + "apiAlias": "cookie_entry" + }, + { + "value": "1", + "expiration": 30, + "name": "Cookie preferences", + "hidden": true, + "cookie": "cookie-preference", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" }, { - "$ref": "#/components/schemas/EqualsFilter" + "isRequired": false, + "description": "Cookies used for statistics and shop performance metrics.", + "name": "Statistics", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "Google Analytics", + "hidden": false, + "cookie": "google-analytics-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" }, { - "$ref": "#/components/schemas/MultiNotFilter" + "isRequired": false, + "description": "Allows Google to collect personal data for online advertising and marketing.", + "name": "Marketing", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "Google Advertising", + "hidden": false, + "cookie": "google-ads-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" }, { - "$ref": "#/components/schemas/RangeFilter" + "isRequired": false, + "name": "Comfort features", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "YouTube video", + "hidden": false, + "cookie": "youtube-video", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" } - ] + ], + "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", + "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" } }, - "SimpleFilter": { + "CartItemsUpdate": { "type": "object", + "required": [ + "items" + ], "properties": { - "type": { - "type": "string", - "enum": [ - "contains", - "equalsAny", - "prefix", - "suffix" - ] - }, - "field": { - "type": "string" - }, - "value": { - "type": "string" + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartLineItemUpdate" + } } - }, - "required": [ - "type", - "field", - "value" - ] + } }, - "EqualsFilter": { + "CartLineItemUpdate": { "type": "object", + "required": [ + "id" + ], "properties": { + "id": { + "type": "string" + }, "type": { - "type": "string", - "enum": [ - "equals" - ] + "$ref": "#/components/schemas/OrderLineItem/properties/type" }, - "field": { + "quantity": { + "type": "integer" + }, + "referencedId": { "type": "string" }, - "value": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "type", - "field", - "value" - ] - }, - "MultiNotFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "multi", - "not" - ] + "label": { + "type": "string" }, - "operator": { - "type": "string", - "enum": [ - "and", - "or", - "nor", - "nand" - ] + "payload": { + "type": "object" }, - "queries": { - "$ref": "#/components/schemas/Filters" - } - }, - "required": [ - "type", - "operator", - "queries" - ] - }, - "RangeFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "range" - ] + "stackable": { + "type": "boolean" }, - "field": { + "removable": { + "type": "boolean" + }, + "coverId": { "type": "string" }, - "parameters": { + "priceDefinition": { "type": "object", "properties": { - "gte": { - "type": "number" + "type": { + "type": "string" }, - "gt": { + "price": { "type": "number" }, - "lte": { + "percentage": { "type": "number" }, - "lt": { + "quantity": { + "type": "integer" + }, + "isCalculated": { + "type": "boolean" + }, + "listPrice": { "type": "number" + }, + "taxRules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number" + }, + "percentage": { + "type": "number" + } + } + } } } } - }, - "required": [ - "type", - "field", - "parameters" - ] + } }, - "Association": { - "additionalProperties": { - "$ref": "#/components/schemas/Association" + "NavigationRouteResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" } }, - "OrderRouteResponse": { + "CookieGroupCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CookieGroup" + } + }, + "ProductListingFlags": { "type": "object", + "description": "Additional flags for product listings", "properties": { - "orders": { - "type": "object", - "allOf": [ + "no-aggregations": { + "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", + "oneOf": [ { - "type": "object", - "required": [ - "elements" - ], - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order" - } - } - } + "type": "string" }, { - "$ref": "#/components/schemas/EntitySearchResult" + "type": "null" } ] }, - "paymentChangeable": { - "type": "object", - "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", - "additionalProperties": { - "type": "boolean" - } - } - }, - "required": [ - "orders" - ] - }, - "CartDeliveryInformation": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_information" - ] - }, - "freeDelivery": { - "type": "boolean" - }, - "deliveryTime": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer" - }, - "max": { - "type": "integer" - }, - "unit": { - "type": "string" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_time" - ] - } - } - }, - "height": { - "type": "integer" - }, - "length": { - "type": "integer" - }, - "restockTime": { - "type": "integer" - }, - "stock": { - "type": "integer" - }, - "weight": { - "type": "integer" - }, - "width": { - "type": "integer" - } - }, - "required": [ - "apiAlias" - ] - }, - "WishlistLoadRouteResponse": { - "type": "object", - "required": [ - "products" - ], - "properties": { - "wishlist": { - "type": "object", - "properties": { - "customerId": { + "only-aggregations": { + "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", + "oneOf": [ + { "type": "string" }, - "salesChannelId": { - "type": "string" + { + "type": "null" } - } - }, - "products": { - "$ref": "#/components/schemas/ProductListingResult" - } - } - }, - "AggregationEntity": { - "title": "AggregationEntity", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "entity" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "definition": { - "description": "The entity definition e.g \"product_manufacturer\".", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field", - "definition" - ] - }, - "AggregationFilter": { - "title": "AggregationFilter", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "filter" - ] - }, - "filter": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Filters" - } - } - }, - "required": [ - "name", - "type", - "filter" - ] - }, - "AggregationTerms": { - "title": "AggregationTerms", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "terms" ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "limit": { - "description": "The number of terms to return", - "type": "number" - }, - "sort": { - "type": "array", - "description": "Sorting the aggregation result.", - "items": { - "$ref": "#/components/schemas/Sort" - } } - }, - "required": [ - "name", - "type", - "field" - ] + } }, - "AggregationHistogram": { - "title": "AggregationHistogram", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "histogram" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "interval": { - "description": "The interval of the histogram", - "type": "number" - }, - "format": { - "description": "The format of the histogram", - "type": "string" - }, - "timeZone": { - "description": "The timezone of the histogram", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "AggregationRange": { - "title": "AggregationRange", - "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "range" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "ranges": { - "description": "The ranges of the aggregation", - "type": "array", - "items": { + "ShippingMethodPageRouteResponse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "deliveryTimeId": { + "type": "string" + }, + "deliveryTime": { "type": "object", - "anyOf": [ - { - "type": "object", - "title": "From and to", - "properties": { - "from": { - "type": "number", - "description": "The lower bound of the range" - }, - "to": { - "type": "number", - "description": "The upper bound of the range" - } - }, - "required": [ - "from", - "to" - ] + "properties": { + "name": { + "type": "string" }, - { - "type": "object", - "title": "From only", - "properties": { - "from": { - "type": "string", - "description": "The lower bound of the range" - } - }, - "required": [ - "from" - ] + "min": { + "type": "integer", + "format": "int32" }, - { - "type": "object", - "title": "To only", - "properties": { - "to": { - "type": "string", - "description": "The upper bound of the range" - } - }, - "required": [ - "to" - ] + "max": { + "type": "integer", + "format": "int32" + }, + "unit": { + "type": "string" } - ] - } - } - }, - "required": [ - "name", - "type", - "field", - "ranges" - ] - }, - "CartListPrice": { - "type": "object", - "description": "", - "properties": { - "discount": { - "type": "number" - }, - "percentage": { - "type": "number" - }, - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_list_price" - ] - } - }, - "required": [ - "apiAlias" - ] - }, - "Cart": { - "type": "object", - "properties": { - "name": { - "description": "Name of the cart - for example `guest-cart`", - "type": "string" - }, - "token": { - "description": "Context token identifying the cart and the user session", - "type": "string" - }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "lineItems": { - "description": "All items within the cart", - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - }, - "errors": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "anyOf": [ - { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartError" + } + }, + "translations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + } } - }, - { + } + }, + "orderDeliveries": { + "type": "array", + "items": { "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "code": { - "type": "number" - }, - "key": { - "type": "string" - }, - "level": { - "type": "number" - }, - "message": { - "type": "string" - }, - "messageKey": { - "type": "string" - } + "properties": { + "orderId": { + "type": "string" }, - "required": [ - "code", - "key", - "level", - "message", - "messageKey" - ] + "shippingOrderAddressId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "shippingDateEarliest": { + "type": "string", + "format": "date-time" + }, + "shippingDateLatest": { + "type": "string", + "format": "date-time" + }, + "stateId": { + "type": "string" + } } } - ] - }, - "deliveries": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDelivery" - } - }, - "transactions": { - "description": "A list of all payment transactions associated with the current cart.", - "type": "array", - "items": { - "type": "object", - "properties": { - "paymentMethodId": { - "type": "string" - }, - "amount": { - "$ref": "#/components/schemas/CalculatedPrice" + }, + "salesChannelDefaultAssignments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } } } - } - }, - "modified": { - "type": "boolean" - }, - "customerComment": { - "description": "A comment that can be added to the cart.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "affiliateCode": { - "description": "An affiliate tracking code", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" + }, + "salesChannels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } } - ] - }, - "campaignCode": { - "description": "A campaign tracking code", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" + }, + "availabilityRule": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "priority": { + "type": "integer", + "format": "int32" + }, + "invalid": { + "type": "boolean" + } } - ] - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart" - ] - } - }, - "required": [ - "price", - "apiAlias" - ] - }, - "CookieGroup": { - "type": "object", - "properties": { - "isRequired": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "cookie": { - "type": "string" - }, - "value": { - "type": "string" - }, - "expiration": { - "type": "integer" - }, - "entries": { - "$ref": "#/components/schemas/CookieEntryCollection" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cookie_group" - ] - } - }, - "not": { - "allOf": [ - { - "required": [ - "cookie" - ] }, - { - "required": [ - "entries" - ] - } - ] - }, - "required": [ - "name", - "isRequired", - "apiAlias" - ] - }, - "MeasurementUnits": { - "type": "object", - "description": "Configuration of the measurement system", - "properties": { - "system": { - "type": "string", - "enum": [ - "metric", - "imperial" - ], - "default": "metric", - "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." - }, - "units": { - "type": "object", - "description": "Units used in the measurement system.", - "properties": { - "length": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm", - "description": "Unit of length." - }, - "weight": { - "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg", - "description": "Unit of weight." + "availabilityRuleId": { + "type": "string" + }, + "prices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "ruleId": { + "type": "string" + }, + "calculation": { + "type": "integer", + "format": "int32" + }, + "quantityStart": { + "type": "number", + "format": "float" + }, + "quantityEnd": { + "type": "number", + "format": "float" + }, + "price": { + "type": "number", + "format": "float" + }, + "calculationRuleId": { + "type": "string" + } + } + } + }, + "mediaId": { + "type": "string" + }, + "media": { + "type": "object", + "properties": { + "userId": { + "type": "string" + }, + "mimeType": { + "type": "string" + }, + "fileExtension": { + "type": "string" + }, + "fileSize": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string" + }, + "metaDataRaw": { + "type": "string" + }, + "mediaTypeRaw": { + "type": "string" + }, + "uploadedAt": { + "type": "string", + "format": "date-time" + }, + "alt": { + "type": "string" + }, + "url": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "mediaFolderId": { + "type": "string" + }, + "private": { + "type": "boolean" + }, + "thumbnailsRo": { + "type": "string" + } + } + }, + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } } } } } }, - "Price": { + "CartPriceReference": { "type": "object", - "description": "Price object", "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "purchaseUnit": { + "type": "number" }, - "gross": { - "description": "", + "referenceUnit": { "type": "number" }, - "net": { - "description": "", + "unitName": { + "type": "string" + }, + "price": { "type": "number" }, - "linked": { - "description": "", - "type": "boolean" + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_reference" + ] }, "listPrice": { - "description": "", - "type": "object", - "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "", - "type": "number" - }, - "net": { - "description": "", - "type": "number" + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" }, - "linked": { - "description": "", - "type": "boolean" + { + "type": "null" } - }, - "required": [ - "gross", - "net" ] }, "regulationPrice": { - "description": "", - "type": "object", - "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "", - "type": "number" + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } }, - "net": { - "description": "", - "type": "number" + { + "type": "null" + } + ] + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" }, - "linked": { - "description": "", - "type": "boolean" + { + "type": "null" } - }, - "required": [ - "gross", - "net" ] } }, "required": [ - "currencyId", - "gross", - "net" + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" ] }, - "ContextMeasurementSystemInfo": { + "Breadcrumb": { "type": "object", - "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", "properties": { - "system": { - "type": "string", - "enum": [ - "metric", - "imperial" - ], - "default": "metric", - "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." + "name": { + "type": "string" }, - "units": { + "categoryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "type": { + "$ref": "#/components/schemas/Category/properties/type" + }, + "translated": { "type": "object", - "description": "Units used in the measurement system.", + "additionalProperties": true, "properties": { - "length": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm", - "description": "Unit of length." + "customFields": { + "type": "object" }, - "weight": { - "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg", - "description": "Unit of weight." - } - } - } - } - }, - "FindProductVariantRouteResponse": { - "type": "object", - "properties": { - "foundCombination": { - "type": "object", - "properties": { - "variantId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "slotConfig": { + "type": "object" }, - "options": { - "type": "array", - "items": { - "type": "string" - } + "linkType": { + "$ref": "#/components/schemas/Category/properties/linkType" + }, + "internalLink": { + "type": "string" + }, + "externalLink": { + "type": "string" + }, + "linkNewTab": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "metaTitle": { + "type": "string" + }, + "metaDescription": { + "type": "string" + }, + "keywords": { + "type": "string" } } - } - } - }, - "ListPrice": { - "type": "object", - "description": "", - "properties": { - "discount": { - "type": "number" }, - "percentage": { - "type": "number" + "path": { + "type": "string" }, - "price": { - "type": "number" + "seoUrls": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" + } }, "apiAlias": { "type": "string", "enum": [ - "cart_list_price" + "breadcrumb" ] } }, "required": [ + "name", + "categoryId", + "type", + "translated", + "path", "apiAlias" ] }, - "ProductListingResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EntitySearchResult" + "CalculatedPrice": { + "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", + "properties": { + "unitPrice": { + "type": "number" }, - { - "type": "object", - "properties": { - "currentFilters": { + "quantity": { + "type": "number" + }, + "rawTotal": { + "type": "number" + }, + "totalPrice": { + "type": "number" + }, + "taxStatus": { + "type": "string", + "enum": [ + "net", + "tax-free" + ] + }, + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } + }, + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] + }, + "positionPrice": { + "type": "number" + }, + "netPrice": { + "type": "number" + }, + "regulationPrice": { + "oneOf": [ + { "type": "object", - "description": "Contains the state of the filters. These can be used to create listing filters.", "properties": { - "navigationId": { - "type": "string" - }, - "manufacturer": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, "price": { - "type": "object", - "properties": { - "min": { - "type": "integer", - "default": 0 - }, - "max": { - "type": "integer", - "default": 0 - } - }, - "required": [ - "min", - "max" - ] + "type": "number" }, - "rating": { - "oneOf": [ - { - "type": "integer" - }, - { - "type": "null" - } + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" ] - }, - "shipping-free": { - "type": "boolean", - "default": false - }, - "properties": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "search": { - "type": "string" } - }, - "required": [ - "manufacturer", - "navigationId", - "price", - "properties", - "rating", - "shipping-free" - ] + } }, - "availableSortings": { + { + "type": "null" + } + ] + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } + } + }, + "required": [ + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "referencePrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitPrice", + "positionPrice", + "netPrice", + "taxRules", + "rawTotal", + "taxStatus" + ] + }, + "Association": { + "additionalProperties": { + "$ref": "#/components/schemas/Association" + } + }, + "LineItemType": { + "type": "string", + "deprecated": true, + "enum": [ + "product", + "credit", + "custom", + "promotion", + "discount", + "container", + "quantity", + "dsr-line-item-discount", + "dsr-cart-discount" + ] + }, + "LineItem": { + "type": "object", + "properties": { + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + }, + "cover": { + "$ref": "#/components/schemas/Media" + }, + "dataContextHash": { + "type": "string" + }, + "dataTimestamp": { + "type": "string" + }, + "deliveryInformation": { + "$ref": "#/components/schemas/CartDeliveryInformation" + }, + "description": { + "type": "string" + }, + "good": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "label": { + "type": "string" + }, + "modified": { + "type": "boolean" + }, + "modifiedByApp": { + "type": "boolean" + }, + "payload": { + "$ref": "#/components/schemas/ProductJsonApi" + }, + "price": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] + }, + "calculatedTaxes": { "type": "array", - "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", "items": { "type": "object", "properties": { - "label": { - "type": "string" - }, - "translated": { - "type": "object", - "properties": { - "label": { - "type": "string" - } - }, - "required": [ - "label" + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" ] }, - "key": { - "type": "string" + "tax": { + "type": "number" }, - "priority": { + "taxRate": { "type": "number" }, - "apiAlias": { - "type": "string", - "enum": [ - "product_sorting" - ] + "price": { + "type": "number" } }, "required": [ - "label", - "translated", - "key", - "priority", - "apiAlias" + "apiAlias", + "tax", + "taxRate", + "price" ] } }, - "sorting": { - "type": "string" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } + "quantity": { + "type": "number" }, - "entity": { - "type": "string", - "enum": [ - "product" + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } ] }, - "apiAlias": { - "type": "string", - "enum": [ - "product_listing" + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } ] + }, + "totalPrice": { + "type": "number" + }, + "unitPrice": { + "type": "number" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } } }, "required": [ - "elements", - "availableSortings", - "currentFilters", - "apiAlias" - ] - } - ] - }, - "DiscountLineItemPayload": { - "type": "object", - "properties": { - "discountType": { - "type": "string", - "enum": [ - "percentage", - "absolute" + "apiAlias", + "totalPrice", + "quantity", + "unitPrice" ] }, - "discountValue": { - "type": "number", - "format": "float", - "maximum": 0 + "priceDefinition": { + "$ref": "#/components/schemas/CartPriceQuantity" }, - "discountPrice": { - "type": "number", - "format": "float", - "maximum": 0 - } - } - }, - "CreateAppointmentRequestBody": { - "type": "object", - "description": "Includes all data you will need to attend to a appointment.", - "required": [ - "salutationId", - "firstName", - "lastName", - "emailAddress", - "subject" - ], - "properties": { - "salutationId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The id of the salutation" + "quantity": { + "type": "number" }, - "firstName": { - "type": "string", - "description": "The first name of the requester" + "quantityInformation": { + "type": "object", + "properties": { + "maxPurchase": { + "type": "number" + }, + "minPurchase": { + "type": "number" + }, + "purchaseSteps": { + "type": "number" + } + } }, - "lastName": { - "type": "string", - "description": "The last name of the requester" + "referencedId": { + "type": "string" }, - "emailAddress": { - "type": "string", - "format": "email", - "description": "The email address of the requester" + "removable": { + "type": "boolean" }, - "companyName": { - "type": "string", - "description": "The company name of the requester" + "stackable": { + "type": "boolean" }, - "phoneNumber": { - "type": "string", - "description": "The phone number of the requester" + "states": { + "deprecated": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "is-physical", + "is-download" + ] + } }, - "subject": { - "type": "string", - "description": "The subject of the appointment" + "type": { + "$ref": "#/components/schemas/OrderLineItem/properties/type" }, - "message": { - "type": "string", - "description": "The message of the appointment" + "uniqueIdentifier": { + "type": "string" + }, + "extensions": { + "type": "object", + "properties": { + "meta": { + "type": "object", + "properties": { + "attendees": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "name" + ], + "properties": { + "name": { + "type": "string" + }, + "id": { + "type": "string" + } + } + } + } + } + } + } } }, - "example": { - "id": "2d2c358f1ca04098aacf12873c2eed94", - "appointmentId": "3b3c358f1ca04098aacf12873c2eed94", - "salutationId": "5m6c358f1ca04098aacf12873c2eed94", - "firstName": "John", - "lastName": "Doe", - "emailAddress": "john@example.com", - "companyName": "Example Inc.", - "phoneNumber": "+1234567890", - "subject": "Appointment subject", - "message": "Appointment message", - "requestedById": "7b7c358f1ca04098aacf12873c2eed94" - } + "required": [ + "id", + "type" + ] }, - "ScreenSharingToggledPayload": { + "ListPrice": { "type": "object", - "required": [ - "active" - ], + "description": "", "properties": { - "active": { - "type": "boolean", - "description": "Whether the screen sharing is active or not" + "discount": { + "type": "number" + }, + "percentage": { + "type": "number" + }, + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_list_price" + ] } - } + }, + "required": [ + "apiAlias" + ] }, - "ToggleBroadcastModePayload": { + "AggregationEntity": { + "title": "AggregationEntity", "type": "object", - "required": [ - "active" - ], "properties": { - "active": { - "type": "boolean", - "description": "Status if the mode is toggled to active or inactive" + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "entity" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "definition": { + "description": "The entity definition e.g \"product_manufacturer\".", + "type": "string" } - } - }, - "DynamicProductListingPageOpenedPayload": { + }, "required": [ - "page" - ], - "properties": { - "page": { - "type": "integer", - "description": "Current page position in the pagination" - } - } + "name", + "type", + "field", + "definition" + ] }, - "StateForClients": { + "AggregationFilter": { + "title": "AggregationFilter", "type": "object", "properties": { - "videoClientToken": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "hoveredElementId": { - "anyOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "filter" ] }, - "extensions": { + "filter": { "type": "array", - "default": [] + "items": { + "$ref": "#/components/schemas/Filters" + } } - } + }, + "required": [ + "name", + "type", + "filter" + ] }, - "AttendeeProductCollectionLastSeenResponse": { - "type": "object", + "AggregationTerms": { + "title": "AggregationTerms", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "terms" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "limit": { + "description": "The number of terms to return", + "type": "number" + }, + "sort": { + "type": "array", + "description": "Sorting the aggregation result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "AggregationHistogram": { + "title": "AggregationHistogram", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "histogram" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "interval": { + "description": "The interval of the histogram", + "type": "number" + }, + "format": { + "description": "The format of the histogram", + "type": "string" + }, + "timeZone": { + "description": "The timezone of the histogram", + "type": "string" + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "AggregationRange": { + "title": "AggregationRange", + "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "range" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "ranges": { + "description": "The ranges of the aggregation", + "type": "array", + "items": { + "type": "object", + "anyOf": [ + { + "type": "object", + "title": "From and to", + "properties": { + "from": { + "type": "number", + "description": "The lower bound of the range" + }, + "to": { + "type": "number", + "description": "The upper bound of the range" + } + }, + "required": [ + "from", + "to" + ] + }, + { + "type": "object", + "title": "From only", + "properties": { + "from": { + "type": "string", + "description": "The lower bound of the range" + } + }, + "required": [ + "from" + ] + }, + { + "type": "object", + "title": "To only", + "properties": { + "to": { + "type": "string", + "description": "The upper bound of the range" + } + }, + "required": [ + "to" + ] + } + ] + } + } + }, + "required": [ + "name", + "type", + "field", + "ranges" + ] + }, + "PresentationCmsPage": { + "allOf": [ + { + "$ref": "#/components/schemas/DsrPresentationCmsPage" + }, + { + "type": "object", + "properties": { + "pickedProductIds": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Product id" + } + }, + { + "type": "null" + } + ], + "description": "The product id is assigned to presentation if it's product listing or instant listing" + } + } + } + ] + }, + "AttendeeProductCollectionLastSeenResponse": { + "type": "object", "properties": { "collection": { "type": "object", @@ -15476,1202 +15549,744 @@ } } }, - "AppointmentBasicSettingResponse": { + "GuideHoveredPayload": { "type": "object", "properties": { - "apiAlias": { - "type": "string", - "description": "The API alias of the appointment basic setting" - }, - "mode": { - "type": "string", - "description": "The mode of the interaction", - "enum": [ - "guided", - "self" - ] - }, - "attendeeRestrictionType": { - "type": "string", - "description": "The type of attendee restriction", - "enum": [ - "open", - "customer", - "rules" - ] - }, - "videoAudioSettings": { - "type": "string", - "description": "The video and audio settings", - "enum": [ - "none", - "both", - "audio-only" - ] - }, - "canSendRequestEmail": { - "type": "boolean", - "description": "Indicates if request emails can be sent", - "default": false - }, - "canBookAppointment": { - "type": "boolean", - "description": "Indicates if appointments can be booked", - "default": false - }, - "enableWishlist": { - "type": "boolean", - "description": "Indicates if the wishlist is enabled", - "default": false - }, - "bookingLink": { - "description": "The booking link", - "oneOf": [ + "hoveredElementId": { + "anyOf": [ { - "type": "string" + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "the id from the product which is used in the interaction" }, { "type": "null" } ] - }, - "appointmentName": { - "type": "string", - "description": "The name of the appointment" - }, - "salesChannelName": { - "type": "string", - "description": "The name of the sales channel" } - }, - "example": { - "apiAlias": "appointment_basic_setting", - "mode": "self", - "attendeeRestrictionType": "open", - "videoAudioSettings": "none", - "canSendRequestEmail": false, - "canBookAppointment": false, - "enableWishlist": false, - "bookingLink": null, - "appointmentName": "dsr11", - "salesChannelName": "Storefront" } }, - "GuideHoveredPayload": { + "DynamicPageClosedPayload": { "type": "object", "properties": { - "hoveredElementId": { - "anyOf": [ + "pageId": { + "oneOf": [ { "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "the id from the product which is used in the interaction" + "pattern": "^[a-f0-9]{32}$" }, { "type": "null" } - ] + ], + "pattern": "^[a-f0-9]{32}$", + "description": "The id of the page that was closed" + }, + "all": { + "type": "boolean", + "default": false, + "description": "Whether all pages were closed" } } }, - "PresentationStructure": { + "ScreenSharingToggledPayload": { "type": "object", "required": [ - "cmsPageResults", - "navigation" + "active" ], "properties": { - "cmsPageResults": { + "active": { + "type": "boolean", + "description": "Whether the screen sharing is active or not" + } + } + }, + "DynamicProductListingPageOpenedPayload": { + "required": [ + "page" + ], + "properties": { + "page": { + "type": "integer", + "description": "Current page position in the pagination" + } + } + }, + "ToggleBroadcastModePayload": { + "type": "object", + "required": [ + "active" + ], + "properties": { + "active": { + "type": "boolean", + "description": "Status if the mode is toggled to active or inactive" + } + } + }, + "JoinAppointmentResponse": { + "type": "object", + "description": "Includes all data you will need to attend to a appointment.", + "properties": { + "mercureSubscriberTopics": { "type": "array", "items": { - "type": "object", - "properties": { - "resourceType": { - "type": "string", - "description": "The type of presentation page", - "default": "frontend.presentation.page" - }, - "resourceIdentifier": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The presentation id" - }, - "cmsPage": { - "$ref": "#/components/schemas/CmsPage" - } + "type": "string", + "description": "mercure topic" + }, + "description": "The topics to which the attendee/guide can subscribe for" + }, + "mercurePublisherTopic": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" } - } + ], + "description": "The topic to which the attendee/guide can send updates" }, - "navigation": { - "type": "array", - "items": { - "type": "object", - "required": [ - "cmsPageId", - "groupId", - "groupName", - "index", - "sectionId", - "sectionName" - ], - "properties": { - "index": { - "type": "integer", - "description": "The slide position" - }, - "sectionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The section id" - }, - "sectionName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "The section name" - }, - "groupId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The presentation CMS page id" - }, - "groupName": { - "type": "string", - "description": "The slide name" - }, - "cmsPageId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The CMS page id" - }, - "isInstantListing": { - "type": "boolean", - "description": "If the slide is an instant listing" - }, - "pickedProductsCount": { - "type": "integer", - "description": "The number of picked products of the instant listing" - }, - "notes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CmsSlot" - }, - "default": [] - } + "JWTMercureSubscriberToken": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" } - } - } - }, - "example": { - "cmsPageResults": [ - { - "resourceType": "frontend.presentation.page", - "resourceIdentifier": "45a2b8ad0bb544e48f61eab564a2171c", - "cmsPage": { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "name": "Default Digital Sales Rooms product listing page", - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": "2023-08-10T04:30:28.668+00:00", - "name": "Default Digital Sales Rooms product listing page", - "type": "presentation_product_list", - "entity": null, - "sections": [ - { - "extensions": { - "translations": [] - }, - "translated": [], - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": "2023-08-10T04:30:28.668+00:00", - "type": "default", - "blocks": [ - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": [], - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": "2023-08-10T04:30:28.667+00:00", - "type": "product-listing", - "slots": [ - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "config": { - "filters": { - "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", - "source": "static" - }, - "boxLayout": { - "value": "standard", - "source": "static" - }, - "showSorting": { - "value": true, - "source": "static" - }, - "defaultSorting": { - "value": "", - "source": "static" - }, - "useCustomSorting": { - "value": false, - "source": "static" - }, - "availableSortings": { - "value": [], - "source": "static" - }, - "propertyWhitelist": { - "value": [], - "source": "static" - } - }, - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "product-listing", - "slot": "content", - "block": null, - "blockId": "96ea8b9676a5461c9149d205d792ecf2", - "config": { - "filters": { - "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", - "source": "static" - }, - "boxLayout": { - "value": "standard", - "source": "static" - }, - "showSorting": { - "value": true, - "source": "static" - }, - "defaultSorting": { - "value": "", - "source": "static" - }, - "useCustomSorting": { - "value": false, - "source": "static" - }, - "availableSortings": { - "value": [], - "source": "static" - }, - "propertyWhitelist": { - "value": [], - "source": "static" - } - }, - "fieldConfig": null, - "translations": null, - "data": null, - "locked": false, - "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "customFields": null, - "apiAlias": "cms_slot" - } - ], - "sectionId": "2229e1f1208a4b8086baf7aec84f5e2c", - "position": 1, - "name": null, - "sectionPosition": "main", - "marginTop": "20px", - "marginBottom": "20px", - "marginLeft": "20px", - "marginRight": "20px", - "backgroundColor": null, - "backgroundMediaId": null, - "backgroundMedia": null, - "backgroundMediaMode": "cover", - "cssClass": null, - "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": { - "mobile": true, - "tablet": true, - "desktop": true - }, - "customFields": null, - "apiAlias": "cms_block" - } - ], - "pageId": "33e88c7994fa4cf79a1265e5105b93b2", - "page": null, - "position": 0, - "sizingMode": "boxed", - "mobileBehavior": "wrap", - "backgroundColor": null, - "backgroundMediaId": null, - "backgroundMedia": null, - "backgroundMediaMode": "cover", - "cssClass": null, - "cmsPageVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": { - "mobile": true, - "tablet": true, - "desktop": true - }, - "customFields": null, - "apiAlias": "cms_section" - } - ], - "translations": null, - "cssClass": null, - "config": null, - "previewMediaId": null, - "previewMedia": null, - "landingPages": null, - "id": "33e88c7994fa4cf79a1265e5105b93b2", - "customFields": null, - "apiAlias": "cms_page" + ], + "description": "The JWT mercure token to publish updates" + }, + "mercureHubPublicUrl": { + "oneOf": [ + { + "type": "string" }, - "apiAlias": "pwa_page_result" - }, - { - "resourceType": "frontend.presentation.page", - "resourceIdentifier": "45a2b8ad0bb544e48f61eab564a2171c", - "cmsPage": { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "name": "Default Digital Sales Rooms product detail page", - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "name": "Default Digital Sales Rooms product detail page", - "type": "presentation_product_detail", - "entity": null, - "sections": [ - { - "extensions": { - "translations": [] - }, - "translated": [], - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "default", - "blocks": [ - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": [], - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "product-heading", - "slots": [ - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "config": [], - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "like", - "slot": "right", - "block": null, - "blockId": "c0d3daba2e244122947438c28f776d41", - "config": [], - "fieldConfig": null, - "translations": null, - "data": null, - "locked": false, - "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "customFields": null, - "apiAlias": "cms_slot" - }, - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "config": { - "content": { - "value": "product.name", - "source": "mapped" - }, - "verticalAlign": { - "value": null, - "source": "static" - } - }, - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "product-name", - "slot": "left", - "block": null, - "blockId": "c0d3daba2e244122947438c28f776d41", - "config": { - "content": { - "value": "product.name", - "source": "mapped" - }, - "verticalAlign": { - "value": null, - "source": "static" - } - }, - "fieldConfig": null, - "translations": null, - "data": null, - "locked": false, - "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "customFields": null, - "apiAlias": "cms_slot" - } - ], - "sectionId": "f4aaa27972314e3c9b7f3bb35c7f8a10", - "position": 0, - "name": null, - "sectionPosition": "main", - "marginTop": "0", - "marginBottom": "20px", - "marginLeft": "0", - "marginRight": "0", - "backgroundColor": null, - "backgroundMediaId": null, - "backgroundMedia": null, - "backgroundMediaMode": "cover", - "cssClass": null, - "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": null, - "customFields": null, - "apiAlias": "cms_block" - }, - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": [], - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "image-gallery-big", - "slots": [ - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "config": { - "zoom": { - "value": true, - "source": "static" - }, - "minHeight": { - "value": "430px", - "source": "static" - }, - "fullScreen": { - "value": true, - "source": "static" - }, - "displayMode": { - "value": "contain", - "source": "static" - }, - "sliderItems": { - "value": "product.media", - "source": "mapped" - }, - "bigImageMode": { - "value": true, - "source": "static" - }, - "verticalAlign": { - "value": null, - "source": "static" - }, - "navigationDots": { - "value": "inside", - "source": "static" - }, - "galleryPosition": { - "value": "left", - "source": "static" - }, - "navigationArrows": { - "value": "inside", - "source": "static" - } - }, - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "image-gallery", - "slot": "imageGallery", - "block": null, - "blockId": "47cc4a3919794162982ea83f64a836fe", - "config": { - "zoom": { - "value": true, - "source": "static" - }, - "minHeight": { - "value": "430px", - "source": "static" - }, - "fullScreen": { - "value": true, - "source": "static" - }, - "displayMode": { - "value": "contain", - "source": "static" - }, - "sliderItems": { - "value": "product.media", - "source": "mapped" - }, - "bigImageMode": { - "value": true, - "source": "static" - }, - "verticalAlign": { - "value": null, - "source": "static" - }, - "navigationDots": { - "value": "inside", - "source": "static" - }, - "galleryPosition": { - "value": "left", - "source": "static" - }, - "navigationArrows": { - "value": "inside", - "source": "static" - } - }, - "fieldConfig": null, - "translations": null, - "data": null, - "locked": false, - "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "customFields": null, - "apiAlias": "cms_slot" - } - ], - "sectionId": "f4aaa27972314e3c9b7f3bb35c7f8a10", - "position": 1, - "name": null, - "sectionPosition": "main", - "marginTop": "20px", - "marginBottom": "20px", - "marginLeft": "20px", - "marginRight": "20px", - "backgroundColor": null, - "backgroundMediaId": null, - "backgroundMedia": null, - "backgroundMediaMode": "cover", - "cssClass": null, - "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": null, - "customFields": null, - "apiAlias": "cms_block" - }, - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": [], - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "text-two-column", - "slots": [ - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "config": { - "product": { - "value": null, - "source": "static" - }, - "alignment": { - "value": null, - "source": "static" - } - }, - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "buy-box", - "slot": "right", - "block": null, - "blockId": "095cd9a4eb49493aa95ea1e7a84a9503", - "config": { - "product": { - "value": null, - "source": "static" - }, - "alignment": { - "value": null, - "source": "static" - } - }, - "fieldConfig": null, - "translations": null, - "data": null, - "locked": false, - "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "customFields": null, - "apiAlias": "cms_slot" - }, - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "config": { - "product": { - "value": null, - "source": "static" - }, - "alignment": { - "value": null, - "source": "static" - } - }, - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "product-description-reviews", - "slot": "left", - "block": null, - "blockId": "095cd9a4eb49493aa95ea1e7a84a9503", - "config": { - "product": { - "value": null, - "source": "static" - }, - "alignment": { - "value": null, - "source": "static" - } - }, - "fieldConfig": null, - "translations": null, - "data": null, - "locked": false, - "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "customFields": null, - "apiAlias": "cms_slot" - } - ], - "sectionId": "f4aaa27972314e3c9b7f3bb35c7f8a10", - "position": 2, - "name": null, - "sectionPosition": "main", - "marginTop": "20px", - "marginBottom": "20px", - "marginLeft": "20px", - "marginRight": "20px", - "backgroundColor": null, - "backgroundMediaId": null, - "backgroundMedia": null, - "backgroundMediaMode": "cover", - "cssClass": null, - "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": null, - "customFields": null, - "apiAlias": "cms_block" - }, - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": [], - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "cross-selling", - "slots": [ - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "config": { - "product": { - "value": null, - "source": "static" - }, - "boxLayout": { - "value": "standard", - "source": "static" - }, - "elMinWidth": { - "value": "300px", - "source": "static" - }, - "displayMode": { - "value": "standard", - "source": "static" - } - }, - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "cross-selling", - "slot": "content", - "block": null, - "blockId": "2d69edd4faab493baa056c81ea8d131f", - "config": { - "product": { - "value": null, - "source": "static" - }, - "boxLayout": { - "value": "standard", - "source": "static" - }, - "elMinWidth": { - "value": "300px", - "source": "static" - }, - "displayMode": { - "value": "standard", - "source": "static" - } - }, - "fieldConfig": null, - "translations": null, - "data": null, - "locked": false, - "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "customFields": null, - "apiAlias": "cms_slot" - } - ], - "sectionId": "f4aaa27972314e3c9b7f3bb35c7f8a10", - "position": 3, - "name": null, - "sectionPosition": "main", - "marginTop": "0", - "marginBottom": "0", - "marginLeft": "0", - "marginRight": "0", - "backgroundColor": null, - "backgroundMediaId": null, - "backgroundMedia": null, - "backgroundMediaMode": "cover", - "cssClass": null, - "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": null, - "customFields": null, - "apiAlias": "cms_block" - } - ], - "pageId": "bea211b5099241719830df8026624f7f", - "page": null, - "position": 0, - "sizingMode": "boxed", - "mobileBehavior": "wrap", - "backgroundColor": null, - "backgroundMediaId": null, - "backgroundMedia": null, - "backgroundMediaMode": "cover", - "cssClass": null, - "cmsPageVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": null, - "customFields": null, - "apiAlias": "cms_section" - } - ], - "translations": null, - "cssClass": null, - "config": null, - "previewMediaId": null, - "previewMedia": null, - "landingPages": null, - "id": "bea211b5099241719830df8026624f7f", - "customFields": null, - "apiAlias": "cms_page" - }, - "apiAlias": "pwa_page_result" - }, - { - "resourceType": "frontend.presentation.page", - "resourceIdentifier": "45a2b8ad0bb544e48f61eab564a2171c", - "cmsPage": { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "name": "Ended presentation page", - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "name": "Ended presentation page", - "type": "presentation_product_list", - "entity": null, - "sections": [ - { - "extensions": { - "translations": [] - }, - "translated": [], - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "default", - "blocks": [ - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": [], - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "text-hero", - "slots": [ - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "config": { - "content": { - "value": "

The live presentation ended

\n
\n

Thank you for your attention!

Below you can find all products wich were presented to you.

", - "source": "static" - }, - "verticalAlign": { - "value": null, - "source": "static" - } - }, - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "text", - "slot": "content", - "block": null, - "blockId": "c49b01e9c6624973b9cdd1992d3c009a", - "config": { - "content": { - "value": "

The live presentation ended

\n
\n

Thank you for your attention!

Below you can find all products wich were presented to you.

", - "source": "static" - }, - "verticalAlign": { - "value": null, - "source": "static" - } - }, - "fieldConfig": null, - "translations": null, - "data": null, - "locked": false, - "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "customFields": null, - "apiAlias": "cms_slot" - } - ], - "sectionId": "0a5e89814463470684a734b975add4ed", - "position": 0, - "name": null, - "sectionPosition": "main", - "marginTop": "20px", - "marginBottom": "20px", - "marginLeft": "20px", - "marginRight": "20px", - "backgroundColor": null, - "backgroundMediaId": null, - "backgroundMedia": null, - "backgroundMediaMode": "cover", - "cssClass": null, - "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": null, - "customFields": null, - "apiAlias": "cms_block" - }, - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": [], - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "product-listing", - "slots": [ - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "config": { - "filters": { - "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", - "source": "static" - }, - "boxLayout": { - "value": "standard", - "source": "static" - }, - "showSorting": { - "value": true, - "source": "static" - }, - "defaultSorting": { - "value": "", - "source": "static" - }, - "useCustomSorting": { - "value": false, - "source": "static" - }, - "availableSortings": { - "value": [], - "source": "static" - }, - "propertyWhitelist": { - "value": [], - "source": "static" - } - }, - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "product-listing", - "slot": "content", - "block": null, - "blockId": "0a13f5daa9be4e7b8ed5e3ecaba79fe6", - "config": { - "filters": { - "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", - "source": "static" - }, - "boxLayout": { - "value": "standard", - "source": "static" - }, - "showSorting": { - "value": true, - "source": "static" - }, - "defaultSorting": { - "value": "", - "source": "static" - }, - "useCustomSorting": { - "value": false, - "source": "static" - }, - "availableSortings": { - "value": [], - "source": "static" - }, - "propertyWhitelist": { - "value": [], - "source": "static" - } - }, - "fieldConfig": null, - "translations": null, - "data": null, - "locked": false, - "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "customFields": null, - "apiAlias": "cms_slot" - } - ], - "sectionId": "0a5e89814463470684a734b975add4ed", - "position": 1, - "name": null, - "sectionPosition": "main", - "marginTop": "20px", - "marginBottom": "20px", - "marginLeft": "20px", - "marginRight": "20px", - "backgroundColor": null, - "backgroundMediaId": null, - "backgroundMedia": null, - "backgroundMediaMode": "cover", - "cssClass": null, - "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": null, - "customFields": null, - "apiAlias": "cms_block" - } - ], - "pageId": "8ea80092faa744559409f3e9f7adcc6b", - "page": null, - "position": 0, - "sizingMode": "boxed", - "mobileBehavior": "wrap", - "backgroundColor": null, - "backgroundMediaId": null, - "backgroundMedia": null, - "backgroundMediaMode": "cover", - "cssClass": null, - "cmsPageVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": null, - "customFields": null, - "apiAlias": "cms_section" - } - ], - "translations": null, - "cssClass": null, - "config": null, - "previewMediaId": null, - "previewMedia": null, - "landingPages": null, - "id": "8ea80092faa744559409f3e9f7adcc6b", - "customFields": null, - "apiAlias": "cms_page" + { + "type": "null" + } + ], + "description": "The mercure hub url to connect for subscribing and updating" + }, + "JWTMercurePublisherToken": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The JWT mercure token to subscribe for updates" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The appointment id" + }, + "newContextToken": { + "type": "string", + "description": "The new context token will be used in the header (sw-context-token) for calling the other routes" + }, + "attendeeId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The created Id for the attendee" + }, + "salesChannelId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The id of the current sales channel" + }, + "salesChannelName": { + "type": "string", + "description": "The name of the current sales channel" + }, + "appointmentName": { + "type": "string", + "description": "The name of the appointment" + }, + "presentationGuideMode": { + "type": "string", + "enum": [ + "self", + "guided" + ], + "description": "The type of the appointment" + }, + "isPreview": { + "type": "boolean", + "description": "To see if it's a preview appointment" + }, + "attendeeName": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The name of the attendee" + }, + "videoUserId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The video user id that attendee could use" + }, + "b2bFeatures": { + "type": "object", + "description": "The b2b features that available for the appointment", + "properties": { + "quoteManagement": { + "type": "boolean", + "description": "To know if the quote management is enabled for current customer" + } + } + } + }, + "example": { + "mercureSubscriberTopics": [ + "gs-guide-actions-2d2c358f1ca04098aacf12873c2eed82", + "gs-presentation-state-for-client-2d2c358f1ca04098aacf12873c2eed82", + "gs-presentation-state-for-all-2d2c358f1ca04098aacf12873c2eed82" + ], + "mercurePublisherTopic": "gs-client-actions-2d2c358f1ca04098aacf12873c2eed82", + "JWTMercureSubscriberToken": "jwt token for subscribing to updates", + "mercureHubPublicUrl": "http://localhost:8081/.well-known/mercure", + "JWTMercurePublisherToken": "jwt token for publishing updates", + "attendeeName": "attendee name", + "videoUserId": null, + "b2bFeatures": { + "feature1": false, + "feature2": true + }, + "id": "2d2c358f1ca04098aacf12873c2eed82", + "newContextToken": "new context token to call the other routes", + "attendeeId": "b6358241e4ad4a4e99d0f729d21d63be", + "salesChannelId": "4a791ec7f9ff46b2ad67ae2f562891d3", + "salesChannelName": "Storefront", + "appointmentName": "Test Appointment", + "presentationGuideMode": "guided", + "isPreview": false, + "apiAlias": "swag_digital_sales_rooms_content_appointment_struct_appointment_join_struct" + } + }, + "StateForAll": { + "type": "object", + "properties": { + "currentGuideProductId": { + "anyOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] + }, + "lastActiveGuideSection": { + "anyOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] + }, + "currentPageId": { + "anyOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] + }, + "currentSectionId": { + "anyOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] + }, + "currentSlideAlias": { + "type": "integer", + "default": 0 + }, + "currentSlideData": { + "anyOf": [ + { + "$ref": "#/components/schemas/DynamicProductListingPageOpenedPayload" + }, + { + "type": "null" + } + ] + }, + "currentDynamicPage": { + "$ref": "#/components/schemas/DynamicPageOpenedPayload" + }, + "started": { + "type": "boolean", + "default": false + }, + "running": { + "type": "boolean", + "default": false + }, + "ended": { + "type": "boolean", + "default": false + }, + "startedAt": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ] + }, + "endedAt": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ] + }, + "accessibleFrom": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ] + }, + "accessibleTo": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ] + }, + "appointmentMode": { + "type": "string", + "enum": [ + "guided", + "self" + ] + }, + "videoAudioSettings": { + "type": "string", + "enum": [ + "both", + "none", + "audio-only" + ], + "default": "none" + }, + "videoRoomUrl": { + "type": "string", + "default": "" + }, + "attendeeRestrictionType": { + "anyOf": [ + { + "type": "string", + "enum": [ + "open", + "customer", + "rules" + ] + }, + { + "type": "null" + } + ] + }, + "productDetailDefaultPageId": { + "anyOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] + }, + "quickviewPageId": { + "anyOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] + }, + "productListingDefaultPageId": { + "anyOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] + }, + "broadcastMode": { + "type": "boolean", + "default": false + }, + "viewMode": { + "type": "string", + "enum": [ + "onlyYou", + "presentation", + "videoGrid" + ], + "default": "presentation" + }, + "allowScreenSharing": { + "type": "boolean", + "default": false + }, + "extensions": { + "type": "array", + "default": [] + } + } + }, + "DynamicInteractionBody": { + "oneOf": [ + { + "$ref": "#/components/schemas/EmptyInteraction" + }, + { + "$ref": "#/components/schemas/ProductInteraction" + }, + { + "$ref": "#/components/schemas/DynamicPageOpenedInteraction" + }, + { + "$ref": "#/components/schemas/DynamicPageClosedInteraction" + }, + { + "$ref": "#/components/schemas/DynamicProductPageOpenedInteraction" + }, + { + "$ref": "#/components/schemas/PageViewedInteraction" + }, + { + "$ref": "#/components/schemas/GuideHoveredInteraction" + }, + { + "$ref": "#/components/schemas/ToggleBroadcastModeInteraction" + }, + { + "$ref": "#/components/schemas/ViewModeChangedInteraction" + }, + { + "$ref": "#/components/schemas/ScreenSharingToggledInteraction" + } + ], + "discriminator": { + "propertyName": "name", + "mapping": { + "keep.alive": "#/components/schemas/EmptyInteraction", + "quickview.opened": "#/components/schemas/EmptyInteraction", + "quickview.closed": "#/components/schemas/EmptyInteraction", + "attendee.leave": "#/components/schemas/EmptyInteraction", + "remote.checkout.accepted": "#/components/schemas/EmptyInteraction", + "remote.checkout.denied": "#/components/schemas/EmptyInteraction", + "product.viewed": "#/components/schemas/ProductInteraction", + "attendee.product.collection.liked": "#/components/schemas/ProductInteraction", + "attendee.product.collection.disliked": "#/components/schemas/ProductInteraction", + "attendee.product.collection.removed": "#/components/schemas/ProductInteraction", + "dynamicPage.opened": "#/components/schemas/DynamicPageOpenedInteraction", + "dynamicPage.closed": "#/components/schemas/DynamicPageClosedInteraction", + "dynamicProductPage.opened": "#/components/schemas/DynamicProductPageOpenedInteraction", + "page.viewed": "#/components/schemas/PageViewedInteraction", + "guide.hovered": "#/components/schemas/GuideHoveredInteraction", + "broadcastMode.toggled": "#/components/schemas/ToggleBroadcastModeInteraction", + "viewMode.changed": "#/components/schemas/ViewModeChangedInteraction", + "screenSharing.toggled": "#/components/schemas/ScreenSharingToggledInteraction" + } + } + }, + "BaseInteraction": { + "type": "object", + "properties": { + "triggeredAt": { + "type": "string", + "description": "The time when the interaction was triggered", + "default": "now" + }, + "lifeTimeInSeconds": { + "type": "integer", + "description": "The time in seconds how long the interaction should be stored in the database", + "default": -1 + } + } + }, + "EmptyInteraction": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseInteraction" + }, + { + "type": "object", + "required": [ + "name", + "payload" + ], + "properties": { + "name": { + "type": "string" }, - "apiAlias": "pwa_page_result" + "payload": { + "type": "object", + "additionalProperties": false, + "minProperties": 0, + "maxProperties": 0 + } } - ], - "navigation": [ - { - "groupName": "Default Digital Sales Rooms product listing page", - "groupId": "468b0e34237a44ad8f8a8d5e0b72b78f", - "cmsPageId": "33e88c7994fa4cf79a1265e5105b93b2", - "name": null, - "id": "2229e1f1208a4b8086baf7aec84f5e2c", - "index": 1, - "notes": [ - { - "extensions": { - "foreignKeys": { - "extensions": [], - "apiAlias": "cms_slot_foreign_keys_extension" - } - }, - "_uniqueIdentifier": "de28c711c20b4ad0a54871d5a23109fc", - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "config": { - "content": { - "value": "

Lorem Ipsum dolor sit amet

\n

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, \n sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, \n sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. \n Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. \n Lorem ipsum dolor sit amet, consetetur sadipscing elitr, \n sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. \n At vero eos et accusam et justo duo dolores et ea rebum. \n Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

", - "source": "static" - }, - "verticalAlign": { - "value": null, - "source": "static" - } - }, - "customFields": [] - }, - "createdAt": "2023-08-10T04:30:28.649+00:00", - "updatedAt": null, - "type": "notes", - "slot": "content", - "block": null, - "blockId": "978ca9beff6e4edca6d5263fac254e13", - "config": { - "content": { - "value": "

Lorem Ipsum dolor sit amet

\n

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, \n sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, \n sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. \n Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. \n Lorem ipsum dolor sit amet, consetetur sadipscing elitr, \n sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. \n At vero eos et accusam et justo duo dolores et ea rebum. \n Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

", - "source": "static" - }, - "verticalAlign": { - "value": null, - "source": "static" - } - }, - "fieldConfig": null, - "translations": null, - "data": null, - "locked": false, - "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "id": "de28c711c20b4ad0a54871d5a23109fc", - "customFields": null - } - ] - }, - { - "groupName": "Default Digital Sales Rooms product detail page", - "groupId": "52f1e61cd45945a0b72bd613d1268d65", - "cmsPageId": "bea211b5099241719830df8026624f7f", - "name": null, - "id": "f4aaa27972314e3c9b7f3bb35c7f8a10", - "index": 2, - "notes": [] - }, - { - "groupName": "Ended presentation page", - "groupId": "b073190abe03407993f41b8d5bc8ba57", - "cmsPageId": "8ea80092faa744559409f3e9f7adcc6b", - "name": null, - "id": "0a5e89814463470684a734b975add4ed", - "index": 3, - "notes": [] + } + ] + }, + "ProductInteraction": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseInteraction" + }, + { + "type": "object", + "required": [ + "name", + "payload" + ], + "properties": { + "name": { + "type": "string" + }, + "payload": { + "$ref": "#/components/schemas/ProductPayload" + } + } + } + ] + }, + "DynamicPageOpenedInteraction": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseInteraction" + }, + { + "type": "object", + "required": [ + "name", + "payload" + ], + "properties": { + "name": { + "type": "string" + }, + "payload": { + "$ref": "#/components/schemas/DynamicPageOpenedPayload" + } + } + } + ] + }, + "DynamicProductPageOpenedInteraction": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseInteraction" + }, + { + "type": "object", + "required": [ + "name", + "payload" + ], + "properties": { + "name": { + "type": "string" + }, + "payload": { + "$ref": "#/components/schemas/DynamicProductPageOpenedPayload" + } + } + } + ] + }, + "DynamicPageClosedInteraction": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseInteraction" + }, + { + "type": "object", + "required": [ + "name", + "payload" + ], + "properties": { + "name": { + "type": "string" + }, + "payload": { + "$ref": "#/components/schemas/DynamicPageClosedPayload" + } + } + } + ] + }, + "PageViewedInteraction": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseInteraction" + }, + { + "type": "object", + "required": [ + "name", + "payload" + ], + "properties": { + "name": { + "type": "string" + }, + "payload": { + "$ref": "#/components/schemas/PageViewedPayload" + } + } + } + ] + }, + "GuideHoveredInteraction": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseInteraction" + }, + { + "type": "object", + "required": [ + "name", + "payload" + ], + "properties": { + "name": { + "type": "string" + }, + "payload": { + "$ref": "#/components/schemas/GuideHoveredPayload" + } } - ], - "apiAlias": "pwa_page_result" - } + } + ] }, - "UpdateAttendeeRequestBody": { - "type": "object", - "properties": { - "attendeeName": { - "type": "string", - "description": "Name of the attendee" + "ToggleBroadcastModeInteraction": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseInteraction" }, - "videoUserId": { - "type": "string", - "description": "Id of the attendee in the video chat tool" + { + "type": "object", + "required": [ + "name", + "payload" + ], + "properties": { + "name": { + "type": "string" + }, + "payload": { + "$ref": "#/components/schemas/ToggleBroadcastModePayload" + } + } } - } + ] }, - "AttendeeProductCollectionResponse": { - "type": "object", - "properties": { - "collection": { + "ViewModeChangedInteraction": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseInteraction" + }, + { "type": "object", - "anyOf": [ - { - "type": "object", - "properties": { - "liked": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Product ids from the collection" - } - } - } + "required": [ + "name", + "payload" + ], + "properties": { + "name": { + "type": "string" }, - { - "type": "object", - "properties": { - "disliked": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Product ids from the collection" - } - } - } + "payload": { + "$ref": "#/components/schemas/ViewModeChangedPayload" } - ] - } - }, - "example": { - "collection": { - "liked": [ - "0015b3d83df441e490da7f6880a9c2da", - "60793d25cbab473f92c405ce0525f3ec" - ] + } } - } + ] }, - "ProductPageResult": { - "type": "object", - "properties": { - "cmsPage": { - "$ref": "#/components/schemas/CmsPage" - }, - "product": { - "$ref": "#/components/schemas/Product" + "ScreenSharingToggledInteraction": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseInteraction" }, - "configurator": { - "oneOf": [ - { - "$ref": "#/components/schemas/PropertyGroup" + { + "type": "object", + "required": [ + "name", + "payload" + ], + "properties": { + "name": { + "type": "string" }, - { - "type": "null" + "payload": { + "$ref": "#/components/schemas/ScreenSharingToggledPayload" } - ] - }, - "apiAlias": { - "type": "string" + } } - } + ] + }, + "CreateInteractionRequestBody": { + "$ref": "#/components/schemas/DynamicInteractionBody" }, "ViewModeChangedPayload": { "type": "object", @@ -16723,721 +16338,1033 @@ "broadcastMode": false, "extensions": [] }, - "stateForClients": { - "videoClientToken": null, - "hoveredElementId": null, - "extensions": [] - }, - "apiAlias": "swag_digital_sales_rooms_content_presentation_state_sales_channel_get_get_client_presentation_state_struct" - } - }, - "StateForAll": { - "type": "object", - "properties": { - "currentGuideProductId": { - "anyOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } - ] - }, - "lastActiveGuideSection": { - "anyOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } - ] - }, - "currentPageId": { - "anyOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } - ] - }, - "currentSectionId": { - "anyOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } - ] - }, - "currentSlideAlias": { - "type": "integer", - "default": 0 - }, - "currentSlideData": { - "anyOf": [ - { - "$ref": "#/components/schemas/DynamicProductListingPageOpenedPayload" - }, - { - "type": "null" - } - ] - }, - "currentDynamicPage": { - "$ref": "#/components/schemas/DynamicPageOpenedPayload" - }, - "started": { - "type": "boolean", - "default": false - }, - "running": { - "type": "boolean", - "default": false - }, - "ended": { - "type": "boolean", - "default": false - }, - "startedAt": { - "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "null" - } - ] - }, - "endedAt": { - "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "null" - } - ] - }, - "accessibleFrom": { - "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "null" - } - ] - }, - "accessibleTo": { - "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "null" - } - ] + "stateForClients": { + "videoClientToken": null, + "hoveredElementId": null, + "extensions": [] }, - "appointmentMode": { + "apiAlias": "swag_digital_sales_rooms_content_presentation_state_sales_channel_get_get_client_presentation_state_struct" + } + }, + "AppointmentBasicSettingResponse": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "description": "The API alias of the appointment basic setting" + }, + "mode": { "type": "string", + "description": "The mode of the interaction", "enum": [ "guided", "self" ] }, + "attendeeRestrictionType": { + "type": "string", + "description": "The type of attendee restriction", + "enum": [ + "open", + "customer", + "rules" + ] + }, "videoAudioSettings": { "type": "string", + "description": "The video and audio settings", "enum": [ - "both", "none", + "both", "audio-only" - ], - "default": "none" + ] }, - "videoRoomUrl": { - "type": "string", - "default": "" + "canSendRequestEmail": { + "type": "boolean", + "description": "Indicates if request emails can be sent", + "default": false }, - "attendeeRestrictionType": { - "anyOf": [ + "canBookAppointment": { + "type": "boolean", + "description": "Indicates if appointments can be booked", + "default": false + }, + "enableWishlist": { + "type": "boolean", + "description": "Indicates if the wishlist is enabled", + "default": false + }, + "bookingLink": { + "description": "The booking link", + "oneOf": [ { - "type": "string", - "enum": [ - "open", - "customer", - "rules" - ] + "type": "string" }, { "type": "null" } ] }, - "productDetailDefaultPageId": { - "anyOf": [ + "appointmentName": { + "type": "string", + "description": "The name of the appointment" + }, + "salesChannelName": { + "type": "string", + "description": "The name of the sales channel" + } + }, + "example": { + "apiAlias": "appointment_basic_setting", + "mode": "self", + "attendeeRestrictionType": "open", + "videoAudioSettings": "none", + "canSendRequestEmail": false, + "canBookAppointment": false, + "enableWishlist": false, + "bookingLink": null, + "appointmentName": "dsr11", + "salesChannelName": "Storefront" + } + }, + "UpdateAttendeeRequestBody": { + "type": "object", + "properties": { + "attendeeName": { + "type": "string", + "description": "Name of the attendee" + }, + "videoUserId": { + "type": "string", + "description": "Id of the attendee in the video chat tool" + } + } + }, + "DynamicProductPageOpenedPayload": { + "allOf": [ + { + "$ref": "#/components/schemas/AbstractDynamicPageOpenedPayload" + } + ], + "required": [ + "productId" + ], + "properties": { + "productId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "the id from the product which is shown on the dynamic page" + } + } + }, + "ProductPayload": { + "type": "object", + "required": [ + "productId" + ], + "properties": { + "productId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "the id from the product which is used in the interaction" + } + } + }, + "ProductPageResult": { + "type": "object", + "properties": { + "cmsPage": { + "$ref": "#/components/schemas/CmsPage" + }, + "product": { + "$ref": "#/components/schemas/Product" + }, + "configurator": { + "oneOf": [ { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "$ref": "#/components/schemas/PropertyGroup" }, { "type": "null" } ] }, - "quickviewPageId": { - "anyOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "type": "null" + "apiAlias": { + "type": "string" + } + } + }, + "BasePresentationSlideData": { + "properties": { + "cmsPage": { + "$ref": "#/components/schemas/CmsPage" + }, + "extensions": { + "type": "object", + "properties": { + "cmsPageRelation": { + "$ref": "#/components/schemas/PresentationCmsPage" } - ] + } + } + } + }, + "PresentationSlideData": { + "type": "object", + "properties": { + "cmsPage": { + "$ref": "#/components/schemas/CmsPage" }, - "productListingDefaultPageId": { - "anyOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "extensions": { + "type": "object", + "properties": { + "cmsPageRelation": { + "$ref": "#/components/schemas/PresentationCmsPage" + } + } + }, + "product": { + "$ref": "#/components/schemas/Product" + }, + "category": { + "$ref": "#/components/schemas/Category" + }, + "configurator": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PropertyGroup" + } + } + }, + "example": { + "extensions": { + "cmsPageRelation": { + "translated": { + "title": null + }, + "createdAt": "2023-08-09T11:00:13.160+00:00", + "updatedAt": null, + "presentationId": "506cce706e914c1e8b083f05670d85c4", + "cmsPageId": "33e88c7994fa4cf79a1265e5105b93b2", + "title": null, + "productId": null, + "productStreamId": null, + "position": 2, + "isInstantListing": false, + "cmsPage": { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": { + "name": "Default Digital Sales Rooms product listing page", + "customFields": [] + }, + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "name": "Default Digital Sales Rooms product listing page", + "type": "presentation_product_list", + "entity": null, + "sections": [ + { + "translated": [], + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "type": "default", + "blocks": [ + { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": [], + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "type": "product-listing", + "slots": [ + { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": { + "config": { + "filters": { + "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", + "source": "static" + }, + "boxLayout": { + "value": "standard", + "source": "static" + }, + "showSorting": { + "value": true, + "source": "static" + }, + "defaultSorting": { + "value": "", + "source": "static" + }, + "useCustomSorting": { + "value": false, + "source": "static" + }, + "availableSortings": { + "value": [], + "source": "static" + }, + "propertyWhitelist": { + "value": [], + "source": "static" + } + }, + "customFields": [] + }, + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "type": "product-listing", + "slot": "content", + "block": null, + "blockId": "96ea8b9676a5461c9149d205d792ecf2", + "config": { + "filters": { + "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", + "source": "static" + }, + "boxLayout": { + "value": "standard", + "source": "static" + }, + "showSorting": { + "value": true, + "source": "static" + }, + "defaultSorting": { + "value": "", + "source": "static" + }, + "useCustomSorting": { + "value": false, + "source": "static" + }, + "availableSortings": { + "value": [], + "source": "static" + }, + "propertyWhitelist": { + "value": [], + "source": "static" + } + }, + "fieldConfig": null, + "translations": null, + "data": null, + "locked": false, + "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "customFields": null, + "apiAlias": "cms_slot" + } + ], + "sectionId": "2229e1f1208a4b8086baf7aec84f5e2c", + "position": 0, + "name": null, + "sectionPosition": "main", + "marginTop": "20px", + "marginBottom": "20px", + "marginLeft": "20px", + "marginRight": "20px", + "backgroundColor": null, + "backgroundMediaId": null, + "backgroundMedia": null, + "backgroundMediaMode": "cover", + "cssClass": null, + "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "visibility": null, + "customFields": null, + "apiAlias": "cms_block" + } + ], + "pageId": "33e88c7994fa4cf79a1265e5105b93b2", + "page": null, + "position": 0, + "sizingMode": "boxed", + "mobileBehavior": "wrap", + "backgroundColor": null, + "backgroundMediaId": null, + "backgroundMedia": null, + "backgroundMediaMode": "cover", + "cssClass": null, + "cmsPageVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "visibility": null, + "customFields": null, + "apiAlias": "cms_section" + } + ], + "translations": null, + "cssClass": null, + "config": null, + "previewMediaId": null, + "previewMedia": null, + "landingPages": null, + "id": "33e88c7994fa4cf79a1265e5105b93b2", + "customFields": null, + "apiAlias": "cms_page" }, - { - "type": "null" - } - ] - }, - "broadcastMode": { - "type": "boolean", - "default": false - }, - "viewMode": { - "type": "string", - "enum": [ - "onlyYou", - "presentation", - "videoGrid" - ], - "default": "presentation" - }, - "allowScreenSharing": { - "type": "boolean", - "default": false + "pickedProductIds": null, + "dsrPresentationVersionId": "213769ba28dd4ee788bdb49dc9ce53d2", + "id": "4ee08e142ed046eb99681594f67599f1", + "customFields": null, + "cmsPageVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "apiAlias": "dsr_presentation_cms_page" + } }, - "extensions": { - "type": "array", - "default": [] - } - } - }, - "DynamicPageClosedPayload": { - "type": "object", - "properties": { - "pageId": { - "oneOf": [ - { - "type": "string", - "pattern": "^[a-f0-9]{32}$" - }, + "cmsPage": { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": { + "name": "Default Digital Sales Rooms product listing page", + "customFields": [] + }, + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "name": "Default Digital Sales Rooms product listing page", + "type": "presentation_product_list", + "entity": null, + "sections": [ { - "type": "null" + "translated": [], + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "type": "default", + "blocks": [ + { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": [], + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "type": "product-listing", + "slots": [ + { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": { + "config": { + "filters": { + "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", + "source": "static" + }, + "boxLayout": { + "value": "standard", + "source": "static" + }, + "showSorting": { + "value": true, + "source": "static" + }, + "defaultSorting": { + "value": "", + "source": "static" + }, + "useCustomSorting": { + "value": false, + "source": "static" + }, + "availableSortings": { + "value": [], + "source": "static" + }, + "propertyWhitelist": { + "value": [], + "source": "static" + } + }, + "customFields": [] + }, + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "type": "product-listing", + "slot": "content", + "block": null, + "blockId": "96ea8b9676a5461c9149d205d792ecf2", + "config": { + "filters": { + "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", + "source": "static" + }, + "boxLayout": { + "value": "standard", + "source": "static" + }, + "showSorting": { + "value": true, + "source": "static" + }, + "defaultSorting": { + "value": "", + "source": "static" + }, + "useCustomSorting": { + "value": false, + "source": "static" + }, + "availableSortings": { + "value": [], + "source": "static" + }, + "propertyWhitelist": { + "value": [], + "source": "static" + } + }, + "fieldConfig": null, + "translations": null, + "data": { + "listing": { + "elements": [ + { + "versionId": null, + "translated": [], + "createdAt": null, + "updatedAt": null, + "parentId": null, + "childCount": null, + "taxId": null, + "manufacturerId": null, + "unitId": null, + "active": null, + "displayGroup": null, + "manufacturerNumber": null, + "ean": null, + "sales": null, + "productNumber": null, + "stock": null, + "availableStock": null, + "available": null, + "deliveryTimeId": null, + "deliveryTime": null, + "restockTime": null, + "isCloseout": null, + "purchaseSteps": null, + "maxPurchase": null, + "minPurchase": null, + "purchaseUnit": null, + "referenceUnit": null, + "shippingFree": null, + "markAsTopseller": null, + "weight": null, + "width": null, + "height": null, + "length": null, + "releaseDate": null, + "categoryTree": null, + "streamIds": null, + "optionIds": null, + "propertyIds": null, + "name": null, + "keywords": null, + "description": null, + "metaDescription": null, + "metaTitle": null, + "packUnit": null, + "packUnitPlural": null, + "tax": null, + "manufacturer": null, + "unit": null, + "cover": null, + "parent": null, + "children": null, + "media": null, + "cmsPageId": null, + "cmsPage": null, + "translations": null, + "categories": null, + "properties": null, + "options": null, + "configuratorSettings": null, + "categoriesRo": null, + "coverId": null, + "categoryIds": null, + "productReviews": null, + "ratingAverage": null, + "mainCategories": null, + "seoUrls": null, + "crossSellings": null, + "canonicalProductId": null, + "canonicalProduct": null, + "streams": null, + "downloads": null, + "states": [], + "id": "a32702bb0b1443e3881c3b9a38c09169", + "customFields": null, + "apiAlias": "product" + } + ], + "aggregations": [], + "page": 1, + "limit": null, + "entity": "product", + "total": 0, + "states": [], + "apiAlias": "dal_entity_search_result" + }, + "apiAlias": "cms_product_listing" + }, + "locked": false, + "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "customFields": null, + "apiAlias": "cms_slot" + } + ], + "sectionId": "2229e1f1208a4b8086baf7aec84f5e2c", + "position": 0, + "name": null, + "sectionPosition": "main", + "marginTop": "20px", + "marginBottom": "20px", + "marginLeft": "20px", + "marginRight": "20px", + "backgroundColor": null, + "backgroundMediaId": null, + "backgroundMedia": null, + "backgroundMediaMode": "cover", + "cssClass": null, + "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "visibility": null, + "customFields": null, + "apiAlias": "cms_block" + } + ], + "pageId": "33e88c7994fa4cf79a1265e5105b93b2", + "page": null, + "position": 0, + "sizingMode": "boxed", + "mobileBehavior": "wrap", + "backgroundColor": null, + "backgroundMediaId": null, + "backgroundMedia": null, + "backgroundMediaMode": "cover", + "cssClass": null, + "cmsPageVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "visibility": null, + "customFields": null, + "apiAlias": "cms_section" } ], - "pattern": "^[a-f0-9]{32}$", - "description": "The id of the page that was closed" - }, - "all": { - "type": "boolean", - "default": false, - "description": "Whether all pages were closed" - } - } - }, - "DynamicInteractionBody": { - "oneOf": [ - { - "$ref": "#/components/schemas/EmptyInteraction" - }, - { - "$ref": "#/components/schemas/ProductInteraction" - }, - { - "$ref": "#/components/schemas/DynamicPageOpenedInteraction" - }, - { - "$ref": "#/components/schemas/DynamicPageClosedInteraction" - }, - { - "$ref": "#/components/schemas/DynamicProductPageOpenedInteraction" - }, - { - "$ref": "#/components/schemas/PageViewedInteraction" - }, - { - "$ref": "#/components/schemas/GuideHoveredInteraction" - }, - { - "$ref": "#/components/schemas/ToggleBroadcastModeInteraction" - }, - { - "$ref": "#/components/schemas/ViewModeChangedInteraction" - }, - { - "$ref": "#/components/schemas/ScreenSharingToggledInteraction" - } - ], - "discriminator": { - "propertyName": "name", - "mapping": { - "keep.alive": "#/components/schemas/EmptyInteraction", - "quickview.opened": "#/components/schemas/EmptyInteraction", - "quickview.closed": "#/components/schemas/EmptyInteraction", - "attendee.leave": "#/components/schemas/EmptyInteraction", - "remote.checkout.accepted": "#/components/schemas/EmptyInteraction", - "remote.checkout.denied": "#/components/schemas/EmptyInteraction", - "product.viewed": "#/components/schemas/ProductInteraction", - "attendee.product.collection.liked": "#/components/schemas/ProductInteraction", - "attendee.product.collection.disliked": "#/components/schemas/ProductInteraction", - "attendee.product.collection.removed": "#/components/schemas/ProductInteraction", - "dynamicPage.opened": "#/components/schemas/DynamicPageOpenedInteraction", - "dynamicPage.closed": "#/components/schemas/DynamicPageClosedInteraction", - "dynamicProductPage.opened": "#/components/schemas/DynamicProductPageOpenedInteraction", - "page.viewed": "#/components/schemas/PageViewedInteraction", - "guide.hovered": "#/components/schemas/GuideHoveredInteraction", - "broadcastMode.toggled": "#/components/schemas/ToggleBroadcastModeInteraction", - "viewMode.changed": "#/components/schemas/ViewModeChangedInteraction", - "screenSharing.toggled": "#/components/schemas/ScreenSharingToggledInteraction" - } - } - }, - "BaseInteraction": { - "type": "object", - "properties": { - "triggeredAt": { - "type": "string", - "description": "The time when the interaction was triggered", - "default": "now" - }, - "lifeTimeInSeconds": { - "type": "integer", - "description": "The time in seconds how long the interaction should be stored in the database", - "default": -1 - } - } - }, - "EmptyInteraction": { - "allOf": [ - { - "$ref": "#/components/schemas/BaseInteraction" + "translations": null, + "cssClass": null, + "config": null, + "previewMediaId": null, + "previewMedia": null, + "landingPages": null, + "id": "33e88c7994fa4cf79a1265e5105b93b2", + "customFields": null, + "apiAlias": "cms_page" }, - { - "type": "object", - "required": [ - "name", - "payload" - ], - "properties": { - "name": { - "type": "string" - }, - "payload": { - "type": "object", - "additionalProperties": false, - "minProperties": 0, - "maxProperties": 0 - } - } - } - ] - }, - "ProductInteraction": { - "allOf": [ - { - "$ref": "#/components/schemas/BaseInteraction" + "category": { + "versionId": null, + "translated": { + "breadcrumb": [] + }, + "createdAt": null, + "updatedAt": null, + "afterCategoryId": null, + "parentId": null, + "mediaId": null, + "name": null, + "breadcrumb": [], + "path": null, + "level": null, + "active": null, + "childCount": null, + "visibleChildCount": 0, + "displayNestedProducts": null, + "parent": null, + "children": null, + "translations": null, + "media": null, + "cmsPageId": null, + "cmsPageIdSwitched": false, + "cmsPage": null, + "linkType": null, + "linkNewTab": null, + "internalLink": null, + "externalLink": null, + "visible": null, + "type": null, + "productAssignmentType": null, + "description": null, + "metaTitle": null, + "metaDescription": null, + "keywords": null, + "seoUrls": null, + "customEntityTypeId": null, + "id": "34f21c5eb6d54a939f10973204aa5f08", + "customFields": null, + "apiAlias": "category" }, - { - "type": "object", - "required": [ - "name", - "payload" - ], - "properties": { - "name": { - "type": "string" - }, - "payload": { - "$ref": "#/components/schemas/ProductPayload" - } - } - } - ] + "apiAlias": "pwa_page_result" + } }, - "DynamicPageOpenedInteraction": { + "DynamicPageOpenedPayload": { "allOf": [ { - "$ref": "#/components/schemas/BaseInteraction" - }, - { - "type": "object", - "required": [ - "name", - "payload" - ], - "properties": { - "name": { - "type": "string" - }, - "payload": { - "$ref": "#/components/schemas/DynamicPageOpenedPayload" - } - } + "$ref": "#/components/schemas/AbstractDynamicPageOpenedPayload" } ] }, - "DynamicProductPageOpenedInteraction": { - "allOf": [ - { - "$ref": "#/components/schemas/BaseInteraction" - }, - { + "AttendeeRespondInvitationResponse": { + "type": "object", + "properties": { + "appointment": { "type": "object", - "required": [ - "name", - "payload" - ], "properties": { - "name": { - "type": "string" + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The appointment id" }, - "payload": { - "$ref": "#/components/schemas/DynamicProductPageOpenedPayload" - } - } - } - ] - }, - "DynamicPageClosedInteraction": { - "allOf": [ - { - "$ref": "#/components/schemas/BaseInteraction" - }, - { - "type": "object", - "required": [ - "name", - "payload" - ], - "properties": { - "name": { - "type": "string" + "accessibleFrom": { + "type": "string", + "format": "date-time", + "description": "The time the client can access the appointment" }, - "payload": { - "$ref": "#/components/schemas/DynamicPageClosedPayload" - } - } - } - ] - }, - "PageViewedInteraction": { - "allOf": [ - { - "$ref": "#/components/schemas/BaseInteraction" - }, - { - "type": "object", - "required": [ - "name", - "payload" - ], - "properties": { - "name": { - "type": "string" + "accessibleTo": { + "type": "string", + "format": "date-time", + "description": "The time the appointment will be closed, the client can not access" }, - "payload": { - "$ref": "#/components/schemas/PageViewedPayload" + "status": { + "anyOf": [ + { + "type": "string", + "enum": [ + "started", + "ended" + ] + }, + { + "type": "null" + } + ], + "description": "The appointment status" } } - } - ] - }, - "GuideHoveredInteraction": { - "allOf": [ - { - "$ref": "#/components/schemas/BaseInteraction" }, - { - "type": "object", - "required": [ - "name", - "payload" + "answer": { + "type": "string", + "enum": [ + "accepted", + "maybe", + "declined" ], - "properties": { - "name": { - "type": "string" - }, - "payload": { - "$ref": "#/components/schemas/GuideHoveredPayload" - } - } + "description": "The invitation status that client responded to" } - ] + } }, - "ToggleBroadcastModeInteraction": { - "allOf": [ - { - "$ref": "#/components/schemas/BaseInteraction" - }, - { - "type": "object", - "required": [ - "name", - "payload" - ], - "properties": { - "name": { + "StateForClients": { + "type": "object", + "properties": { + "videoClientToken": { + "anyOf": [ + { "type": "string" }, - "payload": { - "$ref": "#/components/schemas/ToggleBroadcastModePayload" + { + "type": "null" } - } - } - ] - }, - "ViewModeChangedInteraction": { - "allOf": [ - { - "$ref": "#/components/schemas/BaseInteraction" + ] }, - { - "type": "object", - "required": [ - "name", - "payload" - ], - "properties": { - "name": { - "type": "string" + "hoveredElementId": { + "anyOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "payload": { - "$ref": "#/components/schemas/ViewModeChangedPayload" + { + "type": "null" } - } - } - ] - }, - "ScreenSharingToggledInteraction": { - "allOf": [ - { - "$ref": "#/components/schemas/BaseInteraction" + ] }, - { - "type": "object", - "required": [ - "name", - "payload" - ], - "properties": { - "name": { - "type": "string" - }, - "payload": { - "$ref": "#/components/schemas/ScreenSharingToggledPayload" - } - } + "extensions": { + "type": "array", + "default": [] } - ] + } }, - "CreateInteractionRequestBody": { - "$ref": "#/components/schemas/DynamicInteractionBody" + "EmptyPayload": { + "type": "object", + "properties": [] }, - "AttendeeRespondInvitationResponse": { + "PresentationStructure": { "type": "object", + "required": [ + "cmsPageResults", + "navigation" + ], "properties": { - "appointment": { - "type": "object", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The appointment id" - }, - "accessibleFrom": { - "type": "string", - "format": "date-time", - "description": "The time the client can access the appointment" - }, - "accessibleTo": { - "type": "string", - "format": "date-time", - "description": "The time the appointment will be closed, the client can not access" - }, - "status": { - "anyOf": [ - { - "type": "string", - "enum": [ - "started", - "ended" - ] + "cmsPageResults": { + "type": "array", + "items": { + "type": "object", + "properties": { + "resourceType": { + "type": "string", + "description": "The type of presentation page", + "default": "frontend.presentation.page" + }, + "resourceIdentifier": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The presentation id" + }, + "cmsPage": { + "$ref": "#/components/schemas/CmsPage" + } + } + } + }, + "navigation": { + "type": "array", + "items": { + "type": "object", + "required": [ + "cmsPageId", + "groupId", + "groupName", + "index", + "sectionId", + "sectionName" + ], + "properties": { + "index": { + "type": "integer", + "description": "The slide position" + }, + "sectionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The section id" + }, + "sectionName": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The section name" + }, + "groupId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The presentation CMS page id" + }, + "groupName": { + "type": "string", + "description": "The slide name" + }, + "cmsPageId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The CMS page id" + }, + "isInstantListing": { + "type": "boolean", + "description": "If the slide is an instant listing" + }, + "pickedProductsCount": { + "type": "integer", + "description": "The number of picked products of the instant listing" + }, + "notes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CmsSlot" }, + "default": [] + } + } + } + } + }, + "example": { + "cmsPageResults": [ + { + "resourceType": "frontend.presentation.page", + "resourceIdentifier": "45a2b8ad0bb544e48f61eab564a2171c", + "cmsPage": { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": { + "name": "Default Digital Sales Rooms product listing page", + "customFields": [] + }, + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": "2023-08-10T04:30:28.668+00:00", + "name": "Default Digital Sales Rooms product listing page", + "type": "presentation_product_list", + "entity": null, + "sections": [ { - "type": "null" + "extensions": { + "translations": [] + }, + "translated": [], + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": "2023-08-10T04:30:28.668+00:00", + "type": "default", + "blocks": [ + { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": [], + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": "2023-08-10T04:30:28.667+00:00", + "type": "product-listing", + "slots": [ + { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": { + "config": { + "filters": { + "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", + "source": "static" + }, + "boxLayout": { + "value": "standard", + "source": "static" + }, + "showSorting": { + "value": true, + "source": "static" + }, + "defaultSorting": { + "value": "", + "source": "static" + }, + "useCustomSorting": { + "value": false, + "source": "static" + }, + "availableSortings": { + "value": [], + "source": "static" + }, + "propertyWhitelist": { + "value": [], + "source": "static" + } + }, + "customFields": [] + }, + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "type": "product-listing", + "slot": "content", + "block": null, + "blockId": "96ea8b9676a5461c9149d205d792ecf2", + "config": { + "filters": { + "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", + "source": "static" + }, + "boxLayout": { + "value": "standard", + "source": "static" + }, + "showSorting": { + "value": true, + "source": "static" + }, + "defaultSorting": { + "value": "", + "source": "static" + }, + "useCustomSorting": { + "value": false, + "source": "static" + }, + "availableSortings": { + "value": [], + "source": "static" + }, + "propertyWhitelist": { + "value": [], + "source": "static" + } + }, + "fieldConfig": null, + "translations": null, + "data": null, + "locked": false, + "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "customFields": null, + "apiAlias": "cms_slot" + } + ], + "sectionId": "2229e1f1208a4b8086baf7aec84f5e2c", + "position": 1, + "name": null, + "sectionPosition": "main", + "marginTop": "20px", + "marginBottom": "20px", + "marginLeft": "20px", + "marginRight": "20px", + "backgroundColor": null, + "backgroundMediaId": null, + "backgroundMedia": null, + "backgroundMediaMode": "cover", + "cssClass": null, + "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "visibility": { + "mobile": true, + "tablet": true, + "desktop": true + }, + "customFields": null, + "apiAlias": "cms_block" + } + ], + "pageId": "33e88c7994fa4cf79a1265e5105b93b2", + "page": null, + "position": 0, + "sizingMode": "boxed", + "mobileBehavior": "wrap", + "backgroundColor": null, + "backgroundMediaId": null, + "backgroundMedia": null, + "backgroundMediaMode": "cover", + "cssClass": null, + "cmsPageVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "visibility": { + "mobile": true, + "tablet": true, + "desktop": true + }, + "customFields": null, + "apiAlias": "cms_section" } ], - "description": "The appointment status" - } - } - }, - "answer": { - "type": "string", - "enum": [ - "accepted", - "maybe", - "declined" - ], - "description": "The invitation status that client responded to" - } - } - }, - "ProductPayload": { - "type": "object", - "required": [ - "productId" - ], - "properties": { - "productId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "the id from the product which is used in the interaction" - } - } - }, - "AbstractDynamicPageOpenedPayload": { - "type": "object", - "required": [ - "pageId", - "type" - ], - "properties": { - "pageId": { - "type": "string", - "pattern": "^[a-f0-9]{32}$", - "description": "The id of the current dynamic page" - }, - "type": { - "type": "string", - "description": "The type of the current dynamic page" - }, - "opened": { - "type": "boolean", - "default": true - }, - "position": { - "type": "integer", - "description": "The position of the dynamic page in the list of dynamic pages" - } - } - }, - "DynamicProductPageOpenedPayload": { - "allOf": [ - { - "$ref": "#/components/schemas/AbstractDynamicPageOpenedPayload" - } - ], - "required": [ - "productId" - ], - "properties": { - "productId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "the id from the product which is shown on the dynamic page" - } - } - }, - "BasePresentationSlideData": { - "properties": { - "cmsPage": { - "$ref": "#/components/schemas/CmsPage" - }, - "extensions": { - "type": "object", - "properties": { - "cmsPageRelation": { - "$ref": "#/components/schemas/PresentationCmsPage" - } - } - } - } - }, - "PresentationSlideData": { - "type": "object", - "properties": { - "cmsPage": { - "$ref": "#/components/schemas/CmsPage" - }, - "extensions": { - "type": "object", - "properties": { - "cmsPageRelation": { - "$ref": "#/components/schemas/PresentationCmsPage" - } - } - }, - "product": { - "$ref": "#/components/schemas/Product" - }, - "category": { - "$ref": "#/components/schemas/Category" - }, - "configurator": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PropertyGroup" - } - } - }, - "example": { - "extensions": { - "cmsPageRelation": { - "translated": { - "title": null + "translations": null, + "cssClass": null, + "config": null, + "previewMediaId": null, + "previewMedia": null, + "landingPages": null, + "id": "33e88c7994fa4cf79a1265e5105b93b2", + "customFields": null, + "apiAlias": "cms_page" }, - "createdAt": "2023-08-09T11:00:13.160+00:00", - "updatedAt": null, - "presentationId": "506cce706e914c1e8b083f05670d85c4", - "cmsPageId": "33e88c7994fa4cf79a1265e5105b93b2", - "title": null, - "productId": null, - "productStreamId": null, - "position": 2, - "isInstantListing": false, + "apiAlias": "pwa_page_result" + }, + { + "resourceType": "frontend.presentation.page", + "resourceIdentifier": "45a2b8ad0bb544e48f61eab564a2171c", "cmsPage": { "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", "translated": { - "name": "Default Digital Sales Rooms product listing page", + "name": "Default Digital Sales Rooms product detail page", "customFields": [] }, "createdAt": "2023-08-03T17:24:09.000+00:00", "updatedAt": null, - "name": "Default Digital Sales Rooms product listing page", - "type": "presentation_product_list", + "name": "Default Digital Sales Rooms product detail page", + "type": "presentation_product_detail", "entity": null, "sections": [ { + "extensions": { + "translations": [] + }, "translated": [], "createdAt": "2023-08-03T17:24:09.000+00:00", "updatedAt": null, @@ -17448,38 +17375,136 @@ "translated": [], "createdAt": "2023-08-03T17:24:09.000+00:00", "updatedAt": null, - "type": "product-listing", + "type": "product-heading", + "slots": [ + { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": { + "config": [], + "customFields": [] + }, + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "type": "like", + "slot": "right", + "block": null, + "blockId": "c0d3daba2e244122947438c28f776d41", + "config": [], + "fieldConfig": null, + "translations": null, + "data": null, + "locked": false, + "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "customFields": null, + "apiAlias": "cms_slot" + }, + { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": { + "config": { + "content": { + "value": "product.name", + "source": "mapped" + }, + "verticalAlign": { + "value": null, + "source": "static" + } + }, + "customFields": [] + }, + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "type": "product-name", + "slot": "left", + "block": null, + "blockId": "c0d3daba2e244122947438c28f776d41", + "config": { + "content": { + "value": "product.name", + "source": "mapped" + }, + "verticalAlign": { + "value": null, + "source": "static" + } + }, + "fieldConfig": null, + "translations": null, + "data": null, + "locked": false, + "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "customFields": null, + "apiAlias": "cms_slot" + } + ], + "sectionId": "f4aaa27972314e3c9b7f3bb35c7f8a10", + "position": 0, + "name": null, + "sectionPosition": "main", + "marginTop": "0", + "marginBottom": "20px", + "marginLeft": "0", + "marginRight": "0", + "backgroundColor": null, + "backgroundMediaId": null, + "backgroundMedia": null, + "backgroundMediaMode": "cover", + "cssClass": null, + "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "visibility": null, + "customFields": null, + "apiAlias": "cms_block" + }, + { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": [], + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "type": "image-gallery-big", "slots": [ { "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", "translated": { "config": { - "filters": { - "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", + "zoom": { + "value": true, "source": "static" }, - "boxLayout": { - "value": "standard", + "minHeight": { + "value": "430px", "source": "static" }, - "showSorting": { + "fullScreen": { "value": true, "source": "static" }, - "defaultSorting": { - "value": "", + "displayMode": { + "value": "contain", "source": "static" }, - "useCustomSorting": { - "value": false, + "sliderItems": { + "value": "product.media", + "source": "mapped" + }, + "bigImageMode": { + "value": true, "source": "static" }, - "availableSortings": { - "value": [], + "verticalAlign": { + "value": null, "source": "static" }, - "propertyWhitelist": { - "value": [], + "navigationDots": { + "value": "inside", + "source": "static" + }, + "galleryPosition": { + "value": "left", + "source": "static" + }, + "navigationArrows": { + "value": "inside", "source": "static" } }, @@ -17487,37 +17512,234 @@ }, "createdAt": "2023-08-03T17:24:09.000+00:00", "updatedAt": null, - "type": "product-listing", + "type": "image-gallery", + "slot": "imageGallery", + "block": null, + "blockId": "47cc4a3919794162982ea83f64a836fe", + "config": { + "zoom": { + "value": true, + "source": "static" + }, + "minHeight": { + "value": "430px", + "source": "static" + }, + "fullScreen": { + "value": true, + "source": "static" + }, + "displayMode": { + "value": "contain", + "source": "static" + }, + "sliderItems": { + "value": "product.media", + "source": "mapped" + }, + "bigImageMode": { + "value": true, + "source": "static" + }, + "verticalAlign": { + "value": null, + "source": "static" + }, + "navigationDots": { + "value": "inside", + "source": "static" + }, + "galleryPosition": { + "value": "left", + "source": "static" + }, + "navigationArrows": { + "value": "inside", + "source": "static" + } + }, + "fieldConfig": null, + "translations": null, + "data": null, + "locked": false, + "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "customFields": null, + "apiAlias": "cms_slot" + } + ], + "sectionId": "f4aaa27972314e3c9b7f3bb35c7f8a10", + "position": 1, + "name": null, + "sectionPosition": "main", + "marginTop": "20px", + "marginBottom": "20px", + "marginLeft": "20px", + "marginRight": "20px", + "backgroundColor": null, + "backgroundMediaId": null, + "backgroundMedia": null, + "backgroundMediaMode": "cover", + "cssClass": null, + "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "visibility": null, + "customFields": null, + "apiAlias": "cms_block" + }, + { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": [], + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "type": "text-two-column", + "slots": [ + { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": { + "config": { + "product": { + "value": null, + "source": "static" + }, + "alignment": { + "value": null, + "source": "static" + } + }, + "customFields": [] + }, + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "type": "buy-box", + "slot": "right", + "block": null, + "blockId": "095cd9a4eb49493aa95ea1e7a84a9503", + "config": { + "product": { + "value": null, + "source": "static" + }, + "alignment": { + "value": null, + "source": "static" + } + }, + "fieldConfig": null, + "translations": null, + "data": null, + "locked": false, + "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "customFields": null, + "apiAlias": "cms_slot" + }, + { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": { + "config": { + "product": { + "value": null, + "source": "static" + }, + "alignment": { + "value": null, + "source": "static" + } + }, + "customFields": [] + }, + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "type": "product-description-reviews", + "slot": "left", + "block": null, + "blockId": "095cd9a4eb49493aa95ea1e7a84a9503", + "config": { + "product": { + "value": null, + "source": "static" + }, + "alignment": { + "value": null, + "source": "static" + } + }, + "fieldConfig": null, + "translations": null, + "data": null, + "locked": false, + "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "customFields": null, + "apiAlias": "cms_slot" + } + ], + "sectionId": "f4aaa27972314e3c9b7f3bb35c7f8a10", + "position": 2, + "name": null, + "sectionPosition": "main", + "marginTop": "20px", + "marginBottom": "20px", + "marginLeft": "20px", + "marginRight": "20px", + "backgroundColor": null, + "backgroundMediaId": null, + "backgroundMedia": null, + "backgroundMediaMode": "cover", + "cssClass": null, + "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "visibility": null, + "customFields": null, + "apiAlias": "cms_block" + }, + { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": [], + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "type": "cross-selling", + "slots": [ + { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": { + "config": { + "product": { + "value": null, + "source": "static" + }, + "boxLayout": { + "value": "standard", + "source": "static" + }, + "elMinWidth": { + "value": "300px", + "source": "static" + }, + "displayMode": { + "value": "standard", + "source": "static" + } + }, + "customFields": [] + }, + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "type": "cross-selling", "slot": "content", "block": null, - "blockId": "96ea8b9676a5461c9149d205d792ecf2", + "blockId": "2d69edd4faab493baa056c81ea8d131f", "config": { - "filters": { - "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", + "product": { + "value": null, "source": "static" }, "boxLayout": { "value": "standard", "source": "static" }, - "showSorting": { - "value": true, - "source": "static" - }, - "defaultSorting": { - "value": "", - "source": "static" - }, - "useCustomSorting": { - "value": false, - "source": "static" - }, - "availableSortings": { - "value": [], + "elMinWidth": { + "value": "300px", "source": "static" }, - "propertyWhitelist": { - "value": [], + "displayMode": { + "value": "standard", "source": "static" } }, @@ -17530,14 +17752,14 @@ "apiAlias": "cms_slot" } ], - "sectionId": "2229e1f1208a4b8086baf7aec84f5e2c", - "position": 0, + "sectionId": "f4aaa27972314e3c9b7f3bb35c7f8a10", + "position": 3, "name": null, "sectionPosition": "main", - "marginTop": "20px", - "marginBottom": "20px", - "marginLeft": "20px", - "marginRight": "20px", + "marginTop": "0", + "marginBottom": "0", + "marginLeft": "0", + "marginRight": "0", "backgroundColor": null, "backgroundMediaId": null, "backgroundMedia": null, @@ -17549,7 +17771,7 @@ "apiAlias": "cms_block" } ], - "pageId": "33e88c7994fa4cf79a1265e5105b93b2", + "pageId": "bea211b5099241719830df8026624f7f", "page": null, "position": 0, "sizingMode": "boxed", @@ -17571,496 +17793,380 @@ "previewMediaId": null, "previewMedia": null, "landingPages": null, - "id": "33e88c7994fa4cf79a1265e5105b93b2", + "id": "bea211b5099241719830df8026624f7f", "customFields": null, "apiAlias": "cms_page" }, - "pickedProductIds": null, - "dsrPresentationVersionId": "213769ba28dd4ee788bdb49dc9ce53d2", - "id": "4ee08e142ed046eb99681594f67599f1", - "customFields": null, - "cmsPageVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "apiAlias": "dsr_presentation_cms_page" - } - }, - "cmsPage": { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "name": "Default Digital Sales Rooms product listing page", - "customFields": [] + "apiAlias": "pwa_page_result" }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "name": "Default Digital Sales Rooms product listing page", - "type": "presentation_product_list", - "entity": null, - "sections": [ - { - "translated": [], + { + "resourceType": "frontend.presentation.page", + "resourceIdentifier": "45a2b8ad0bb544e48f61eab564a2171c", + "cmsPage": { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": { + "name": "Ended presentation page", + "customFields": [] + }, "createdAt": "2023-08-03T17:24:09.000+00:00", "updatedAt": null, - "type": "default", - "blocks": [ + "name": "Ended presentation page", + "type": "presentation_product_list", + "entity": null, + "sections": [ { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "extensions": { + "translations": [] + }, "translated": [], "createdAt": "2023-08-03T17:24:09.000+00:00", "updatedAt": null, - "type": "product-listing", - "slots": [ + "type": "default", + "blocks": [ { "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "config": { - "filters": { - "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", - "source": "static" - }, - "boxLayout": { - "value": "standard", - "source": "static" - }, - "showSorting": { - "value": true, - "source": "static" - }, - "defaultSorting": { - "value": "", - "source": "static" - }, - "useCustomSorting": { - "value": false, - "source": "static" - }, - "availableSortings": { - "value": [], - "source": "static" - }, - "propertyWhitelist": { - "value": [], - "source": "static" - } - }, - "customFields": [] - }, + "translated": [], "createdAt": "2023-08-03T17:24:09.000+00:00", "updatedAt": null, - "type": "product-listing", - "slot": "content", - "block": null, - "blockId": "96ea8b9676a5461c9149d205d792ecf2", - "config": { - "filters": { - "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", - "source": "static" - }, - "boxLayout": { - "value": "standard", - "source": "static" - }, - "showSorting": { - "value": true, - "source": "static" - }, - "defaultSorting": { - "value": "", - "source": "static" - }, - "useCustomSorting": { - "value": false, - "source": "static" - }, - "availableSortings": { - "value": [], - "source": "static" - }, - "propertyWhitelist": { - "value": [], - "source": "static" - } - }, - "fieldConfig": null, - "translations": null, - "data": { - "listing": { - "elements": [ - { - "versionId": null, - "translated": [], - "createdAt": null, - "updatedAt": null, - "parentId": null, - "childCount": null, - "taxId": null, - "manufacturerId": null, - "unitId": null, - "active": null, - "displayGroup": null, - "manufacturerNumber": null, - "ean": null, - "sales": null, - "productNumber": null, - "stock": null, - "availableStock": null, - "available": null, - "deliveryTimeId": null, - "deliveryTime": null, - "restockTime": null, - "isCloseout": null, - "purchaseSteps": null, - "maxPurchase": null, - "minPurchase": null, - "purchaseUnit": null, - "referenceUnit": null, - "shippingFree": null, - "markAsTopseller": null, - "weight": null, - "width": null, - "height": null, - "length": null, - "releaseDate": null, - "categoryTree": null, - "streamIds": null, - "optionIds": null, - "propertyIds": null, - "name": null, - "keywords": null, - "description": null, - "metaDescription": null, - "metaTitle": null, - "packUnit": null, - "packUnitPlural": null, - "tax": null, - "manufacturer": null, - "unit": null, - "cover": null, - "parent": null, - "children": null, - "media": null, - "cmsPageId": null, - "cmsPage": null, - "translations": null, - "categories": null, - "properties": null, - "options": null, - "configuratorSettings": null, - "categoriesRo": null, - "coverId": null, - "categoryIds": null, - "productReviews": null, - "ratingAverage": null, - "mainCategories": null, - "seoUrls": null, - "crossSellings": null, - "canonicalProductId": null, - "canonicalProduct": null, - "streams": null, - "downloads": null, - "states": [], - "id": "a32702bb0b1443e3881c3b9a38c09169", - "customFields": null, - "apiAlias": "product" + "type": "text-hero", + "slots": [ + { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": { + "config": { + "content": { + "value": "

The live presentation ended

\n
\n

Thank you for your attention!

Below you can find all products wich were presented to you.

", + "source": "static" + }, + "verticalAlign": { + "value": null, + "source": "static" + } + }, + "customFields": [] + }, + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "type": "text", + "slot": "content", + "block": null, + "blockId": "c49b01e9c6624973b9cdd1992d3c009a", + "config": { + "content": { + "value": "

The live presentation ended

\n
\n

Thank you for your attention!

Below you can find all products wich were presented to you.

", + "source": "static" + }, + "verticalAlign": { + "value": null, + "source": "static" } - ], - "aggregations": [], - "page": 1, - "limit": null, - "entity": "product", - "total": 0, - "states": [], - "apiAlias": "dal_entity_search_result" - }, - "apiAlias": "cms_product_listing" - }, - "locked": false, - "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + }, + "fieldConfig": null, + "translations": null, + "data": null, + "locked": false, + "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "customFields": null, + "apiAlias": "cms_slot" + } + ], + "sectionId": "0a5e89814463470684a734b975add4ed", + "position": 0, + "name": null, + "sectionPosition": "main", + "marginTop": "20px", + "marginBottom": "20px", + "marginLeft": "20px", + "marginRight": "20px", + "backgroundColor": null, + "backgroundMediaId": null, + "backgroundMedia": null, + "backgroundMediaMode": "cover", + "cssClass": null, + "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "visibility": null, "customFields": null, - "apiAlias": "cms_slot" + "apiAlias": "cms_block" + }, + { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": [], + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "type": "product-listing", + "slots": [ + { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": { + "config": { + "filters": { + "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", + "source": "static" + }, + "boxLayout": { + "value": "standard", + "source": "static" + }, + "showSorting": { + "value": true, + "source": "static" + }, + "defaultSorting": { + "value": "", + "source": "static" + }, + "useCustomSorting": { + "value": false, + "source": "static" + }, + "availableSortings": { + "value": [], + "source": "static" + }, + "propertyWhitelist": { + "value": [], + "source": "static" + } + }, + "customFields": [] + }, + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "type": "product-listing", + "slot": "content", + "block": null, + "blockId": "0a13f5daa9be4e7b8ed5e3ecaba79fe6", + "config": { + "filters": { + "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", + "source": "static" + }, + "boxLayout": { + "value": "standard", + "source": "static" + }, + "showSorting": { + "value": true, + "source": "static" + }, + "defaultSorting": { + "value": "", + "source": "static" + }, + "useCustomSorting": { + "value": false, + "source": "static" + }, + "availableSortings": { + "value": [], + "source": "static" + }, + "propertyWhitelist": { + "value": [], + "source": "static" + } + }, + "fieldConfig": null, + "translations": null, + "data": null, + "locked": false, + "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "customFields": null, + "apiAlias": "cms_slot" + } + ], + "sectionId": "0a5e89814463470684a734b975add4ed", + "position": 1, + "name": null, + "sectionPosition": "main", + "marginTop": "20px", + "marginBottom": "20px", + "marginLeft": "20px", + "marginRight": "20px", + "backgroundColor": null, + "backgroundMediaId": null, + "backgroundMedia": null, + "backgroundMediaMode": "cover", + "cssClass": null, + "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "visibility": null, + "customFields": null, + "apiAlias": "cms_block" } ], - "sectionId": "2229e1f1208a4b8086baf7aec84f5e2c", + "pageId": "8ea80092faa744559409f3e9f7adcc6b", + "page": null, "position": 0, - "name": null, - "sectionPosition": "main", - "marginTop": "20px", - "marginBottom": "20px", - "marginLeft": "20px", - "marginRight": "20px", + "sizingMode": "boxed", + "mobileBehavior": "wrap", "backgroundColor": null, "backgroundMediaId": null, "backgroundMedia": null, "backgroundMediaMode": "cover", "cssClass": null, - "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "cmsPageVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", "visibility": null, "customFields": null, - "apiAlias": "cms_block" + "apiAlias": "cms_section" } ], - "pageId": "33e88c7994fa4cf79a1265e5105b93b2", - "page": null, - "position": 0, - "sizingMode": "boxed", - "mobileBehavior": "wrap", - "backgroundColor": null, - "backgroundMediaId": null, - "backgroundMedia": null, - "backgroundMediaMode": "cover", + "translations": null, "cssClass": null, - "cmsPageVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": null, + "config": null, + "previewMediaId": null, + "previewMedia": null, + "landingPages": null, + "id": "8ea80092faa744559409f3e9f7adcc6b", "customFields": null, - "apiAlias": "cms_section" - } - ], - "translations": null, - "cssClass": null, - "config": null, - "previewMediaId": null, - "previewMedia": null, - "landingPages": null, - "id": "33e88c7994fa4cf79a1265e5105b93b2", - "customFields": null, - "apiAlias": "cms_page" - }, - "category": { - "versionId": null, - "translated": { - "breadcrumb": [] + "apiAlias": "cms_page" + }, + "apiAlias": "pwa_page_result" + } + ], + "navigation": [ + { + "groupName": "Default Digital Sales Rooms product listing page", + "groupId": "468b0e34237a44ad8f8a8d5e0b72b78f", + "cmsPageId": "33e88c7994fa4cf79a1265e5105b93b2", + "name": null, + "id": "2229e1f1208a4b8086baf7aec84f5e2c", + "index": 1, + "notes": [ + { + "extensions": { + "foreignKeys": { + "extensions": [], + "apiAlias": "cms_slot_foreign_keys_extension" + } + }, + "_uniqueIdentifier": "de28c711c20b4ad0a54871d5a23109fc", + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": { + "config": { + "content": { + "value": "

Lorem Ipsum dolor sit amet

\n

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, \n sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, \n sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. \n Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. \n Lorem ipsum dolor sit amet, consetetur sadipscing elitr, \n sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. \n At vero eos et accusam et justo duo dolores et ea rebum. \n Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

", + "source": "static" + }, + "verticalAlign": { + "value": null, + "source": "static" + } + }, + "customFields": [] + }, + "createdAt": "2023-08-10T04:30:28.649+00:00", + "updatedAt": null, + "type": "notes", + "slot": "content", + "block": null, + "blockId": "978ca9beff6e4edca6d5263fac254e13", + "config": { + "content": { + "value": "

Lorem Ipsum dolor sit amet

\n

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, \n sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, \n sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. \n Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. \n Lorem ipsum dolor sit amet, consetetur sadipscing elitr, \n sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. \n At vero eos et accusam et justo duo dolores et ea rebum. \n Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

", + "source": "static" + }, + "verticalAlign": { + "value": null, + "source": "static" + } + }, + "fieldConfig": null, + "translations": null, + "data": null, + "locked": false, + "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "id": "de28c711c20b4ad0a54871d5a23109fc", + "customFields": null + } + ] }, - "createdAt": null, - "updatedAt": null, - "afterCategoryId": null, - "parentId": null, - "mediaId": null, - "name": null, - "breadcrumb": [], - "path": null, - "level": null, - "active": null, - "childCount": null, - "visibleChildCount": 0, - "displayNestedProducts": null, - "parent": null, - "children": null, - "translations": null, - "media": null, - "cmsPageId": null, - "cmsPageIdSwitched": false, - "cmsPage": null, - "linkType": null, - "linkNewTab": null, - "internalLink": null, - "externalLink": null, - "visible": null, - "type": null, - "productAssignmentType": null, - "description": null, - "metaTitle": null, - "metaDescription": null, - "keywords": null, - "seoUrls": null, - "customEntityTypeId": null, - "id": "34f21c5eb6d54a939f10973204aa5f08", - "customFields": null, - "apiAlias": "category" - }, + { + "groupName": "Default Digital Sales Rooms product detail page", + "groupId": "52f1e61cd45945a0b72bd613d1268d65", + "cmsPageId": "bea211b5099241719830df8026624f7f", + "name": null, + "id": "f4aaa27972314e3c9b7f3bb35c7f8a10", + "index": 2, + "notes": [] + }, + { + "groupName": "Ended presentation page", + "groupId": "b073190abe03407993f41b8d5bc8ba57", + "cmsPageId": "8ea80092faa744559409f3e9f7adcc6b", + "name": null, + "id": "0a5e89814463470684a734b975add4ed", + "index": 3, + "notes": [] + } + ], "apiAlias": "pwa_page_result" } }, - "PresentationCmsPage": { - "allOf": [ - { - "$ref": "#/components/schemas/DsrPresentationCmsPage" - }, - { + "AttendeeProductCollectionResponse": { + "type": "object", + "properties": { + "collection": { "type": "object", - "properties": { - "pickedProductIds": { - "anyOf": [ - { + "anyOf": [ + { + "type": "object", + "properties": { + "liked": { "type": "array", "items": { "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Product id" - } - }, - { - "type": "null" - } - ], - "description": "The product id is assigned to presentation if it's product listing or instant listing" - } - } - } - ] - }, - "JoinAppointmentResponse": { - "type": "object", - "description": "Includes all data you will need to attend to a appointment.", - "properties": { - "mercureSubscriberTopics": { - "type": "array", - "items": { - "type": "string", - "description": "mercure topic" - }, - "description": "The topics to which the attendee/guide can subscribe for" - }, - "mercurePublisherTopic": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "The topic to which the attendee/guide can send updates" - }, - "JWTMercureSubscriberToken": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "The JWT mercure token to publish updates" - }, - "mercureHubPublicUrl": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "The mercure hub url to connect for subscribing and updating" - }, - "JWTMercurePublisherToken": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "The JWT mercure token to subscribe for updates" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The appointment id" - }, - "newContextToken": { - "type": "string", - "description": "The new context token will be used in the header (sw-context-token) for calling the other routes" - }, - "attendeeId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The created Id for the attendee" - }, - "salesChannelId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The id of the current sales channel" - }, - "salesChannelName": { - "type": "string", - "description": "The name of the current sales channel" - }, - "appointmentName": { - "type": "string", - "description": "The name of the appointment" - }, - "presentationGuideMode": { - "type": "string", - "enum": [ - "self", - "guided" - ], - "description": "The type of the appointment" - }, - "isPreview": { - "type": "boolean", - "description": "To see if it's a preview appointment" - }, - "attendeeName": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "The name of the attendee" - }, - "videoUserId": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "The video user id that attendee could use" - }, - "b2bFeatures": { - "type": "object", - "description": "The b2b features that available for the appointment", - "properties": { - "quoteManagement": { - "type": "boolean", - "description": "To know if the quote management is enabled for current customer" - } - } - } - }, - "example": { - "mercureSubscriberTopics": [ - "gs-guide-actions-2d2c358f1ca04098aacf12873c2eed82", - "gs-presentation-state-for-client-2d2c358f1ca04098aacf12873c2eed82", - "gs-presentation-state-for-all-2d2c358f1ca04098aacf12873c2eed82" - ], - "mercurePublisherTopic": "gs-client-actions-2d2c358f1ca04098aacf12873c2eed82", - "JWTMercureSubscriberToken": "jwt token for subscribing to updates", - "mercureHubPublicUrl": "http://localhost:8081/.well-known/mercure", - "JWTMercurePublisherToken": "jwt token for publishing updates", - "attendeeName": "attendee name", - "videoUserId": null, - "b2bFeatures": { - "feature1": false, - "feature2": true - }, - "id": "2d2c358f1ca04098aacf12873c2eed82", - "newContextToken": "new context token to call the other routes", - "attendeeId": "b6358241e4ad4a4e99d0f729d21d63be", - "salesChannelId": "4a791ec7f9ff46b2ad67ae2f562891d3", - "salesChannelName": "Storefront", - "appointmentName": "Test Appointment", - "presentationGuideMode": "guided", - "isPreview": false, - "apiAlias": "swag_digital_sales_rooms_content_appointment_struct_appointment_join_struct" - } - }, - "DynamicPageOpenedPayload": { - "allOf": [ - { - "$ref": "#/components/schemas/AbstractDynamicPageOpenedPayload" + "pattern": "^[0-9a-f]{32}$", + "description": "Product ids from the collection" + } + } + } + }, + { + "type": "object", + "properties": { + "disliked": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Product ids from the collection" + } + } + } + } + ] } - ] + }, + "example": { + "collection": { + "liked": [ + "0015b3d83df441e490da7f6880a9c2da", + "60793d25cbab473f92c405ce0525f3ec" + ] + } + } }, - "EmptyPayload": { + "DiscountLineItemPayload": { "type": "object", - "properties": [] + "properties": { + "discountType": { + "type": "string", + "enum": [ + "percentage", + "absolute" + ] + }, + "discountValue": { + "type": "number", + "format": "float", + "maximum": 0 + }, + "discountPrice": { + "type": "number", + "format": "float", + "maximum": 0 + } + } }, "PageViewedPayload": { "type": "object", @@ -18096,6 +18202,92 @@ ] } } + }, + "AbstractDynamicPageOpenedPayload": { + "type": "object", + "required": [ + "pageId", + "type" + ], + "properties": { + "pageId": { + "type": "string", + "pattern": "^[a-f0-9]{32}$", + "description": "The id of the current dynamic page" + }, + "type": { + "type": "string", + "description": "The type of the current dynamic page" + }, + "opened": { + "type": "boolean", + "default": true + }, + "position": { + "type": "integer", + "description": "The position of the dynamic page in the list of dynamic pages" + } + } + }, + "CreateAppointmentRequestBody": { + "type": "object", + "description": "Includes all data you will need to attend to a appointment.", + "required": [ + "salutationId", + "firstName", + "lastName", + "emailAddress", + "subject" + ], + "properties": { + "salutationId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The id of the salutation" + }, + "firstName": { + "type": "string", + "description": "The first name of the requester" + }, + "lastName": { + "type": "string", + "description": "The last name of the requester" + }, + "emailAddress": { + "type": "string", + "format": "email", + "description": "The email address of the requester" + }, + "companyName": { + "type": "string", + "description": "The company name of the requester" + }, + "phoneNumber": { + "type": "string", + "description": "The phone number of the requester" + }, + "subject": { + "type": "string", + "description": "The subject of the appointment" + }, + "message": { + "type": "string", + "description": "The message of the appointment" + } + }, + "example": { + "id": "2d2c358f1ca04098aacf12873c2eed94", + "appointmentId": "3b3c358f1ca04098aacf12873c2eed94", + "salutationId": "5m6c358f1ca04098aacf12873c2eed94", + "firstName": "John", + "lastName": "Doe", + "emailAddress": "john@example.com", + "companyName": "Example Inc.", + "phoneNumber": "+1234567890", + "subject": "Appointment subject", + "message": "Appointment message", + "requestedById": "7b7c358f1ca04098aacf12873c2eed94" + } } }, "responses": { @@ -18234,34 +18426,162 @@ "204": { "description": "No Content" }, + "SeoUrlListResponse": { + "description": "Entity search result containing seo urls.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" + } + } + }, + "type": "object", + "required": [ + "elements" + ] + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + }, + "ProductListResponse": { + "description": "Entity search result containing products", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "required": [ + "elements" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + }, "CurrencyListResponse": { "description": "Entity search result containing currencies.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Currency" - } + "type": "array", + "items": { + "$ref": "#/components/schemas/Currency" + } + } + } + } + }, + "CountryListResponse": { + "description": "Entity search result containing countries.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Country" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + }, + "SalutationListResponse": { + "description": "Entity search result containing salutations.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Salutation" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + }, + "CategoryListResponse": { + "description": "Entity search result containing categories.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + } + } + } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } }, - "ProductListResponse": { - "description": "Entity search result containing products", + "CountryStateListResponse": { + "description": "Entity search result containing countries.", "content": { "application/json": { "schema": { "allOf": [ { - "required": [ - "elements" - ], "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Product" + "$ref": "#/components/schemas/CountryState" } } }, @@ -18275,8 +18595,8 @@ } } }, - "SeoUrlListResponse": { - "description": "Entity search result containing seo urls.", + "LanguageListResponse": { + "description": "Entity search result containing languages.", "content": { "application/json": { "schema": { @@ -18286,14 +18606,14 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/SeoUrl" + "$ref": "#/components/schemas/Language" } } }, - "type": "object", "required": [ "elements" - ] + ], + "type": "object" }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -18303,49 +18623,271 @@ } } }, - "CategoryListResponse": { - "description": "Entity search result containing categories.", + "ContextTokenResponse": { + "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", + "headers": { + "sw-context-token": { + "description": "Contains sw-context-token value", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redirectUrl": { + "description": "Define the URL which browser will be redirected to", + "type": "string" + } + } + } + } + } + }, + "OpenApi3": { + "description": "Returns information about the store API.", + "content": { + "application/json": { + "schema": { + "properties": { + "openapi": { + "type": "string" + }, + "info": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "description": { + "type": "string" + }, + "termsOfService": { + "type": "string", + "format": "uri" + }, + "contact": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "email": { + "type": "string", + "format": "email" + } + } + }, + "license": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "identifier": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "name" + ] + }, + "version": { + "type": "string" + } + }, + "required": [ + "title", + "version" + ] + }, + "jsonSchemaDialect": { + "type": "string" + }, + "webhooks": { + "type": "object" + }, + "servers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + } + }, + "required": [ + "url" + ] + } + }, + "components": { + "type": "object", + "properties": { + "schemas": { + "type": "object" + }, + "responses": { + "type": "object" + }, + "parameters": { + "type": "object" + }, + "examples": { + "type": "object" + }, + "requestBodies": { + "type": "object" + }, + "headers": { + "type": "object" + }, + "securitySchemes": { + "type": "object" + }, + "links": { + "type": "object" + }, + "callbacks": { + "type": "object" + }, + "pathItems": { + "type": "object" + } + } + }, + "security": { + "type": "array", + "items": { + "type": "object" + } + }, + "paths": { + "type": "object" + }, + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "externalDocs": { + "type": "object", + "properties": { + "description": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "url" + ] + } + }, + "required": [ + "name" + ] + } + }, + "externalDocs": { + "type": "object", + "properties": { + "description": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "url" + ] + } + }, + "type": "object", + "required": [ + "openapi", + "info" + ] + } + } + } + }, + "PaymentMethodListResponse": { + "description": "", "content": { "application/json": { "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - } - } + "properties": { + "total": { + "description": "Total amount", + "type": "integer" }, - { - "$ref": "#/components/schemas/EntitySearchResult" + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentMethod" + } } - ] + }, + "type": "object" } } } }, - "LanguageListResponse": { - "description": "Entity search result containing languages.", + "ShippingMethodListResponse": { + "description": "Entity search result containing shipping methods.", "content": { "application/json": { "schema": { "allOf": [ { + "required": [ + "elements" + ], "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Language" + "$ref": "#/components/schemas/ShippingMethod" } } }, - "required": [ - "elements" - ], "type": "object" }, { @@ -18355,630 +18897,560 @@ } } } + } + }, + "parameters": { + "contentType": { + "name": "Content-Type", + "in": "header", + "description": "Content type of the request", + "required": true, + "schema": { + "type": "string", + "default": "application/json" + } + }, + "accept": { + "name": "Accept", + "in": "header", + "description": "Accepted response content types", + "required": true, + "schema": { + "type": "string", + "default": "application/json" + } + }, + "noAggregations": { + "name": "no-aggregations", + "in": "query", + "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", + "required": false, + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "onlyAggregations": { + "name": "only-aggregations", + "in": "query", + "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", + "required": false, + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "criteriaPage": { + "name": "page", + "in": "query", + "description": "Search result page", + "schema": { + "type": "integer" + } + }, + "criteriaLimit": { + "name": "limit", + "in": "query", + "description": "Number of items per result page", + "schema": { + "type": "integer" + } + }, + "criteriaTerm": { + "name": "term", + "in": "query", + "description": "Search term", + "schema": { + "type": "string" + } + }, + "criteriaFilter": { + "name": "filter[]", + "in": "query", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "schema": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + } + }, + "criteriaIds": { + "name": "ids[]", + "in": "query", + "description": "List of ids to search for", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "criteriaQuery": { + "name": "query", + "in": "query", + "description": "The query string to search for", + "schema": { + "type": "string" + } + }, + "criteriaAssociations": { + "name": "associations", + "in": "query", + "description": "", + "schema": { + "$ref": "#/components/schemas/Associations" + }, + "style": "deepObject", + "explode": true + }, + "criteriaPostFilter": { + "name": "post-filter[]", + "in": "query", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "schema": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + } + }, + "criteriaSort": { + "name": "sort[]", + "in": "query", + "description": "Sorting in the search result.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Sort" + } + } + }, + "criteriaAggregations": { + "name": "aggregations[]", + "in": "query", + "description": "", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } + } + }, + "criteriaFields": { + "name": "fields[]", + "in": "query", + "description": "Fields which should be returned in the search result.", + "schema": { + "type": "array", + "items": { + "type": "string", + "description": "Name of a field" + } + } + }, + "criteriaGrouping": { + "name": "grouping[]", + "in": "query", + "description": "Perform groupings over certain fields", + "schema": { + "type": "array", + "items": { + "type": "string", + "description": "Name of a field" + } + } + }, + "criteriaTotalCountMode": { + "name": "total-count-mode", + "in": "query", + "description": "", + "schema": { + "$ref": "#/components/schemas/TotalCountMode" + } }, - "CountryStateListResponse": { - "description": "Entity search result containing countries.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CountryState" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } + "criteriaIncludes": { + "name": "includes", + "in": "query", + "description": "Specify the fields that should be returned for the given entities. Object key needs to be the entity name, and the list of fields needs to be the value. Fields will not be included, if they are also specified in the excludes. Note that the include fields will only be stripped on the API-Level, consider using the `fields` parameter for performance reasons.", + "schema": { + "$ref": "#/components/schemas/Includes" + }, + "style": "deepObject", + "explode": true + }, + "criteriaExcludes": { + "name": "excludes", + "in": "query", + "description": "Specify the fields that should be excluded from the response for the given entities. Object key needs to be the entity name, and the list of fields needs to be the value. Note that the exclude fields will only be stripped on the API-Level, consider using the `fields` parameter for performance reasons.", + "schema": { + "$ref": "#/components/schemas/Excludes" + }, + "style": "deepObject", + "explode": true + }, + "CompressedCriteria": { + "name": "_criteria", + "in": "query", + "description": "Compressed and encoded criteria object. Format: base64url(gzip(json_encode(criteria))). This parameter allows passing complex criteria as a single encoded string instead of multiple query parameters. The criteria object should be JSON-encoded, then gzipped, and finally base64url-encoded. The criteria object structure is defined in the Criteria schema (see #/components/schemas/Criteria).", + "required": false, + "schema": { + "type": "string", + "format": "base64url", + "example": "H4sIAAAAAAAAA6tWykpNzFGyqlbKz8lPTSxRslJKSi0pzSsFAGcQr7sHAAAA" } }, - "ContextTokenResponse": { - "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", - "headers": { - "sw-context-token": { - "description": "Contains sw-context-token value", + "CompressedNoneFieldsCriteria": { + "name": "_criteria", + "in": "query", + "description": "Compressed and encoded criteria object. Format: base64url(gzip(json_encode(criteria))). This parameter allows passing complex criteria as a single encoded string instead of multiple query parameters. The criteria object should be JSON-encoded, then gzipped, and finally base64url-encoded. The criteria object structure is defined in the NoneFieldsCriteria schema (see #/components/schemas/NoneFieldsCriteria).", + "required": false, + "schema": { + "type": "string", + "format": "base64url", + "example": "H4sIAAAAAAAAA6tWykpNzFGyqlbKz8lPTSxRslJKSi0pzSsFAGcQr7sHAAAA" + } + } + }, + "securitySchemes": { + "ApiKey": { + "type": "apiKey", + "description": "Identifies the sales channel you want to access the API through", + "name": "sw-access-key", + "in": "header" + }, + "ContextToken": { + "type": "apiKey", + "description": "Identifies an anonymous or identified user session", + "name": "sw-context-token", + "in": "header" + } + } + }, + "security": [ + { + "ApiKey": [] + } + ], + "paths": { + "/dsr/shop-pages/{layoutName}": { + "get": { + "tags": [ + "Shop pages" + ], + "summary": "Get shop pages", + "description": "Get shop pages by layout name", + "operationId": "dsrReadShopPage", + "parameters": [ + { + "name": "layoutName", + "in": "path", + "required": true, "schema": { "type": "string" } } - }, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "description": "Define the URL which browser will be redirected to", - "type": "string" + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CmsPage" } } } } - } - }, - "SalutationListResponse": { - "description": "Entity search result containing salutations.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Salutation" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } + }, + "security": [ + { + "ApiKey": [] } - } - }, - "ShippingMethodListResponse": { - "description": "Entity search result containing shipping methods.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "required": [ - "elements" - ], - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" + ] + } + }, + "/dsr/appointment/presentation": { + "get": { + "tags": [ + "Presentation" + ], + "summary": "Fetch presentation structure and flat navigation", + "description": "Resolves the presentation structure and navigation by using the attendeeContext information. There will be NO Slot-Data inside call store-api.dsr.presentation-data for that", + "operationId": "getPresentationStructure", + "parameters": [], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PresentationStructure" } - ] + } } } - } - }, - "CountryListResponse": { - "description": "Entity search result containing countries.", - "content": { - "application/json": { + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/dsr/appointment/presentation/{presentationCmsPageId}/slide/{sectionId}": { + "get": { + "tags": [ + "Presentation" + ], + "summary": "Fetch resolved data for specific slide", + "description": "Gives the resolved slot-data for the given slide index (slot-config)", + "operationId": "getSlideData", + "parameters": [ + { + "name": "presentationCmsPageId", + "in": "path", + "description": "Presentation CMS page id for which the data is requested", + "required": true, "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Country" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "sectionId", + "in": "path", + "description": "CMS section id for which the data is requested", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } - } - }, - "OpenApi3": { - "description": "Returns information about the store API.", - "content": { - "application/json": { - "schema": { - "properties": { - "openapi": { - "type": "string" - }, - "info": { - "type": "object", - "properties": { - "title": { - "type": "string" - }, - "summary": { - "type": "string" - }, - "description": { - "type": "string" - }, - "termsOfService": { - "type": "string", - "format": "uri" - }, - "contact": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "url": { - "type": "string", - "format": "uri" - }, - "email": { - "type": "string", - "format": "email" - } - } - }, - "license": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "identifier": { - "type": "string" - }, - "url": { - "type": "string", - "format": "uri" - } - }, - "required": [ - "name" - ] - }, - "version": { - "type": "string" - } - }, - "required": [ - "title", - "version" - ] - }, - "jsonSchemaDialect": { - "type": "string" - }, - "webhooks": { - "type": "object" - }, - "servers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "url": { - "type": "string" - } - }, - "required": [ - "url" - ] - } - }, - "components": { - "type": "object", - "properties": { - "schemas": { - "type": "object" - }, - "responses": { - "type": "object" - }, - "parameters": { - "type": "object" - }, - "examples": { - "type": "object" - }, - "requestBodies": { - "type": "object" - }, - "headers": { - "type": "object" - }, - "securitySchemes": { - "type": "object" - }, - "links": { - "type": "object" - }, - "callbacks": { - "type": "object" - }, - "pathItems": { - "type": "object" - } - } - }, - "security": { - "type": "array", - "items": { - "type": "object" - } - }, - "paths": { - "type": "object" - }, - "tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "externalDocs": { - "type": "object", - "properties": { - "description": { - "type": "string" - }, - "url": { - "type": "string", - "format": "uri" - } - }, - "required": [ - "url" - ] - } - }, - "required": [ - "name" - ] - } - }, - "externalDocs": { - "type": "object", - "properties": { - "description": { - "type": "string" - }, - "url": { - "type": "string", - "format": "uri" - } - }, - "required": [ - "url" - ] + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PresentationSlideData" } - }, - "type": "object", - "required": [ - "openapi", - "info" - ] + } } } - } - }, - "PaymentMethodListResponse": { - "description": "", - "content": { - "application/json": { + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/dsr/appointment/presentation/{presentationCmsPageId}/slide/{sectionId}/products": { + "post": { + "tags": [ + "Presentation" + ], + "summary": "Fetch all products for specific slide", + "description": "Fetches all products for a specific slide", + "operationId": "getSlideProducts", + "parameters": [ + { + "name": "presentationCmsPageId", + "in": "path", + "description": "Presentation CMS page id for which the data is requested", + "required": true, "schema": { - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PaymentMethod" + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "sectionId", + "in": "path", + "description": "CMS section id for which the data is requested", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + }, + { + "type": "object", + "properties": { + "interaction": { + "type": "boolean" + } + } } + ] + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductListingResult" } - }, - "type": "object" + } } } - } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] } }, - "parameters": { - "contentType": { - "name": "Content-Type", - "in": "header", - "description": "Content type of the request", - "required": true, - "schema": { - "type": "string", - "default": "application/json" - } - }, - "accept": { - "name": "Accept", - "in": "header", - "description": "Accepted response content types", - "required": true, - "schema": { - "type": "string", - "default": "application/json" - } - }, - "noAggregations": { - "name": "no-aggregations", - "in": "query", - "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", - "required": false, - "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "onlyAggregations": { - "name": "only-aggregations", - "in": "query", - "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", - "required": false, - "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "criteriaPage": { - "name": "page", - "in": "query", - "description": "Search result page", - "schema": { - "type": "integer" - } - }, - "criteriaLimit": { - "name": "limit", - "in": "query", - "description": "Number of items per result page", - "schema": { - "type": "integer" - } - }, - "criteriaTerm": { - "name": "term", - "in": "query", - "description": "Search term", - "schema": { - "type": "string" - } - }, - "criteriaFilter": { - "name": "filter[]", - "in": "query", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "schema": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" + "/dsr/appointment/presentation/state": { + "get": { + "tags": [ + "Presentation" + ], + "summary": "Get the current presentation state", + "description": "Returns the presentation state for all and the client", + "operationId": "getClientPresentationState", + "parameters": [], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ClientPresentationStateResponse" + } } - ] - } - } - }, - "criteriaIds": { - "name": "ids[]", - "in": "query", - "description": "List of ids to search for", - "schema": { - "type": "array", - "items": { - "type": "string" + } } - } - }, - "criteriaQuery": { - "name": "query", - "in": "query", - "description": "The query string to search for", - "schema": { - "type": "string" - } - }, - "criteriaAssociations": { - "name": "associations", - "in": "query", - "description": "", - "schema": { - "$ref": "#/components/schemas/Associations" }, - "style": "deepObject", - "explode": true - }, - "criteriaPostFilter": { - "name": "post-filter[]", - "in": "query", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "schema": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - } - }, - "criteriaSort": { - "name": "sort[]", - "in": "query", - "description": "Sorting in the search result.", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Sort" - } - } - }, - "criteriaAggregations": { - "name": "aggregations[]", - "in": "query", - "description": "", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" + "security": [ + { + "ApiKey": [], + "ContextToken": [] } - } - }, - "criteriaFields": { - "name": "fields[]", - "in": "query", - "description": "Fields which should be returned in the search result.", - "schema": { - "type": "array", - "items": { - "type": "string", - "description": "Name of a field" + ] + } + }, + "/dsr/quickview/{productId}/{cmsPageLayoutId}": { + "get": { + "tags": [ + "Presentation" + ], + "summary": "Fetch a cms page for quickview with product data", + "description": "Takes a product identifier and returns the preconfigured quickview CMS layout (defined in SwagDigitalSalesRooms.config.quickviewPageId ) hydrated with the product specific data", + "operationId": "resolveQuickviewPage", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "The product id", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "cmsPageLayoutId", + "in": "path", + "description": "The cms page id using as product quick view", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } - } - }, - "criteriaGrouping": { - "name": "grouping[]", - "in": "query", - "description": "Perform groupings over certain fields", - "schema": { - "type": "array", - "items": { - "type": "string", - "description": "Name of a field" + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "cmsPage": { + "$ref": "#/components/schemas/CmsPage" + }, + "product": { + "$ref": "#/components/schemas/Product" + }, + "configurator": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PropertyGroup" + } + } + } + } + } + } } - } - }, - "criteriaTotalCountMode": { - "name": "total-count-mode", - "in": "query", - "description": "", - "schema": { - "$ref": "#/components/schemas/TotalCountMode" - } - }, - "criteriaIncludes": { - "name": "includes", - "in": "query", - "description": "Specify the fields that should be returned for the given entities. Object key needs to be the entity name, and the list of fields needs to be the value. Fields will not be included, if they are also specified in the excludes. Note that the include fields will only be stripped on the API-Level, consider using the `fields` parameter for performance reasons.", - "schema": { - "$ref": "#/components/schemas/Includes" - }, - "style": "deepObject", - "explode": true - }, - "criteriaExcludes": { - "name": "excludes", - "in": "query", - "description": "Specify the fields that should be excluded from the response for the given entities. Object key needs to be the entity name, and the list of fields needs to be the value. Note that the exclude fields will only be stripped on the API-Level, consider using the `fields` parameter for performance reasons.", - "schema": { - "$ref": "#/components/schemas/Excludes" }, - "style": "deepObject", - "explode": true - }, - "CompressedCriteria": { - "name": "_criteria", - "in": "query", - "description": "Compressed and encoded criteria object. Format: base64url(gzip(json_encode(criteria))). This parameter allows passing complex criteria as a single encoded string instead of multiple query parameters. The criteria object should be JSON-encoded, then gzipped, and finally base64url-encoded. The criteria object structure is defined in the Criteria schema (see #/components/schemas/Criteria).", - "required": false, - "schema": { - "type": "string", - "format": "base64url", - "example": "H4sIAAAAAAAAA6tWykpNzFGyqlbKz8lPTSxRslJKSi0pzSsFAGcQr7sHAAAA" - } - }, - "CompressedNoneFieldsCriteria": { - "name": "_criteria", - "in": "query", - "description": "Compressed and encoded criteria object. Format: base64url(gzip(json_encode(criteria))). This parameter allows passing complex criteria as a single encoded string instead of multiple query parameters. The criteria object should be JSON-encoded, then gzipped, and finally base64url-encoded. The criteria object structure is defined in the NoneFieldsCriteria schema (see #/components/schemas/NoneFieldsCriteria).", - "required": false, - "schema": { - "type": "string", - "format": "base64url", - "example": "H4sIAAAAAAAAA6tWykpNzFGyqlbKz8lPTSxRslJKSi0pzSsFAGcQr7sHAAAA" - } + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] } }, - "securitySchemes": { - "ApiKey": { - "type": "apiKey", - "description": "Identifies the sales channel you want to access the API through", - "name": "sw-access-key", - "in": "header" - }, - "ContextToken": { - "type": "apiKey", - "description": "Identifies an anonymous or identified user session", - "name": "sw-context-token", - "in": "header" - } - } - }, - "security": [ - { - "ApiKey": [] - } - ], - "paths": { "/dsr/account/update-default-info": { "post": { "tags": [ @@ -19167,128 +19639,47 @@ ] } }, - "/dsr/appointment/presentation": { - "get": { - "tags": [ - "Presentation" - ], - "summary": "Fetch presentation structure and flat navigation", - "description": "Resolves the presentation structure and navigation by using the attendeeContext information. There will be NO Slot-Data inside call store-api.dsr.presentation-data for that", - "operationId": "getPresentationStructure", - "parameters": [], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PresentationStructure" - } - } - } - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/dsr/appointment/presentation/{presentationCmsPageId}/slide/{sectionId}": { - "get": { - "tags": [ - "Presentation" - ], - "summary": "Fetch resolved data for specific slide", - "description": "Gives the resolved slot-data for the given slide index (slot-config)", - "operationId": "getSlideData", - "parameters": [ - { - "name": "presentationCmsPageId", - "in": "path", - "description": "Presentation CMS page id for which the data is requested", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "sectionId", - "in": "path", - "description": "CMS section id for which the data is requested", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PresentationSlideData" - } - } - } - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/dsr/appointment/presentation/{presentationCmsPageId}/slide/{sectionId}/products": { + "/dsr/product-listing": { "post": { "tags": [ - "Presentation" - ], - "summary": "Fetch all products for specific slide", - "description": "Fetches all products for a specific slide", - "operationId": "getSlideProducts", - "parameters": [ - { - "name": "presentationCmsPageId", - "in": "path", - "description": "Presentation CMS page id for which the data is requested", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "sectionId", - "in": "path", - "description": "CMS section id for which the data is requested", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } + "Product" ], + "summary": "Fetch a product listing by criteria", + "description": "Fetches a product listing for a given criteria. It also provides filters, sortings and property aggregations, analogous to the /product-listing endpoint.", + "operationId": "dsrProductListing", + "parameters": [], "requestBody": { + "required": false, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Criteria" - }, + } + ], + "anyOf": [ { - "type": "object", "properties": { "interaction": { - "type": "boolean" + "type": "boolean", + "default": false, + "description": "Load interaction (like & dislike) to product of attendee. It will be added into product extensions named interaction" + }, + "useIdSorting": { + "type": "boolean", + "default": false, + "description": "Use id sorting instead of other sorting fields" + }, + "loadVariants": { + "type": "boolean", + "default": false, + "description": "load all variants following the main products" + }, + "loadAllIds": { + "type": "boolean", + "default": false, + "description": "Load all product ids, you can access it from `extensions.allIds` of the response" } } } @@ -19303,36 +19694,23 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" - } - } - } - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/dsr/appointment/presentation/state": { - "get": { - "tags": [ - "Presentation" - ], - "summary": "Get the current presentation state", - "description": "Returns the presentation state for all and the client", - "operationId": "getClientPresentationState", - "parameters": [], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ClientPresentationStateResponse" + "type": "object", + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -19346,29 +19724,18 @@ ] } }, - "/dsr/quickview/{productId}/{cmsPageLayoutId}": { + "/dsr/product/{productId}": { "get": { "tags": [ - "Presentation" + "Shop pages" ], - "summary": "Fetch a cms page for quickview with product data", - "description": "Takes a product identifier and returns the preconfigured quickview CMS layout (defined in SwagDigitalSalesRooms.config.quickviewPageId ) hydrated with the product specific data", - "operationId": "resolveQuickviewPage", + "summary": "Load product detail page", + "description": "Load product detail page with product id", + "operationId": "dsrReadProductDetailPage", "parameters": [ { "name": "productId", "in": "path", - "description": "The product id", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "cmsPageLayoutId", - "in": "path", - "description": "The cms page id using as product quick view", "required": true, "schema": { "type": "string", @@ -19382,21 +19749,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "cmsPage": { - "$ref": "#/components/schemas/CmsPage" - }, - "product": { - "$ref": "#/components/schemas/Product" - }, - "configurator": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PropertyGroup" - } - } - } + "$ref": "#/components/schemas/ProductPageResult" } } } @@ -20003,167 +20356,6 @@ } ] } - }, - "/dsr/shop-pages/{layoutName}": { - "get": { - "tags": [ - "Shop pages" - ], - "summary": "Get shop pages", - "description": "Get shop pages by layout name", - "operationId": "dsrReadShopPage", - "parameters": [ - { - "name": "layoutName", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CmsPage" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/dsr/product-listing": { - "post": { - "tags": [ - "Product" - ], - "summary": "Fetch a product listing by criteria", - "description": "Fetches a product listing for a given criteria. It also provides filters, sortings and property aggregations, analogous to the /product-listing endpoint.", - "operationId": "dsrProductListing", - "parameters": [], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ], - "anyOf": [ - { - "properties": { - "interaction": { - "type": "boolean", - "default": false, - "description": "Load interaction (like & dislike) to product of attendee. It will be added into product extensions named interaction" - }, - "useIdSorting": { - "type": "boolean", - "default": false, - "description": "Use id sorting instead of other sorting fields" - }, - "loadVariants": { - "type": "boolean", - "default": false, - "description": "load all variants following the main products" - }, - "loadAllIds": { - "type": "boolean", - "default": false, - "description": "Load all product ids, you can access it from `extensions.allIds` of the response" - } - } - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "object", - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/dsr/product/{productId}": { - "get": { - "tags": [ - "Shop pages" - ], - "summary": "Load product detail page", - "description": "Load product detail page with product id", - "operationId": "dsrReadProductDetailPage", - "parameters": [ - { - "name": "productId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProductPageResult" - } - } - } - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } } }, "tags": [ diff --git a/SwagDigitalSalesRooms-storeapi.summary.json b/SwagDigitalSalesRooms-storeapi.summary.json index 1ab3a9e..bd54b8c 100644 --- a/SwagDigitalSalesRooms-storeapi.summary.json +++ b/SwagDigitalSalesRooms-storeapi.summary.json @@ -42,6 +42,9 @@ "AppCmsBlock", "AppFlowAction", "AppFlowEvent", + "AppMcpPrompt", + "AppMcpResource", + "AppMcpTool", "AppPaymentMethod", "AppScriptCondition", "AppShippingMethod", @@ -62,6 +65,8 @@ "CartDeliveryPosition", "CartError", "CartItems", + "CartItemsUpdate", + "CartLineItemUpdate", "CartListPrice", "CartPriceQuantity", "CartPriceReference", @@ -175,6 +180,7 @@ "NavigationType", "NewsletterRecipient", "NewsletterRecipientJsonApi", + "NewsletterStatus", "NoneFieldsCriteria", "Notification", "NumberRange", diff --git a/storeapi.json b/storeapi.json index 2a179cb..56657f6 100644 --- a/storeapi.json +++ b/storeapi.json @@ -7,7 +7,7 @@ "name": "MIT", "url": "https://github.com/shopware/shopware/blob/trunk/LICENSE" }, - "version": "6.7.9999999-dev" + "version": "6.7.9.1" }, "servers": [ { @@ -560,84 +560,6 @@ }, "type": "object" }, - "AppMcpPrompt": { - "description": "Added since version: 6.7.0.0", - "required": [ - "label" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - } - }, - "type": "object" - }, - "AppMcpResource": { - "description": "Added since version: 6.7.0.0", - "required": [ - "label" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - } - }, - "type": "object" - }, - "AppMcpTool": { - "description": "Added since version: 6.7.0.0", - "required": [ - "label" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - } - }, - "type": "object" - }, "AppPaymentMethod": { "description": "Added since version: 6.4.1.0", "properties": { @@ -2735,11 +2657,6 @@ "readOnly": true, "description": "Unique identity tag names given to the line item." }, - "requestedGroupId": { - "description": "Unique identity of requested group.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, "createdById": { "type": "string", "pattern": "^[0-9a-f]{32}$" @@ -3612,19 +3529,18 @@ "description": "Unique number associated with every document.", "type": "string" }, - "customFields": { + "config": { "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + "description": "Specifies detailed information about the component." }, "createdAt": { "type": "string", "format": "date-time", "readOnly": true }, - "config": { + "customFields": { "type": "object", - "deprecated": true, - "description": "Specifies detailed information about the component." + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, "updatedAt": { "type": "string", @@ -7542,11 +7458,6 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "openGraphMediaId": { - "description": "Media used as Open Graph image for social media sharing.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, "productNumber": { "description": "Unique number assigned to individual products. Define rules for automatic assignment of every product creation as per your number range.", "type": "string" @@ -7740,12 +7651,6 @@ "customFields": { "type": "object" }, - "ogTitle": { - "type": "string" - }, - "ogDescription": { - "type": "string" - }, "type": { "description": "The type of the product, e.g., physical or digital.", "type": "string", @@ -8049,36 +7954,6 @@ }, "type": "object" }, - "openGraphMedia": { - "description": "Open Graph image for social media sharing", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/openGraphMedia" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "media" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "bbda52d941a3452369a00f2880f4f358" - } - } - } - }, - "type": "object" - }, "cmsPage": { "description": "Custom CMS page layout for the product detail page", "properties": { @@ -8651,11 +8526,6 @@ "pattern": "^[0-9a-f]{32}$", "description": "Unique identifier of CMS page's version." }, - "openGraphMediaId": { - "description": "Media used as Open Graph image for social media sharing.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, "productNumber": { "description": "Unique number assigned to individual products. Define rules for automatic assignment of every product creation as per your number range.", "type": "string" @@ -8863,12 +8733,6 @@ "type": "object", "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, - "ogTitle": { - "type": "string" - }, - "ogDescription": { - "type": "string" - }, "type": { "description": "The type of the product, e.g., physical or digital.", "type": "string", @@ -9045,10 +8909,6 @@ "$ref": "#/components/schemas/ProductMedia", "description": "Main product image displayed in listings and detail pages" }, - "openGraphMedia": { - "$ref": "#/components/schemas/Media", - "description": "Open Graph image for social media sharing" - }, "cmsPage": { "$ref": "#/components/schemas/CmsPage", "description": "Custom CMS page layout for the product detail page" @@ -10484,46 +10344,6 @@ }, "type": "object" }, - "SalesChannelTrackingCustomer": { - "description": "Added since version: 6.7.9.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "SalesChannelTrackingOrder": { - "description": "Added since version: 6.7.9.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, "SalesChannelType": { "description": "Added since version: 6.0.0.0", "required": [ @@ -10583,11 +10403,6 @@ "customFields": { "type": "object" }, - "position": { - "description": "Numerical value that indicates the order in which the defined salutations must be displayed in the frontend.", - "type": "integer", - "format": "int64" - }, "createdAt": { "type": "string", "format": "date-time", @@ -10636,11 +10451,6 @@ "type": "object", "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, - "position": { - "description": "Numerical value that indicates the order in which the defined salutations must be displayed in the frontend.", - "type": "integer", - "format": "int64" - }, "createdAt": { "type": "string", "format": "date-time", @@ -12044,2480 +11854,2008 @@ "$ref": "#/components/schemas/Breadcrumb" } }, - "EntitySearchResult": { + "CartPriceQuantity": { "type": "object", "properties": { - "entity": { - "type": "string" + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_quantity" + ] }, - "total": { - "type": "integer", - "description": "The total number of found entities" + "isCalculated": { + "type": "boolean" }, - "aggregations": { + "listPrice": { + "$ref": "#/components/schemas/CartListPrice" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + } + }, + "type": "object" + }, + "taxRules": { "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", "items": { - "type": "object" + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } } }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." - }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." + "type": { + "type": "string" } - } + }, + "required": [ + "apiAlias" + ] }, - "SalesChannelContext": { + "CrossSellingElement": { "type": "object", "properties": { - "token": { - "description": "Context the user session", - "type": "string" + "crossSelling": { + "$ref": "#/components/schemas/ProductCrossSelling" }, - "currentCustomerGroup": { - "type": "object", - "description": "Customer group of the current user", - "properties": { - "name": { - "type": "string", - "description": "Name of customer group to which the customer belongs within the specific sales channel they are currently interacting with." - }, - "displayGross": { - "type": "boolean", - "description": "When `true`, product's gross price is displayed for that customer group who belongs to the specific sales channel they are currently interacting with." - } + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" } }, - "fallbackCustomerGroup": { - "description": "Fallback group if the default customer group is not applicable", - "type": "object", + "total": { + "type": "integer", + "format": "int32" + }, + "streamId": { + "type": "string", + "format": "uuid" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cross_selling_element" + ] + } + }, + "required": [ + "crossSelling", + "products", + "total", + "apiAlias" + ] + }, + "ProductMeasurements": { + "type": "object", + "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", + "properties": { + "width": { + "type": "object", "properties": { - "name": { - "type": "string" + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" }, - "displayGross": { - "type": "boolean" + "value": { + "type": "number" } } }, - "currency": { - "$ref": "#/components/schemas/Currency", + "height": { + "type": "object", "properties": { - "isoCode": { - "description": "Standard international three digit code to represent currency in a given sales channel. For example, USD." - }, - "factor": { - "description": "Currency exchange rate in a specific sales channel the customer is currently interacting with." - }, - "symbol": { - "description": "A currency symbol is a graphical representation used as shorthand for a currency's name, for example US Dollar - $ in a given sales channel." - }, - "shortName": { - "description": "Acronym for international currencies, for example, USD in a given sales channel." - }, - "name": { - "description": "Full name of the currency in a given sales channel. For example, US-Dollar." - }, - "position": { - "description": "The order of the tabs for multiple currencies defined in a given sales channel." - }, - "decimalPrecision": { - "description": "It defines the round off value for currency to the nearest decimal point in a given sales channel. If set to 2, it rounds off to two significant decimal points." + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" }, - "isSystemDefault": { - "description": "Runtime field, cannot be used as part of the criteria." + "value": { + "type": "number" } } }, - "salesChannel": { - "$ref": "#/components/schemas/SalesChannel", + "length": { + "type": "object", "properties": { - "typeId": { - "description": "Unique identity of a sales channel's type within a specific sales channel." - }, - "languageId": { - "description": "Unique identity of a sales channel's language within a specific sales channel." + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" }, - "currencyId": { - "description": "Unique identity of a sales channel's currency within a specific sales channel." + "value": { + "type": "number" + } + } + }, + "weight": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg" }, - "paymentMethodId": { - "description": "Unique identity of a sales channel's payment method within a specific sales channel." + "value": { + "type": "number" + } + } + } + } + }, + "ProductListingCriteria": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + }, + { + "type": "object", + "description": "Additional search parameters for product listings", + "properties": { + "order": { + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "type": "string" }, - "shippingMethodId": { - "description": "Unique identity of a sales channel's shipping method within a specific sales channel." + "limit": { + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "type": "integer", + "minimum": 0 }, - "countryId": { - "description": "Unique identity of a sales channel's country within a specific sales channel." + "p": { + "description": "Search result page", + "type": "integer", + "default": 1 }, - "navigationCategoryId": { - "description": "Unique identity of a sales channel's navigation category within a specific sales channel." + "manufacturer": { + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "type": "string" }, - "navigationCategoryDepth": { - "description": "It determines the number of levels of subcategories in the storefront category menu within a specific sales channel." + "min-price": { + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 }, - "footerCategoryId": { - "description": "Unique identity of a sales channel's footer category within a specific sales channel." + "max-price": { + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 }, - "serviceCategoryId": { - "description": "Unique identity of a sales channel's service category within a specific sales channel." + "rating": { + "description": "Filter products with a minimum average rating.", + "type": "integer" }, - "name": { - "description": "Name of the sales channel." + "shipping-free": { + "description": "Filters products that are marked as shipping-free.", + "type": "boolean", + "default": false }, - "shortName": { - "description": "A short name for sales channel." + "properties": { + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "type": "string" }, - "accessKey": { - "description": "Access key to store api." + "manufacturer-filter": { + "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", + "type": "boolean", + "default": true }, - "active": { - "description": "When `true`, the sales channel is enabled." + "price-filter": { + "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", + "type": "boolean", + "default": true }, - "maintenance": { - "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." + "rating-filter": { + "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", + "type": "boolean", + "default": true }, - "maintenanceIpWhitelist": { - "description": "Array of IP address allowed to access the sales channel." + "shipping-free-filter": { + "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", + "type": "boolean", + "default": true }, - "mailHeaderFooterId": { - "description": "Unique identity of a sales channel's mail header and footer within a specific sales channel." + "property-filter": { + "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", + "type": "boolean", + "default": true }, - "customerGroupId": { - "description": "Unique identity of a sales channel's customer group within a specific sales channel." + "property-whitelist": { + "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", + "type": "string" }, - "hreflangActive": { - "description": "When `true`, the sales channel pages are available in different languages within a specific sales channel." + "reduce-aggregations": { + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + } + } + ], + "properties": { + "filter": { + "properties": { + "type": { + "description": "To filter the results and aggregations with filter types like ==, >=, etc." }, - "hreflangDefaultDomainId": { - "description": "Unique identity of a sales channel's hreflangDefaultDomain within a specific sales channel." + "field": { + "description": "To filter the results and aggregations by field like an property identifier." }, - "analyticsId": { - "description": "Unique identity of a sales channel's analytics within a specific sales channel." + "value": { + "description": "To filter the results and aggregations by value." } } }, - "measurementSystem": { - "$ref": "#/components/schemas/ContextMeasurementSystemInfo" - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - }, - "properties": { - "taxRate": { - "description": "Rate of tax within a specific sales channel." - }, - "name": { - "description": "Name defined for a Tax within a specific sales channel." - } - } - }, - "customer": { - "oneOf": [ - { - "type": "null" - }, - { - "$ref": "#/components/schemas/Customer" - } - ], - "properties": { - "groupId": { - "description": "Unique identity of a customer's group within a specific sales channel." - }, - "defaultPaymentMethodId": { - "description": "Unique identity of a customer's default payment method within a specific sales channel." - }, - "salesChannelId": { - "description": "Unique identity of sales channel the customer is currently interacting with." - }, - "languageId": { - "description": "Unique identity of language within a specific sales channel the customer is interacting." - }, - "lastPaymentMethodId": { - "description": "Unique identity of customer's last payment method within a specific sales channel." - }, - "defaultBillingAddressId": { - "description": "Unique identity of customer's default billing address within a specific sales channel." - }, - "defaultShippingAddressId": { - "description": "Unique identity of customer's default shipping address within a specific sales channel." - }, - "customerNumber": { - "description": "Name of the customer within a specific sales channel the customer is interacting." - }, - "salutationId": { - "description": "Unique identity of customer's default shipping address within a specific sales channel." - }, - "firstName": { - "description": "First name of the customer within a specific sales channel." - }, - "lastName": { - "description": "Last name of the customer within a specific sales channel." - }, - "company": { - "description": "Company name of the customer within a specific sales channel." - }, - "password": { - "description": "Password of the customer within a specific sales channel." - }, - "email": { - "description": "Email of the customer within a specific sales channel." - }, - "title": { - "description": "Customer's title or honorifics like Mr, Mrs, etc within a specific sales channel." - }, - "affiliateCode": { - "description": "An affiliate code is an identification option with which website operators can mark outgoing links within a specific sales channel." - }, - "campaignCode": { - "description": "A unique identifier for a campaign within a specific sales channel." - }, - "active": { - "description": "When `true`, the status of the customer is set active within a specific sales channel." - }, - "doubleOptInRegistration": { - "description": "When `true`, user subscriptions to an email marketing list is allowed within a specific sales channel." - }, - "doubleOptInEmailSentDate": { - "description": "Date and time when the double opt-in email was sent within a specific sales channel." - }, - "doubleOptInConfirmDate": { - "description": "Date and time when the double opt-in email was confirmed within a specific sales channel." - }, - "hash": { - "description": "Password hash for account recovery within a specific sales channel." - }, - "guest": { - "description": "Boolean value is `true` for a guest account within a specific sales channel." - }, - "firstLogin": { - "description": "Captures date and time of customer's first login within a specific sales channel." - }, - "lastLogin": { - "description": "Captures date and time of customer's last login within a specific sales channel." - }, - "newsletter": { - "description": "When `true`, then the customer gets subscribe to the newsletter" - }, - "birthday": { - "description": "Captures customer's birthday details within a specific sales channel." - }, - "lastOrderDate": { - "description": "Captures customer's last order date within a specific sales channel." - }, - "orderCount": { - "description": "Captures the number of orders placed by a customer within a specific sales channel." - }, - "legacyEncoder": { - "description": "encapsulates shop credentials when needed to migrate shop system from old instance to new instance" - }, - "legacyPassword": { - "description": "Hashed password of the old shop system" - }, - "autoIncrement": { - "description": "Internal field. " - }, - "remoteAddress": { - "description": "Anonymous IP address of the customer for last session." - } - } - }, - "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethod", + "sort": { "properties": { - "pluginId": { - "description": "Unique identity of payment plugin within a specific sales channel." - }, - "handlerIdentifier": { - "description": "Internal field that contains system identifier details for payment methods like Paypal." - }, - "name": { - "description": "Name of the payment method within a specific sales channel." - }, - "description": { - "description": "A short description about the payment method within a specific sales channel." - }, - "position": { - "description": "The order of the tabs of your defined payment methods in the storefront by entering numerical values like 1,2,3, etc within a specific sales channel." - }, - "active": { - "description": "When `true`, the payment method is available for usage within a specific sales channel." - }, - "availabilityRuleId": { - "description": "Unique identity of the rule for the payment method." + "field": { + "description": "Sort the search results by field like an property identifier." }, - "mediaId": { - "description": "Unique identity of media used in payment method within a specific sales channel." + "order": { + "description": "Sort the search results of orders by ascending or descending." }, - "formattedHandlerIdentifier": { - "description": "Internal field that contains system identifier details for payment methods like Paypal." + "naturalSorting": { + "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." } } }, - "shippingLocation": { - "type": "object", + "post-filter": { "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] + "type": { + "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." }, - "country": { - "$ref": "#/components/schemas/Country" + "field": { + "description": "To filter only the results but not the aggregations by field like an property identifier." }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" + "value": { + "description": "To filter only the results but not the aggregations by value." } } - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod", - "properties": { - "name": { - "description": "Name of the shipping method within a specific sales channel." - }, - "active": { - "description": "When `true`, the shipping method is available for usage within a specific sales channel." - }, - "description": { - "description": "A short description about the shipping method within a specific sales channel." - }, - "trackingUrl": { - "description": "URL that allows to track packages for a specific sales channel." - }, - "deliveryTimeId": { - "description": "Unique identity of deliveryTime within a specific sales channel." - }, - "availabilityRuleId": { - "description": "Unique identity of the rule for the payment method." - }, - "mediaId": { - "description": "Unique identity of media used in shipping method within a specific sales channel." + } + } + }, + "ShippingMethodPageRouteResponse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "deliveryTimeId": { + "type": "string" + }, + "deliveryTime": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "min": { + "type": "integer", + "format": "int32" + }, + "max": { + "type": "integer", + "format": "int32" + }, + "unit": { + "type": "string" + } } - } - }, - "context": { - "description": "Core context with general configuration values and state", - "type": "object", - "properties": { - "versionId": { - "type": "string", - "description": "Unique identity of context's version in a specific sales channel." - }, - "currencyId": { - "type": "string", - "description": "Unique identity of currency context in a specific sales channel." - }, - "currencyFactor": { - "type": "integer", - "description": "Unique identity of currency factor context in a specific sales channel." - }, - "currencyPrecision": { - "type": "integer", - "format": "int32", - "description": "It defines the round off value of currency to the nearest decimal point. If set to 2, it rounds off to two significant decimal points." - }, - "languageIdChain": { - "type": "array", - "items": { - "type": "string" + }, + "translations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + } } - }, - "scope": { - "type": "string", - "description": "Scope defines if its related to system or user context." - }, - "source": { + } + }, + "orderDeliveries": { + "type": "array", + "items": { "type": "object", - "required": [ - "salesChannelId", - "type" - ], "properties": { - "type": { + "orderId": { + "type": "string" + }, + "shippingOrderAddressId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "shippingDateEarliest": { "type": "string", - "enum": [ - "sales-channel", - "shop-api" - ] + "format": "date-time" }, - "salesChannelId": { + "shippingDateLatest": { + "type": "string", + "format": "date-time" + }, + "stateId": { "type": "string" } - }, - "description": "When context is related to user in the source, then there is userId." - }, - "taxState": { - "type": "string", - "description": "Tax state can either be `gross` or `net`." - }, - "useCache": { - "type": "boolean", - "description": "When boolean value is `true`, caching is used." - } - } - }, - "itemRounding": { - "type": "object", - "required": [ - "decimals", - "interval", - "roundForNet", - "apiAlias" - ], - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" - ] - }, - "decimals": { - "type": "integer", - "format": "int32" - }, - "interval": { - "type": "number", - "format": "float" - }, - "roundForNet": { - "type": "boolean" - } - } - }, - "totalRounding": { - "type": "object", - "required": [ - "decimals", - "interval", - "roundForNet", - "apiAlias" - ], - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" - ] - }, - "decimals": { - "type": "integer", - "format": "int32" - }, - "interval": { - "type": "number", - "format": "float" - }, - "roundForNet": { - "type": "boolean" + } } - } - }, - "languageInfo": { - "type": "object", - "required": [ - "localeCode", - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "localeCode": { - "type": "string" - } - } - }, - "apiAlias": { - "type": "string", - "enum": [ - "sales_channel_context" - ] - } - }, - "required": [ - "salesChannel", - "apiAlias", - "itemRounding", - "totalRounding", - "languageInfo" - ] - }, - "CartError": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "key": { - "type": "string" - }, - "level": { - "type": "number", - "enum": [ - 0, - 10, - 20 - ], - "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" - }, - "message": { - "type": "string" - }, - "messageKey": { - "type": "string" - } - }, - "required": [ - "key", - "level", - "message", - "messageKey" - ] - }, - "ContextMeasurementSystemInfo": { - "type": "object", - "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", - "properties": { - "system": { - "type": "string", - "enum": [ - "metric", - "imperial" - ], - "default": "metric", - "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." - }, - "units": { - "type": "object", - "description": "Units used in the measurement system.", - "properties": { - "length": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm", - "description": "Unit of length." - }, - "weight": { - "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg", - "description": "Unit of weight." - } - } - } - } - }, - "CustomerAddressRead": { - "type": "object", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true - }, - "customerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true - }, - "createdAt": { - "type": "string", - "format": "date-time" - }, - "updatedAt": { - "oneOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "null" - } - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "oneOf": [ - { - "$ref": "#/components/schemas/CountryState" - }, - { - "type": "null" - } - ] - }, - "salutation": { - "$ref": "#/components/schemas/Salutation" - } - }, - "required": [ - "customerId", - "createdAt", - "updatedAt", - "country", - "salutation" - ] - }, - "ProductListingCriteria": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - }, - { - "type": "object", - "description": "Additional search parameters for product listings", - "properties": { - "order": { - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "type": "string" - }, - "limit": { - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "type": "integer", - "minimum": 0 - }, - "p": { - "description": "Search result page", - "type": "integer", - "default": 1 - }, - "manufacturer": { - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", - "type": "string" - }, - "min-price": { - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 - }, - "max-price": { - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 - }, - "rating": { - "description": "Filter products with a minimum average rating.", - "type": "integer" - }, - "shipping-free": { - "description": "Filters products that are marked as shipping-free.", - "type": "boolean", - "default": false - }, - "properties": { - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", - "type": "string" - }, - "manufacturer-filter": { - "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "price-filter": { - "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "rating-filter": { - "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "shipping-free-filter": { - "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "property-filter": { - "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "property-whitelist": { - "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", - "type": "string" - }, - "reduce-aggregations": { - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - } - } - ], - "properties": { - "filter": { - "properties": { - "type": { - "description": "To filter the results and aggregations with filter types like ==, >=, etc." - }, - "field": { - "description": "To filter the results and aggregations by field like an property identifier." - }, - "value": { - "description": "To filter the results and aggregations by value." - } - } - }, - "sort": { - "properties": { - "field": { - "description": "Sort the search results by field like an property identifier." - }, - "order": { - "description": "Sort the search results of orders by ascending or descending." - }, - "naturalSorting": { - "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." - } - } - }, - "post-filter": { - "properties": { - "type": { - "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." - }, - "field": { - "description": "To filter only the results but not the aggregations by field like an property identifier." - }, - "value": { - "description": "To filter only the results but not the aggregations by value." - } - } - } - } - }, - "WishlistLoadRouteResponse": { - "type": "object", - "required": [ - "products" - ], - "properties": { - "wishlist": { - "type": "object", - "properties": { - "customerId": { - "type": "string", - "description": "Unique identity of the customer." - }, - "salesChannelId": { - "type": "string", - "description": "Unique identity of the sales channel." - } - } - }, - "products": { - "$ref": "#/components/schemas/ProductListingResult" - } - } - }, - "Sitemap": { - "type": "object", - "properties": { - "filename": { - "type": "string", - "description": "Name of the file which holds a list of all URL's." - }, - "created": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "filename", - "created" - ] - }, - "CartPriceQuantity": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_quantity" - ] - }, - "isCalculated": { - "type": "boolean" - }, - "listPrice": { - "$ref": "#/components/schemas/CartListPrice" - }, - "price": { - "type": "number" - }, - "quantity": { - "type": "number" - }, - "regulationPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" + }, + "salesChannelDefaultAssignments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } } }, - "type": "object" - }, - "taxRules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } - }, - "type": { - "type": "string" - } - }, - "required": [ - "apiAlias" - ] - }, - "ProductDetailResponse": { - "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", - "properties": { - "product": { - "$ref": "#/components/schemas/Product" - }, - "configurator": { - "type": "array", - "description": "List of property groups with their corresponding options and information on how to display them.", - "items": { - "$ref": "#/components/schemas/PropertyGroup" - } - }, - "id": { - "description": "Unique identity of product detail response." - }, - "available": { - "description": "When boolean value is true, the product is available for purchase." - }, - "isCloseout": { - "description": "Boolean value to check if the product is still buyable when stock value is 0." - }, - "displayGroup": { - "description": "Internal field." - }, - "manufacturerNumber": { - "description": "Unique number of the product manufacturer." - }, - "stock": { - "description": "Quantity of product available." - }, - "sortedProperties": { - "description": "Properties of the product that are sorted" - } - }, - "required": [ - "product" - ] - }, - "NewsletterStatus": { - "type": "string", - "enum": [ - "notSet", - "optIn", - "optOut", - "direct", - "undefined" - ], - "description": "The subscription status. Possible values are: notSet, optIn, optOut, direct, undefined." - }, - "CartDelivery": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" - } - } - }, - "location": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "state": { - "$ref": "#/components/schemas/CountryState" + "salesChannels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } } - } - }, - "positions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDeliveryPosition" - } - }, - "shippingCosts": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "ReferencePrice": { - "type": "object", - "properties": { - "purchaseUnit": { - "type": "number" - }, - "referenceUnit": { - "type": "number" - }, - "unitName": { - "type": "string" - }, - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_reference" - ] - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/ListPrice" - }, - { - "type": "null" + }, + "availabilityRule": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "priority": { + "type": "integer", + "format": "int32" + }, + "invalid": { + "type": "boolean" + } } - ] - }, - "regulationPrice": { - "oneOf": [ - { + }, + "availabilityRuleId": { + "type": "string" + }, + "prices": { + "type": "array", + "items": { "type": "object", "properties": { + "shippingMethodId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "ruleId": { + "type": "string" + }, + "calculation": { + "type": "integer", + "format": "int32" + }, + "quantityStart": { + "type": "number", + "format": "float" + }, + "quantityEnd": { + "type": "number", + "format": "float" + }, "price": { - "type": "number" + "type": "number", + "format": "float" }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] + "calculationRuleId": { + "type": "string" } } - }, - { - "type": "null" } - ] - }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "^[0-9a-f]{32}$" - }, - { - "type": "null" + }, + "mediaId": { + "type": "string" + }, + "media": { + "type": "object", + "properties": { + "userId": { + "type": "string" + }, + "mimeType": { + "type": "string" + }, + "fileExtension": { + "type": "string" + }, + "fileSize": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string" + }, + "metaDataRaw": { + "type": "string" + }, + "mediaTypeRaw": { + "type": "string" + }, + "uploadedAt": { + "type": "string", + "format": "date-time" + }, + "alt": { + "type": "string" + }, + "url": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "mediaFolderId": { + "type": "string" + }, + "private": { + "type": "boolean" + }, + "thumbnailsRo": { + "type": "string" + } } - ] - } - }, - "required": [ - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" - ] - }, - "CartDeliveryInformation": { - "type": "object", + }, + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + } + } + } + }, "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_information" - ] + "name": { + "description": "Name of the shipping method." }, - "freeDelivery": { - "type": "boolean" + "active": { + "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." + }, + "description": { + "description": "The order of the tabs of your defined shipping methods in the storefront by entering numerical values like 1,2,3, etc." + }, + "deliveryTimeId": { + "description": "Unique identity of the delivery time." }, "deliveryTime": { - "type": "object", "properties": { "name": { - "type": "string" + "description": "Name given to delivery time." }, "min": { - "type": "integer" + "description": "Minimum delivery time taken." }, "max": { - "type": "integer" + "description": "Maximum delivery time taken." }, "unit": { - "type": "string" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_time" - ] + "description": "Unit in which the delivery time is defined. For example, days or hours." } } }, - "height": { - "type": "integer" - }, - "length": { - "type": "integer" - }, - "restockTime": { - "type": "integer" - }, - "stock": { - "type": "integer" - }, - "weight": { - "type": "integer" - }, - "width": { - "type": "integer" - } - }, - "required": [ - "apiAlias" - ] - }, - "Cart": { - "type": "object", - "properties": { - "name": { - "description": "Name of the cart - for example `guest-cart`", - "type": "string" - }, - "token": { - "description": "Context token identifying the cart and the user session", - "type": "string" - }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" + "translations": { + "properties": { + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "name": { + "description": "Name of the shipping method." + }, + "description": { + "description": "A short description of the shipping method." + } + } }, - "lineItems": { - "description": "All items within the cart", - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" + "orderDeliveries": { + "properties": { + "orderId": { + "description": "Unique identity of order." + }, + "shippingOrderAddressId": { + "description": "Unique identity of shipping order address." + }, + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "shippingDateEarliest": { + "description": "Date and time of earliest delivery of products." + }, + "shippingDateLatest": { + "description": "Date and time of latest delivery of products." + }, + "stateId": { + "description": "Unique identity of state." + } } }, - "errors": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "anyOf": [ - { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartError" - } + "salesChannelDefaultAssignments": { + "properties": { + "stateId": { + "description": "Unique identity of state." }, - { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "code": { - "type": "number" - }, - "key": { - "type": "string" - }, - "level": { - "type": "number" - }, - "message": { - "type": "string" - }, - "messageKey": { - "type": "string" - } - }, - "required": [ - "code", - "key", - "level", - "message", - "messageKey" - ] - } + "languageId": { + "description": "Unique identity of language." + }, + "currencyId": { + "description": "Unique identity of currency." + }, + "paymentMethodId": { + "description": "Unique identity of payment method." + }, + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "countryId": { + "description": "Unique identity of country." + }, + "navigationCategoryId": { + "description": "Unique identity of navigation category." + }, + "navigationCategoryDepth": { + "description": "It determines the number of levels of subcategories in the storefront category menu." + }, + "footerCategoryId": { + "description": "Unique identity of footer category." + }, + "serviceCategoryId": { + "description": "Unique identity of service category." + }, + "name": { + "description": "Name of the sales channel." + }, + "shortName": { + "description": "A short name for sales channel." + }, + "accessKey": { + "description": "Access key to store api." + }, + "active": { + "description": "When boolean value is `true`, the shipping methods are available for selection in the sales channel's storefront." + }, + "maintenance": { + "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." + }, + "maintenanceIpWhitelist": { + "description": "Array of IP address allowed to access the sales channel." + }, + "mailHeaderFooterId": { + "description": "Unique identity of mail header and footer." + }, + "customerGroupId": { + "description": "Unique identity of customer group." + }, + "hreflangActive": { + "description": "When boolean value is `true`, the sales channel pages are available in different languages." + }, + "hreflangDefaultDomainId": { + "description": "Unique identity of hreflangDefaultDomain." } - ], + } + }, + "salesChannels": { "properties": { - "key": { - "description": "Unique key for every message." + "stateId": { + "description": "Unique identity of state." + }, + "languageId": { + "description": "Unique identity of language." + }, + "currencyId": { + "description": "Unique identity of currency." + }, + "paymentMethodId": { + "description": "Unique identity of payment method." + }, + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "countryId": { + "description": "Unique identity of country." + }, + "navigationCategoryId": { + "description": "Unique identity of navigation category." + }, + "navigationCategoryDepth": { + "description": "It determines the number of levels of subcategories in the storefront category menu." + }, + "footerCategoryId": { + "description": "Unique identity of footer category." + }, + "serviceCategoryId": { + "description": "Unique identity of service category." + }, + "name": { + "description": "Name of the sales channel." + }, + "shortName": { + "description": "A short name for sales channel." + }, + "accessKey": { + "description": "Access key to store api." }, - "level": { - "description": "Types of level - Notice, warning and error. " + "active": { + "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." }, - "message": { - "description": "A persistent error passed from the shopping cart calculation processes to the user end." + "maintenance": { + "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." + }, + "maintenanceIpWhitelist": { + "description": "Array of IP address allowed to access the sales channel." + }, + "mailHeaderFooterId": { + "description": "Unique identity of mail header and footer." + }, + "customerGroupId": { + "description": "Unique identity of customer group." + }, + "hreflangActive": { + "description": "When boolean value is `true``, the sales channel pages are available in different languages." + }, + "hreflangDefaultDomainId": { + "description": "Unique identity of hreflangDefaultDomain." } } }, - "deliveries": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDelivery" - } - }, - "transactions": { - "description": "A list of all payment transactions associated with the current cart.", - "type": "array", - "items": { - "type": "object", - "properties": { - "paymentMethodId": { - "type": "string" - }, - "amount": { - "$ref": "#/components/schemas/CalculatedPrice" - } - } - }, + "availabilityRule": { "properties": { - "paymentMethodId": { - "description": "Unique identity of payment method." - } - } - }, - "modified": { - "type": "boolean", - "description": "It signifies any changes to cart." - }, - "customerComment": { - "description": "A comment that can be added to the cart.", - "oneOf": [ - { - "type": "string" + "name": { + "description": "Unique name for the rule." }, - { - "type": "null" - } - ] - }, - "affiliateCode": { - "description": "An affiliate tracking code", - "oneOf": [ - { - "type": "string" + "description": { + "description": "A short description about the rule." }, - { - "type": "null" - } - ] - }, - "campaignCode": { - "description": "A campaign tracking code", - "oneOf": [ - { - "type": "string" + "priority": { + "description": "A numerical value to prioritize one of the rules from the list." }, - { - "type": "null" + "invalid": { + "description": "When the boolean value is `true`, the rule is no more available for usage." } - ] - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart" - ] - }, - "id": { - "description": "Unique identity of cart." - } - }, - "required": [ - "price", - "apiAlias" - ] - }, - "AccountNewsletterRecipient": { - "type": "object", - "properties": { - "status": { - "$ref": "#/components/schemas/NewsletterStatus" - }, - "apiAlias": { - "type": "string", - "enum": [ - "account_newsletter_recipient" - ] - } - }, - "required": [ - "status", - "apiAlias" - ] - }, - "CrossSellingElementCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CrossSellingElement" - }, - "properties": { - "total": { - "description": "Number of cross selling elements found." - } - } - }, - "Criteria": { - "type": "object", - "description": "Criteria to query entities.", - "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "term": { - "description": "Search term", - "type": "string" + } }, - "limit": { - "description": "Number of items per result page", - "type": "integer" + "availabilityRuleId": { + "description": "Unique identity of availability rule." }, - "filter": { - "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - }, + "prices": { "properties": { - "type": { - "description": "To filter the results and aggregations with filter types like ==, >=, etc." + "shippingMethodId": { + "description": "Unique identity of shipping method." }, - "field": { - "description": "To filter the results and aggregations by field like an property identifier." + "currencyId": { + "description": "Unique identity of currency." }, - "value": { - "description": "To filter the results and aggregations by value." + "ruleId": { + "description": "Unique identity of rule." + }, + "calculation": { + "description": "Shipping price calculated based on quantity, price, weight or volume of items." + }, + "quantityStart": { + "description": "Starting range of quantity of an item." + }, + "quantityEnd": { + "description": "Ending range of quantity of an item." + }, + "price": { + "description": "Shipping method price after applied rules." + }, + "calculationRuleId": { + "description": "Unique identity of calculation rule." } } }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" - } - }, - "query": { - "type": "string", - "description": "The query string to search for" - }, - "associations": { - "$ref": "#/components/schemas/Associations" + "mediaId": { + "description": "Unique identity of media." }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - }, + "media": { "properties": { - "type": { - "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." + "userId": { + "description": "Unique identity of user." + }, + "mimeType": { + "description": "A string sent along with a file indicating the type of the file. For example: image/jpeg." + }, + "fileExtension": { + "description": "Type of file indication. For example: jpeg, png." + }, + "fileSize": { + "description": "Size of the file media file uploaded." + }, + "title": { + "description": "Title name give to the media." + }, + "metaDataRaw": { + "description": "Details of the media file uploaded." + }, + "alt": { + "description": "Alternate text for media." + }, + "url": { + "description": "Runtime field, cannot be used as part of the criteria." }, - "field": { - "description": "To filter only the results but not the aggregations by field like an property identifier." + "fileName": { + "description": "Name of the media file uploaded." }, - "value": { - "description": "To filter only the results but not the aggregations by value." + "mediaFolderId": { + "description": "Unique identity of media folder." + }, + "private": { + "description": "Boolean value is `true` to keep the media display private." } } }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" - }, + "tags": { "properties": { - "field": { - "description": "Sort the search results by field like an property identifier." - }, - "order": { - "description": "Sort the search results of orders by ascending or descending." - }, - "naturalSorting": { - "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." + "name": { + "description": "Name of the tag." } } + } + } + }, + "ProductDetailResponse": { + "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", + "properties": { + "product": { + "$ref": "#/components/schemas/Product" }, - "aggregations": { + "configurator": { "type": "array", + "description": "List of property groups with their corresponding options and information on how to display them.", "items": { - "$ref": "#/components/schemas/Aggregation" + "$ref": "#/components/schemas/PropertyGroup" } }, - "fields": { - "type": "array", - "description": "Fields which should be returned in the search result.", - "items": { - "type": "string", - "description": "Name of a field" - } + "id": { + "description": "Unique identity of product detail response." }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" + "available": { + "description": "When boolean value is true, the product is available for purchase." + }, + "isCloseout": { + "description": "Boolean value to check if the product is still buyable when stock value is 0." + }, + "displayGroup": { + "description": "Internal field." + }, + "manufacturerNumber": { + "description": "Unique number of the product manufacturer." + }, + "stock": { + "description": "Quantity of product available." + }, + "sortedProperties": { + "description": "Properties of the product that are sorted" + } + }, + "required": [ + "product" + ] + }, + "CartDeliveryPosition": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } } }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" + "identifier": { + "type": "string" }, - "includes": { - "$ref": "#/components/schemas/Includes" + "lineItem": { + "$ref": "#/components/schemas/LineItem" }, - "excludes": { - "$ref": "#/components/schemas/Excludes" + "price": { + "$ref": "#/components/schemas/CalculatedPrice" } } }, - "NoneFieldsCriteria": { + "LineItemType": { + "type": "string", + "deprecated": true, + "enum": [ + "product", + "credit", + "custom", + "promotion", + "discount", + "container", + "quantity" + ] + }, + "LineItem": { "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "page": { - "description": "Search result page", - "type": "integer" + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } }, - "term": { - "description": "Search term", + "cover": { + "$ref": "#/components/schemas/Media" + }, + "dataContextHash": { + "type": "string" + }, + "dataTimestamp": { "type": "string" }, - "limit": { - "description": "Number of items per result page", - "type": "integer" + "deliveryInformation": { + "$ref": "#/components/schemas/CartDeliveryInformation" + }, + "description": { + "type": "string", + "description": "Description of line items in an order." + }, + "good": { + "type": "boolean", + "description": "When set to true, it indicates the line item is physical else it is virtual." + }, + "id": { + "type": "string", + "description": "Unique identity of line item." + }, + "label": { + "type": "string", + "description": "It is a typical product name given to the line item." + }, + "modified": { + "type": "boolean", + "description": "When boolean value is `true`, line items are said to be modified." + }, + "modifiedByApp": { + "type": "boolean" + }, + "payload": { + "$ref": "#/components/schemas/ProductJsonApi" + }, + "price": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] + }, + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] + }, + "quantity": { + "type": "number" + }, + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] + }, + "totalPrice": { + "type": "number" + }, + "unitPrice": { + "type": "number" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } + } + }, + "required": [ + "apiAlias", + "totalPrice", + "quantity", + "unitPrice" + ] + }, + "priceDefinition": { + "$ref": "#/components/schemas/CartPriceQuantity" }, - "filter": { - "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } + "quantity": { + "type": "number", + "description": "Number of items of product." }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" + "quantityInformation": { + "type": "object", + "properties": { + "maxPurchase": { + "type": "number" + }, + "minPurchase": { + "type": "number" + }, + "purchaseSteps": { + "type": "number" + } } }, - "query": { + "referencedId": { "type": "string", - "description": "The query string to search for" - }, - "associations": { - "$ref": "#/components/schemas/Associations" - }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } + "description": "Unique identity of type of entity." }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" - } + "removable": { + "type": "boolean", + "description": "Allows the line item to be removable from the cart when set to true." }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } + "stackable": { + "type": "boolean", + "description": "Allows to change the quantity of the line item when set to true." }, - "grouping": { + "states": { + "deprecated": true, "type": "array", - "description": "Perform groupings over certain fields", "items": { "type": "string", - "description": "Name of a field" + "enum": [ + "is-physical", + "is-download" + ] } }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" - }, - "includes": { - "$ref": "#/components/schemas/Includes" + "type": { + "$ref": "#/components/schemas/OrderLineItem/properties/type", + "description": "Type refers to the entity type of an item whether it is product or promotion for instance." }, - "excludes": { - "$ref": "#/components/schemas/Excludes" - } - } - }, - "Associations": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Criteria" - } - }, - "Includes": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "Excludes": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { + "uniqueIdentifier": { "type": "string" } - } - }, - "Aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "title": "AggregationEntity", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationFilter", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationTerms", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationHistogram", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationRange", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationRange" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - } + }, + "required": [ + "id", + "type", + "deliveryInformation", + "payload", + "quantity", + "states" ] }, - "SubAggregations": { - "type": "object", + "CrossSellingElementCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrossSellingElement" + }, "properties": { - "aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/AggregationRange" - } - ] + "total": { + "description": "Number of cross selling elements found." } } }, - "TotalCountMode": { - "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", - "type": "string", - "default": "none", - "enum": [ - "none", - "exact", - "next-pages" + "Sitemap": { + "type": "object", + "properties": { + "filename": { + "type": "string", + "description": "Name of the file which holds a list of all URL's." + }, + "created": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "filename", + "created" ] }, - "Query": { + "CartItems": { "type": "object", + "required": [ + "items" + ], "properties": { - "score": { - "type": "number" - }, - "query": { - "oneOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + }, + "properties": { + "id": { + "description": "Unique identity of cart item." }, - { - "$ref": "#/components/schemas/RangeFilter" + "modified": { + "description": "When boolean value is `true`, the cart is said to be modified." } - ] + } } - }, - "additionalProperties": true + } }, - "Sort": { + "CookieEntry": { "type": "object", "properties": { - "field": { + "cookie": { "type": "string" }, - "order": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "value": { + "type": "string" }, - "naturalSorting": { - "type": "boolean" + "expiration": { + "type": "integer" }, - "type": { + "name": { "type": "string" + }, + "description": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cookie_entry" + ] } }, "required": [ - "field", - "order" + "cookie", + "hidden", + "apiAlias" ] }, - "Filters": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "SimpleFilter": { + "CookieRouteResponse": { "type": "object", + "description": "Response containing cookie groups and their configuration hash.", "properties": { - "type": { + "apiAlias": { "type": "string", "enum": [ - "contains", - "equalsAny", - "prefix", - "suffix" + "cookie_groups_hash" ] }, - "field": { - "type": "string" + "elements": { + "type": "array", + "description": "Collection of cookie groups", + "items": { + "$ref": "#/components/schemas/CookieGroup" + } }, - "value": { - "type": "string" + "hash": { + "type": "string", + "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", + "example": "f86b6a872cb83dbd22d838ceda1aa3d4" + }, + "languageId": { + "type": "string", + "format": "uuid", + "description": "The language ID for which the cookie configuration was generated. Used to store hashes per language.", + "example": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" } }, "required": [ - "type", - "field", - "value" - ] + "elements", + "hash", + "languageId", + "apiAlias" + ], + "example": { + "apiAlias": "cookie_groups_hash", + "elements": [ + { + "isRequired": true, + "description": "Cookies required for this shop to function:", + "name": "Technically required", + "entries": [ + { + "name": "Session", + "hidden": false, + "cookie": "session-", + "apiAlias": "cookie_entry" + }, + { + "name": "Timezone", + "hidden": false, + "cookie": "timezone", + "apiAlias": "cookie_entry" + }, + { + "value": "1", + "expiration": 30, + "name": "Cookie preferences", + "hidden": true, + "cookie": "cookie-preference", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "description": "Cookies used for statistics and shop performance metrics.", + "name": "Statistics", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "Google Analytics", + "hidden": false, + "cookie": "google-analytics-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "description": "Allows Google to collect personal data for online advertising and marketing.", + "name": "Marketing", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "Google Advertising", + "hidden": false, + "cookie": "google-ads-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "name": "Comfort features", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "YouTube video", + "hidden": false, + "cookie": "youtube-video", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + } + ], + "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", + "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" + } }, - "EqualsFilter": { + "CartDelivery": { "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "type": { - "type": "string", - "enum": [ - "equals" - ] - }, - "field": { - "type": "string" + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } }, - "value": { - "oneOf": [ - { - "type": "string" + "location": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] }, - { - "type": "number" + "country": { + "$ref": "#/components/schemas/Country" }, - { - "type": "boolean" + "address": { + "$ref": "#/components/schemas/CustomerAddress" }, - { - "type": "null" + "state": { + "$ref": "#/components/schemas/CountryState" } - ] - } - }, - "required": [ - "type", - "field", - "value" - ] - }, - "MultiNotFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "multi", - "not" - ] + } }, - "operator": { - "type": "string", - "enum": [ - "and", - "or", - "nor", - "nand" - ] + "positions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDeliveryPosition" + } }, - "queries": { - "$ref": "#/components/schemas/Filters" + "shippingCosts": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" } + } + }, + "CookieEntryCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CookieEntry" + } + }, + "NavigationRouteResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" }, - "required": [ - "type", - "operator", - "queries" + "properties": { + "id": { + "description": "Unique identity of navigation route response." + } + } + }, + "NavigationType": { + "type": "string", + "enum": [ + "main-navigation", + "footer-navigation", + "service-navigation" ] }, - "RangeFilter": { + "SalesChannelContext": { "type": "object", "properties": { - "type": { - "type": "string", - "enum": [ - "range" - ] - }, - "field": { + "token": { + "description": "Context the user session", "type": "string" }, - "parameters": { + "currentCustomerGroup": { "type": "object", + "description": "Customer group of the current user", "properties": { - "gte": { - "type": "number" - }, - "gt": { - "type": "number" - }, - "lte": { - "type": "number" + "name": { + "type": "string", + "description": "Name of customer group to which the customer belongs within the specific sales channel they are currently interacting with." }, - "lt": { - "type": "number" + "displayGross": { + "type": "boolean", + "description": "When `true`, product's gross price is displayed for that customer group who belongs to the specific sales channel they are currently interacting with." } } - } - }, - "required": [ - "type", - "field", - "parameters" - ] - }, - "FindProductVariantRouteResponse": { - "type": "object", - "properties": { - "foundCombination": { + }, + "fallbackCustomerGroup": { + "description": "Fallback group if the default customer group is not applicable", "type": "object", "properties": { - "variantId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of a variant." + "name": { + "type": "string" }, - "options": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Available product variant options. For example, for variant `Size`, option would be `XS`, `S`, `M`, `L`, `XL`." + "displayGross": { + "type": "boolean" } } - } - } - }, - "Price": { - "type": "object", - "description": "Price object", - "properties": { - "currencyId": { - "description": "Unique identity of the associated currency.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" }, - "gross": { - "description": "Gross price for the associated currency.", - "type": "number" - }, - "net": { - "description": "Net price for the associated currency.", - "type": "number" - }, - "linked": { - "description": "Whether gross and net prices are linked through the tax configuration.", - "type": "boolean" - }, - "percentage": { - "description": "Discount percentage relative to the list price for the gross and net amounts. `null` when no list price is set.", - "type": [ - "object", - "null" - ], + "currency": { + "$ref": "#/components/schemas/Currency", "properties": { - "gross": { - "description": "Discount percentage relative to the gross list price.", - "type": "number" + "isoCode": { + "description": "Standard international three digit code to represent currency in a given sales channel. For example, USD." }, - "net": { - "description": "Discount percentage relative to the net list price.", - "type": "number" + "factor": { + "description": "Currency exchange rate in a specific sales channel the customer is currently interacting with." + }, + "symbol": { + "description": "A currency symbol is a graphical representation used as shorthand for a currency's name, for example US Dollar - $ in a given sales channel." + }, + "shortName": { + "description": "Acronym for international currencies, for example, USD in a given sales channel." + }, + "name": { + "description": "Full name of the currency in a given sales channel. For example, US-Dollar." + }, + "position": { + "description": "The order of the tabs for multiple currencies defined in a given sales channel." + }, + "decimalPrecision": { + "description": "It defines the round off value for currency to the nearest decimal point in a given sales channel. If set to 2, it rounds off to two significant decimal points." + }, + "isSystemDefault": { + "description": "Runtime field, cannot be used as part of the criteria." } - }, - "required": [ - "gross", - "net" - ] + } }, - "listPrice": { - "description": "Reference list price for displaying discounts.", - "type": "object", + "salesChannel": { + "$ref": "#/components/schemas/SalesChannel", "properties": { + "typeId": { + "description": "Unique identity of a sales channel's type within a specific sales channel." + }, + "languageId": { + "description": "Unique identity of a sales channel's language within a specific sales channel." + }, "currencyId": { - "description": "Unique identity of the associated currency.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "description": "Unique identity of a sales channel's currency within a specific sales channel." + }, + "paymentMethodId": { + "description": "Unique identity of a sales channel's payment method within a specific sales channel." + }, + "shippingMethodId": { + "description": "Unique identity of a sales channel's shipping method within a specific sales channel." + }, + "countryId": { + "description": "Unique identity of a sales channel's country within a specific sales channel." + }, + "navigationCategoryId": { + "description": "Unique identity of a sales channel's navigation category within a specific sales channel." + }, + "navigationCategoryDepth": { + "description": "It determines the number of levels of subcategories in the storefront category menu within a specific sales channel." + }, + "footerCategoryId": { + "description": "Unique identity of a sales channel's footer category within a specific sales channel." + }, + "serviceCategoryId": { + "description": "Unique identity of a sales channel's service category within a specific sales channel." + }, + "name": { + "description": "Name of the sales channel." + }, + "shortName": { + "description": "A short name for sales channel." + }, + "accessKey": { + "description": "Access key to store api." + }, + "active": { + "description": "When `true`, the sales channel is enabled." + }, + "maintenance": { + "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." + }, + "maintenanceIpWhitelist": { + "description": "Array of IP address allowed to access the sales channel." }, - "gross": { - "description": "Gross list price for the associated currency.", - "type": "number" + "mailHeaderFooterId": { + "description": "Unique identity of a sales channel's mail header and footer within a specific sales channel." }, - "net": { - "description": "Net list price for the associated currency.", - "type": "number" + "customerGroupId": { + "description": "Unique identity of a sales channel's customer group within a specific sales channel." }, - "linked": { - "description": "Whether gross and net list prices are linked through the tax configuration.", - "type": "boolean" + "hreflangActive": { + "description": "When `true`, the sales channel pages are available in different languages within a specific sales channel." + }, + "hreflangDefaultDomainId": { + "description": "Unique identity of a sales channel's hreflangDefaultDomain within a specific sales channel." + }, + "analyticsId": { + "description": "Unique identity of a sales channel's analytics within a specific sales channel." } - }, - "required": [ - "gross", - "net" - ] + } }, - "regulationPrice": { - "description": "Reference price used for legal price disclosures.", - "type": "object", + "measurementSystem": { + "$ref": "#/components/schemas/ContextMeasurementSystemInfo" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + }, "properties": { - "currencyId": { - "description": "Unique identity of the associated currency.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "Gross regulation price for the associated currency.", - "type": "number" - }, - "net": { - "description": "Net regulation price for the associated currency.", - "type": "number" + "taxRate": { + "description": "Rate of tax within a specific sales channel." }, - "linked": { - "description": "Whether gross and net regulation prices are linked through the tax configuration.", - "type": "boolean" + "name": { + "description": "Name defined for a Tax within a specific sales channel." } - }, - "required": [ - "gross", - "net" - ] - } - }, - "required": [ - "currencyId", - "gross", - "net" - ] - }, - "NavigationType": { - "type": "string", - "enum": [ - "main-navigation", - "footer-navigation", - "service-navigation" - ] - }, - "OrderRouteResponse": { - "type": "object", - "properties": { - "orders": { - "type": "object", - "allOf": [ + } + }, + "customer": { + "oneOf": [ { - "type": "object", - "required": [ - "elements" - ], - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order" - } - } - } + "type": "null" }, { - "$ref": "#/components/schemas/EntitySearchResult" + "$ref": "#/components/schemas/Customer" } - ] - }, - "paymentChangeable": { - "type": "object", - "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", - "additionalProperties": { - "type": "boolean" - } - } - }, - "required": [ - "orders" - ] - }, - "ProductListingResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EntitySearchResult" - }, - { - "type": "object", + ], "properties": { - "currentFilters": { - "type": "object", - "description": "Contains the state of the filters. These can be used to create listing filters.", - "properties": { - "navigationId": { - "type": "string" - }, - "manufacturer": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "price": { - "type": "object", - "properties": { - "min": { - "type": "integer", - "default": 0 - }, - "max": { - "type": "integer", - "default": 0 - } - }, - "required": [ - "min", - "max" - ] - }, - "rating": { - "oneOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "shipping-free": { - "type": "boolean", - "default": false - }, - "properties": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "search": { - "type": "string" - } - }, - "required": [ - "manufacturer", - "navigationId", - "price", - "properties", - "rating", - "shipping-free" - ] + "groupId": { + "description": "Unique identity of a customer's group within a specific sales channel." + }, + "defaultPaymentMethodId": { + "description": "Unique identity of a customer's default payment method within a specific sales channel." + }, + "salesChannelId": { + "description": "Unique identity of sales channel the customer is currently interacting with." + }, + "languageId": { + "description": "Unique identity of language within a specific sales channel the customer is interacting." + }, + "lastPaymentMethodId": { + "description": "Unique identity of customer's last payment method within a specific sales channel." + }, + "defaultBillingAddressId": { + "description": "Unique identity of customer's default billing address within a specific sales channel." + }, + "defaultShippingAddressId": { + "description": "Unique identity of customer's default shipping address within a specific sales channel." + }, + "customerNumber": { + "description": "Name of the customer within a specific sales channel the customer is interacting." + }, + "salutationId": { + "description": "Unique identity of customer's default shipping address within a specific sales channel." + }, + "firstName": { + "description": "First name of the customer within a specific sales channel." + }, + "lastName": { + "description": "Last name of the customer within a specific sales channel." + }, + "company": { + "description": "Company name of the customer within a specific sales channel." + }, + "password": { + "description": "Password of the customer within a specific sales channel." + }, + "email": { + "description": "Email of the customer within a specific sales channel." + }, + "title": { + "description": "Customer's title or honorifics like Mr, Mrs, etc within a specific sales channel." + }, + "affiliateCode": { + "description": "An affiliate code is an identification option with which website operators can mark outgoing links within a specific sales channel." + }, + "campaignCode": { + "description": "A unique identifier for a campaign within a specific sales channel." + }, + "active": { + "description": "When `true`, the status of the customer is set active within a specific sales channel." + }, + "doubleOptInRegistration": { + "description": "When `true`, user subscriptions to an email marketing list is allowed within a specific sales channel." + }, + "doubleOptInEmailSentDate": { + "description": "Date and time when the double opt-in email was sent within a specific sales channel." + }, + "doubleOptInConfirmDate": { + "description": "Date and time when the double opt-in email was confirmed within a specific sales channel." + }, + "hash": { + "description": "Password hash for account recovery within a specific sales channel." }, - "availableSortings": { - "type": "array", - "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", - "items": { - "type": "object", - "properties": { - "label": { - "type": "string" - }, - "translated": { - "type": "object", - "properties": { - "label": { - "type": "string" - } - }, - "required": [ - "label" - ] - }, - "key": { - "type": "string" - }, - "priority": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_sorting" - ] - } - }, - "required": [ - "label", - "translated", - "key", - "priority", - "apiAlias" - ] - } + "guest": { + "description": "Boolean value is `true` for a guest account within a specific sales channel." }, - "sorting": { - "type": "string" + "firstLogin": { + "description": "Captures date and time of customer's first login within a specific sales channel." }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } + "lastLogin": { + "description": "Captures date and time of customer's last login within a specific sales channel." }, - "entity": { - "type": "string", - "enum": [ - "product" - ] + "newsletter": { + "description": "When `true`, then the customer gets subscribe to the newsletter" }, - "apiAlias": { - "type": "string", - "enum": [ - "product_listing" - ] + "birthday": { + "description": "Captures customer's birthday details within a specific sales channel." + }, + "lastOrderDate": { + "description": "Captures customer's last order date within a specific sales channel." + }, + "orderCount": { + "description": "Captures the number of orders placed by a customer within a specific sales channel." + }, + "legacyEncoder": { + "description": "encapsulates shop credentials when needed to migrate shop system from old instance to new instance" + }, + "legacyPassword": { + "description": "Hashed password of the old shop system" + }, + "autoIncrement": { + "description": "Internal field. " + }, + "remoteAddress": { + "description": "Anonymous IP address of the customer for last session." } - }, - "required": [ - "elements", - "availableSortings", - "currentFilters", - "apiAlias" - ] - } - ] - }, - "ProductMeasurements": { - "type": "object", - "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", - "properties": { - "width": { - "type": "object", + } + }, + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod", "properties": { - "unit": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" + "pluginId": { + "description": "Unique identity of payment plugin within a specific sales channel." }, - "value": { - "type": "number" + "handlerIdentifier": { + "description": "Internal field that contains system identifier details for payment methods like Paypal." + }, + "name": { + "description": "Name of the payment method within a specific sales channel." + }, + "description": { + "description": "A short description about the payment method within a specific sales channel." + }, + "position": { + "description": "The order of the tabs of your defined payment methods in the storefront by entering numerical values like 1,2,3, etc within a specific sales channel." + }, + "active": { + "description": "When `true`, the payment method is available for usage within a specific sales channel." + }, + "availabilityRuleId": { + "description": "Unique identity of the rule for the payment method." + }, + "mediaId": { + "description": "Unique identity of media used in payment method within a specific sales channel." + }, + "formattedHandlerIdentifier": { + "description": "Internal field that contains system identifier details for payment methods like Paypal." } } }, - "height": { + "shippingLocation": { "type": "object", "properties": { - "unit": { + "apiAlias": { "type": "string", "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" + "cart_delivery_shipping_location" + ] }, - "value": { - "type": "number" + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" } } }, - "length": { + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod", + "properties": { + "name": { + "description": "Name of the shipping method within a specific sales channel." + }, + "active": { + "description": "When `true`, the shipping method is available for usage within a specific sales channel." + }, + "description": { + "description": "A short description about the shipping method within a specific sales channel." + }, + "trackingUrl": { + "description": "URL that allows to track packages for a specific sales channel." + }, + "deliveryTimeId": { + "description": "Unique identity of deliveryTime within a specific sales channel." + }, + "availabilityRuleId": { + "description": "Unique identity of the rule for the payment method." + }, + "mediaId": { + "description": "Unique identity of media used in shipping method within a specific sales channel." + } + } + }, + "context": { + "description": "Core context with general configuration values and state", "type": "object", "properties": { - "unit": { + "versionId": { "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" + "description": "Unique identity of context's version in a specific sales channel." + }, + "currencyId": { + "type": "string", + "description": "Unique identity of currency context in a specific sales channel." + }, + "currencyFactor": { + "type": "integer", + "description": "Unique identity of currency factor context in a specific sales channel." + }, + "currencyPrecision": { + "type": "integer", + "format": "int32", + "description": "It defines the round off value of currency to the nearest decimal point. If set to 2, it rounds off to two significant decimal points." + }, + "languageIdChain": { + "type": "array", + "items": { + "type": "string" + } + }, + "scope": { + "type": "string", + "description": "Scope defines if its related to system or user context." + }, + "source": { + "type": "object", + "required": [ + "salesChannelId", + "type" ], - "default": "mm" + "properties": { + "type": { + "type": "string", + "enum": [ + "sales-channel", + "shop-api" + ] + }, + "salesChannelId": { + "type": "string" + } + }, + "description": "When context is related to user in the source, then there is userId." }, - "value": { - "type": "number" + "taxState": { + "type": "string", + "description": "Tax state can either be `gross` or `net`." + }, + "useCache": { + "type": "boolean", + "description": "When boolean value is `true`, caching is used." } } }, - "weight": { + "itemRounding": { "type": "object", + "required": [ + "decimals", + "interval", + "roundForNet", + "apiAlias" + ], "properties": { - "unit": { + "apiAlias": { "type": "string", "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg" + "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" + ] }, - "value": { - "type": "number" + "decimals": { + "type": "integer", + "format": "int32" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" } } - } - } - }, - "CookieEntryCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CookieEntry" - } - }, - "CrossSellingElement": { - "type": "object", - "properties": { - "crossSelling": { - "$ref": "#/components/schemas/ProductCrossSelling" - }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - }, - "total": { - "type": "integer", - "format": "int32" - }, - "streamId": { - "type": "string", - "format": "uuid" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cross_selling_element" - ] - } - }, - "required": [ - "crossSelling", - "products", - "total", - "apiAlias" - ] - }, - "CookieEntry": { - "type": "object", - "properties": { - "cookie": { - "type": "string" - }, - "value": { - "type": "string" - }, - "expiration": { - "type": "integer" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "hidden": { - "type": "boolean" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cookie_entry" - ] - } - }, - "required": [ - "cookie", - "hidden", - "apiAlias" - ] - }, - "MeasurementUnits": { - "type": "object", - "description": "Configuration of the measurement system", - "properties": { - "system": { - "type": "string", - "enum": [ - "metric", - "imperial" - ], - "default": "metric", - "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." }, - "units": { + "totalRounding": { "type": "object", - "description": "Units used in the measurement system.", + "required": [ + "decimals", + "interval", + "roundForNet", + "apiAlias" + ], "properties": { - "length": { + "apiAlias": { "type": "string", "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm", - "description": "Unit of length." + "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" + ] }, - "weight": { - "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg", - "description": "Unit of weight." + "decimals": { + "type": "integer", + "format": "int32" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" } } - } - } - }, - "CartListPrice": { - "type": "object", - "description": "", - "properties": { - "discount": { - "type": "number" - }, - "percentage": { - "type": "number" - }, - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_list_price" - ] - } - }, - "required": [ - "apiAlias" - ] - }, - "CookieGroup": { - "type": "object", - "properties": { - "isRequired": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "cookie": { - "type": "string" - }, - "value": { - "type": "string" - }, - "expiration": { - "type": "integer" - }, - "entries": { - "$ref": "#/components/schemas/CookieEntryCollection" }, - "apiAlias": { - "type": "string", - "enum": [ - "cookie_group" - ] - } - }, - "not": { - "allOf": [ - { - "required": [ - "cookie" - ] - }, - { - "required": [ - "entries" - ] - } - ] - }, - "required": [ - "name", - "isRequired", - "apiAlias" - ] - }, - "SuccessResponse": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - } - } - }, - "CartItems": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - }, + "languageInfo": { + "type": "object", + "required": [ + "localeCode", + "name" + ], "properties": { - "id": { - "description": "Unique identity of cart item." + "name": { + "type": "string" }, - "modified": { - "description": "When boolean value is `true`, the cart is said to be modified." + "localeCode": { + "type": "string" } } + }, + "apiAlias": { + "type": "string", + "enum": [ + "sales_channel_context" + ] } - } + }, + "required": [ + "salesChannel", + "apiAlias", + "itemRounding", + "totalRounding", + "languageInfo" + ] }, "AggregationMetrics": { "type": "object", @@ -14546,1802 +13884,2120 @@ "field" ] }, - "CartDeliveryPosition": { + "CookieGroupCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CookieGroup" + } + }, + "ProductListingFlags": { "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "description": "Additional flags for product listings", "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" + "no-aggregations": { + "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", + "oneOf": [ + { + "type": "string" }, - "latest": { - "type": "string", - "format": "date-time" + { + "type": "null" } - } - }, - "identifier": { - "type": "string" - }, - "lineItem": { - "$ref": "#/components/schemas/LineItem" + ] }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" + "only-aggregations": { + "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] } } }, - "CustomerAddressBody": { - "description": "Added since version: 6.0.0.0", - "required": [ - "countryId", - "firstName", - "lastName", - "city", - "street" - ], + "Breadcrumb": { + "type": "object", "properties": { - "countryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "name": { + "type": "string" }, - "countryStateId": { + "categoryId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "salutationId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": { + "$ref": "#/components/schemas/Category/properties/type" }, - "firstName": { - "type": "string" + "translated": { + "type": "object", + "additionalProperties": true, + "properties": { + "customFields": { + "type": "object" + }, + "slotConfig": { + "type": "object" + }, + "linkType": { + "$ref": "#/components/schemas/Category/properties/linkType" + }, + "internalLink": { + "type": "string" + }, + "externalLink": { + "type": "string" + }, + "linkNewTab": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "metaTitle": { + "type": "string" + }, + "metaDescription": { + "type": "string" + }, + "keywords": { + "type": "string" + } + } }, - "lastName": { + "path": { "type": "string" }, - "zipcode": { - "type": "string" + "seoUrls": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" + } }, - "city": { + "apiAlias": { + "type": "string", + "enum": [ + "breadcrumb" + ] + } + }, + "required": [ + "name", + "categoryId", + "type", + "translated", + "path", + "apiAlias" + ] + }, + "CartError": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "key": { "type": "string" }, - "company": { - "type": "string" + "level": { + "type": "number", + "enum": [ + 0, + 10, + 20 + ], + "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" }, - "street": { + "message": { "type": "string" }, - "department": { + "messageKey": { "type": "string" + } + }, + "required": [ + "key", + "level", + "message", + "messageKey" + ] + }, + "CartPriceReference": { + "type": "object", + "properties": { + "purchaseUnit": { + "type": "number" }, - "title": { - "type": "string" + "referenceUnit": { + "type": "number" }, - "phoneNumber": { + "unitName": { "type": "string" }, - "additionalAddressLine1": { - "type": "string" + "price": { + "type": "number" }, - "additionalAddressLine2": { - "type": "string" + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_reference" + ] }, - "customFields": { - "type": "object" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] }, - "country": { - "$ref": "#/components/schemas/Country" + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] }, - "countryState": { - "$ref": "#/components/schemas/CountryState" + "hasRange": { + "type": "boolean" }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] } }, - "type": "object" + "required": [ + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" + ] }, - "ProductPurchaseLimit": { + "AccountNewsletterRecipient": { "type": "object", - "description": "Current quantity purchase limits for a product.", + "properties": { + "status": { + "type": "string", + "enum": [ + "undefined", + "notSet", + "direct", + "optIn", + "optOut" + ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "account_newsletter_recipient" + ] + } + }, "required": [ - "productId", - "minPurchase", - "purchaseSteps", - "maxPurchase", - "stock", + "status", "apiAlias" - ], + ] + }, + "SuccessResponse": { + "type": "object", "properties": { - "productId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The product ID." + "success": { + "type": "boolean" + } + } + }, + "EntitySearchResult": { + "type": "object", + "properties": { + "entity": { + "type": "string" }, - "minPurchase": { + "total": { "type": "integer", - "description": "Minimum quantity a customer can purchase." + "description": "The total number of found entities" }, - "purchaseSteps": { - "type": "integer", - "description": "Step increment for quantity selection." + "aggregations": { + "type": "array", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", + "items": { + "type": "object" + } }, - "maxPurchase": { + "page": { "type": "integer", - "description": "Maximum quantity a customer can purchase, reflecting current stock for closeout products." - }, - "stock": { - "type": [ - "integer", - "null" - ], - "description": "Current stock level of the product." + "description": "The actual page. This can be used for pagination." }, - "apiAlias": { - "type": "string", - "enum": [ - "product_purchase_limit" - ] + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." } } }, - "CookieRouteResponse": { + "CalculatedPrice": { "type": "object", - "description": "Response containing cookie groups and their configuration hash.", + "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "apiAlias": { + "unitPrice": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "rawTotal": { + "type": "number" + }, + "totalPrice": { + "type": "number" + }, + "taxStatus": { "type": "string", "enum": [ - "cookie_groups_hash" + "net", + "tax-free" ] }, - "elements": { + "calculatedTaxes": { "type": "array", - "description": "Collection of cookie groups", "items": { - "$ref": "#/components/schemas/CookieGroup" - } - }, - "hash": { - "type": "string", - "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", - "example": "f86b6a872cb83dbd22d838ceda1aa3d4" - }, - "languageId": { - "type": "string", - "format": "uuid", - "description": "The language ID for which the cookie configuration was generated. Used to store hashes per language.", - "example": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" - } - }, - "required": [ - "elements", - "hash", - "languageId", - "apiAlias" - ], - "example": { - "apiAlias": "cookie_groups_hash", - "elements": [ - { - "isRequired": true, - "description": "Cookies required for this shop to function:", - "name": "Technically required", - "entries": [ - { - "name": "Session", - "hidden": false, - "cookie": "session-", - "apiAlias": "cookie_entry" + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] }, - { - "name": "Timezone", - "hidden": false, - "cookie": "timezone", - "apiAlias": "cookie_entry" + "tax": { + "type": "number" }, - { - "value": "1", - "expiration": 30, - "name": "Cookie preferences", - "hidden": true, - "cookie": "cookie-preference", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "description": "Cookies used for statistics and shop performance metrics.", - "name": "Statistics", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "Google Analytics", - "hidden": false, - "cookie": "google-analytics-enabled", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "description": "Allows Google to collect personal data for online advertising and marketing.", - "name": "Marketing", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "Google Advertising", - "hidden": false, - "cookie": "google-ads-enabled", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "name": "Comfort features", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "YouTube video", - "hidden": false, - "cookie": "youtube-video", - "apiAlias": "cookie_entry" + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" } - ], - "apiAlias": "cookie_group" + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] } - ], - "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", - "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" - } - }, - "CartItemsUpdate": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { + }, + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] + }, + "positionPrice": { + "type": "number" + }, + "netPrice": { + "type": "number" + }, + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] + }, + "taxRules": { "type": "array", + "description": "Currently active tax rules and/or rates", "items": { - "$ref": "#/components/schemas/CartLineItemUpdate" + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } } } - } + }, + "required": [ + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "referencePrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitPrice", + "positionPrice", + "netPrice", + "taxRules", + "rawTotal", + "taxStatus" + ] }, - "CartLineItemUpdate": { - "type": "object", + "CustomerAddressBody": { + "description": "Added since version: 6.0.0.0", "required": [ - "id" + "countryId", + "firstName", + "lastName", + "city", + "street" ], "properties": { - "id": { + "countryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryStateId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "salutationId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "firstName": { "type": "string" }, - "type": { - "$ref": "#/components/schemas/OrderLineItem/properties/type" + "lastName": { + "type": "string" }, - "quantity": { - "type": "integer" + "zipcode": { + "type": "string" }, - "referencedId": { + "city": { "type": "string" }, - "label": { + "company": { "type": "string" }, - "payload": { + "street": { + "type": "string" + }, + "department": { + "type": "string" + }, + "title": { + "type": "string" + }, + "phoneNumber": { + "type": "string" + }, + "additionalAddressLine1": { + "type": "string" + }, + "additionalAddressLine2": { + "type": "string" + }, + "customFields": { "type": "object" }, - "stackable": { - "type": "boolean" + "country": { + "$ref": "#/components/schemas/Country" }, - "removable": { - "type": "boolean" + "countryState": { + "$ref": "#/components/schemas/CountryState" }, - "coverId": { + "salutation": { + "$ref": "#/components/schemas/Salutation" + } + }, + "type": "object" + }, + "ReferencePrice": { + "type": "object", + "properties": { + "purchaseUnit": { + "type": "number" + }, + "referenceUnit": { + "type": "number" + }, + "unitName": { "type": "string" }, - "priceDefinition": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "price": { - "type": "number" - }, - "percentage": { - "type": "number" - }, - "quantity": { - "type": "integer" - }, - "isCalculated": { - "type": "boolean" - }, - "listPrice": { - "type": "number" + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_reference" + ] + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/ListPrice" }, - "taxRules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number" - }, - "percentage": { - "type": "number" - } + { + "type": "null" + } + ] + }, + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] } } + }, + { + "type": "null" } - } + ] + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] } - } - }, - "NavigationRouteResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" }, - "properties": { - "id": { - "description": "Unique identity of navigation route response." - } - } - }, - "CookieGroupCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CookieGroup" - } + "required": [ + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" + ] }, - "ProductListingFlags": { + "CustomerAddressRead": { "type": "object", - "description": "Additional flags for product listings", "properties": { - "no-aggregations": { - "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true + }, + "customerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "updatedAt": { "oneOf": [ { - "type": "string" + "type": "string", + "format": "date-time" }, { "type": "null" } ] }, - "only-aggregations": { - "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { "oneOf": [ { - "type": "string" + "$ref": "#/components/schemas/CountryState" }, { "type": "null" } ] + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" } - } - }, - "ShippingMethodPageRouteResponse": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "deliveryTimeId": { - "type": "string" - }, - "deliveryTime": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer", - "format": "int32" - }, - "max": { - "type": "integer", - "format": "int32" - }, - "unit": { - "type": "string" - } - } - }, - "translations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - } - } - } - }, - "orderDeliveries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "orderId": { - "type": "string" - }, - "shippingOrderAddressId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "shippingDateEarliest": { - "type": "string", - "format": "date-time" - }, - "shippingDateLatest": { - "type": "string", - "format": "date-time" - }, - "stateId": { - "type": "string" - } - } - } - }, - "salesChannelDefaultAssignments": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" - }, - "hreflangDefaultDomainId": { - "type": "string" - } - } - } - }, - "salesChannels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" - }, - "hreflangDefaultDomainId": { - "type": "string" - } - } - } - }, - "availabilityRule": { - "type": "object", - "properties": { - "name": { - "type": "string" + }, + "required": [ + "customerId", + "createdAt", + "updatedAt", + "country", + "salutation" + ] + }, + "Criteria": { + "type": "object", + "description": "Criteria to query entities.", + "properties": { + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", + "type": "string" + }, + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "description": { - "type": "string" + { + "$ref": "#/components/schemas/EqualsFilter" }, - "priority": { - "type": "integer", - "format": "int32" + { + "$ref": "#/components/schemas/MultiNotFilter" }, - "invalid": { - "type": "boolean" + { + "$ref": "#/components/schemas/RangeFilter" } - } - }, - "availabilityRuleId": { - "type": "string" + ] }, - "prices": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "ruleId": { - "type": "string" - }, - "calculation": { - "type": "integer", - "format": "int32" - }, - "quantityStart": { - "type": "number", - "format": "float" - }, - "quantityEnd": { - "type": "number", - "format": "float" - }, - "price": { - "type": "number", - "format": "float" - }, - "calculationRuleId": { - "type": "string" - } - } + "properties": { + "type": { + "description": "To filter the results and aggregations with filter types like ==, >=, etc." + }, + "field": { + "description": "To filter the results and aggregations by field like an property identifier." + }, + "value": { + "description": "To filter the results and aggregations by value." } - }, - "mediaId": { + } + }, + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { "type": "string" - }, - "media": { - "type": "object", - "properties": { - "userId": { - "type": "string" - }, - "mimeType": { - "type": "string" - }, - "fileExtension": { - "type": "string" - }, - "fileSize": { - "type": "integer", - "format": "int32" - }, - "title": { - "type": "string" - }, - "metaDataRaw": { - "type": "string" - }, - "mediaTypeRaw": { - "type": "string" - }, - "uploadedAt": { - "type": "string", - "format": "date-time" - }, - "alt": { - "type": "string" - }, - "url": { - "type": "string" - }, - "fileName": { - "type": "string" + } + }, + "query": { + "type": "string", + "description": "The query string to search for" + }, + "associations": { + "$ref": "#/components/schemas/Associations" + }, + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "mediaFolderId": { - "type": "string" + { + "$ref": "#/components/schemas/EqualsFilter" }, - "private": { - "type": "boolean" + { + "$ref": "#/components/schemas/MultiNotFilter" }, - "thumbnailsRo": { - "type": "string" + { + "$ref": "#/components/schemas/RangeFilter" } + ] + }, + "properties": { + "type": { + "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." + }, + "field": { + "description": "To filter only the results but not the aggregations by field like an property identifier." + }, + "value": { + "description": "To filter only the results but not the aggregations by value." } + } + }, + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" }, - "tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - } + "properties": { + "field": { + "description": "Sort the search results by field like an property identifier." + }, + "order": { + "description": "Sort the search results of orders by ascending or descending." + }, + "naturalSorting": { + "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." + } + } + }, + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } + }, + "fields": { + "type": "array", + "description": "Fields which should be returned in the search result.", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" + }, + "excludes": { + "$ref": "#/components/schemas/Excludes" + } + } + }, + "NoneFieldsCriteria": { + "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", + "properties": { + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", + "type": "string" + }, + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } - } + ] } - } - }, - "properties": { - "name": { - "description": "Name of the shipping method." }, - "active": { - "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } }, - "description": { - "description": "The order of the tabs of your defined shipping methods in the storefront by entering numerical values like 1,2,3, etc." + "query": { + "type": "string", + "description": "The query string to search for" }, - "deliveryTimeId": { - "description": "Unique identity of the delivery time." + "associations": { + "$ref": "#/components/schemas/Associations" }, - "deliveryTime": { - "properties": { - "name": { - "description": "Name given to delivery time." - }, - "min": { - "description": "Minimum delivery time taken." - }, - "max": { - "description": "Maximum delivery time taken." - }, - "unit": { - "description": "Unit in which the delivery time is defined. For example, days or hours." - } + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] } }, - "translations": { - "properties": { - "shippingMethodId": { - "description": "Unique identity of shipping method." - }, - "name": { - "description": "Name of the shipping method." - }, - "description": { - "description": "A short description of the shipping method." - } + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" } }, - "orderDeliveries": { - "properties": { - "orderId": { - "description": "Unique identity of order." - }, - "shippingOrderAddressId": { - "description": "Unique identity of shipping order address." - }, - "shippingMethodId": { - "description": "Unique identity of shipping method." - }, - "shippingDateEarliest": { - "description": "Date and time of earliest delivery of products." - }, - "shippingDateLatest": { - "description": "Date and time of latest delivery of products." - }, - "stateId": { - "description": "Unique identity of state." - } + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" } }, - "salesChannelDefaultAssignments": { - "properties": { - "stateId": { - "description": "Unique identity of state." - }, - "languageId": { - "description": "Unique identity of language." - }, - "currencyId": { - "description": "Unique identity of currency." - }, - "paymentMethodId": { - "description": "Unique identity of payment method." - }, - "shippingMethodId": { - "description": "Unique identity of shipping method." - }, - "countryId": { - "description": "Unique identity of country." - }, - "navigationCategoryId": { - "description": "Unique identity of navigation category." - }, - "navigationCategoryDepth": { - "description": "It determines the number of levels of subcategories in the storefront category menu." - }, - "footerCategoryId": { - "description": "Unique identity of footer category." - }, - "serviceCategoryId": { - "description": "Unique identity of service category." - }, - "name": { - "description": "Name of the sales channel." - }, - "shortName": { - "description": "A short name for sales channel." - }, - "accessKey": { - "description": "Access key to store api." - }, - "active": { - "description": "When boolean value is `true`, the shipping methods are available for selection in the sales channel's storefront." - }, - "maintenance": { - "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." - }, - "maintenanceIpWhitelist": { - "description": "Array of IP address allowed to access the sales channel." - }, - "mailHeaderFooterId": { - "description": "Unique identity of mail header and footer." - }, - "customerGroupId": { - "description": "Unique identity of customer group." - }, - "hreflangActive": { - "description": "When boolean value is `true`, the sales channel pages are available in different languages." - }, - "hreflangDefaultDomainId": { - "description": "Unique identity of hreflangDefaultDomain." - } + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" } }, - "salesChannels": { - "properties": { - "stateId": { - "description": "Unique identity of state." - }, - "languageId": { - "description": "Unique identity of language." - }, - "currencyId": { - "description": "Unique identity of currency." - }, - "paymentMethodId": { - "description": "Unique identity of payment method." - }, - "shippingMethodId": { - "description": "Unique identity of shipping method." - }, - "countryId": { - "description": "Unique identity of country." - }, - "navigationCategoryId": { - "description": "Unique identity of navigation category." - }, - "navigationCategoryDepth": { - "description": "It determines the number of levels of subcategories in the storefront category menu." + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" + }, + "excludes": { + "$ref": "#/components/schemas/Excludes" + } + } + }, + "Associations": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Criteria" + } + }, + "Includes": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "Excludes": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "Aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" + }, + { + "title": "AggregationEntity", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationEntity" }, - "footerCategoryId": { - "description": "Unique identity of footer category." + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationFilter", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationFilter" }, - "serviceCategoryId": { - "description": "Unique identity of service category." + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationTerms", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationTerms" }, - "name": { - "description": "Name of the sales channel." + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" }, - "shortName": { - "description": "A short name for sales channel." + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationRange", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationRange" }, - "accessKey": { - "description": "Access key to store api." + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + } + ] + }, + "SubAggregations": { + "type": "object", + "properties": { + "aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" }, - "active": { - "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." + { + "$ref": "#/components/schemas/AggregationEntity" }, - "maintenance": { - "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." + { + "$ref": "#/components/schemas/AggregationFilter" }, - "maintenanceIpWhitelist": { - "description": "Array of IP address allowed to access the sales channel." + { + "$ref": "#/components/schemas/AggregationTerms" }, - "mailHeaderFooterId": { - "description": "Unique identity of mail header and footer." + { + "$ref": "#/components/schemas/AggregationHistogram" }, - "customerGroupId": { - "description": "Unique identity of customer group." + { + "$ref": "#/components/schemas/AggregationRange" + } + ] + } + } + }, + "TotalCountMode": { + "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", + "type": "string", + "default": "none", + "enum": [ + "none", + "exact", + "next-pages" + ] + }, + "Query": { + "type": "object", + "properties": { + "score": { + "type": "number" + }, + "query": { + "oneOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "hreflangActive": { - "description": "When boolean value is `true``, the sales channel pages are available in different languages." + { + "$ref": "#/components/schemas/EqualsFilter" }, - "hreflangDefaultDomainId": { - "description": "Unique identity of hreflangDefaultDomain." + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } + ] + } + }, + "additionalProperties": true + }, + "Sort": { + "type": "object", + "properties": { + "field": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + }, + "naturalSorting": { + "type": "boolean" + }, + "type": { + "type": "string" + } + }, + "required": [ + "field", + "order" + ] + }, + "Filters": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } + ] + } + }, + "SimpleFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "contains", + "equalsAny", + "prefix", + "suffix" + ] }, - "availabilityRule": { - "properties": { - "name": { - "description": "Unique name for the rule." + "field": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": [ + "type", + "field", + "value" + ] + }, + "EqualsFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "equals" + ] + }, + "field": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "type": "string" }, - "description": { - "description": "A short description about the rule." + { + "type": "number" }, - "priority": { - "description": "A numerical value to prioritize one of the rules from the list." + { + "type": "boolean" }, - "invalid": { - "description": "When the boolean value is `true`, the rule is no more available for usage." + { + "type": "null" } - } + ] + } + }, + "required": [ + "type", + "field", + "value" + ] + }, + "MultiNotFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "multi", + "not" + ] + }, + "operator": { + "type": "string", + "enum": [ + "and", + "or", + "nor", + "nand" + ] + }, + "queries": { + "$ref": "#/components/schemas/Filters" + } + }, + "required": [ + "type", + "operator", + "queries" + ] + }, + "RangeFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "range" + ] }, - "availabilityRuleId": { - "description": "Unique identity of availability rule." + "field": { + "type": "string" }, - "prices": { + "parameters": { + "type": "object", "properties": { - "shippingMethodId": { - "description": "Unique identity of shipping method." - }, - "currencyId": { - "description": "Unique identity of currency." - }, - "ruleId": { - "description": "Unique identity of rule." - }, - "calculation": { - "description": "Shipping price calculated based on quantity, price, weight or volume of items." + "gte": { + "type": "number" }, - "quantityStart": { - "description": "Starting range of quantity of an item." + "gt": { + "type": "number" }, - "quantityEnd": { - "description": "Ending range of quantity of an item." + "lte": { + "type": "number" }, - "price": { - "description": "Shipping method price after applied rules." + "lt": { + "type": "number" + } + } + } + }, + "required": [ + "type", + "field", + "parameters" + ] + }, + "Association": { + "additionalProperties": { + "$ref": "#/components/schemas/Association" + } + }, + "OrderRouteResponse": { + "type": "object", + "properties": { + "orders": { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "elements" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" + } + } + } }, - "calculationRuleId": { - "description": "Unique identity of calculation rule." + { + "$ref": "#/components/schemas/EntitySearchResult" } + ] + }, + "paymentChangeable": { + "type": "object", + "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", + "additionalProperties": { + "type": "boolean" } + } + }, + "required": [ + "orders" + ] + }, + "CartDeliveryInformation": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_information" + ] }, - "mediaId": { - "description": "Unique identity of media." + "freeDelivery": { + "type": "boolean" }, - "media": { + "deliveryTime": { + "type": "object", "properties": { - "userId": { - "description": "Unique identity of user." - }, - "mimeType": { - "description": "A string sent along with a file indicating the type of the file. For example: image/jpeg." - }, - "fileExtension": { - "description": "Type of file indication. For example: jpeg, png." - }, - "fileSize": { - "description": "Size of the file media file uploaded." - }, - "title": { - "description": "Title name give to the media." - }, - "metaDataRaw": { - "description": "Details of the media file uploaded." - }, - "alt": { - "description": "Alternate text for media." + "name": { + "type": "string" }, - "url": { - "description": "Runtime field, cannot be used as part of the criteria." + "min": { + "type": "integer" }, - "fileName": { - "description": "Name of the media file uploaded." + "max": { + "type": "integer" }, - "mediaFolderId": { - "description": "Unique identity of media folder." + "unit": { + "type": "string" }, - "private": { - "description": "Boolean value is `true` to keep the media display private." + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_time" + ] } } }, - "tags": { + "height": { + "type": "integer" + }, + "length": { + "type": "integer" + }, + "restockTime": { + "type": "integer" + }, + "stock": { + "type": "integer" + }, + "weight": { + "type": "integer" + }, + "width": { + "type": "integer" + } + }, + "required": [ + "apiAlias" + ] + }, + "WishlistLoadRouteResponse": { + "type": "object", + "required": [ + "products" + ], + "properties": { + "wishlist": { + "type": "object", "properties": { - "name": { - "description": "Name of the tag." + "customerId": { + "type": "string", + "description": "Unique identity of the customer." + }, + "salesChannelId": { + "type": "string", + "description": "Unique identity of the sales channel." } } + }, + "products": { + "$ref": "#/components/schemas/ProductListingResult" } } }, - "CartPriceReference": { + "AggregationEntity": { + "title": "AggregationEntity", "type": "object", "properties": { - "purchaseUnit": { - "type": "number" - }, - "referenceUnit": { - "type": "number" - }, - "unitName": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" }, - "price": { - "type": "number" - }, - "apiAlias": { + "type": { + "description": "The type of aggregation", "type": "string", "enum": [ - "cart_price_reference" - ] - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } + "entity" ] }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } - }, - { - "type": "null" - } - ] + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "hasRange": { - "type": "boolean" + "definition": { + "description": "The entity definition e.g \"product_manufacturer\".", + "type": "string" + } + }, + "required": [ + "name", + "type", + "field", + "definition" + ] + }, + "AggregationFilter": { + "title": "AggregationFilter", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "filter" ] + }, + "filter": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Filters" + } } }, "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" + "name", + "type", + "filter" ] }, - "Breadcrumb": { + "AggregationTerms": { + "title": "AggregationTerms", "type": "object", "properties": { "name": { + "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" }, - "categoryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, "type": { - "$ref": "#/components/schemas/Category/properties/type" - }, - "translated": { - "type": "object", - "additionalProperties": true, - "properties": { - "customFields": { - "type": "object" - }, - "slotConfig": { - "type": "object" - }, - "linkType": { - "$ref": "#/components/schemas/Category/properties/linkType" - }, - "internalLink": { - "type": "string" - }, - "externalLink": { - "type": "string" - }, - "linkNewTab": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "metaTitle": { - "type": "string" - }, - "metaDescription": { - "type": "string" - }, - "keywords": { - "type": "string" - } - } + "description": "The type of aggregation", + "type": "string", + "enum": [ + "terms" + ] }, - "path": { + "field": { + "description": "The field you want to aggregate over.", "type": "string" }, - "seoUrls": { + "limit": { + "description": "The number of terms to return", + "type": "number" + }, + "sort": { "type": "array", + "description": "Sorting the aggregation result.", "items": { - "$ref": "#/components/schemas/SeoUrl" + "$ref": "#/components/schemas/Sort" } - }, - "apiAlias": { - "type": "string", - "enum": [ - "breadcrumb" - ] } }, "required": [ "name", - "categoryId", "type", - "translated", - "path", - "apiAlias" + "field" ] }, - "CalculatedPrice": { + "AggregationHistogram": { + "title": "AggregationHistogram", "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "unitPrice": { - "type": "number" + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "quantity": { - "type": "number" + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "histogram" + ] }, - "rawTotal": { - "type": "number" + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "totalPrice": { + "interval": { + "description": "The interval of the histogram", "type": "number" }, - "taxStatus": { + "format": { + "description": "The format of the histogram", + "type": "string" + }, + "timeZone": { + "description": "The timezone of the histogram", + "type": "string" + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "AggregationRange": { + "title": "AggregationRange", + "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", "type": "string", "enum": [ - "net", - "tax-free" + "range" ] }, - "calculatedTaxes": { + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "ranges": { + "description": "The ranges of the aggregation", "type": "array", "items": { "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" + "anyOf": [ + { + "type": "object", + "title": "From and to", + "properties": { + "from": { + "type": "number", + "description": "The lower bound of the range" + }, + "to": { + "type": "number", + "description": "The upper bound of the range" + } + }, + "required": [ + "from", + "to" ] }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" + { + "type": "object", + "title": "From only", + "properties": { + "from": { + "type": "string", + "description": "The lower bound of the range" + } + }, + "required": [ + "from" + ] }, - "price": { - "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } - }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] - }, - "positionPrice": { - "type": "number" - }, - "netPrice": { - "type": "number" - }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" + { + "type": "object", + "title": "To only", + "properties": { + "to": { + "type": "string", + "description": "The upper bound of the range" + } }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } + "required": [ + "to" + ] } - }, - { - "type": "null" - } - ] + ] + } + } + }, + "required": [ + "name", + "type", + "field", + "ranges" + ] + }, + "CartListPrice": { + "type": "object", + "description": "", + "properties": { + "discount": { + "type": "number" }, - "hasRange": { - "type": "boolean" + "percentage": { + "type": "number" }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } - ] + "price": { + "type": "number" }, "apiAlias": { "type": "string", "enum": [ - "calculated_price" + "cart_list_price" ] - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } } }, "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "referencePrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitPrice", - "positionPrice", - "netPrice", - "taxRules", - "rawTotal", - "taxStatus" - ] - }, - "Association": { - "additionalProperties": { - "$ref": "#/components/schemas/Association" - } - }, - "LineItemType": { - "type": "string", - "deprecated": true, - "enum": [ - "product", - "credit", - "custom", - "promotion", - "discount", - "container", - "quantity" + "apiAlias" ] }, - "LineItem": { + "Cart": { "type": "object", "properties": { - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - }, - "cover": { - "$ref": "#/components/schemas/Media" - }, - "dataContextHash": { + "name": { + "description": "Name of the cart - for example `guest-cart`", "type": "string" }, - "dataTimestamp": { + "token": { + "description": "Context token identifying the cart and the user session", "type": "string" }, - "deliveryInformation": { - "$ref": "#/components/schemas/CartDeliveryInformation" - }, - "description": { - "type": "string", - "description": "Description of line items in an order." - }, - "good": { - "type": "boolean", - "description": "When set to true, it indicates the line item is physical else it is virtual." - }, - "id": { - "type": "string", - "description": "Unique identity of line item." - }, - "label": { - "type": "string", - "description": "It is a typical product name given to the line item." - }, - "modified": { - "type": "boolean", - "description": "When boolean value is `true`, line items are said to be modified." - }, - "modifiedByApp": { - "type": "boolean" + "price": { + "$ref": "#/components/schemas/CalculatedPrice" }, - "payload": { - "$ref": "#/components/schemas/ProductJsonApi" + "lineItems": { + "description": "All items within the cart", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } }, - "price": { + "errors": { "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "calculated_price" - ] - }, - "calculatedTaxes": { + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "anyOf": [ + { "type": "array", "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] + "$ref": "#/components/schemas/CartError" } }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] - }, - "quantity": { - "type": "number" - }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] - }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } - }, - { - "type": "null" - } - ] - }, - "totalPrice": { - "type": "number" - }, - "unitPrice": { - "type": "number" - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { + { + "type": "object", + "additionalProperties": { "type": "object", "properties": { - "taxRate": { - "type": "number", - "format": "float" + "code": { + "type": "number" }, - "name": { + "key": { + "type": "string" + }, + "level": { + "type": "number" + }, + "message": { + "type": "string" + }, + "messageKey": { "type": "string" } - } + }, + "required": [ + "code", + "key", + "level", + "message", + "messageKey" + ] + } + } + ], + "properties": { + "key": { + "description": "Unique key for every message." + }, + "level": { + "description": "Types of level - Notice, warning and error. " + }, + "message": { + "description": "A persistent error passed from the shopping cart calculation processes to the user end." + } + } + }, + "deliveries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDelivery" + } + }, + "transactions": { + "description": "A list of all payment transactions associated with the current cart.", + "type": "array", + "items": { + "type": "object", + "properties": { + "paymentMethodId": { + "type": "string" + }, + "amount": { + "$ref": "#/components/schemas/CalculatedPrice" } } }, - "required": [ - "apiAlias", - "totalPrice", - "quantity", - "unitPrice" - ] + "properties": { + "paymentMethodId": { + "description": "Unique identity of payment method." + } + } }, - "priceDefinition": { - "$ref": "#/components/schemas/CartPriceQuantity" + "modified": { + "type": "boolean", + "description": "It signifies any changes to cart." }, - "quantity": { - "type": "number", - "description": "Number of items of product." + "customerComment": { + "description": "A comment that can be added to the cart.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] }, - "quantityInformation": { - "type": "object", - "properties": { - "maxPurchase": { - "type": "number" + "affiliateCode": { + "description": "An affiliate tracking code", + "oneOf": [ + { + "type": "string" }, - "minPurchase": { - "type": "number" + { + "type": "null" + } + ] + }, + "campaignCode": { + "description": "A campaign tracking code", + "oneOf": [ + { + "type": "string" }, - "purchaseSteps": { - "type": "number" + { + "type": "null" } - } + ] }, - "referencedId": { + "apiAlias": { "type": "string", - "description": "Unique identity of type of entity." + "enum": [ + "cart" + ] }, - "removable": { - "type": "boolean", - "description": "Allows the line item to be removable from the cart when set to true." + "id": { + "description": "Unique identity of cart." + } + }, + "required": [ + "price", + "apiAlias" + ] + }, + "CookieGroup": { + "type": "object", + "properties": { + "isRequired": { + "type": "boolean" }, - "stackable": { - "type": "boolean", - "description": "Allows to change the quantity of the line item when set to true." + "name": { + "type": "string" }, - "states": { - "deprecated": true, - "type": "array", - "items": { - "type": "string", - "enum": [ - "is-physical", - "is-download" - ] - } + "description": { + "type": "string" }, - "type": { - "$ref": "#/components/schemas/OrderLineItem/properties/type", - "description": "Type refers to the entity type of an item whether it is product or promotion for instance." + "cookie": { + "type": "string" }, - "uniqueIdentifier": { + "value": { "type": "string" + }, + "expiration": { + "type": "integer" + }, + "entries": { + "$ref": "#/components/schemas/CookieEntryCollection" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cookie_group" + ] } }, + "not": { + "allOf": [ + { + "required": [ + "cookie" + ] + }, + { + "required": [ + "entries" + ] + } + ] + }, "required": [ - "id", - "type" + "name", + "isRequired", + "apiAlias" ] }, - "ListPrice": { + "MeasurementUnits": { "type": "object", - "description": "", + "description": "Configuration of the measurement system", "properties": { - "discount": { - "type": "number" + "system": { + "type": "string", + "enum": [ + "metric", + "imperial" + ], + "default": "metric", + "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." }, - "percentage": { + "units": { + "type": "object", + "description": "Units used in the measurement system.", + "properties": { + "length": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Unit of length." + }, + "weight": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." + } + } + } + } + }, + "Price": { + "type": "object", + "description": "Price object", + "properties": { + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "gross": { + "description": "", "type": "number" }, - "price": { + "net": { + "description": "", "type": "number" }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_list_price" + "linked": { + "description": "", + "type": "boolean" + }, + "listPrice": { + "description": "", + "type": "object", + "properties": { + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "gross": { + "description": "", + "type": "number" + }, + "net": { + "description": "", + "type": "number" + }, + "linked": { + "description": "", + "type": "boolean" + } + }, + "required": [ + "gross", + "net" + ] + }, + "regulationPrice": { + "description": "", + "type": "object", + "properties": { + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "gross": { + "description": "", + "type": "number" + }, + "net": { + "description": "", + "type": "number" + }, + "linked": { + "description": "", + "type": "boolean" + } + }, + "required": [ + "gross", + "net" ] } }, "required": [ - "apiAlias" + "currencyId", + "gross", + "net" ] }, - "AggregationEntity": { - "title": "AggregationEntity", + "ContextMeasurementSystemInfo": { "type": "object", + "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", + "system": { "type": "string", "enum": [ - "entity" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "metric", + "imperial" + ], + "default": "metric", + "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." }, - "definition": { - "description": "The entity definition e.g \"product_manufacturer\".", - "type": "string" + "units": { + "type": "object", + "description": "Units used in the measurement system.", + "properties": { + "length": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Unit of length." + }, + "weight": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." + } + } } - }, - "required": [ - "name", - "type", - "field", - "definition" - ] + } }, - "AggregationFilter": { - "title": "AggregationFilter", + "FindProductVariantRouteResponse": { "type": "object", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "filter" - ] - }, - "filter": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Filters" + "foundCombination": { + "type": "object", + "properties": { + "variantId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of a variant." + }, + "options": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Available product variant options. For example, for variant `Size`, option would be `XS`, `S`, `M`, `L`, `XL`." + } } } - }, - "required": [ - "name", - "type", - "filter" - ] + } }, - "AggregationTerms": { - "title": "AggregationTerms", + "ListPrice": { "type": "object", + "description": "", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "terms" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "discount": { + "type": "number" }, - "limit": { - "description": "The number of terms to return", + "percentage": { "type": "number" }, - "sort": { - "type": "array", - "description": "Sorting the aggregation result.", - "items": { - "$ref": "#/components/schemas/Sort" - } - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "AggregationHistogram": { - "title": "AggregationHistogram", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" + "price": { + "type": "number" }, - "type": { - "description": "The type of aggregation", + "apiAlias": { "type": "string", "enum": [ - "histogram" + "cart_list_price" ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "interval": { - "description": "The interval of the histogram", - "type": "number" - }, - "format": { - "description": "The format of the histogram", - "type": "string" - }, - "timeZone": { - "description": "The timezone of the histogram", - "type": "string" } }, "required": [ - "name", - "type", - "field" - ] - }, - "AggregationRange": { - "title": "AggregationRange", - "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "range" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "ranges": { - "description": "The ranges of the aggregation", - "type": "array", - "items": { - "type": "object", - "anyOf": [ - { - "type": "object", - "title": "From and to", - "properties": { - "from": { - "type": "number", - "description": "The lower bound of the range" - }, - "to": { - "type": "number", - "description": "The upper bound of the range" + "apiAlias" + ] + }, + "ProductListingResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EntitySearchResult" + }, + { + "type": "object", + "properties": { + "currentFilters": { + "type": "object", + "description": "Contains the state of the filters. These can be used to create listing filters.", + "properties": { + "navigationId": { + "type": "string" + }, + "manufacturer": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, - "required": [ - "from", - "to" - ] - }, - { - "type": "object", - "title": "From only", + "price": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "default": 0 + }, + "max": { + "type": "integer", + "default": 0 + } + }, + "required": [ + "min", + "max" + ] + }, + "rating": { + "oneOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "shipping-free": { + "type": "boolean", + "default": false + }, "properties": { - "from": { + "type": "array", + "items": { "type": "string", - "description": "The lower bound of the range" + "pattern": "^[0-9a-f]{32}$" } }, - "required": [ - "from" - ] + "search": { + "type": "string" + } }, - { + "required": [ + "manufacturer", + "navigationId", + "price", + "properties", + "rating", + "shipping-free" + ] + }, + "availableSortings": { + "type": "array", + "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", + "items": { "type": "object", - "title": "To only", "properties": { - "to": { + "label": { + "type": "string" + }, + "translated": { + "type": "object", + "properties": { + "label": { + "type": "string" + } + }, + "required": [ + "label" + ] + }, + "key": { + "type": "string" + }, + "priority": { + "type": "number" + }, + "apiAlias": { "type": "string", - "description": "The upper bound of the range" + "enum": [ + "product_sorting" + ] } }, "required": [ - "to" + "label", + "translated", + "key", + "priority", + "apiAlias" ] } - ] - } + }, + "sorting": { + "type": "string" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "entity": { + "type": "string", + "enum": [ + "product" + ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_listing" + ] + } + }, + "required": [ + "elements", + "availableSortings", + "currentFilters", + "apiAlias" + ] } - }, - "required": [ - "name", - "type", - "field", - "ranges" ] }, "AccountNewsletterRecipientResult": { @@ -17002,25 +16658,38 @@ "204": { "description": "No Content" }, - "SeoUrlListResponse": { - "description": "Entity search result containing seo urls.", + "CurrencyListResponse": { + "description": "Entity search result containing currencies.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Currency" + } + } + } + } + }, + "ProductListResponse": { + "description": "Entity search result containing products", "content": { "application/json": { "schema": { "allOf": [ { + "required": [ + "elements" + ], "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/SeoUrl" + "$ref": "#/components/schemas/Product" } } }, - "type": "object", - "required": [ - "elements" - ] + "type": "object" }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -17030,25 +16699,25 @@ } } }, - "ProductListResponse": { - "description": "Entity search result containing products", + "SeoUrlListResponse": { + "description": "Entity search result containing seo urls.", "content": { "application/json": { "schema": { "allOf": [ { - "required": [ - "elements" - ], "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Product" + "$ref": "#/components/schemas/SeoUrl" } } }, - "type": "object" + "type": "object", + "required": [ + "elements" + ] }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -17058,21 +16727,33 @@ } } }, - "CurrencyListResponse": { - "description": "Entity search result containing currencies.", + "CategoryListResponse": { + "description": "Entity search result containing categories.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Currency" - } + "allOf": [ + { + "type": "object", + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + } + } + } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } }, - "CountryListResponse": { - "description": "Entity search result containing countries.", + "LanguageListResponse": { + "description": "Entity search result containing languages.", "content": { "application/json": { "schema": { @@ -17082,10 +16763,13 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Country" + "$ref": "#/components/schemas/Language" } } }, + "required": [ + "elements" + ], "type": "object" }, { @@ -17096,8 +16780,8 @@ } } }, - "SalutationListResponse": { - "description": "Entity search result containing salutations.", + "CountryStateListResponse": { + "description": "Entity search result containing countries.", "content": { "application/json": { "schema": { @@ -17107,7 +16791,7 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Salutation" + "$ref": "#/components/schemas/CountryState" } } }, @@ -17116,27 +16800,51 @@ { "$ref": "#/components/schemas/EntitySearchResult" } - ] + ] + } + } + } + }, + "ContextTokenResponse": { + "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", + "headers": { + "sw-context-token": { + "description": "Contains sw-context-token value", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redirectUrl": { + "description": "Define the URL which browser will be redirected to", + "type": "string" + } + } } } } }, - "CategoryListResponse": { - "description": "Entity search result containing categories.", + "SalutationListResponse": { + "description": "Entity search result containing salutations.", "content": { "application/json": { "schema": { "allOf": [ { - "type": "object", "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Category" + "$ref": "#/components/schemas/Salutation" } } - } + }, + "type": "object" }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -17146,18 +16854,29 @@ } } }, - "CountryStateListResponse": { - "description": "Entity search result containing countries.", + "ShippingMethodListResponse": { + "description": "Entity search result containing shipping methods.", "content": { "application/json": { "schema": { "allOf": [ { + "required": [ + "elements" + ], "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/CountryState" + "$ref": "#/components/schemas/ShippingMethod" } } }, @@ -17171,8 +16890,8 @@ } } }, - "LanguageListResponse": { - "description": "Entity search result containing languages.", + "CountryListResponse": { + "description": "Entity search result containing countries.", "content": { "application/json": { "schema": { @@ -17182,13 +16901,10 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Language" + "$ref": "#/components/schemas/Country" } } }, - "required": [ - "elements" - ], "type": "object" }, { @@ -17199,30 +16915,6 @@ } } }, - "ContextTokenResponse": { - "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", - "headers": { - "sw-context-token": { - "description": "Contains sw-context-token value", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "description": "Define the URL which browser will be redirected to", - "type": "string" - } - } - } - } - } - }, "OpenApi3": { "description": "Returns information about the store API.", "content": { @@ -17437,42 +17129,6 @@ } } } - }, - "ShippingMethodListResponse": { - "description": "Entity search result containing shipping methods.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "required": [ - "elements" - ], - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } } }, "parameters": { @@ -17671,187 +17327,92 @@ "type": "array", "items": { "type": "string", - "description": "Name of a field" - } - } - }, - "criteriaTotalCountMode": { - "name": "total-count-mode", - "in": "query", - "description": "", - "schema": { - "$ref": "#/components/schemas/TotalCountMode" - } - }, - "criteriaIncludes": { - "name": "includes", - "in": "query", - "description": "Specify the fields that should be returned for the given entities. Object key needs to be the entity name, and the list of fields needs to be the value. Fields will not be included, if they are also specified in the excludes. Note that the include fields will only be stripped on the API-Level, consider using the `fields` parameter for performance reasons.", - "schema": { - "$ref": "#/components/schemas/Includes" - }, - "style": "deepObject", - "explode": true - }, - "criteriaExcludes": { - "name": "excludes", - "in": "query", - "description": "Specify the fields that should be excluded from the response for the given entities. Object key needs to be the entity name, and the list of fields needs to be the value. Note that the exclude fields will only be stripped on the API-Level, consider using the `fields` parameter for performance reasons.", - "schema": { - "$ref": "#/components/schemas/Excludes" - }, - "style": "deepObject", - "explode": true - }, - "CompressedCriteria": { - "name": "_criteria", - "in": "query", - "description": "Compressed and encoded criteria object. Format: base64url(gzip(json_encode(criteria))). This parameter allows passing complex criteria as a single encoded string instead of multiple query parameters. The criteria object should be JSON-encoded, then gzipped, and finally base64url-encoded. The criteria object structure is defined in the Criteria schema (see #/components/schemas/Criteria).", - "required": false, - "schema": { - "type": "string", - "format": "base64url", - "example": "H4sIAAAAAAAAA6tWykpNzFGyqlbKz8lPTSxRslJKSi0pzSsFAGcQr7sHAAAA" - } - }, - "CompressedNoneFieldsCriteria": { - "name": "_criteria", - "in": "query", - "description": "Compressed and encoded criteria object. Format: base64url(gzip(json_encode(criteria))). This parameter allows passing complex criteria as a single encoded string instead of multiple query parameters. The criteria object should be JSON-encoded, then gzipped, and finally base64url-encoded. The criteria object structure is defined in the NoneFieldsCriteria schema (see #/components/schemas/NoneFieldsCriteria).", - "required": false, - "schema": { - "type": "string", - "format": "base64url", - "example": "H4sIAAAAAAAAA6tWykpNzFGyqlbKz8lPTSxRslJKSi0pzSsFAGcQr7sHAAAA" - } - } - }, - "securitySchemes": { - "ApiKey": { - "type": "apiKey", - "description": "Identifies the sales channel you want to access the API through", - "name": "sw-access-key", - "in": "header" - }, - "ContextToken": { - "type": "apiKey", - "description": "Identifies an anonymous or identified user session", - "name": "sw-context-token", - "in": "header" - } - } - }, - "security": [ - { - "ApiKey": [] - } - ], - "paths": { - "/revocation-request-form": { - "post": { - "tags": [ - "Content" - ], - "summary": "Submit a revocation request form message", - "description": "Used for submitting revocation request forms. Be aware that there can be more required fields, depending on the system settings.", - "operationId": "sendRevocationRequestMail", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "email", - "contractNumber" - ], - "properties": { - "firstName": { - "description": "First name. This field may be required depending on the system settings.", - "type": "string" - }, - "lastName": { - "description": "Last name. This field may be required depending on the system settings.", - "type": "string" - }, - "email": { - "description": "Email address.", - "type": "string" - }, - "contractNumber": { - "description": "The number of the contract.", - "type": "string" - }, - "comment": { - "description": "The message of the revocation request form.", - "type": "string" - }, - "navigationId": { - "description": "Identifier of the navigation page. Can be used to override the configuration.\nTake a look at the settings of a category containing a revocation form in the administration.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "slotId": { - "description": "Identifier of the cms element.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "cmsPageType": { - "description": "Type of the content management page.", - "type": "string" - }, - "entityName": { - "description": "Entity name for slot config.", - "type": "string" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Message sent successfully." + "description": "Name of a field" } + } + }, + "criteriaTotalCountMode": { + "name": "total-count-mode", + "in": "query", + "description": "", + "schema": { + "$ref": "#/components/schemas/TotalCountMode" + } + }, + "criteriaIncludes": { + "name": "includes", + "in": "query", + "description": "Specify the fields that should be returned for the given entities. Object key needs to be the entity name, and the list of fields needs to be the value. Fields will not be included, if they are also specified in the excludes. Note that the include fields will only be stripped on the API-Level, consider using the `fields` parameter for performance reasons.", + "schema": { + "$ref": "#/components/schemas/Includes" }, - "security": [ - { - "ApiKey": [] - } - ] + "style": "deepObject", + "explode": true + }, + "criteriaExcludes": { + "name": "excludes", + "in": "query", + "description": "Specify the fields that should be excluded from the response for the given entities. Object key needs to be the entity name, and the list of fields needs to be the value. Note that the exclude fields will only be stripped on the API-Level, consider using the `fields` parameter for performance reasons.", + "schema": { + "$ref": "#/components/schemas/Excludes" + }, + "style": "deepObject", + "explode": true + }, + "CompressedCriteria": { + "name": "_criteria", + "in": "query", + "description": "Compressed and encoded criteria object. Format: base64url(gzip(json_encode(criteria))). This parameter allows passing complex criteria as a single encoded string instead of multiple query parameters. The criteria object should be JSON-encoded, then gzipped, and finally base64url-encoded. The criteria object structure is defined in the Criteria schema (see #/components/schemas/Criteria).", + "required": false, + "schema": { + "type": "string", + "format": "base64url", + "example": "H4sIAAAAAAAAA6tWykpNzFGyqlbKz8lPTSxRslJKSi0pzSsFAGcQr7sHAAAA" + } + }, + "CompressedNoneFieldsCriteria": { + "name": "_criteria", + "in": "query", + "description": "Compressed and encoded criteria object. Format: base64url(gzip(json_encode(criteria))). This parameter allows passing complex criteria as a single encoded string instead of multiple query parameters. The criteria object should be JSON-encoded, then gzipped, and finally base64url-encoded. The criteria object structure is defined in the NoneFieldsCriteria schema (see #/components/schemas/NoneFieldsCriteria).", + "required": false, + "schema": { + "type": "string", + "format": "base64url", + "example": "H4sIAAAAAAAAA6tWykpNzFGyqlbKz8lPTSxRslJKSi0pzSsFAGcQr7sHAAAA" + } } }, - "/landing-page/{landingPageId}": { + "securitySchemes": { + "ApiKey": { + "type": "apiKey", + "description": "Identifies the sales channel you want to access the API through", + "name": "sw-access-key", + "in": "header" + }, + "ContextToken": { + "type": "apiKey", + "description": "Identifies an anonymous or identified user session", + "name": "sw-context-token", + "in": "header" + } + } + }, + "security": [ + { + "ApiKey": [] + } + ], + "paths": { + "/country": { "post": { "tags": [ - "Content", + "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch a landing page with the resolved CMS page", - "description": "Loads a landing page by its identifier and resolves the CMS page.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `cmsPage` - CMS page layout for the landing page\n- `seoUrls` - SEO-friendly URLs for the landing page across different sales channels", - "operationId": "readLandingPage", + "summary": "Fetch countries", + "description": "Perform a filtered search for countries\n\n**Available Associations:**\n- `states` - States/provinces/regions within the country", + "operationId": "readCountry", "parameters": [ - { - "name": "landingPageId", - "in": "path", - "description": "Identifier of the landing page.", - "required": true, - "schema": { - "type": "string" - } - }, { "name": "sw-language-id", "in": "header", @@ -17878,28 +17439,13 @@ } ], "requestBody": { + "required": false, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Criteria" - }, - { - "allOf": [ - { - "properties": { - "slots": { - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/ProductListingCriteria" - } - ] } ] } @@ -17908,17 +17454,7 @@ }, "responses": { "200": { - "description": "The loaded landing page with cms page", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/LandingPage" - } - } - } - }, - "404": { - "$ref": "#/components/responses/404" + "$ref": "#/components/responses/CountryListResponse" } }, "security": [ @@ -17929,22 +17465,13 @@ }, "get": { "tags": [ - "Content", + "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch a landing page with the resolved CMS page", - "description": "Loads a landing page by its identifier and resolves the CMS page.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `cmsPage` - CMS page layout for the landing page\n- `seoUrls` - SEO-friendly URLs for the landing page across different sales channels", - "operationId": "readLandingPageGet", + "summary": "Fetch countries", + "description": "Perform a filtered search for countries\n\n**Available Associations:**\n- `states` - States/provinces/regions within the country", + "operationId": "readCountryGet", "parameters": [ - { - "name": "landingPageId", - "in": "path", - "description": "Identifier of the landing page.", - "required": true, - "schema": { - "type": "string" - } - }, { "name": "sw-language-id", "in": "header", @@ -17955,31 +17482,11 @@ "pattern": "^[0-9a-f]{32}$" } }, - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } - }, { "$ref": "#/components/parameters/criteriaPage" }, { - "name": "limit", - "in": "query", - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "schema": { - "type": "integer", - "minimum": 0 - } + "$ref": "#/components/parameters/criteriaLimit" }, { "$ref": "#/components/parameters/criteriaTerm" @@ -18021,133 +17528,64 @@ "$ref": "#/components/parameters/criteriaExcludes" }, { - "name": "order", - "in": "query", - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "schema": { - "type": "string" - } - }, - { - "name": "p", - "in": "query", - "description": "Search result page", - "schema": { - "type": "integer", - "default": 1 - } - }, - { - "name": "manufacturer", - "in": "query", - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", - "schema": { - "type": "string" - } - }, - { - "name": "min-price", - "in": "query", - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "max-price", - "in": "query", - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "rating", - "in": "query", - "description": "Filter products with a minimum average rating.", - "schema": { - "type": "integer" - } - }, - { - "name": "shipping-free", - "in": "query", - "description": "Filters products that are marked as shipping-free.", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "name": "properties", - "in": "query", - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", - "schema": { - "type": "string" - } - }, + "$ref": "#/components/parameters/CompressedCriteria" + } + ], + "responses": { + "200": { + "$ref": "#/components/responses/CountryListResponse" + } + }, + "security": [ { - "name": "reduce-aggregations", - "in": "query", - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", - "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } + "ApiKey": [] } + ] + } + }, + "/account/newsletter-recipient": { + "post": { + "tags": [ + "Profile", + "Newsletter", + "Endpoints supporting Criteria" ], + "summary": "Fetch newsletter recipients", + "description": "Perform a filtered search for newsletter recipients.", + "operationId": "readNewsletterRecipient", + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } + } + } + }, "responses": { "200": { - "description": "The loaded landing page with cms page", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LandingPage" + "$ref": "#/components/schemas/AccountNewsletterRecipient" } } } - }, - "404": { - "$ref": "#/components/responses/404" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } - ] - } - }, - "/shipping-method": { - "post": { - "tags": [ - "Payment & Shipping", - "Endpoints supporting Criteria " ], - "summary": "Fetch shipping methods", - "description": "Perform a filtered search for shipping methods.\n\n**Available Associations:**\n- `prices` - Shipping method price configurations (based on current cart and context)\n- `deliveryTime` - Delivery time information (min/max days, unit)\n- `media` - Media/images associated with the shipping method (loaded by default)\n- `availabilityRule` - Availability rule determining when this method is available\n- `tax` - Tax configuration for the shipping method\n\n**Example with associations:**\n```json\n{\n \"associations\": {\n \"prices\": {},\n \"deliveryTime\": {}\n }\n}\n```\n\nNote: The `prices` association is essential for accessing shipping cost configurations.", - "operationId": "readShippingMethod", "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, { "name": "sw-include-search-info", "in": "header", @@ -18161,63 +17599,221 @@ ], "default": "1" } - }, + } + ] + } + }, + "/account/change-profile": { + "post": { + "tags": [ + "Profile" + ], + "summary": "Change the customer's information", + "description": "Make changes to a customer's account, like changing their name, salutation or title.", + "operationId": "changeProfile", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "firstName", + "lastName" + ], + "properties": { + "salutationId": { + "description": "Id of the salutation for the customer account. Fetch options using `salutation` endpoint.", + "type": "string" + }, + "title": { + "description": "(Academic) title of the customer", + "type": "string" + }, + "firstName": { + "description": "Customer first name. Value will be reused for shipping and billing address if not provided explicitly.", + "type": "string" + }, + "lastName": { + "description": "Customer last name. Value will be reused for shipping and billing address if not provided explicitly.", + "type": "string" + }, + "birthdayDay": { + "description": "Birthday day", + "type": "integer" + }, + "birthdayMonth": { + "description": "Birthday month", + "type": "integer" + }, + "birthdayYear": { + "description": "Birthday year", + "type": "integer" + } + }, + "oneOf": [ + { + "properties": { + "accountType": { + "description": "Type of the customer account. Default value is 'private'.", + "type": "string", + "enum": [ + "private" + ], + "default": "private" + }, + "company": { + "type": "null" + }, + "vatIds": { + "type": "null" + } + } + }, + { + "required": [ + "accountType", + "company", + "vatIds" + ], + "properties": { + "accountType": { + "description": "Type of the customer account. Can be `private` or `business`.", + "type": "string", + "enum": [ + "business" + ] + }, + "company": { + "description": "Company of the customer. Only required when `accountType` is `business`.", + "type": "string" + }, + "vatIds": { + "description": "VAT IDs of the customer's company. Only valid when `accountType` is `business`.", + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Returns a success response indicating a successful update", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } + } + }, + "security": [ { - "name": "onlyAvailable", - "in": "query", - "description": "List only available shipping methods. This filters shipping methods methods which can not be used in the actual context because of their availability rule.", - "schema": { - "type": "boolean" + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/account/change-email": { + "post": { + "tags": [ + "Profile" + ], + "summary": "Change the customer's email address", + "description": "Changes a customer's email address to a new email address, using their current password as a validation.", + "operationId": "changeEmail", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "email", + "emailConfirmation", + "password" + ], + "properties": { + "email": { + "description": "New email address. Has to be unique amongst all customers", + "type": "string" + }, + "emailConfirmation": { + "description": "Confirmation of the new email address.", + "type": "string" + }, + "password": { + "description": "Customer's current password", + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Returns a success response indicating a successful update", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } } } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/account/change-language": { + "post": { + "tags": [ + "Profile" ], + "summary": "Change the customer's language.", + "description": "Changes the language of the logged in customer", + "operationId": "changeLanguage", "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "languageId" + ], + "properties": { + "language": { + "description": "New languageId", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "", + "description": "Returns a success response indicating a successful update", "content": { "application/json": { "schema": { - "allOf": [ - { - "required": [ - "elements" - ], - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -18225,118 +17821,88 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] - }, - "get": { + } + }, + "/account/change-password": { + "post": { "tags": [ - "Payment & Shipping", - "Endpoints supporting Criteria " + "Profile" ], - "summary": "Fetch shipping methods", - "description": "Perform a filtered search for shipping methods.\n\n**Available Associations:**\n- `prices` - Shipping method price configurations (graduated prices, quantity-based pricing)\n- `deliveryTime` - Delivery time information (min/max days, unit)\n- `media` - Media/images associated with the shipping method (loaded by default)\n- `availabilityRule` - Availability rule determining when this method is available\n- `tax` - Tax configuration for the shipping method\n\nNote: The `prices` association is essential for accessing shipping cost configurations.", - "operationId": "readShippingMethodGet", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "summary": "Change the customer's password", + "description": "Changes a customer's password using their current password as a validation.", + "operationId": "changePassword", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "password", + "newPassword", + "newPasswordConfirm" + ], + "properties": { + "password": { + "description": "Current password of the customer", + "type": "string" + }, + "newPassword": { + "description": "New Password for the customer", + "type": "string" + }, + "newPasswordConfirm": { + "description": "Confirmation of the new password", + "type": "string" + } + }, + "type": "object" + } } - }, - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaFields" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "$ref": "#/components/parameters/CompressedCriteria" } - ], + }, "responses": { "200": { - "$ref": "#/components/responses/ShippingMethodListResponse" + "description": "Returns a success response indicating a successful update.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/handle-payment": { + "/account/convert-guest": { "post": { "tags": [ - "Payment & Shipping" + "Profile" ], - "summary": "Initiate a payment for an order", - "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order.", - "operationId": "handlePaymentMethod", + "summary": "Convert a guest customer to a registered customer", + "description": "Takes a password to convert a guest customer to a registered customer. The customer can then log in with the provided password in the future.", + "operationId": "convertGuest", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "orderId" + "password" ], "properties": { - "orderId": { - "description": "Identifier of an order", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "finishUrl": { - "description": "URL to which the client should be redirected after successful payment", - "type": "string" - }, - "errorUrl": { - "description": "URL to which the client should be redirected after erroneous payment", + "password": { + "description": "New Password for the customer", "type": "string" } }, @@ -18347,19 +17913,11 @@ }, "responses": { "200": { - "description": "Redirect to external payment provider", + "description": "Returns a success response indicating a successful update.", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "type": "string" - } - }, - "required": [ - "redirectUrl" - ] + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -18367,60 +17925,68 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] - }, - "get": { + } + }, + "/account/customer-recovery-is-expired": { + "post": { "tags": [ - "Payment & Shipping" + "Profile" ], - "summary": "Initiate a payment for an order", - "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order. Please prefer the POST version of this endpoint.", - "operationId": "handlePaymentMethodGet", - "parameters": [ - { - "name": "orderId", - "in": "query", - "required": true, - "description": "Identifier of an order", - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "finishUrl", - "in": "query", - "description": "URL to which the client should be redirected after successful payment", - "schema": { - "type": "string" - } - }, - { - "name": "errorUrl", - "in": "query", - "description": "URL to which the client should be redirected after erroneous payment", - "schema": { - "type": "string" + "summary": "Checks if the customer recovery entry for a given hash is expired.", + "description": "This can be used to validate a provided hash has a valid and not expired customer recovery hash.", + "operationId": "getCustomerRecoveryIsExpired", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "hash" + ], + "properties": { + "hash": { + "description": "Parameter from the link in the confirmation mail sent in Step 1", + "type": "string" + } + }, + "type": "object" + } } } - ], + }, "responses": { "200": { - "description": "Redirect to external payment provider", + "description": "Returns a CustomerRecoveryIsExpiredResponse that indicates if the hash is expired or not.", "content": { "application/json": { "schema": { "type": "object", "properties": { - "redirectUrl": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "isExpired": { + "type": "boolean" + } + }, + "required": [ + "isExpired" + ] + } + }, + "apiAlias": { + "enum": [ + "array_struct" + ], "type": "string" } - }, - "required": [ - "redirectUrl" - ] + } } } } @@ -18433,72 +17999,23 @@ ] } }, - "/search-suggest": { + "/account/customer": { "post": { "tags": [ - "Product" - ], - "summary": "Search for products (suggest)", - "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", - "operationId": "searchSuggest", - "parameters": [ - { - "name": "p", - "in": "query", - "description": "The page number to fetch.", - "required": false, - "schema": { - "type": "integer" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } - } + "Profile", + "Endpoints supporting Criteria " ], + "summary": "Get information about current customer", + "description": "Returns information about the current customer.\n\n**Available Associations:**\n- `group` - Customer group determining pricing and permissions\n- `language` - Preferred language for customer communication\n- `lastPaymentMethod` - Last used payment method by the customer\n- `defaultBillingAddress` - Default billing address for the customer\n- `activeBillingAddress` - Currently active billing address in the session\n- `defaultShippingAddress` - Default shipping address for the customer\n- `activeShippingAddress` - Currently active shipping address in the session\n- `salutation` - Customer salutation (e.g., Mr., Mrs., Ms.)\n- `addresses` - All addresses saved for the customer\n- `tags` - Tags assigned to the customer for organization and segmentation", + "operationId": "readCustomer", "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { "allOf": [ { - "required": [ - "search" - ], - "properties": { - "search": { - "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/ProductListingCriteria" - }, - { - "$ref": "#/components/schemas/ProductListingFlags" + "$ref": "#/components/schemas/NoneFieldsCriteria" } ] } @@ -18507,11 +18024,11 @@ }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", + "description": "Returns the logged in customer, also for guest sessions. Check for the value of `guest` field to see whether the customer is a guest.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "$ref": "#/components/schemas/Customer" } } } @@ -18519,187 +18036,122 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } - ] - }, - "get": { - "tags": [ - "Product" ], - "summary": "Search for products (suggest)", - "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", - "operationId": "searchSuggestGet", "parameters": [ { - "name": "sw-language-id", + "name": "sw-include-search-info", "in": "header", - "description": "Instructs Shopware to return the response in the given language.", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", "required": false, "schema": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "search", - "in": "query", - "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "name": "limit", - "in": "query", - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "schema": { - "type": "integer", - "minimum": 0 - } - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaFields" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "name": "order", - "in": "query", - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "schema": { - "type": "string" - } - }, - { - "name": "p", - "in": "query", - "description": "Search result page", - "schema": { - "type": "integer", - "default": 1 - } - }, - { - "name": "manufacturer", - "in": "query", - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", - "schema": { - "type": "string" - } - }, - { - "name": "min-price", - "in": "query", - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "max-price", - "in": "query", - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "rating", - "in": "query", - "description": "Filter products with a minimum average rating.", - "schema": { - "type": "integer" + "enum": [ + "0", + "1" + ], + "default": "1" } - }, + } + ] + }, + "delete": { + "tags": [ + "Profile" + ], + "summary": "Delete the customer's profile", + "description": "Deletes a customer profile along with their addresses, wishlists and associated data. Created orders and their payment/shipping information (addresses) and reviews are not deleted.", + "operationId": "deleteCustomer", + "responses": { + "204": { + "description": "Returns a no content response indicating a successful removal of the customer profile" + } + }, + "security": [ { - "name": "shipping-free", - "in": "query", - "description": "Filters products that are marked as shipping-free.", - "schema": { - "type": "boolean", - "default": false - } - }, + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/account/address/{addressId}": { + "delete": { + "tags": [ + "Address" + ], + "summary": "Delete an address of a customer", + "description": "Delete an address of customer.\n\n Only addresses which are not set as default addresses for shipping or billing can be deleted. You can check the current default addresses of your customer using the profile information endpoint and change them using the default address endpoint.\n\n **A customer must have at least one address (which can be used for shipping and billing).**\n\n An automatic fallback is not applied.", + "operationId": "deleteCustomerAddress", + "parameters": [ { - "name": "properties", - "in": "query", - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "name": "addressId", + "in": "path", + "description": "ID of the address to be deleted.", + "required": true, "schema": { "type": "string" } + } + ], + "responses": { + "204": { + "description": "No Content response, when the address has been deleted" }, + "400": { + "description": "Response containing a list of errors, most likely due to the address being in use" + } + }, + "security": [ { - "name": "reduce-aggregations", - "in": "query", - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "ApiKey": [], + "ContextToken": [] + } + ] + }, + "patch": { + "tags": [ + "Address" + ], + "summary": "Modify an address of a customer", + "description": "Modifies an existing address of a customer.", + "operationId": "updateCustomerAddress", + "parameters": [ + { + "name": "addressId", + "in": "path", + "description": "Address ID", + "required": true, "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] + "type": "string" } - }, - { - "$ref": "#/components/parameters/noAggregations" - }, - { - "$ref": "#/components/parameters/onlyAggregations" } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomerAddressBody" + } + } + } + }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "allOf": [ + { + "$ref": "#/components/schemas/CustomerAddress" + }, + { + "$ref": "#/components/schemas/CustomerAddressRead" + } + ] } } } @@ -18707,31 +18159,72 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/country": { + "/account/list-address": { "post": { "tags": [ - "System & Context", + "Address", "Endpoints supporting Criteria " ], - "summary": "Fetch countries", - "description": "Perform a filtered search for countries\n\n**Available Associations:**\n- `states` - States/provinces/regions within the country", - "operationId": "readCountry", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "summary": "Fetch addresses of a customer", + "description": "Lists all addresses of the current customer and allows filtering them based on a criteria.", + "operationId": "listAddress", + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } } - }, + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "required": [ + "elements" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomerAddress" + } + } + } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ], + "parameters": [ { "name": "sw-include-search-info", "in": "header", @@ -18746,120 +18239,154 @@ "default": "1" } } + ] + } + }, + "/account/login": { + "post": { + "tags": [ + "Login & Registration" ], + "summary": "Log in a customer", + "description": "Logs in customers given their credentials.", + "operationId": "loginCustomer", "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "username", + "password" + ], + "properties": { + "username": { + "description": "Email", + "type": "string" + }, + "password": { + "description": "Password", + "type": "string" } - ] + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "$ref": "#/components/responses/ContextTokenResponse" + }, + "401": { + "description": "If credentials are incorrect an error is returned", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/account/login/imitate-customer": { + "post": { + "tags": [ + "Login & Registration" + ], + "summary": "Imitate the log in as a customer", + "description": "Imitate the log in as a customer given a generated token.", + "operationId": "imitateCustomerLogin", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "token", + "customerId", + "userId" + ], + "properties": { + "token": { + "description": "Generated customer impersonation token", + "type": "string" + }, + "customerId": { + "description": "ID of the customer", + "type": "string" + }, + "userId": { + "description": "ID of the user who generated the token", + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "$ref": "#/components/responses/ContextTokenResponse" + }, + "400": { + "description": "If the token is incorrect an error is returned", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + } } } } }, - "responses": { - "200": { - "$ref": "#/components/responses/CountryListResponse" - } - }, "security": [ { "ApiKey": [] } ] - }, - "get": { + } + }, + "/account/logout": { + "post": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " - ], - "summary": "Fetch countries", - "description": "Perform a filtered search for countries\n\n**Available Associations:**\n- `states` - States/provinces/regions within the country", - "operationId": "readCountryGet", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaFields" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "$ref": "#/components/parameters/CompressedCriteria" - } + "Login & Registration" ], + "summary": "Log out a customer", + "description": "Logs out a customer.", + "operationId": "logoutCustomer", "responses": { "200": { - "$ref": "#/components/responses/CountryListResponse" + "$ref": "#/components/responses/ContextTokenResponse" + }, + "403": { + "$ref": "#/components/responses/403" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/newsletter/confirm": { + "/account/register-confirm": { "post": { "tags": [ - "Newsletter" + "Login & Registration" ], - "summary": "Confirm a newsletter registration", - "description": "You have to use the hash from the link sent out via email to confirm the user registration.", - "operationId": "confirmNewsletter", + "summary": "Confirm a customer registration", + "description": "Confirms a customer registration when double opt-in is activated.\n\nLearn more about double opt-in registration in our guide \"Register a customer\".", + "operationId": "registerConfirm", "requestBody": { "required": true, "content": { @@ -18871,11 +18398,11 @@ ], "properties": { "hash": { - "description": "Hash parameter from link the in the confirmation mail", + "description": "Hash from the email received", "type": "string" }, "em": { - "description": "Email hash parameter from the link in the confirmation mail", + "description": "Email hash from the email received", "type": "string" } }, @@ -18886,17 +18413,13 @@ }, "responses": { "200": { - "description": "The newsletter confirmation was successful.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } + "description": "Returns the logged in customer. The customer is automatically logged in with the `sw-context-token` header provided, which can be reused for subsequent requests." }, - "400": { - "$ref": "#/components/responses/400" + "404": { + "description": "No hash provided" + }, + "412": { + "description": "The customer has already been confirmed" } }, "security": [ @@ -18906,72 +18429,141 @@ ] } }, - "/newsletter/subscribe": { + "/account/register": { "post": { "tags": [ - "Newsletter" + "Login & Registration" ], - "summary": "Create or remove a newsletter subscription", - "description": "This route is used to create/remove/confirm a newsletter subscription.\n\nThe `option` property controls what should happen:\n* `direct`: The subscription is directly active and does not need a confirmation.\n* `subscribe`: An email will be send to the provided email address containing a link to the /newsletter/confirm route.\nThe subscription is only successful, if the /newsletter/confirm route is called with the generated hashes.\n* `unsubscribe`: The email address will be removed from the newsletter subscriptions.\n* `confirmSubscribe`: Confirms the newsletter subscription for the provided email address.", - "operationId": "subscribeToNewsletter", + "summary": "Register a customer", + "description": "Registers a customer. Used both for normal customers and guest customers.See the Guide \"Register a customer\" for more information on customer registration.", + "operationId": "register", "requestBody": { "required": true, "content": { "application/json": { "schema": { - "required": [ - "email", - "option", - "storefrontUrl" - ], "properties": { "email": { - "description": "Email address that will receive the confirmation and the newsletter.", - "type": "string" - }, - "option": { - "description": "Defines what should be done.", + "description": "Email of the customer. Has to be unique, unless `guest` is `true`", "type": "string" }, - "storefrontUrl": { - "description": "Url of the storefront of the shop. This will be used for generating the link to the /newsletter/confirm inside the confirm email.", + "password": { + "description": "Password for the customer. Required, unless `guest` is `true`", "type": "string" }, "salutationId": { - "description": "Identifier of the salutation.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "description": "Id of the salutation for the customer account. Fetch options using `salutation` endpoint.", + "type": "string" }, "firstName": { - "description": "First name", + "description": "Customer first name. Value will be reused for shipping and billing address if not provided explicitly.", "type": "string" }, "lastName": { - "description": "Last name", + "description": "Customer last name. Value will be reused for shipping and billing address if not provided explicitly.", "type": "string" }, - "street": { - "description": "Street", - "type": "string" + "acceptedDataProtection": { + "description": "Flag indicating accepted data protection", + "type": "boolean" }, - "city": { - "description": "City", + "storefrontUrl": { + "description": "URL of the storefront for that registration. Used in confirmation emails. Has to be one of the configured domains of the sales channel.", "type": "string" }, - "zipCode": { - "description": "Zip code", + "billingAddress": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "shippingAddress": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "guest": { + "description": "If set, will create a guest customer. Guest customers can re-use an email address and don't need a password.", + "type": "boolean", + "default": false + }, + "birthdayDay": { + "description": "Birthday day", + "type": "integer" + }, + "birthdayMonth": { + "description": "Birthday month", + "type": "integer" + }, + "birthdayYear": { + "description": "Birthday year", + "type": "integer" + }, + "title": { + "description": "(Academic) title of the customer", "type": "string" }, - "languageId": { - "description": "Identifier of the language.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "affiliateCode": { + "description": "Field can be used to store an affiliate tracking code", + "type": "string" }, - "customFields": { - "description": "Custom field data that should be added to the subscription.", + "campaignCode": { + "description": "Field can be used to store a campaign tracking code", "type": "string" } - }, + }, + "required": [ + "email", + "password", + "firstName", + "lastName", + "acceptedDataProtection", + "storefrontUrl", + "billingAddress" + ], + "oneOf": [ + { + "properties": { + "accountType": { + "description": "Type of the customer account. Default value is 'private'.", + "type": "string", + "enum": [ + "private" + ], + "default": "private" + }, + "company": { + "type": "null" + }, + "vatIds": { + "type": "null" + } + } + }, + { + "required": [ + "accountType", + "company", + "vatIds" + ], + "properties": { + "accountType": { + "description": "Type of the customer account. Can be `private` or `business`.", + "type": "string", + "enum": [ + "business" + ] + }, + "company": { + "description": "Company of the customer. Only required when `accountType` is `business`.", + "type": "string" + }, + "vatIds": { + "description": "VAT IDs of the customer's company. Only valid when `accountType` is `business`.", + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + } + } + } + ], "type": "object" } } @@ -18983,26 +18575,10 @@ "content": { "application/json": { "schema": { - "required": [ - "success", - "status" - ], - "properties": { - "success": { - "description": "Indicates whether the subscribe request was successful.", - "type": "boolean" - }, - "status": { - "$ref": "#/components/schemas/NewsletterStatus" - } - }, - "type": "object" + "$ref": "#/components/schemas/Customer" } } } - }, - "400": { - "$ref": "#/components/responses/400" } }, "security": [ @@ -19012,25 +18588,35 @@ ] } }, - "/newsletter/unsubscribe": { + "/account/recovery-password-confirm": { "post": { "tags": [ - "Newsletter" + "Profile" ], - "summary": "Remove a newsletter subscription", - "description": "Removes a newsletter recipient from the mailing lists.", - "operationId": "unsubscribeToNewsletter", + "summary": "Reset a password with recovery credentials", + "description": "This operation is Step 2 of the password reset flow. It is required to conduct Step 1 \"Send a password recovery mail\" in order to obtain the required credentials for this step.Resets a customer's password using credentials from a password recovery mail as a validation.", + "operationId": "recoveryPassword", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "email" + "hash", + "newPassword", + "newPasswordConfirm" ], "properties": { - "email": { - "description": "Email address that should be removed from the mailing lists.", + "hash": { + "description": "Parameter from the link in the confirmation mail sent in Step 1", + "type": "string" + }, + "newPassword": { + "description": "New password for the customer", + "type": "string" + }, + "newPasswordConfirm": { + "description": "Confirmation of the new password", "type": "string" } }, @@ -19041,7 +18627,7 @@ }, "responses": { "200": { - "description": "Unsubscribing was successful.", + "description": "Returns a success response indicating a successful update.", "content": { "application/json": { "schema": { @@ -19049,9 +18635,6 @@ } } } - }, - "400": { - "$ref": "#/components/responses/400" } }, "security": [ @@ -19061,58 +18644,48 @@ ] } }, - "/category": { + "/account/recovery-password": { "post": { "tags": [ - "Category", - "Endpoints supporting Criteria " - ], - "summary": "Fetch a list of categories", - "description": "Perform a filtered search for categories.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", - "operationId": "readCategoryList", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } - } + "Profile" ], + "summary": "Send a password recovery mail", + "description": "This operation is Step 1 of the password reset flow. Make sure to implement Step 2 \"Reset password with recovery credentials\" in order to allow for the complete flow in your application. Sends a recovery mail containing a link with credentials that allows a customer to reset their password.", + "operationId": "sendRecoveryMail", "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "email", + "storefrontUrl" + ], + "properties": { + "email": { + "description": "E-Mail address to identify the customer", + "type": "string" + }, + "storefrontUrl": { + "description": "URL of the storefront to use for the generated reset link. It has to be a domain that is configured in the sales channel domain settings.", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "$ref": "#/components/responses/CategoryListResponse" + "description": "If email corresponds to an existing customer, a mail will be sent out to that customer containing a link assembled using the following schema:\n\nReturns a success indicating a successful initialisation of the reset flow.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } } }, "security": [ @@ -19120,106 +18693,126 @@ "ApiKey": [] } ] - }, - "get": { + } + }, + "/account/address/default-shipping/{addressId}": { + "patch": { "tags": [ - "Category", - "Endpoints supporting Criteria " + "Address" ], - "summary": "Fetch a list of categories", - "description": "Perform a filtered search for categories.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", - "operationId": "readCategoryListGet", + "summary": "Change a customer's default shipping address", + "description": "Updates the default (preselected) shipping addresses of a customer.", + "operationId": "defaultShippingAddress", "parameters": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "name": "addressId", + "in": "path", + "description": "Address ID", + "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } - }, - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaFields" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, + } + ], + "responses": { + "200": { + "description": "" + } + }, + "security": [ { - "$ref": "#/components/parameters/criteriaIncludes" - }, + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/account/address/default-billing/{addressId}": { + "patch": { + "tags": [ + "Address" + ], + "summary": "Change a customer's default billing address", + "description": "Updates the default (preselected) billing addresses of a customer.", + "operationId": "defaultBillingAddress", + "parameters": [ { - "$ref": "#/components/parameters/criteriaExcludes" - }, + "name": "addressId", + "in": "path", + "description": "Address ID", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "" + } + }, + "security": [ { - "$ref": "#/components/parameters/CompressedCriteria" + "ApiKey": [], + "ContextToken": [] } + ] + } + }, + "/account/address": { + "post": { + "tags": [ + "Address" ], + "summary": "Create a new address for a customer", + "description": "Creates a new address for a customer.", + "operationId": "createCustomerAddress", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomerAddressBody" + } + } + } + }, "responses": { "200": { - "$ref": "#/components/responses/CategoryListResponse" + "description": "", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/CustomerAddress" + }, + { + "$ref": "#/components/schemas/CustomerAddressRead" + } + ] + } + } + } } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/category/{navigationId}": { + "/seo-url": { "post": { "tags": [ - "Category", + "Sitemap & Routes", "Endpoints supporting Criteria " ], - "summary": "Fetch a single category", - "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", - "operationId": "readCategory", + "summary": "Fetch SEO routes", + "description": "Perform a filtered search for seo urls.", + "operationId": "readSeoUrl", "parameters": [ - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, - "schema": { - "type": "boolean" - } - }, { "name": "sw-language-id", "in": "header", @@ -19243,33 +18836,16 @@ ], "default": "1" } - }, - { - "name": "navigationId", - "in": "path", - "description": "Identifier of the category to be fetched", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "slots", - "in": "query", - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", - "schema": { - "type": "string" - } } ], "requestBody": { + "required": false, "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/ProductListingCriteria" + "$ref": "#/components/schemas/Criteria" } ] } @@ -19278,14 +18854,10 @@ }, "responses": { "200": { - "description": "The loaded category with cms page", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Category" - } - } - } + "$ref": "#/components/responses/SeoUrlListResponse" + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -19296,22 +18868,13 @@ }, "get": { "tags": [ - "Category", + "Sitemap & Routes", "Endpoints supporting Criteria " ], - "summary": "Fetch a single category", - "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", - "operationId": "readCategoryGet", + "summary": "Fetch SEO routes", + "description": "Perform a filtered search for seo urls.", + "operationId": "readSeoUrlGet", "parameters": [ - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, - "schema": { - "type": "boolean" - } - }, { "name": "sw-language-id", "in": "header", @@ -19322,35 +18885,11 @@ "pattern": "^[0-9a-f]{32}$" } }, - { - "name": "navigationId", - "in": "path", - "description": "Identifier of the category to be fetched", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "slots", - "in": "query", - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", - "schema": { - "type": "string" - } - }, { "$ref": "#/components/parameters/criteriaPage" }, { - "name": "limit", - "in": "query", - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "schema": { - "type": "integer", - "minimum": 0 - } + "$ref": "#/components/parameters/criteriaLimit" }, { "$ref": "#/components/parameters/criteriaTerm" @@ -19392,98 +18931,170 @@ "$ref": "#/components/parameters/criteriaExcludes" }, { - "name": "order", - "in": "query", - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/CompressedCriteria" + } + ], + "responses": { + "200": { + "$ref": "#/components/responses/SeoUrlListResponse" }, + "404": { + "$ref": "#/components/responses/404" + } + }, + "security": [ { - "name": "p", - "in": "query", - "description": "Search result page", - "schema": { - "type": "integer", - "default": 1 - } - }, + "ApiKey": [] + } + ] + } + }, + "/sitemap": { + "get": { + "tags": [ + "Sitemap & Routes" + ], + "summary": "Fetch sitemaps", + "description": "Fetches a list of compressed sitemap files, which are often used by search engines.", + "operationId": "readSitemap", + "parameters": [ { - "name": "manufacturer", - "in": "query", - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, "schema": { - "type": "string" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } - }, - { - "name": "min-price", - "in": "query", - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 + } + ], + "responses": { + "200": { + "description": "Returns a list of available sitemaps.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Sitemap" + } + } + } } - }, + } + }, + "security": [ { - "name": "max-price", - "in": "query", - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, + "ApiKey": [] + } + ] + } + }, + "/sitemap/{filePath}": { + "get": { + "tags": [ + "Sitemap & Routes" + ], + "summary": "Download sitemap file", + "description": "Downloads the sitemap file from the configured sitemap storage.", + "operationId": "getSitemapFile", + "parameters": [ { - "name": "rating", - "in": "query", - "description": "Filter products with a minimum average rating.", + "name": "filePath", + "in": "path", + "description": "The path to the sitemap file", + "required": true, "schema": { - "type": "integer" + "type": "string", + "pattern": ".*\\.(xml|gz)$" } }, { - "name": "shipping-free", - "in": "query", - "description": "Filters products that are marked as shipping-free.", + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, "schema": { - "type": "boolean", - "default": false + "type": "string", + "pattern": "^[0-9a-f]{32}$" } - }, + } + ], + "responses": { + "200": { + "description": "Returns the blob to download.", + "content": { + "application/xml": { + "schema": { + "type": "string", + "format": "binary" + } + }, + "application/gzip": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/app-system/{name}/generate-token": { + "post": { + "tags": [ + "App system" + ], + "summary": "Generate JWT token for app system backend", + "description": "Generate JWT token for authenticated communication with the app server", + "operationId": "generateJWTAppSystemAppServer", + "parameters": [ { - "name": "properties", - "in": "query", - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "in": "path", + "name": "name", + "required": true, + "description": "Name of the app", "schema": { "type": "string" } - }, - { - "name": "reduce-aggregations", - "in": "query", - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", - "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } } ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, "responses": { "200": { - "description": "The loaded category with cms page", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Category" + "type": "object", + "properties": { + "token": { + "type": "string" + }, + "expires": { + "type": "string", + "format": "date-time" + }, + "shopId": { + "type": "string" + } + } } } } @@ -19496,39 +19107,52 @@ ] } }, - "/sitemap": { - "get": { + "/media": { + "post": { "tags": [ - "Sitemap & Routes" + "Content" ], - "summary": "Fetch sitemaps", - "description": "Fetches a list of compressed sitemap files, which are often used by search engines.", - "operationId": "readSitemap", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "summary": "Fetch and resolve Media Entities", + "description": "Fetch one or multiple Media Entities with the corresponding Identifier.", + "operationId": "readMedia", + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "ids": { + "description": "Identifier (UUID) of the media entity to be fetched.", + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + }, + "type": "object", + "required": [ + "ids" + ] + } } } - ], + }, "responses": { "200": { - "description": "Returns a list of available sitemaps.", + "description": "The loaded MediaCollection containing the requested Media Entities.", "content": { "application/json": { "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/Sitemap" + "$ref": "#/components/schemas/Media" } } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -19536,55 +19160,45 @@ "ApiKey": [] } ] - } - }, - "/sitemap/{filePath}": { + }, "get": { "tags": [ - "Sitemap & Routes" + "Content" ], - "summary": "Download sitemap file", - "description": "Downloads the sitemap file from the configured sitemap storage.", - "operationId": "getSitemapFile", + "summary": "Fetch and resolve Media Entities", + "description": "Fetch one or multiple Media Entities with the corresponding Identifier.", + "operationId": "readMediaGet", "parameters": [ { - "name": "filePath", - "in": "path", - "description": "The path to the sitemap file", + "name": "ids[]", + "in": "query", + "description": "Identifier (UUID) of the media entity to be fetched.", "required": true, "schema": { - "type": "string", - "pattern": ".*\\.(xml|gz)$" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } } ], "responses": { "200": { - "description": "Returns the blob to download.", + "description": "The loaded MediaCollection containing the requested Media Entities.", "content": { - "application/xml": { - "schema": { - "type": "string", - "format": "binary" - } - }, - "application/gzip": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "type": "array", + "items": { + "$ref": "#/components/schemas/Media" + } } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -19594,15 +19208,15 @@ ] } }, - "/seo-url": { + "/category": { "post": { "tags": [ - "Sitemap & Routes", + "Category", "Endpoints supporting Criteria " ], - "summary": "Fetch SEO routes", - "description": "Perform a filtered search for seo urls.", - "operationId": "readSeoUrl", + "summary": "Fetch a list of categories", + "description": "Perform a filtered search for categories.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", + "operationId": "readCategoryList", "parameters": [ { "name": "sw-language-id", @@ -19645,10 +19259,7 @@ }, "responses": { "200": { - "$ref": "#/components/responses/SeoUrlListResponse" - }, - "404": { - "$ref": "#/components/responses/404" + "$ref": "#/components/responses/CategoryListResponse" } }, "security": [ @@ -19659,12 +19270,12 @@ }, "get": { "tags": [ - "Sitemap & Routes", + "Category", "Endpoints supporting Criteria " ], - "summary": "Fetch SEO routes", - "description": "Perform a filtered search for seo urls.", - "operationId": "readSeoUrlGet", + "summary": "Fetch a list of categories", + "description": "Perform a filtered search for categories.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", + "operationId": "readCategoryListGet", "parameters": [ { "name": "sw-language-id", @@ -19727,10 +19338,7 @@ ], "responses": { "200": { - "$ref": "#/components/responses/SeoUrlListResponse" - }, - "404": { - "$ref": "#/components/responses/404" + "$ref": "#/components/responses/CategoryListResponse" } }, "security": [ @@ -19740,15 +19348,15 @@ ] } }, - "/navigation/{activeId}/{rootId}": { + "/category/{navigationId}": { "post": { "tags": [ "Category", "Endpoints supporting Criteria " ], - "summary": "Fetch a navigation menu", - "description": "This endpoint returns categories that can be used as a page navigation. You can either return them as a tree or as a flat list. You can also control the depth of the tree.\n\n Instead of passing uuids, you can also use one of the following aliases for the activeId and rootId parameters to get the respective navigations of your sales channel.\n\n * main-navigation\n * service-navigation\n * footer-navigation", - "operationId": "readNavigation", + "summary": "Fetch a single category", + "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", + "operationId": "readCategory", "parameters": [ { "name": "sw-include-seo-urls", @@ -19784,65 +19392,31 @@ } }, { - "name": "activeId", + "name": "navigationId", "in": "path", - "description": "Identifier of the active category in the navigation tree (if not used, just set to the same as rootId).", + "description": "Identifier of the category to be fetched", "required": true, "schema": { - "oneOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "$ref": "#/components/schemas/NavigationType" - } - ] + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, { - "name": "rootId", - "in": "path", - "description": "Identifier of the root category for your desired navigation tree. You can use it to fetch sub-trees of your navigation tree.", - "required": true, + "name": "slots", + "in": "query", + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", "schema": { - "oneOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "$ref": "#/components/schemas/NavigationType" - } - ] + "type": "string" } } ], "requestBody": { - "required": true, "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/NoneFieldsCriteria" - }, - { - "properties": { - "depth": { - "description": "Determines the depth of fetched navigation levels.", - "type": "integer", - "format": "int32" - }, - "buildTree": { - "description": "Return the categories as a tree or as a flat list.", - "type": "array", - "items": { - "type": "object" - } - } - }, - "type": "object" + "$ref": "#/components/schemas/ProductListingCriteria" } ] } @@ -19851,11 +19425,11 @@ }, "responses": { "200": { - "description": "All available navigations", + "description": "The loaded category with cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NavigationRouteResponse" + "$ref": "#/components/schemas/Category" } } } @@ -19872,9 +19446,9 @@ "Category", "Endpoints supporting Criteria " ], - "summary": "Fetch a navigation menu", - "description": "This endpoint returns categories that can be used as a page navigation. You can either return them as a tree or as a flat list. You can also control the depth of the tree.\n\n Instead of passing uuids, you can also use one of the following aliases for the activeId and rootId parameters to get the respective navigations of your sales channel.\n\n * main-navigation\n * service-navigation\n * footer-navigation", - "operationId": "readNavigationGet", + "summary": "Fetch a single category", + "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", + "operationId": "readCategoryGet", "parameters": [ { "name": "sw-include-seo-urls", @@ -19896,68 +19470,34 @@ } }, { - "name": "activeId", - "in": "path", - "description": "Identifier of the active category in the navigation tree (if not used, just set to the same as rootId).", - "required": true, - "schema": { - "oneOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "$ref": "#/components/schemas/NavigationType" - } - ] - } - }, - { - "name": "rootId", + "name": "navigationId", "in": "path", - "description": "Identifier of the root category for your desired navigation tree. You can use it to fetch sub-trees of your navigation tree.", + "description": "Identifier of the category to be fetched", "required": true, "schema": { - "oneOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "$ref": "#/components/schemas/NavigationType" - } - ] + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, { - "name": "depth", + "name": "slots", "in": "query", - "description": "Determines the depth of fetched navigation levels.", - "required": false, + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", "schema": { - "type": "integer", - "format": "int32" + "type": "string" } }, - { - "name": "buildTree", - "in": "query", - "description": "Return the categories as a tree or as a flat list.", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "object" - } - }, - "style": "deepObject", - "explode": true - }, { "$ref": "#/components/parameters/criteriaPage" }, { - "$ref": "#/components/parameters/criteriaLimit" + "name": "limit", + "in": "query", + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "schema": { + "type": "integer", + "minimum": 0 + } }, { "$ref": "#/components/parameters/criteriaTerm" @@ -19983,6 +19523,9 @@ { "$ref": "#/components/parameters/criteriaAggregations" }, + { + "$ref": "#/components/parameters/criteriaFields" + }, { "$ref": "#/components/parameters/criteriaGrouping" }, @@ -19996,16 +19539,98 @@ "$ref": "#/components/parameters/criteriaExcludes" }, { - "$ref": "#/components/parameters/CompressedNoneFieldsCriteria" + "name": "order", + "in": "query", + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "schema": { + "type": "string" + } + }, + { + "name": "p", + "in": "query", + "description": "Search result page", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "manufacturer", + "in": "query", + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "min-price", + "in": "query", + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "max-price", + "in": "query", + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "rating", + "in": "query", + "description": "Filter products with a minimum average rating.", + "schema": { + "type": "integer" + } + }, + { + "name": "shipping-free", + "in": "query", + "description": "Filters products that are marked as shipping-free.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "properties", + "in": "query", + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "reduce-aggregations", + "in": "query", + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } } ], "responses": { "200": { - "description": "All available navigations", + "description": "The loaded category with cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NavigationRouteResponse" + "$ref": "#/components/schemas/Category" } } } @@ -20066,15 +19691,100 @@ ] } }, - "/language": { + "/revocation-request-form": { "post": { "tags": [ - "System & Context", + "Content" + ], + "summary": "Submit a revocation request form message", + "description": "Used for submitting revocation request forms. Be aware that there can be more required fields, depending on the system settings.", + "operationId": "sendRevocationRequestMail", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "email", + "contractNumber" + ], + "properties": { + "firstName": { + "description": "First name. This field may be required depending on the system settings.", + "type": "string" + }, + "lastName": { + "description": "Last name. This field may be required depending on the system settings.", + "type": "string" + }, + "email": { + "description": "Email address.", + "type": "string" + }, + "contractNumber": { + "description": "The number of the contract.", + "type": "string" + }, + "comment": { + "description": "The message of the revocation request form.", + "type": "string" + }, + "navigationId": { + "description": "Identifier of the navigation page. Can be used to override the configuration.\nTake a look at the settings of a category containing a revocation form in the administration.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "slotId": { + "description": "Identifier of the cms element.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "cmsPageType": { + "description": "Type of the content management page.", + "type": "string" + }, + "entityName": { + "description": "Entity name for slot config.", + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Message sent successfully." + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/payment-method": { + "post": { + "tags": [ + "Payment Method", "Endpoints supporting Criteria " ], - "summary": "Fetch languages", - "description": "Perform a filtered search for languages.\n\n**Available Associations:**\n- `locale` - Locale defining regional settings (date, time, number formats)\n- `translationCode` - Locale used for translating content\n- `children` - Child languages inheriting from this parent language", - "operationId": "readLanguages", + "summary": "Loads all available payment methods", + "operationId": "readPaymentMethod", "parameters": [ { "name": "sw-language-id", @@ -20102,13 +19812,22 @@ } ], "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Criteria" + }, + { + "properties": { + "onlyAvailable": { + "description": "List only available", + "type": "boolean" + } + }, + "type": "object" } ] } @@ -20117,7 +19836,7 @@ }, "responses": { "200": { - "$ref": "#/components/responses/LanguageListResponse" + "$ref": "#/components/responses/PaymentMethodListResponse" } }, "security": [ @@ -20128,12 +19847,11 @@ }, "get": { "tags": [ - "System & Context", + "Payment Method", "Endpoints supporting Criteria " ], - "summary": "Fetch languages", - "description": "Perform a filtered search for languages.\n\n**Available Associations:**\n- `locale` - Locale defining regional settings (date, time, number formats)\n- `translationCode` - Locale used for translating content\n- `children` - Child languages inheriting from this parent language", - "operationId": "readLanguagesGet", + "summary": "Loads all available payment methods", + "operationId": "readPaymentMethodGet", "parameters": [ { "name": "sw-language-id", @@ -20189,279 +19907,47 @@ }, { "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "$ref": "#/components/parameters/CompressedCriteria" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/LanguageListResponse" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/account/newsletter-recipient": { - "post": { - "tags": [ - "Profile", - "Newsletter", - "Endpoints supporting Criteria" - ], - "summary": "Fetch newsletter recipients", - "description": "Perform a filtered search for newsletter recipients.", - "operationId": "readNewsletterRecipient", - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AccountNewsletterRecipient" - } - } - } - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ], - "parameters": [ - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } - } - ] - } - }, - "/account/change-profile": { - "post": { - "tags": [ - "Profile" - ], - "summary": "Change the customer's information", - "description": "Make changes to a customer's account, like changing their name, salutation or title.", - "operationId": "changeProfile", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "firstName", - "lastName" - ], - "properties": { - "salutationId": { - "description": "Id of the salutation for the customer account. Fetch options using `salutation` endpoint.", - "type": "string" - }, - "title": { - "description": "(Academic) title of the customer", - "type": "string" - }, - "firstName": { - "description": "Customer first name. Value will be reused for shipping and billing address if not provided explicitly.", - "type": "string" - }, - "lastName": { - "description": "Customer last name. Value will be reused for shipping and billing address if not provided explicitly.", - "type": "string" - }, - "birthdayDay": { - "description": "Birthday day", - "type": "integer" - }, - "birthdayMonth": { - "description": "Birthday month", - "type": "integer" - }, - "birthdayYear": { - "description": "Birthday year", - "type": "integer" - } - }, - "oneOf": [ - { - "properties": { - "accountType": { - "description": "Type of the customer account. Default value is 'private'.", - "type": "string", - "enum": [ - "private" - ], - "default": "private" - }, - "company": { - "type": "null" - }, - "vatIds": { - "type": "null" - } - } - }, - { - "required": [ - "accountType", - "company", - "vatIds" - ], - "properties": { - "accountType": { - "description": "Type of the customer account. Can be `private` or `business`.", - "type": "string", - "enum": [ - "business" - ] - }, - "company": { - "description": "Company of the customer. Only required when `accountType` is `business`.", - "type": "string" - }, - "vatIds": { - "description": "VAT IDs of the customer's company. Only valid when `accountType` is `business`.", - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - } - } - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "Returns a success response indicating a successful update", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/account/change-email": { - "post": { - "tags": [ - "Profile" - ], - "summary": "Change the customer's email address", - "description": "Changes a customer's email address to a new email address, using their current password as a validation.", - "operationId": "changeEmail", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "email", - "emailConfirmation", - "password" - ], - "properties": { - "email": { - "description": "New email address. Has to be unique amongst all customers", - "type": "string" - }, - "emailConfirmation": { - "description": "Confirmation of the new email address.", - "type": "string" - }, - "password": { - "description": "Customer's current password", - "type": "string" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Returns a success response indicating a successful update", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } + }, + { + "$ref": "#/components/parameters/CompressedCriteria" + } + ], + "responses": { + "200": { + "$ref": "#/components/responses/PaymentMethodListResponse" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/change-language": { + "/newsletter/confirm": { "post": { "tags": [ - "Profile" + "Newsletter" ], - "summary": "Change the customer's language.", - "description": "Changes the language of the logged in customer", - "operationId": "changeLanguage", + "summary": "Confirm a newsletter registration", + "description": "You have to use the hash from the link sent out via email to confirm the user registration.", + "operationId": "confirmNewsletter", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "languageId" + "hash", + "em" ], "properties": { - "language": { - "description": "New languageId", + "hash": { + "description": "Hash parameter from link the in the confirmation mail", + "type": "string" + }, + "em": { + "description": "Email hash parameter from the link in the confirmation mail", "type": "string" } }, @@ -20472,7 +19958,7 @@ }, "responses": { "200": { - "description": "Returns a success response indicating a successful update", + "description": "The newsletter confirmation was successful.", "content": { "application/json": { "schema": { @@ -20480,45 +19966,81 @@ } } } + }, + "400": { + "$ref": "#/components/responses/400" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/change-password": { + "/newsletter/subscribe": { "post": { "tags": [ - "Profile" + "Newsletter" ], - "summary": "Change the customer's password", - "description": "Changes a customer's password using their current password as a validation.", - "operationId": "changePassword", + "summary": "Create or remove a newsletter subscription", + "description": "This route is used to create/remove/confirm a newsletter subscription.\n\nThe `option` property controls what should happen:\n* `direct`: The subscription is directly active and does not need a confirmation.\n* `subscribe`: An email will be send to the provided email address containing a link to the /newsletter/confirm route.\nThe subscription is only successful, if the /newsletter/confirm route is called with the generated hashes.\n* `unsubscribe`: The email address will be removed from the newsletter subscriptions.\n* `confirmSubscribe`: Confirms the newsletter subscription for the provided email address.", + "operationId": "subscribeToNewsletter", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "password", - "newPassword", - "newPasswordConfirm" + "email", + "option", + "storefrontUrl" ], "properties": { - "password": { - "description": "Current password of the customer", + "email": { + "description": "Email address that will receive the confirmation and the newsletter.", "type": "string" }, - "newPassword": { - "description": "New Password for the customer", + "option": { + "description": "Defines what should be done.", "type": "string" }, - "newPasswordConfirm": { - "description": "Confirmation of the new password", + "storefrontUrl": { + "description": "Url of the storefront of the shop. This will be used for generating the link to the /newsletter/confirm inside the confirm email.", + "type": "string" + }, + "salutationId": { + "description": "Identifier of the salutation.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "firstName": { + "description": "First name", + "type": "string" + }, + "lastName": { + "description": "Last name", + "type": "string" + }, + "street": { + "description": "Street", + "type": "string" + }, + "city": { + "description": "City", + "type": "string" + }, + "zipCode": { + "description": "Zip code", + "type": "string" + }, + "languageId": { + "description": "Identifier of the language.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "customFields": { + "description": "Custom field data that should be added to the subscription.", "type": "string" } }, @@ -20529,43 +20051,65 @@ }, "responses": { "200": { - "description": "Returns a success response indicating a successful update.", + "description": "Success", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "required": [ + "success", + "status" + ], + "properties": { + "success": { + "description": "Indicates whether the subscribe request was successful.", + "type": "boolean" + }, + "status": { + "description": "The subscription status.", + "type": "string", + "enum": [ + "notSet", + "optIn", + "optOut", + "direct" + ] + } + }, + "type": "object" } } } + }, + "400": { + "$ref": "#/components/responses/400" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/convert-guest": { + "/newsletter/unsubscribe": { "post": { "tags": [ - "Profile" + "Newsletter" ], - "summary": "Convert a guest customer to a registered customer", - "description": "Takes a password to convert a guest customer to a registered customer. The customer can then log in with the provided password in the future.", - "operationId": "convertGuest", + "summary": "Remove a newsletter subscription", + "description": "Removes a newsletter recipient from the mailing lists.", + "operationId": "unsubscribeToNewsletter", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "password" + "email" ], "properties": { - "password": { - "description": "New Password for the customer", + "email": { + "description": "Email address that should be removed from the mailing lists.", "type": "string" } }, @@ -20576,7 +20120,7 @@ }, "responses": { "200": { - "description": "Returns a success response indicating a successful update.", + "description": "Unsubscribing was successful.", "content": { "application/json": { "schema": { @@ -20584,72 +20128,118 @@ } } } + }, + "400": { + "$ref": "#/components/responses/400" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/customer-recovery-is-expired": { + "/product/{productId}/cross-selling": { "post": { "tags": [ - "Profile" + "Product" ], - "summary": "Checks if the customer recovery entry for a given hash is expired.", - "description": "This can be used to validate a provided hash has a valid and not expired customer recovery hash.", - "operationId": "getCustomerRecoveryIsExpired", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "hash" - ], - "properties": { - "hash": { - "description": "Parameter from the link in the confirmation mail sent in Step 1", - "type": "string" - } - }, - "type": "object" + "summary": "Fetch cross-selling groups of a product", + "description": "This route is used to load the cross sellings for a product. A product has several cross selling definitions in which several products are linked. The route returns the cross sellings together with the linked products", + "operationId": "readProductCrossSellings", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Product ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "Found cross sellings", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrossSellingElementCollection" + } } } } - }, + }, + "security": [ + { + "ApiKey": [] + } + ] + }, + "get": { + "tags": [ + "Product" + ], + "summary": "Fetch cross-selling groups of a product", + "description": "This route is used to load the cross sellings for a product. A product has several cross selling definitions in which several products are linked. The route returns the cross sellings together with the linked products", + "operationId": "readProductCrossSellingsGet", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Product ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, + "schema": { + "type": "boolean" + } + } + ], "responses": { "200": { - "description": "Returns a CustomerRecoveryIsExpiredResponse that indicates if the hash is expired or not.", + "description": "Found cross sellings", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "isExpired": { - "type": "boolean" - } - }, - "required": [ - "isExpired" - ] - } - }, - "apiAlias": { - "enum": [ - "array_struct" - ], - "type": "string" - } - } + "$ref": "#/components/schemas/CrossSellingElementCollection" } } } @@ -20662,15 +20252,77 @@ ] } }, - "/account/customer": { + "/product/{productId}": { "post": { "tags": [ - "Profile", - "Endpoints supporting Criteria " + "Product" + ], + "summary": "Fetch a single product", + "description": "This route is used to load a single product with the corresponding details. In addition to loading the data, the best variant of the product is determined when a parent id is passed.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", + "operationId": "readProductDetail", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Product ID", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$'" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "in": "header", + "name": "sw-include-seo-urls", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, + { + "description": "Instructs Shopware to skip loading the configurator data", + "in": "query", + "name": "skipConfigurator", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Instructs Shopware to skip loading the CMS page data", + "in": "query", + "name": "skipCmsPage", + "required": false, + "schema": { + "type": "boolean" + } + } ], - "summary": "Get information about current customer", - "description": "Returns information about the current customer.\n\n**Available Associations:**\n- `group` - Customer group determining pricing and permissions\n- `language` - Preferred language for customer communication\n- `lastPaymentMethod` - Last used payment method by the customer\n- `defaultBillingAddress` - Default billing address for the customer\n- `activeBillingAddress` - Currently active billing address in the session\n- `defaultShippingAddress` - Default shipping address for the customer\n- `activeShippingAddress` - Currently active shipping address in the session\n- `salutation` - Customer salutation (e.g., Mr., Mrs., Ms.)\n- `addresses` - All addresses saved for the customer\n- `tags` - Tags assigned to the customer for organization and segmentation", - "operationId": "readCustomer", "requestBody": { "required": false, "content": { @@ -20687,11 +20339,11 @@ }, "responses": { "200": { - "description": "Returns the logged in customer, also for guest sessions. Check for the value of `guest` field to see whether the customer is a guest.", + "description": "Product information along with variant groups and options", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Customer" + "$ref": "#/components/schemas/ProductDetailResponse" } } } @@ -20699,122 +20351,118 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } + ] + }, + "get": { + "tags": [ + "Product" ], + "summary": "Fetch a single product", + "description": "This route is used to load a single product with the corresponding details. In addition to loading the data, the best variant of the product is determined when a parent id is passed.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", + "operationId": "readProductDetailGet", "parameters": [ { - "name": "sw-include-search-info", + "name": "productId", + "in": "path", + "description": "Product ID", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$'" + } + }, + { + "name": "sw-language-id", "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "description": "Instructs Shopware to return the response in the given language.", "required": false, "schema": { "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" + "pattern": "^[0-9a-f]{32}$" } - } - ] - }, - "delete": { - "tags": [ - "Profile" - ], - "summary": "Delete the customer's profile", - "description": "Deletes a customer profile along with their addresses, wishlists and associated data. Created orders and their payment/shipping information (addresses) and reviews are not deleted.", - "operationId": "deleteCustomer", - "responses": { - "204": { - "description": "Returns a no content response indicating a successful removal of the customer profile" - } - }, - "security": [ + }, { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/account/address/{addressId}": { - "delete": { - "tags": [ - "Address" - ], - "summary": "Delete an address of a customer", - "description": "Delete an address of customer.\n\n Only addresses which are not set as default addresses for shipping or billing can be deleted. You can check the current default addresses of your customer using the profile information endpoint and change them using the default address endpoint.\n\n **A customer must have at least one address (which can be used for shipping and billing).**\n\n An automatic fallback is not applied.", - "operationId": "deleteCustomerAddress", - "parameters": [ + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "in": "header", + "name": "sw-include-seo-urls", + "required": false, + "schema": { + "type": "boolean" + } + }, { - "name": "addressId", - "in": "path", - "description": "ID of the address to be deleted.", - "required": true, + "description": "Instructs Shopware to skip loading the configurator data", + "in": "query", + "name": "skipConfigurator", + "required": false, "schema": { - "type": "string" + "type": "boolean" } - } - ], - "responses": { - "204": { - "description": "No Content response, when the address has been deleted" }, - "400": { - "description": "Response containing a list of errors, most likely due to the address being in use" - } - }, - "security": [ { - "ApiKey": [], - "ContextToken": [] - } - ] - }, - "patch": { - "tags": [ - "Address" - ], - "summary": "Modify an address of a customer", - "description": "Modifies an existing address of a customer.", - "operationId": "updateCustomerAddress", - "parameters": [ + "description": "Instructs Shopware to skip loading the CMS page data", + "in": "query", + "name": "skipCmsPage", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, { - "name": "addressId", - "in": "path", - "description": "Address ID", - "required": true, - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedNoneFieldsCriteria" } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomerAddressBody" - } - } - } - }, "responses": { "200": { - "description": "", + "description": "Product information along with variant groups and options", "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/CustomerAddress" - }, - { - "$ref": "#/components/schemas/CustomerAddressRead" - } - ] + "$ref": "#/components/schemas/ProductDetailResponse" } } } @@ -20822,72 +20470,31 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/list-address": { + "/product": { "post": { "tags": [ - "Address", + "Product", "Endpoints supporting Criteria " ], - "summary": "Fetch addresses of a customer", - "description": "Lists all addresses of the current customer and allows filtering them based on a criteria.", - "operationId": "listAddress", - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "required": [ - "elements" - ], - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CustomerAddress" - } - } - } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ], + "summary": "Fetch a list of products", + "description": "List products that match the given criteria. For performance reasons a limit should always be set.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", + "operationId": "readProduct", "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, { "name": "sw-include-search-info", "in": "header", @@ -20902,54 +20509,24 @@ "default": "1" } } - ] - } - }, - "/account/login": { - "post": { - "tags": [ - "Login & Registration" ], - "summary": "Log in a customer", - "description": "Logs in customers given their credentials.", - "operationId": "loginCustomer", "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "required": [ - "username", - "password" - ], - "properties": { - "username": { - "description": "Email", - "type": "string" - }, - "password": { - "description": "Password", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "401": { - "description": "If credentials are incorrect an error is returned", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - } - } - } + "$ref": "#/components/responses/ProductListResponse" } }, "security": [ @@ -20957,58 +20534,78 @@ "ApiKey": [] } ] - } - }, - "/account/login/imitate-customer": { - "post": { + }, + "get": { "tags": [ - "Login & Registration" + "Product", + "Endpoints supporting Criteria " ], - "summary": "Imitate the log in as a customer", - "description": "Imitate the log in as a customer given a generated token.", - "operationId": "imitateCustomerLogin", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "token", - "customerId", - "userId" - ], - "properties": { - "token": { - "description": "Generated customer impersonation token", - "type": "string" - }, - "customerId": { - "description": "ID of the customer", - "type": "string" - }, - "userId": { - "description": "ID of the user who generated the token", - "type": "string" - } - }, - "type": "object" - } + "summary": "Fetch a list of products", + "description": "List products that match the given criteria. For performance reasons a limit should always be set.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", + "operationId": "readProductGet", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" } - }, + ], "responses": { - "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "400": { - "description": "If the token is incorrect an error is returned", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - } - } - } + "200": { + "$ref": "#/components/responses/ProductListResponse" } }, "security": [ @@ -21018,71 +20615,89 @@ ] } }, - "/account/logout": { + "/product/{productId}/reviews": { "post": { "tags": [ - "Login & Registration" + "Product", + "Endpoints supporting Criteria " ], - "summary": "Log out a customer", - "description": "Logs out a customer.", - "operationId": "logoutCustomer", - "responses": { - "200": { - "$ref": "#/components/responses/ContextTokenResponse" + "summary": "Fetch product reviews", + "description": "Perform a filtered search for product reviews.", + "operationId": "readProductReviews", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Identifier of the product.", + "required": true, + "schema": { + "type": "string" + } }, - "403": { - "$ref": "#/components/responses/403" - } - }, - "security": [ { - "ApiKey": [], - "ContextToken": [] + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } } - ] - } - }, - "/account/register-confirm": { - "post": { - "tags": [ - "Login & Registration" ], - "summary": "Confirm a customer registration", - "description": "Confirms a customer registration when double opt-in is activated.\n\nLearn more about double opt-in registration in our guide \"Register a customer\".", - "operationId": "registerConfirm", "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "required": [ - "hash", - "em" - ], - "properties": { - "hash": { - "description": "Hash from the email received", - "type": "string" - }, - "em": { - "description": "Email hash from the email received", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Returns the logged in customer. The customer is automatically logged in with the `sw-context-token` header provided, which can be reused for subsequent requests." - }, - "404": { - "description": "No hash provided" - }, - "412": { - "description": "The customer has already been confirmed" + "description": "Entity search result containing product reviews", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductReview" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } } }, "security": [ @@ -21090,159 +20705,106 @@ "ApiKey": [] } ] - } - }, - "/account/register": { - "post": { - "tags": [ - "Login & Registration" - ], - "summary": "Register a customer", - "description": "Registers a customer. Used both for normal customers and guest customers.See the Guide \"Register a customer\" for more information on customer registration.", - "operationId": "register", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "properties": { - "email": { - "description": "Email of the customer. Has to be unique, unless `guest` is `true`", - "type": "string" - }, - "password": { - "description": "Password for the customer. Required, unless `guest` is `true`", - "type": "string" - }, - "salutationId": { - "description": "Id of the salutation for the customer account. Fetch options using `salutation` endpoint.", - "type": "string" - }, - "firstName": { - "description": "Customer first name. Value will be reused for shipping and billing address if not provided explicitly.", - "type": "string" - }, - "lastName": { - "description": "Customer last name. Value will be reused for shipping and billing address if not provided explicitly.", - "type": "string" - }, - "acceptedDataProtection": { - "description": "Flag indicating accepted data protection", - "type": "boolean" - }, - "storefrontUrl": { - "description": "URL of the storefront for that registration. Used in confirmation emails. Has to be one of the configured domains of the sales channel.", - "type": "string" - }, - "requestedGroupId": { - "description": "Optional customer group registration request. The customer is created in the current sales channel group and this field stores the requested target group. The group must be available for registration in the current sales channel.", - "type": "string" - }, - "billingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "shippingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "guest": { - "description": "If set, will create a guest customer. Guest customers can re-use an email address and don't need a password.", - "type": "boolean", - "default": false - }, - "birthdayDay": { - "description": "Birthday day", - "type": "integer" - }, - "birthdayMonth": { - "description": "Birthday month", - "type": "integer" - }, - "birthdayYear": { - "description": "Birthday year", - "type": "integer" - }, - "title": { - "description": "(Academic) title of the customer", - "type": "string" - }, - "affiliateCode": { - "description": "Field can be used to store an affiliate tracking code", - "type": "string" - }, - "campaignCode": { - "description": "Field can be used to store a campaign tracking code", - "type": "string" - } - }, - "required": [ - "email", - "password", - "firstName", - "lastName", - "acceptedDataProtection", - "storefrontUrl", - "billingAddress" - ], - "oneOf": [ - { - "properties": { - "accountType": { - "description": "Type of the customer account. Default value is 'private'.", - "type": "string", - "enum": [ - "private" - ], - "default": "private" - }, - "company": { - "type": "null" - }, - "vatIds": { - "type": "null" - } - } - }, - { - "required": [ - "accountType", - "company", - "vatIds" - ], - "properties": { - "accountType": { - "description": "Type of the customer account. Can be `private` or `business`.", - "type": "string", - "enum": [ - "business" - ] - }, - "company": { - "description": "Company of the customer. Only required when `accountType` is `business`.", - "type": "string" - }, - "vatIds": { - "description": "VAT IDs of the customer's company. Only valid when `accountType` is `business`.", - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - } - } - } - ], - "type": "object" - } + }, + "get": { + "tags": [ + "Product", + "Endpoints supporting Criteria " + ], + "summary": "Fetch product reviews", + "description": "Perform a filtered search for product reviews.", + "operationId": "readProductReviewsGet", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Identifier of the product.", + "required": true, + "schema": { + "type": "string" } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" } - }, + ], "responses": { "200": { - "description": "Success", + "description": "Entity search result containing product reviews", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Customer" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductReview" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -21255,36 +20817,66 @@ ] } }, - "/account/recovery-password-confirm": { + "/product/{productId}/review": { "post": { "tags": [ - "Profile" + "Product" + ], + "summary": "Save a product review", + "description": "Saves a review for a product. Reviews have to be activated in the settings.", + "operationId": "saveProductReview", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Identifier of the product which is reviewed.", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } ], - "summary": "Reset a password with recovery credentials", - "description": "This operation is Step 2 of the password reset flow. It is required to conduct Step 1 \"Send a password recovery mail\" in order to obtain the required credentials for this step.Resets a customer's password using credentials from a password recovery mail as a validation.", - "operationId": "recoveryPassword", "requestBody": { - "required": true, "content": { "application/json": { "schema": { "required": [ - "hash", - "newPassword", - "newPasswordConfirm" + "title", + "content", + "points" ], "properties": { - "hash": { - "description": "Parameter from the link in the confirmation mail sent in Step 1", + "name": { + "description": "The name of the review author. If not set, the first name of the customer is chosen.", "type": "string" }, - "newPassword": { - "description": "New password for the customer", + "email": { + "description": "The email address of the review author. If not set, the email of the customer is chosen.", "type": "string" }, - "newPasswordConfirm": { - "description": "Confirmation of the new password", + "title": { + "description": "The title of the review.", + "type": "string" + }, + "content": { + "description": "The content of review.", "type": "string" + }, + "points": { + "description": "The review rating for the product.", + "type": "number", + "format": "double" } }, "type": "object" @@ -21294,47 +20886,74 @@ }, "responses": { "200": { - "description": "Returns a success response indicating a successful update.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } + "description": "Success response indicating the review was saved successfully." } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/account/recovery-password": { + "/product/{productId}/find-variant": { "post": { "tags": [ - "Profile" + "Product" + ], + "summary": "Search for a matching variant by product options.", + "description": "Performs a search for product variants and returns the best matching variant.", + "operationId": "searchProductVariantIds", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Product ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } ], - "summary": "Send a password recovery mail", - "description": "This operation is Step 1 of the password reset flow. Make sure to implement Step 2 \"Reset password with recovery credentials\" in order to allow for the complete flow in your application. Sends a recovery mail containing a link with credentials that allows a customer to reset their password.", - "operationId": "sendRecoveryMail", "requestBody": { - "required": true, "content": { "application/json": { "schema": { "required": [ - "email", - "storefrontUrl" + "options" ], "properties": { - "email": { - "description": "E-Mail address to identify the customer", - "type": "string" + "options": { + "oneOf": [ + { + "description": "The options parameter for the variant to find.", + "type": "array", + "items": { + "type": "string" + } + }, + { + "description": "The options parameter as a map of groupId => optionId.", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + ] }, - "storefrontUrl": { - "description": "URL of the storefront to use for the generated reset link. It has to be a domain that is configured in the sales channel domain settings.", + "switchedGroup": { + "description": "The id of the option group that has been switched.", "type": "string" } }, @@ -21345,11 +20964,11 @@ }, "responses": { "200": { - "description": "If email corresponds to an existing customer, a mail will be sent out to that customer containing a link assembled using the following schema:\n\nReturns a success indicating a successful initialisation of the reset flow.", + "description": "Returns an FoundCombination struct containing the ids matching the search.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/FindProductVariantRouteResponse" } } } @@ -21360,22 +20979,51 @@ "ApiKey": [] } ] - } - }, - "/account/address/default-shipping/{addressId}": { - "patch": { + }, + "get": { "tags": [ - "Address" + "Product" ], - "summary": "Change a customer's default shipping address", - "description": "Updates the default (preselected) shipping addresses of a customer.", - "operationId": "defaultShippingAddress", + "summary": "Search for a matching variant by product options.", + "description": "Performs a search for product variants and returns the best matching variant.", + "operationId": "searchProductVariantIdsGet", "parameters": [ { - "name": "addressId", - "in": "path", - "description": "Address ID", + "name": "productId", + "in": "path", + "description": "Product ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "options[]", + "in": "query", + "description": "The options parameter for the variant to find. Array of option IDs.", "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "switchedGroup", + "in": "query", + "description": "The id of the option group that has been switched.", + "required": false, "schema": { "type": "string" } @@ -21383,80 +21031,50 @@ ], "responses": { "200": { - "description": "" + "description": "Returns an FoundCombination struct containing the ids matching the search.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FindProductVariantRouteResponse" + } + } + } } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/address/default-billing/{addressId}": { - "patch": { + "/customer/wishlist/add/{productId}": { + "post": { "tags": [ - "Address" + "Wishlist" ], - "summary": "Change a customer's default billing address", - "description": "Updates the default (preselected) billing addresses of a customer.", - "operationId": "defaultBillingAddress", + "summary": "Add a product to a wishlist", + "description": "Adds a product to a customers wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "addProductOnWishlist", "parameters": [ { - "name": "addressId", + "name": "productId", "in": "path", - "description": "Address ID", + "description": "Identifier of the product to be added.", "required": true, "schema": { - "type": "string" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } ], "responses": { "200": { - "description": "" - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/account/address": { - "post": { - "tags": [ - "Address" - ], - "summary": "Create a new address for a customer", - "description": "Creates a new address for a customer.", - "operationId": "createCustomerAddress", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomerAddressBody" - } - } - } - }, - "responses": { - "200": { - "description": "", + "description": "Returns a success response.", "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/CustomerAddress" - }, - { - "$ref": "#/components/schemas/CustomerAddressRead" - } - ] + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -21470,15 +21088,15 @@ ] } }, - "/salutation": { + "/customer/wishlist": { "post": { "tags": [ - "System & Context", + "Wishlist", "Endpoints supporting Criteria " ], - "summary": "Fetch salutations", - "description": "Fetches salutations with a criteria obj.", - "operationId": "readSalutation", + "summary": "Fetch a wishlist", + "description": "Fetch a customer's wishlist. Products on the wishlist can be filtered using a criteria object.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "readCustomerWishlist", "parameters": [ { "name": "sw-language-id", @@ -21521,184 +21139,113 @@ }, "responses": { "200": { - "$ref": "#/components/responses/SalutationListResponse" + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WishlistLoadRouteResponse" + } + } + } } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] - }, - "get": { + } + }, + "/customer/wishlist/merge": { + "post": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Wishlist" ], - "summary": "Fetch salutations", - "description": "Perform a filtered search for salutations.", - "operationId": "readSalutationGet", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "summary": "Create a wishlist for a customer", + "description": "Create a new wishlist for a logged in customer or extend the existing wishlist given a set of products.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * A customer can only have a single wishlist.\n * The wishlist feature has to be activated.", + "operationId": "mergeProductOnWishlist", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "productIds": { + "description": "List product id", + "type": "array", + "items": { + "description": "product id", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + }, + "type": "object" + } } - }, - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaFields" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "$ref": "#/components/parameters/CompressedCriteria" } - ], + }, "responses": { "200": { - "$ref": "#/components/responses/SalutationListResponse" + "description": "Returns a success response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/document/download/{documentId}/{deepLinkCode}": { - "post": { + "/customer/wishlist/delete/{productId}": { + "delete": { "tags": [ - "Document" + "Wishlist" ], - "summary": "Download generated document", - "description": "Returns generated document to download.", - "operationId": "download", + "summary": "Remove a product from a wishlist", + "description": "Removes a product from a customer's wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "deleteProductOnWishlist", "parameters": [ { - "name": "documentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "deepLinkCode", - "required": true, + "name": "productId", "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "If a document is rendered on the fly the provided language id is added to fallback languages while the order language has priority. It does not change already generated documents.", - "required": false, + "description": "The identifier of the product to be removed from the wishlist.", + "required": true, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } } ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "email": { - "type": "string" - }, - "zipcode": { - "type": "string" - } - }, - "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." - } - } - } - }, "responses": { "200": { - "description": "Success", + "description": "Returns a success response indicating a successful removal.", "content": { - "application/pdf": { - "schema": { - "type": "string", - "format": "binary" - } - }, - "text/html": { - "schema": { - "type": "string" - } - }, - "application/xml": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/SuccessResponse" } } } }, - "204": { - "description": "DEPRECATED: Returns a no content response when no document is found. Will be changed in v6.8.0.0 and returns a 404 response instead." - }, - "403": { - "description": "Forbidden." - }, "404": { - "description": "Document not found." - }, - "406": { - "description": "The requested mime type is not supported." + "description": "The removal of the product failed. Probably because the product could not be found on the wishlist.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + } + } + } } }, "security": [ @@ -21707,54 +21254,21 @@ "ContextToken": [] } ] - }, - "get": { + } + }, + "/order/state/cancel": { + "post": { "tags": [ - "Document" + "Order" ], - "summary": "Download generated document", - "description": "Returns generated document to download.", - "operationId": "downloadGet", + "summary": "Cancel an order", + "description": "Cancels an order. The order state will be set to 'cancelled'.", + "operationId": "cancelOrder", "parameters": [ - { - "name": "documentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "deepLinkCode", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "email", - "required": false, - "in": "query", - "schema": { - "type": "string" - }, - "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." - }, - { - "name": "zipcode", - "required": false, - "in": "query", - "schema": { - "type": "string" - }, - "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." - }, { "name": "sw-language-id", "in": "header", - "description": "If a document is rendered on the fly the provided language id is added to fallback languages while the order language has priority. It does not change already generated documents.", + "description": "Instructs Shopware to return the response in the given language.", "required": false, "schema": { "type": "string", @@ -21762,39 +21276,36 @@ } } ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "orderId": { + "description": "The identifier of the order to be canceled.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "type": "object", + "required": [ + "orderId" + ] + } + } + } + }, "responses": { "200": { - "description": "Success", + "description": "Returns the state of the state machine\n\n example: More information about the state machine can be found in the corresponding guide: [Using the state machine](https://developer.shopware.com/docs/guides/plugins/plugins/checkout/order/using-the-state-machine)", "content": { - "application/pdf": { - "schema": { - "type": "string", - "format": "binary" - } - }, - "text/html": { - "schema": { - "type": "string" - } - }, - "application/xml": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/StateMachineState" } } } - }, - "204": { - "description": "DEPRECATED: Returns a no content response when no document is found. Will be changed in v6.8.0.0 and returns a 404 response instead." - }, - "403": { - "description": "Forbidden." - }, - "404": { - "description": "Document not found." - }, - "406": { - "description": "The requested mime type is not supported." } }, "security": [ @@ -21805,24 +21316,16 @@ ] } }, - "/product/{productId}/cross-selling": { + "/order": { "post": { "tags": [ - "Product" + "Order", + "Endpoints supporting Criteria " ], - "summary": "Fetch cross-selling groups of a product", - "description": "This route is used to load the cross sellings for a product. A product has several cross selling definitions in which several products are linked. The route returns the cross sellings together with the linked products", - "operationId": "readProductCrossSellings", + "summary": "Fetch a list of orders", + "description": "List orders of a customer.\n\n**Available Associations:**\n- `stateMachineState` - Current order state (e.g., open, in_progress, completed, cancelled)\n- `primaryOrderDelivery` - Primary delivery information for the order\n- `primaryOrderTransaction` - Primary payment transaction for the order\n- `orderCustomer` - Customer information associated with the order\n- `currency` - Currency used for the order\n- `language` - Language used when placing the order\n- `addresses` - All addresses associated with the order (billing and shipping)\n- `billingAddress` - Billing address for the order\n- `deliveries` - Delivery information including shipping address and tracking\n- `lineItems` - Order line items (products, discounts, fees)\n- `transactions` - Payment transactions for the order\n- `documents` - Generated documents (invoices, delivery notes, credit notes)\n- `tags` - Tags assigned to the order for organization and filtering", + "operationId": "readOrder", "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Product ID", - "required": true, - "schema": { - "type": "string" - } - }, { "name": "sw-language-id", "in": "header", @@ -21834,77 +21337,104 @@ } }, { - "name": "sw-include-seo-urls", + "name": "sw-include-search-info", "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", "required": false, "schema": { - "type": "boolean" + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/NoneFieldsCriteria" + }, + { + "properties": { + "checkPromotion": { + "description": "Check if the payment method of the order is still changeable.", + "type": "boolean" + }, + "filter": { + "type": "array", + "description": "Pass the deepLinkCode criteria filter to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "equals" + ] + }, + "field": { + "type": "string", + "enum": [ + "deepLinkCode" + ] + }, + "value": { + "type": "string" + } + }, + "required": [ + "type", + "field", + "value" + ] + } + ] + } + }, + "email": { + "description": "The email address of the customer. Pass this value to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", + "type": "string", + "format": "email" + }, + "zipcode": { + "description": "The zip/postal code of the billing address of the customer. Pass this value to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", + "type": "string" + }, + "login": { + "description": "If set and when handling a guest order, a context token will be returned in the response header with a logged-in session.", + "type": "boolean" + } + }, + "type": "object" + } + ] + } } } - ], + }, "responses": { "200": { - "description": "Found cross sellings", - "content": { - "application/json": { + "description": "An array of orders and an indicator if the payment of the order can be changed.", + "headers": { + "sw-context-token": { + "description": "Contains sw-context-token value, if login parameter is set to true and a guest order was found and the correct credentials were provided.", "schema": { - "$ref": "#/components/schemas/CrossSellingElementCollection" + "type": "string" } } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - }, - "get": { - "tags": [ - "Product" - ], - "summary": "Fetch cross-selling groups of a product", - "description": "This route is used to load the cross sellings for a product. A product has several cross selling definitions in which several products are linked. The route returns the cross sellings together with the linked products", - "operationId": "readProductCrossSellingsGet", - "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Product ID", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, - "schema": { - "type": "boolean" - } - } - ], - "responses": { - "200": { - "description": "Found cross sellings", + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CrossSellingElementCollection" + "$ref": "#/components/schemas/OrderRouteResponse" } } } @@ -21912,30 +21442,21 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/product/{productId}": { + "/order/payment": { "post": { "tags": [ - "Product" + "Order" ], - "summary": "Fetch a single product", - "description": "This route is used to load a single product with the corresponding details. In addition to loading the data, the best variant of the product is determined when a parent id is passed.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", - "operationId": "readProductDetail", + "summary": "Update the payment method of an order", + "description": "Changes the payment method of a specific order. You can use the /order route to find out if the payment method of an order can be changed - take a look at the `paymentChangeable`- array in the response.", + "operationId": "orderSetPayment", "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Product ID", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$'" - } - }, { "name": "sw-language-id", "in": "header", @@ -21945,70 +21466,41 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } - }, - { - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "in": "header", - "name": "sw-include-seo-urls", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } - }, - { - "description": "Instructs Shopware to skip loading the configurator data", - "in": "query", - "name": "skipConfigurator", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Instructs Shopware to skip loading the CMS page data", - "in": "query", - "name": "skipCmsPage", - "required": false, - "schema": { - "type": "boolean" - } } ], "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/NoneFieldsCriteria" + "required": [ + "paymentMethodId", + "orderId" + ], + "properties": { + "paymentMethodId": { + "description": "The identifier of the paymentMethod to be set", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "orderId": { + "description": "The identifier of the order.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "Product information along with variant groups and options", + "description": "Successfully updated the payment method of the order.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductDetailResponse" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -22016,118 +21508,58 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] - }, + } + }, + "/order/download/{orderId}/{downloadId}": { "get": { "tags": [ - "Product" + "Order" ], - "summary": "Fetch a single product", - "description": "This route is used to load a single product with the corresponding details. In addition to loading the data, the best variant of the product is determined when a parent id is passed.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", - "operationId": "readProductDetailGet", + "summary": "Download a purchased file", + "description": "Download a file included in the given order and with the given id. Access must be granted.", + "operationId": "orderDownloadFile", "parameters": [ { - "name": "productId", + "name": "orderId", "in": "path", - "description": "Product ID", "required": true, "schema": { "type": "string", - "pattern": "^[0-9a-f]{32}$'" + "pattern": "^[0-9a-f]{32}$" } }, { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "name": "downloadId", + "in": "path", + "required": true, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } }, { - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "name": "sw-language-id", "in": "header", - "name": "sw-include-seo-urls", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Instructs Shopware to skip loading the configurator data", - "in": "query", - "name": "skipConfigurator", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Instructs Shopware to skip loading the CMS page data", - "in": "query", - "name": "skipCmsPage", + "description": "Instructs Shopware to return the response in the given language.", "required": false, "schema": { - "type": "boolean" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } - }, - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "$ref": "#/components/parameters/CompressedNoneFieldsCriteria" } ], "responses": { "200": { - "description": "Product information along with variant groups and options", + "description": "An arbitrary binary file.", "content": { - "application/json": { + "application/octet-stream": { "schema": { - "$ref": "#/components/schemas/ProductDetailResponse" + "type": "string", + "format": "binary" } } } @@ -22135,20 +21567,21 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/product": { + "/language": { "post": { "tags": [ - "Product", + "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch a list of products", - "description": "List products that match the given criteria. For performance reasons a limit should always be set.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", - "operationId": "readProduct", + "summary": "Fetch languages", + "description": "Perform a filtered search for languages.\n\n**Available Associations:**\n- `locale` - Locale defining regional settings (date, time, number formats)\n- `translationCode` - Locale used for translating content\n- `children` - Child languages inheriting from this parent language", + "operationId": "readLanguages", "parameters": [ { "name": "sw-language-id", @@ -22191,7 +21624,7 @@ }, "responses": { "200": { - "$ref": "#/components/responses/ProductListResponse" + "$ref": "#/components/responses/LanguageListResponse" } }, "security": [ @@ -22202,12 +21635,12 @@ }, "get": { "tags": [ - "Product", + "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch a list of products", - "description": "List products that match the given criteria. For performance reasons a limit should always be set.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", - "operationId": "readProductGet", + "summary": "Fetch languages", + "description": "Perform a filtered search for languages.\n\n**Available Associations:**\n- `locale` - Locale defining regional settings (date, time, number formats)\n- `translationCode` - Locale used for translating content\n- `children` - Child languages inheriting from this parent language", + "operationId": "readLanguagesGet", "parameters": [ { "name": "sw-language-id", @@ -22270,7 +21703,7 @@ ], "responses": { "200": { - "$ref": "#/components/responses/ProductListResponse" + "$ref": "#/components/responses/LanguageListResponse" } }, "security": [ @@ -22280,89 +21713,249 @@ ] } }, - "/product/{productId}/reviews": { + "/context": { + "get": { + "tags": [ + "System & Context" + ], + "summary": "Fetch the current context", + "description": "Fetches the current context. This includes for example the `customerGroup`, `currency`, `taxRules` and many more.", + "operationId": "readContext", + "responses": { + "200": { + "description": "Returns the current context.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SalesChannelContext" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + }, + "patch": { + "tags": [ + "System & Context" + ], + "summary": "Modify the current context", + "description": "Used for switching the context. A typical example would be changing the language or changing the currency.", + "operationId": "updateContext", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "currencyId": { + "description": "Currency", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "languageId": { + "description": "Language", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "billingAddressId": { + "description": "Billing Address", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingAddressId": { + "description": "Shipping Address", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "paymentMethodId": { + "description": "Payment Method", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingMethodId": { + "description": "Shipping Method", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryId": { + "description": "Country", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryStateId": { + "description": "Country State", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "$ref": "#/components/responses/ContextTokenResponse" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/context/gateway": { "post": { + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "appName" + ], + "properties": { + "appName": { + "type": "string" + }, + "data": { + "type": "object" + } + }, + "type": "object" + } + } + } + }, "tags": [ - "Product", - "Endpoints supporting Criteria " + "Gateway" ], - "summary": "Fetch product reviews", - "description": "Perform a filtered search for product reviews.", - "operationId": "readProductReviews", + "summary": "Call the context gateway", + "description": "Call the context gateway, which is used to manipulate certain aspects of context (e.g. selected payment methods, register customer, etc.).", + "operationId": "contextGateway", + "responses": { + "200": { + "$ref": "#/components/responses/ContextTokenResponse" + }, + "400": { + "description": "App server communication error" + }, + "422": { + "description": "Error provided by App Server with message to show customer" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + }, + "get": { + "tags": [ + "Gateway" + ], + "summary": "Call the context gateway", + "description": "Call the context gateway, which is used to manipulate certain aspects of context (e.g. selected payment methods, register customer, etc.). Please prefer using the POST version of this endpoint.", + "operationId": "contextGatewayGet", "parameters": [ { - "name": "productId", - "in": "path", - "description": "Identifier of the product.", + "name": "appName", + "in": "query", "required": true, "schema": { "type": "string" } }, { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "name": "data", + "in": "query", + "schema": { + "type": "object" + }, + "style": "deepObject" + } + ], + "responses": { + "200": { + "$ref": "#/components/responses/ContextTokenResponse" + }, + "400": { + "description": "App server communication error" + }, + "422": { + "description": "Error provided by App Server with message to show customer" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/breadcrumb/{id}": { + "get": { + "tags": [ + "Experimental", + "Breadcrumb" + ], + "summary": "Fetch a breadcrumb", + "description": "Perform search to get category or product breadcrumb. \n\nExperimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", + "operationId": "readBreadcrumb", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "UUID for product or category", + "required": true, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } }, { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "name": "type", + "in": "query", + "description": "Type: category or product (optional - default: product)", "required": false, "schema": { "type": "string", "enum": [ - "0", - "1" - ], - "default": "1" + "product", + "category" + ] } - } - ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } + }, + { + "name": "referrerCategoryId", + "in": "query", + "description": "UUID for referrer category only used for product breadcrumb", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } - }, + ], "responses": { "200": { - "description": "Entity search result containing product reviews", + "description": "Search result containing SeoUrl\\'s to be used as breadcrumb.", "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductReview" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/BreadcrumbCollection" } } } + }, + "400": { + "$ref": "#/components/responses/400" } }, "security": [ @@ -22370,109 +21963,101 @@ "ApiKey": [] } ] - }, + } + }, + "/product-export/{accessKey}/{fileName}": { "get": { "tags": [ - "Product", - "Endpoints supporting Criteria " + "Product" ], - "summary": "Fetch product reviews", - "description": "Perform a filtered search for product reviews.", - "operationId": "readProductReviewsGet", + "summary": "Export product export", + "operationId": "readProductExport", "parameters": [ { - "name": "productId", + "name": "accessKey", "in": "path", - "description": "Identifier of the product.", + "description": "Access Key", "required": true, "schema": { "type": "string" } }, { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "name": "fileName", + "in": "path", + "description": "File Name", + "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } - }, - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaFields" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, + } + ], + "responses": { + "200": { + "description": "" + } + }, + "security": [ { - "$ref": "#/components/parameters/criteriaExcludes" - }, + "ApiKey": [] + } + ] + } + }, + "/script/{hook}": { + "get": { + "tags": [ + "API", + "Script", + "App" + ], + "summary": "Access point for different api logics which are provided by apps over script hooks", + "operationId": "getScriptStoreApiRoute", + "parameters": [ { - "$ref": "#/components/parameters/CompressedCriteria" + "name": "hook", + "in": "path", + "description": "Dynamic hook which used to build the hook name", + "required": true, + "schema": { + "type": "string" + } } ], "responses": { "200": { - "description": "Entity search result containing product reviews", + "description": "Returns different structures of results based on the called script.", "content": { "application/json": { "schema": { - "allOf": [ + "oneOf": [ { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductReview" - } - } - }, - "type": "object" + "type": "object", + "additionalProperties": true }, { - "$ref": "#/components/schemas/EntitySearchResult" + "type": "null" + } + ] + } + }, + "application/vnd.api+json": { + "schema": { + "oneOf": [ + { + "type": "object", + "additionalProperties": true + }, + { + "type": "null" } ] } } } + }, + "204": { + "description": "No data by default" } }, "security": [ @@ -22480,127 +22065,124 @@ "ApiKey": [] } ] - } - }, - "/product/{productId}/review": { + }, "post": { "tags": [ - "Product" + "API", + "Script", + "App" ], - "summary": "Save a product review", - "description": "Saves a review for a product. Reviews have to be activated in the settings.", - "operationId": "saveProductReview", + "summary": "Access point for different api logics which are provided by apps over script hooks", + "operationId": "postScriptStoreApiRoute", "parameters": [ { - "name": "productId", + "name": "hook", "in": "path", - "description": "Identifier of the product which is reviewed.", + "description": "Dynamic hook which used to build the hook name", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "required": [ - "title", - "content", - "points" - ], - "properties": { - "name": { - "description": "The name of the review author. If not set, the first name of the customer is chosen.", - "type": "string" - }, - "email": { - "description": "The email address of the review author. If not set, the email of the customer is chosen.", - "type": "string" - }, - "title": { - "description": "The title of the review.", - "type": "string" - }, - "content": { - "description": "The content of review.", - "type": "string" - }, - "points": { - "description": "The review rating for the product.", - "type": "number", - "format": "double" - } - }, - "type": "object" + "responses": { + "200": { + "description": "Returns different structures of results based on the called script.", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "type": "object", + "additionalProperties": true + }, + { + "type": "null" + } + ] + } + }, + "application/vnd.api+json": { + "schema": { + "oneOf": [ + { + "type": "object", + "additionalProperties": true + }, + { + "type": "null" + } + ] + } } } - } - }, - "responses": { - "200": { - "description": "Success response indicating the review was saved successfully." + }, + "204": { + "description": "No data by default" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/product/purchase-limit": { + "/checkout/cart": { "get": { "tags": [ - "Product" + "Cart" ], - "summary": "Fetch current purchase quantity limits for products", - "description": "Returns the current min/max/step purchase constraints for the given products, reflecting live stock or configured limitations. Intended for use on PDP to show actual values on product pages.", - "operationId": "readProductsPurchaseLimit", + "summary": "Fetch or create a cart", + "description": "Used to fetch the current cart or for creating a new one.", + "operationId": "readCart", "parameters": [ { - "name": "ids[]", - "in": "query", - "description": "List of product IDs to fetch quantity limits for.", - "required": true, + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, "schema": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } ], "responses": { "200": { - "description": "Current quantity limits for the requested products", + "description": "Cart", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductPurchaseLimit" - } + "$ref": "#/components/schemas/Cart" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + }, + "delete": { + "tags": [ + "Cart" + ], + "summary": "Delete a cart", + "description": "This route deletes the cart of the customer.", + "operationId": "deleteCart", + "responses": { + "204": { + "description": "Successfully deleted the cart", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" } } } - }, - "400": { - "$ref": "#/components/responses/400" } }, "security": [ @@ -22610,24 +22192,15 @@ ] } }, - "/product/{productId}/find-variant": { + "/checkout/cart/line-item": { "post": { "tags": [ - "Product" + "Cart" ], - "summary": "Search for a matching variant by product options.", - "description": "Performs a search for product variants and returns the best matching variant.", - "operationId": "searchProductVariantIds", + "summary": "Add items to the cart", + "description": "This route adds items to the cart. An item can be a product or promotion for example. They are referenced by the `referencedId`-parameter.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#adding-new-items-to-the-cart)", + "operationId": "addLineItem", "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Product ID", - "required": true, - "schema": { - "type": "string" - } - }, { "name": "sw-language-id", "in": "header", @@ -22643,48 +22216,24 @@ "content": { "application/json": { "schema": { - "required": [ - "options" - ], - "properties": { - "options": { - "oneOf": [ - { - "description": "The options parameter for the variant to find.", - "type": "array", - "items": { - "type": "string" - } - }, - { - "description": "The options parameter as a map of groupId => optionId.", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - ] - }, - "switchedGroup": { - "description": "The id of the option group that has been switched.", - "type": "string" - } - }, - "type": "object" + "$ref": "#/components/schemas/CartItems" } } } }, "responses": { "200": { - "description": "Returns an FoundCombination struct containing the ids matching the search.", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/FindProductVariantRouteResponse" + "$ref": "#/components/schemas/Cart" } } } + }, + "400": { + "$ref": "#/components/responses/400" } }, "security": [ @@ -22693,21 +22242,26 @@ } ] }, - "get": { + "delete": { "tags": [ - "Product" + "Cart" ], - "summary": "Search for a matching variant by product options.", - "description": "Performs a search for product variants and returns the best matching variant.", - "operationId": "searchProductVariantIdsGet", + "summary": "Remove items from the cart", + "description": "DEPRECATED: use removeLineItem instead. This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", + "operationId": "removeLineItemDeprecated", + "deprecated": true, "parameters": [ { - "name": "productId", - "in": "path", - "description": "Product ID", + "name": "ids", + "in": "query", + "description": "A list of product identifiers.", "required": true, "schema": { - "type": "string" + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } }, { @@ -22719,36 +22273,15 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } - }, - { - "name": "options[]", - "in": "query", - "description": "The options parameter for the variant to find. Array of option IDs.", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "switchedGroup", - "in": "query", - "description": "The id of the option group that has been switched.", - "required": false, - "schema": { - "type": "string" - } } ], "responses": { "200": { - "description": "Returns an FoundCombination struct containing the ids matching the search.", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/FindProductVariantRouteResponse" + "$ref": "#/components/schemas/Cart" } } } @@ -22759,123 +22292,45 @@ "ApiKey": [] } ] - } - }, - "/script/{hook}": { - "get": { + }, + "patch": { "tags": [ - "API", - "Script", - "App" + "Cart" ], - "summary": "Access point for different api logics which are provided by apps over script hooks", - "operationId": "getScriptStoreApiRoute", + "summary": "Update items in the cart", + "description": "This route updates items in the cart. A typical example is updating the quantity of an item.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#updating-items-in-the-cart)", + "operationId": "updateLineItem", "parameters": [ { - "name": "hook", - "in": "path", - "description": "Dynamic hook which used to build the hook name", - "required": true, + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, "schema": { - "type": "string" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } ], - "responses": { - "200": { - "description": "Returns different structures of results based on the called script.", - "content": { - "application/json": { - "schema": { - "oneOf": [ - { - "type": "object", - "additionalProperties": true - }, - { - "type": "null" - } - ] - } - }, - "application/vnd.api+json": { - "schema": { - "oneOf": [ - { - "type": "object", - "additionalProperties": true - }, - { - "type": "null" - } - ] - } + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CartItems" } } - }, - "204": { - "description": "No data by default" } }, - "security": [ - { - "ApiKey": [] - } - ] - }, - "post": { - "tags": [ - "API", - "Script", - "App" - ], - "summary": "Access point for different api logics which are provided by apps over script hooks", - "operationId": "postScriptStoreApiRoute", - "parameters": [ - { - "name": "hook", - "in": "path", - "description": "Dynamic hook which used to build the hook name", - "required": true, - "schema": { - "type": "string" - } - } - ], "responses": { "200": { - "description": "Returns different structures of results based on the called script.", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "oneOf": [ - { - "type": "object", - "additionalProperties": true - }, - { - "type": "null" - } - ] - } - }, - "application/vnd.api+json": { - "schema": { - "oneOf": [ - { - "type": "object", - "additionalProperties": true - }, - { - "type": "null" - } - ] + "$ref": "#/components/schemas/Cart" } } } - }, - "204": { - "description": "No data by default" } }, "security": [ @@ -22885,14 +22340,14 @@ ] } }, - "/order/state/cancel": { + "/checkout/cart/line-item/delete": { "post": { "tags": [ - "Order" + "Cart" ], - "summary": "Cancel an order", - "description": "Cancels an order. The order state will be set to 'cancelled'.", - "operationId": "cancelOrder", + "summary": "Remove items from the cart", + "description": "This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", + "operationId": "removeLineItem", "parameters": [ { "name": "sw-language-id", @@ -22910,28 +22365,32 @@ "content": { "application/json": { "schema": { + "required": [ + "ids" + ], "properties": { - "orderId": { - "description": "The identifier of the order to be canceled.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "ids": { + "description": "A list of product identifiers.", + "type": "array", + "minItems": 1, + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } }, - "type": "object", - "required": [ - "orderId" - ] + "type": "object" } } } }, "responses": { "200": { - "description": "Returns the state of the state machine\n\n example: More information about the state machine can be found in the corresponding guide: [Using the state machine](https://developer.shopware.com/docs/guides/plugins/plugins/checkout/order/using-the-state-machine)", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/StateMachineState" + "$ref": "#/components/schemas/Cart" } } } @@ -22939,21 +22398,19 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/order": { + "/checkout/order": { "post": { "tags": [ - "Order", - "Endpoints supporting Criteria " + "Order" ], - "summary": "Fetch a list of orders", - "description": "List orders of a customer.\n\n**Available Associations:**\n- `stateMachineState` - Current order state (e.g., open, in_progress, completed, cancelled)\n- `primaryOrderDelivery` - Primary delivery information for the order\n- `primaryOrderTransaction` - Primary payment transaction for the order\n- `orderCustomer` - Customer information associated with the order\n- `currency` - Currency used for the order\n- `language` - Language used when placing the order\n- `addresses` - All addresses associated with the order (billing and shipping)\n- `billingAddress` - Billing address for the order\n- `deliveries` - Delivery information including shipping address and tracking\n- `lineItems` - Order line items (products, discounts, fees)\n- `transactions` - Payment transactions for the order\n- `documents` - Generated documents (invoices, delivery notes, credit notes)\n- `tags` - Tags assigned to the order for organization and filtering", - "operationId": "readOrder", + "summary": "Create an order from a cart", + "description": "Creates a new order from the current cart and deletes the cart.\n\nIf you are using the [prepared payment flow](https://developer.shopware.com/docs/concepts/commerce/checkout-concept/payments#2.1-prepare-payment-optional), this endpoint also receives additional transaction details. The exact name of the parameters depends on the implementation of the corresponding *payment handler*.", + "operationId": "createOrder", "parameters": [ { "name": "sw-language-id", @@ -22964,106 +22421,125 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } - }, - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } } ], "requestBody": { - "required": true, + "description": "Contains additional metadata which is stored together with the order. It can also contain payment transaction details.", "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/NoneFieldsCriteria" + "properties": { + "customerComment": { + "description": "Adds a comment from the customer to the order.", + "type": "string" }, - { - "properties": { - "checkPromotion": { - "description": "Check if the payment method of the order is still changeable.", - "type": "boolean" - }, - "filter": { - "type": "array", - "description": "Pass the deepLinkCode criteria filter to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", - "items": { - "allOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "equals" - ] - }, - "field": { - "type": "string", - "enum": [ - "deepLinkCode" - ] - }, - "value": { - "type": "string" - } - }, - "required": [ - "type", - "field", - "value" - ] - } - ] - } - }, - "email": { - "description": "The email address of the customer. Pass this value to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", - "type": "string", - "format": "email" - }, - "zipcode": { - "description": "The zip/postal code of the billing address of the customer. Pass this value to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", - "type": "string" - }, - "login": { - "description": "If set and when handling a guest order, a context token will be returned in the response header with a logged-in session.", - "type": "boolean" - } - }, - "type": "object" + "affiliateCode": { + "description": "The affiliate code can be used to track which referrer the customer came through. An example could be `Price-comparison-company-XY`.", + "type": "string" + }, + "campaignCode": { + "description": "The campaign code is used to track which action the customer came from. An example could be `Summer-Deals`", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "An array of orders and an indicator if the payment of the order can be changed.", - "headers": { - "sw-context-token": { - "description": "Contains sw-context-token value, if login parameter is set to true and a guest order was found and the correct credentials were provided.", + "description": "Order", + "content": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/Order" } } - }, + } + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/checkout/gateway": { + "get": { + "tags": [ + "Gateway" + ], + "summary": "Call the checkout gateway", + "description": "Call the checkout gateway, which is used to manipulate certain aspects of the checkout process (e.g. available payment methods).", + "operationId": "checkoutGateway", + "responses": { + "200": { + "description": "Checkout gateway response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OrderRouteResponse" + "properties": { + "paymentMethods": { + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentMethod" + } + } + }, + "type": "object" + }, + "shippingMethods": { + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingMethod" + } + } + }, + "type": "object" + }, + "errors": { + "type": "array", + "items": { + "properties": { + "code": { + "description": "Error code", + "type": "string" + }, + "detail": { + "description": "Error detail", + "type": "string" + }, + "blocking": { + "description": "If the error is blocking", + "type": "boolean" + } + } + } + } + } } } } @@ -23071,21 +22547,30 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/order/payment": { + "/cms/{id}": { "post": { "tags": [ - "Order" + "Content" ], - "summary": "Update the payment method of an order", - "description": "Changes the payment method of a specific order. You can use the /order route to find out if the payment method of an order can be changed - take a look at the `paymentChangeable`- array in the response.", - "operationId": "orderSetPayment", + "summary": "Fetch and resolve a CMS page", + "description": "Loads a content management page by its identifier and resolve the slot data. This could be media files, product listing and so on.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `sections` - Content sections within the CMS page (layout blocks containing slots)\n- `previewMedia` - Preview image for the CMS page in admin panel and page selection\n- `landingPages` - Landing pages using this CMS layout", + "operationId": "readCms", "parameters": [ + { + "name": "id", + "in": "path", + "description": "Identifier of the CMS page to be resolved", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, { "name": "sw-language-id", "in": "header", @@ -23095,75 +22580,77 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } } ], "requestBody": { - "required": true, "content": { "application/json": { "schema": { - "required": [ - "paymentMethodId", - "orderId" - ], - "properties": { - "paymentMethodId": { - "description": "The identifier of the paymentMethod to be set", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "allOf": [ + { + "properties": { + "slots": { + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", + "type": "string" + } + }, + "type": "object" }, - "orderId": { - "description": "The identifier of the order.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + { + "$ref": "#/components/schemas/ProductListingCriteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Successfully updated the payment method of the order.", + "description": "The loaded cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/CmsPage" } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] - } - }, - "/order/download/{orderId}/{downloadId}": { + }, "get": { "tags": [ - "Order" + "Content" ], - "summary": "Download a purchased file", - "description": "Download a file included in the given order and with the given id. Access must be granted.", - "operationId": "orderDownloadFile", + "summary": "Fetch and resolve a CMS page", + "description": "Loads a content management page by its identifier and resolve the slot data. This could be media files, product listing and so on.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `sections` - Content sections within the CMS page (layout blocks containing slots)\n- `previewMedia` - Preview image for the CMS page in admin panel and page selection\n- `landingPages` - Landing pages using this CMS layout", + "operationId": "readCmsGet", "parameters": [ { - "name": "orderId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "downloadId", + "name": "id", "in": "path", + "description": "Identifier of the CMS page to be resolved", "required": true, "schema": { "type": "string", @@ -23179,46 +22666,190 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "name": "slots", + "in": "query", + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "name": "limit", + "in": "query", + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "schema": { + "type": "integer", + "minimum": 0 + } + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "name": "order", + "in": "query", + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "schema": { + "type": "string" + } + }, + { + "name": "p", + "in": "query", + "description": "Search result page", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "manufacturer", + "in": "query", + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "min-price", + "in": "query", + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "max-price", + "in": "query", + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "rating", + "in": "query", + "description": "Filter products with a minimum average rating.", + "schema": { + "type": "integer" + } + }, + { + "name": "shipping-free", + "in": "query", + "description": "Filters products that are marked as shipping-free.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "properties", + "in": "query", + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "reduce-aggregations", + "in": "query", + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } } ], "responses": { "200": { - "description": "An arbitrary binary file.", + "description": "The loaded cms page", "content": { - "application/octet-stream": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/CmsPage" } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/country-state/{countryId}": { + "/search": { "post": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Product" ], - "summary": "Fetch the states of a country", - "description": "Perform a filtered search the states for a country", - "operationId": "readCountryState", + "summary": "Search for products", + "description": "Performs a search for products which can be used to display a product listing.", + "operationId": "searchPage", "parameters": [ { - "name": "countryId", - "in": "path", - "required": true, + "name": "p", + "in": "query", + "description": "The page number to fetch.", + "required": false, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "integer" } }, { @@ -23231,6 +22862,15 @@ "pattern": "^[0-9a-f]{32}$" } }, + { + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "in": "header", + "name": "sw-include-seo-urls", + "required": false, + "schema": { + "type": "boolean" + } + }, { "name": "sw-include-search-info", "in": "header", @@ -23247,13 +22887,24 @@ } ], "requestBody": { - "required": false, "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/Criteria" + "properties": { + "search": { + "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/ProductListingCriteria" + }, + { + "$ref": "#/components/schemas/ProductListingFlags" } ] } @@ -23262,7 +22913,14 @@ }, "responses": { "200": { - "$ref": "#/components/responses/CountryStateListResponse" + "description": "Returns a product listing containing all products and additional fields to display a listing.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + } } }, "security": [ @@ -23273,37 +22931,51 @@ }, "get": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Product" ], - "summary": "Fetch the states of a country", - "description": "Perform a filtered search the states for a country", - "operationId": "readCountryStateGet", + "summary": "Search for products", + "description": "Performs a search for products which can be used to display a product listing.", + "operationId": "searchPageGet", "parameters": [ { - "name": "countryId", - "in": "path", - "required": true, + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } }, { - "name": "sw-language-id", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", "in": "header", - "description": "Instructs Shopware to return the response in the given language.", + "name": "sw-include-seo-urls", "required": false, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "boolean" + } + }, + { + "name": "search", + "in": "query", + "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", + "required": false, + "schema": { + "type": "string" } }, { "$ref": "#/components/parameters/criteriaPage" }, { - "$ref": "#/components/parameters/criteriaLimit" + "name": "limit", + "in": "query", + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "schema": { + "type": "integer", + "minimum": 0 + } }, { "$ref": "#/components/parameters/criteriaTerm" @@ -23345,78 +23017,107 @@ "$ref": "#/components/parameters/criteriaExcludes" }, { - "$ref": "#/components/parameters/CompressedCriteria" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/CountryStateListResponse" - } - }, - "security": [ + "name": "order", + "in": "query", + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "schema": { + "type": "string" + } + }, { - "ApiKey": [] - } - ] - } - }, - "/breadcrumb/{id}": { - "get": { - "tags": [ - "Experimental", - "Breadcrumb" - ], - "summary": "Fetch a breadcrumb", - "description": "Perform search to get category or product breadcrumb. \n\nExperimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", - "operationId": "readBreadcrumb", - "parameters": [ + "name": "p", + "in": "query", + "description": "Search result page", + "schema": { + "type": "integer", + "default": 1 + } + }, { - "name": "id", - "in": "path", - "description": "UUID for product or category", - "required": true, + "name": "manufacturer", + "in": "query", + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } }, { - "name": "type", + "name": "min-price", "in": "query", - "description": "Type: category or product (optional - default: product)", - "required": false, + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", "schema": { - "type": "string", - "enum": [ - "product", - "category" - ] + "type": "integer", + "minimum": 0, + "default": 0 } }, { - "name": "referrerCategoryId", + "name": "max-price", "in": "query", - "description": "UUID for referrer category only used for product breadcrumb", - "required": false, + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "rating", + "in": "query", + "description": "Filter products with a minimum average rating.", + "schema": { + "type": "integer" + } + }, + { + "name": "shipping-free", + "in": "query", + "description": "Filters products that are marked as shipping-free.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "properties", + "in": "query", + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "reduce-aggregations", + "in": "query", + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] } + }, + { + "$ref": "#/components/parameters/noAggregations" + }, + { + "$ref": "#/components/parameters/onlyAggregations" } ], "responses": { "200": { - "description": "Search result containing SeoUrl\\'s to be used as breadcrumb.", + "description": "Returns a product listing containing all products and additional fields to display a listing.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BreadcrumbCollection" + "$ref": "#/components/schemas/ProductListingResult" } } } - }, - "400": { - "$ref": "#/components/responses/400" } }, "security": [ @@ -23426,23 +23127,23 @@ ] } }, - "/cms/{id}": { + "/landing-page/{landingPageId}": { "post": { "tags": [ - "Content" + "Content", + "Endpoints supporting Criteria " ], - "summary": "Fetch and resolve a CMS page", - "description": "Loads a content management page by its identifier and resolve the slot data. This could be media files, product listing and so on.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `sections` - Content sections within the CMS page (layout blocks containing slots)\n- `previewMedia` - Preview image for the CMS page in admin panel and page selection\n- `landingPages` - Landing pages using this CMS layout", - "operationId": "readCms", + "summary": "Fetch a landing page with the resolved CMS page", + "description": "Loads a landing page by its identifier and resolves the CMS page.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `cmsPage` - CMS page layout for the landing page\n- `seoUrls` - SEO-friendly URLs for the landing page across different sales channels", + "operationId": "readLandingPage", "parameters": [ { - "name": "id", + "name": "landingPageId", "in": "path", - "description": "Identifier of the CMS page to be resolved", + "description": "Identifier of the landing page.", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } }, { @@ -23476,16 +23177,23 @@ "schema": { "allOf": [ { - "properties": { - "slots": { - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", - "type": "string" - } - }, - "type": "object" + "$ref": "#/components/schemas/Criteria" }, { - "$ref": "#/components/schemas/ProductListingCriteria" + "allOf": [ + { + "properties": { + "slots": { + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/ProductListingCriteria" + } + ] } ] } @@ -23494,11 +23202,11 @@ }, "responses": { "200": { - "description": "The loaded cms page", + "description": "The loaded landing page with cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CmsPage" + "$ref": "#/components/schemas/LandingPage" } } } @@ -23515,20 +23223,20 @@ }, "get": { "tags": [ - "Content" + "Content", + "Endpoints supporting Criteria " ], - "summary": "Fetch and resolve a CMS page", - "description": "Loads a content management page by its identifier and resolve the slot data. This could be media files, product listing and so on.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `sections` - Content sections within the CMS page (layout blocks containing slots)\n- `previewMedia` - Preview image for the CMS page in admin panel and page selection\n- `landingPages` - Landing pages using this CMS layout", - "operationId": "readCmsGet", + "summary": "Fetch a landing page with the resolved CMS page", + "description": "Loads a landing page by its identifier and resolves the CMS page.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `cmsPage` - CMS page layout for the landing page\n- `seoUrls` - SEO-friendly URLs for the landing page across different sales channels", + "operationId": "readLandingPageGet", "parameters": [ { - "name": "id", + "name": "landingPageId", "in": "path", - "description": "Identifier of the CMS page to be resolved", + "description": "Identifier of the landing page.", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } }, { @@ -23542,11 +23250,17 @@ } }, { - "name": "slots", - "in": "query", - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, "schema": { - "type": "string" + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" } }, { @@ -23655,325 +23369,86 @@ }, { "name": "shipping-free", - "in": "query", - "description": "Filters products that are marked as shipping-free.", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "name": "properties", - "in": "query", - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", - "schema": { - "type": "string" - } - }, - { - "name": "reduce-aggregations", - "in": "query", - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", - "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - } - ], - "responses": { - "200": { - "description": "The loaded cms page", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CmsPage" - } - } - } - }, - "404": { - "$ref": "#/components/responses/404" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/customer/wishlist/add/{productId}": { - "post": { - "tags": [ - "Wishlist" - ], - "summary": "Add a product to a wishlist", - "description": "Adds a product to a customers wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "addProductOnWishlist", - "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Identifier of the product to be added.", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], - "responses": { - "200": { - "description": "Returns a success response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/customer/wishlist": { - "post": { - "tags": [ - "Wishlist", - "Endpoints supporting Criteria " - ], - "summary": "Fetch a wishlist", - "description": "Fetch a customer's wishlist. Products on the wishlist can be filtered using a criteria object.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "readCustomerWishlist", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } - } - ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/WishlistLoadRouteResponse" - } - } - } - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/customer/wishlist/merge": { - "post": { - "tags": [ - "Wishlist" - ], - "summary": "Create a wishlist for a customer", - "description": "Create a new wishlist for a logged in customer or extend the existing wishlist given a set of products.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * A customer can only have a single wishlist.\n * The wishlist feature has to be activated.", - "operationId": "mergeProductOnWishlist", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "properties": { - "productIds": { - "description": "List product id", - "type": "array", - "items": { - "description": "product id", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Returns a success response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/customer/wishlist/delete/{productId}": { - "delete": { - "tags": [ - "Wishlist" - ], - "summary": "Remove a product from a wishlist", - "description": "Removes a product from a customer's wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "deleteProductOnWishlist", - "parameters": [ + "in": "query", + "description": "Filters products that are marked as shipping-free.", + "schema": { + "type": "boolean", + "default": false + } + }, { - "name": "productId", - "in": "path", - "description": "The identifier of the product to be removed from the wishlist.", - "required": true, + "name": "properties", + "in": "query", + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" + } + }, + { + "name": "reduce-aggregations", + "in": "query", + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] } } ], "responses": { "200": { - "description": "Returns a success response indicating a successful removal.", + "description": "The loaded landing page with cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/LandingPage" } } } }, "404": { - "description": "The removal of the product failed. Probably because the product could not be found on the wishlist.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - } - } - } + "$ref": "#/components/responses/404" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/app-system/{name}/generate-token": { - "post": { + "/_info/openapi3.json": { + "get": { "tags": [ - "App system" + "System Info & Health Check" ], - "summary": "Generate JWT token for app system backend", - "description": "Generate JWT token for authenticated communication with the app server", - "operationId": "generateJWTAppSystemAppServer", + "summary": "Get OpenAPI Specification", + "description": "Get information about the store API in OpenAPI format.", + "operationId": "api-info", "parameters": [ { - "in": "path", - "name": "name", - "required": true, - "description": "Name of the app", + "name": "type", + "in": "query", + "description": "Type of the api", "schema": { - "type": "string" + "type": "string", + "enum": [ + "jsonapi", + "json" + ] } } ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "type": "object" - } - } - } - }, "responses": { "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "token": { - "type": "string" - }, - "expires": { - "type": "string", - "format": "date-time" - }, - "shopId": { - "type": "string" - } - } - } - } - } - } - }, - "security": [ - { - "ApiKey": [] + "$ref": "#/components/responses/OpenApi3" } - ] + } } }, "/cookie-groups": { @@ -24007,42 +23482,16 @@ ] } }, - "/product-listing/{categoryId}": { + "/shipping-method": { "post": { "tags": [ - "Product" + "Payment & Shipping", + "Endpoints supporting Criteria " ], - "summary": "Fetch a product listing by category", - "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", - "operationId": "readProductListing", + "summary": "Fetch shipping methods", + "description": "Perform a filtered search for shipping methods.\n\n**Available Associations:**\n- `prices` - Shipping method price configurations (based on current cart and context)\n- `deliveryTime` - Delivery time information (min/max days, unit)\n- `media` - Media/images associated with the shipping method (loaded by default)\n- `availabilityRule` - Availability rule determining when this method is available\n- `tax` - Tax configuration for the shipping method\n\n**Example with associations:**\n```json\n{\n \"associations\": {\n \"prices\": {},\n \"deliveryTime\": {}\n }\n}\n```\n\nNote: The `prices` association is essential for accessing shipping cost configurations.", + "operationId": "readShippingMethod", "parameters": [ - { - "name": "categoryId", - "in": "path", - "description": "Identifier of a category.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "p", - "in": "query", - "description": "The page number to fetch.", - "required": false, - "schema": { - "type": "integer" - } - }, - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Determines if the response must contain a SeoUrl entity for a product entity", - "required": false, - "schema": { - "type": "boolean" - } - }, { "name": "sw-language-id", "in": "header", @@ -24066,18 +23515,24 @@ ], "default": "1" } + }, + { + "name": "onlyAvailable", + "in": "query", + "description": "List only available shipping methods. This filters shipping methods methods which can not be used in the actual context because of their availability rule.", + "schema": { + "type": "boolean" + } } ], "requestBody": { + "required": false, "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/ProductListingCriteria" - }, - { - "$ref": "#/components/schemas/ProductListingFlags" + "$ref": "#/components/schemas/Criteria" } ] } @@ -24086,11 +23541,37 @@ }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "allOf": [ + { + "required": [ + "elements" + ], + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingMethod" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -24104,30 +23585,13 @@ }, "get": { "tags": [ - "Product" + "Payment & Shipping", + "Endpoints supporting Criteria " ], - "summary": "Fetch a product listing by category", - "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", - "operationId": "readProductListingGet", + "summary": "Fetch shipping methods", + "description": "Perform a filtered search for shipping methods.\n\n**Available Associations:**\n- `prices` - Shipping method price configurations (graduated prices, quantity-based pricing)\n- `deliveryTime` - Delivery time information (min/max days, unit)\n- `media` - Media/images associated with the shipping method (loaded by default)\n- `availabilityRule` - Availability rule determining when this method is available\n- `tax` - Tax configuration for the shipping method\n\nNote: The `prices` association is essential for accessing shipping cost configurations.", + "operationId": "readShippingMethodGet", "parameters": [ - { - "name": "categoryId", - "in": "path", - "description": "Identifier of a category.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Determines if the response must contain a SeoUrl entity for a product entity", - "required": false, - "schema": { - "type": "boolean" - } - }, { "name": "sw-language-id", "in": "header", @@ -24142,155 +23606,54 @@ "$ref": "#/components/parameters/criteriaPage" }, { - "name": "limit", - "in": "query", - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "schema": { - "type": "integer", - "minimum": 0 - } + "$ref": "#/components/parameters/criteriaLimit" }, { "$ref": "#/components/parameters/criteriaTerm" }, { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaFields" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" + "$ref": "#/components/parameters/criteriaFilter" }, { - "$ref": "#/components/parameters/criteriaExcludes" + "$ref": "#/components/parameters/criteriaIds" }, { - "name": "order", - "in": "query", - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/criteriaQuery" }, { - "name": "p", - "in": "query", - "description": "Search result page", - "schema": { - "type": "integer", - "default": 1 - } + "$ref": "#/components/parameters/criteriaAssociations" }, { - "name": "manufacturer", - "in": "query", - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/criteriaPostFilter" }, { - "name": "min-price", - "in": "query", - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } + "$ref": "#/components/parameters/criteriaSort" }, { - "name": "max-price", - "in": "query", - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } + "$ref": "#/components/parameters/criteriaAggregations" }, { - "name": "rating", - "in": "query", - "description": "Filter products with a minimum average rating.", - "schema": { - "type": "integer" - } + "$ref": "#/components/parameters/criteriaFields" }, { - "name": "shipping-free", - "in": "query", - "description": "Filters products that are marked as shipping-free.", - "schema": { - "type": "boolean", - "default": false - } + "$ref": "#/components/parameters/criteriaGrouping" }, { - "name": "properties", - "in": "query", - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/criteriaTotalCountMode" }, { - "name": "reduce-aggregations", - "in": "query", - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", - "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } + "$ref": "#/components/parameters/criteriaIncludes" }, { - "$ref": "#/components/parameters/noAggregations" + "$ref": "#/components/parameters/criteriaExcludes" }, { - "$ref": "#/components/parameters/onlyAggregations" + "$ref": "#/components/parameters/CompressedCriteria" } ], "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProductListingResult" - } - } - } + "$ref": "#/components/responses/ShippingMethodListResponse" } }, "security": [ @@ -24300,44 +23663,25 @@ ] } }, - "/_info/openapi3.json": { - "get": { + "/navigation/{activeId}/{rootId}": { + "post": { "tags": [ - "System Info & Health Check" + "Category", + "Endpoints supporting Criteria " ], - "summary": "Get OpenAPI Specification", - "description": "Get information about the store API in OpenAPI format.", - "operationId": "api-info", + "summary": "Fetch a navigation menu", + "description": "This endpoint returns categories that can be used as a page navigation. You can either return them as a tree or as a flat list. You can also control the depth of the tree.\n\n Instead of passing uuids, you can also use one of the following aliases for the activeId and rootId parameters to get the respective navigations of your sales channel.\n\n * main-navigation\n * service-navigation\n * footer-navigation", + "operationId": "readNavigation", "parameters": [ { - "name": "type", - "in": "query", - "description": "Type of the api", + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, "schema": { - "type": "string", - "enum": [ - "jsonapi", - "json" - ] + "type": "boolean" } - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/OpenApi3" - } - } - } - }, - "/payment-method": { - "post": { - "tags": [ - "Payment Method", - "Endpoints supporting Criteria " - ], - "summary": "Loads all available payment methods", - "operationId": "readPaymentMethod", - "parameters": [ + }, { "name": "sw-language-id", "in": "header", @@ -24361,6 +23705,40 @@ ], "default": "1" } + }, + { + "name": "activeId", + "in": "path", + "description": "Identifier of the active category in the navigation tree (if not used, just set to the same as rootId).", + "required": true, + "schema": { + "oneOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "$ref": "#/components/schemas/NavigationType" + } + ] + } + }, + { + "name": "rootId", + "in": "path", + "description": "Identifier of the root category for your desired navigation tree. You can use it to fetch sub-trees of your navigation tree.", + "required": true, + "schema": { + "oneOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "$ref": "#/components/schemas/NavigationType" + } + ] + } } ], "requestBody": { @@ -24370,13 +23748,21 @@ "schema": { "allOf": [ { - "$ref": "#/components/schemas/Criteria" + "$ref": "#/components/schemas/NoneFieldsCriteria" }, { "properties": { - "onlyAvailable": { - "description": "List only available", - "type": "boolean" + "depth": { + "description": "Determines the depth of fetched navigation levels.", + "type": "integer", + "format": "int32" + }, + "buildTree": { + "description": "Return the categories as a tree or as a flat list.", + "type": "array", + "items": { + "type": "object" + } } }, "type": "object" @@ -24388,7 +23774,14 @@ }, "responses": { "200": { - "$ref": "#/components/responses/PaymentMethodListResponse" + "description": "All available navigations", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NavigationRouteResponse" + } + } + } } }, "security": [ @@ -24399,22 +23792,90 @@ }, "get": { "tags": [ - "Payment Method", + "Category", "Endpoints supporting Criteria " ], - "summary": "Loads all available payment methods", - "operationId": "readPaymentMethodGet", + "summary": "Fetch a navigation menu", + "description": "This endpoint returns categories that can be used as a page navigation. You can either return them as a tree or as a flat list. You can also control the depth of the tree.\n\n Instead of passing uuids, you can also use one of the following aliases for the activeId and rootId parameters to get the respective navigations of your sales channel.\n\n * main-navigation\n * service-navigation\n * footer-navigation", + "operationId": "readNavigationGet", "parameters": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "activeId", + "in": "path", + "description": "Identifier of the active category in the navigation tree (if not used, just set to the same as rootId).", + "required": true, + "schema": { + "oneOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "$ref": "#/components/schemas/NavigationType" + } + ] + } + }, + { + "name": "rootId", + "in": "path", + "description": "Identifier of the root category for your desired navigation tree. You can use it to fetch sub-trees of your navigation tree.", + "required": true, + "schema": { + "oneOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "$ref": "#/components/schemas/NavigationType" + } + ] + } + }, + { + "name": "depth", + "in": "query", + "description": "Determines the depth of fetched navigation levels.", "required": false, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "integer", + "format": "int32" } }, + { + "name": "buildTree", + "in": "query", + "description": "Return the categories as a tree or as a flat list.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "object" + } + }, + "style": "deepObject", + "explode": true + }, { "$ref": "#/components/parameters/criteriaPage" }, @@ -24445,9 +23906,6 @@ { "$ref": "#/components/parameters/criteriaAggregations" }, - { - "$ref": "#/components/parameters/criteriaFields" - }, { "$ref": "#/components/parameters/criteriaGrouping" }, @@ -24461,12 +23919,19 @@ "$ref": "#/components/parameters/criteriaExcludes" }, { - "$ref": "#/components/parameters/CompressedCriteria" + "$ref": "#/components/parameters/CompressedNoneFieldsCriteria" } ], "responses": { "200": { - "$ref": "#/components/responses/PaymentMethodListResponse" + "description": "All available navigations", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NavigationRouteResponse" + } + } + } } }, "security": [ @@ -24476,15 +23941,42 @@ ] } }, - "/contact-form": { + "/product-listing/{categoryId}": { "post": { "tags": [ - "Content" + "Product" ], - "summary": "Submit a contact form message", - "description": "Used for submitting contact forms. Be aware that there can be more required fields, depending on the system settings.", - "operationId": "sendContactMail", + "summary": "Fetch a product listing by category", + "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", + "operationId": "readProductListing", "parameters": [ + { + "name": "categoryId", + "in": "path", + "description": "Identifier of a category.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "p", + "in": "query", + "description": "The page number to fetch.", + "required": false, + "schema": { + "type": "integer" + } + }, + { + "name": "sw-include-seo-urls", + "in": "header", + "description": "Determines if the response must contain a SeoUrl entity for a product entity", + "required": false, + "schema": { + "type": "boolean" + } + }, { "name": "sw-language-id", "in": "header", @@ -24494,219 +23986,48 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "email", - "subject", - "comment" - ], - "properties": { - "salutationId": { - "description": "Identifier of the salutation. Use `/api/salutation` endpoint to fetch possible values.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "description": "Firstname. This field may be required depending on the system settings.", - "type": "string" - }, - "lastName": { - "description": "Lastname. This field may be required depending on the system settings.", - "type": "string" - }, - "email": { - "description": "Email address", - "type": "string" - }, - "phone": { - "description": "Phone. This field may be required depending on the system settings.", - "type": "string" - }, - "subject": { - "description": "The subject of the contact form.", - "type": "string" - }, - "comment": { - "description": "The message of the contact form", - "type": "string" - }, - "navigationId": { - "description": "Identifier of the navigation page. Can be used to override the configuration.\nTake a look at the settings of a category containing a concat form in the administration.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "slotId": { - "description": "Identifier of the cms element", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "cmsPageType": { - "description": "Type of the content management page", - "type": "string" - }, - "entityName": { - "description": "Entity name for slot config", - "type": "string" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Message sent successful." - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/context": { - "get": { - "tags": [ - "System & Context" - ], - "summary": "Fetch the current context", - "description": "Fetches the current context. This includes for example the `customerGroup`, `currency`, `taxRules` and many more.", - "operationId": "readContext", - "responses": { - "200": { - "description": "Returns the current context.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SalesChannelContext" - } - } - } - } - }, - "security": [ + }, { - "ApiKey": [] - } - ] - }, - "patch": { - "tags": [ - "System & Context" - ], - "summary": "Modify the current context", - "description": "Used for switching the context. A typical example would be changing the language or changing the currency.", - "operationId": "updateContext", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "properties": { - "currencyId": { - "description": "Currency", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "languageId": { - "description": "Language", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "billingAddressId": { - "description": "Billing Address", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shippingAddressId": { - "description": "Shipping Address", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "paymentMethodId": { - "description": "Payment Method", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shippingMethodId": { - "description": "Shipping Method", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryId": { - "description": "Country", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryStateId": { - "description": "Country State", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "type": "object" - } + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" } } - }, - "responses": { - "200": { - "$ref": "#/components/responses/ContextTokenResponse" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/context/gateway": { - "post": { + ], "requestBody": { - "required": true, "content": { "application/json": { "schema": { - "required": [ - "appName" - ], - "properties": { - "appName": { - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/ProductListingCriteria" }, - "data": { - "type": "object" + { + "$ref": "#/components/schemas/ProductListingFlags" } - }, - "type": "object" + ] } } } }, - "tags": [ - "Gateway" - ], - "summary": "Call the context gateway", - "description": "Call the context gateway, which is used to manipulate certain aspects of context (e.g. selected payment methods, register customer, etc.).", - "operationId": "contextGateway", "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "400": { - "description": "App server communication error" - }, - "422": { - "description": "Error provided by App Server with message to show customer" + "description": "Returns a product listing containing all products and additional fields to display a listing.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + } } }, "security": [ @@ -24717,72 +24038,246 @@ }, "get": { "tags": [ - "Gateway" + "Product" ], - "summary": "Call the context gateway", - "description": "Call the context gateway, which is used to manipulate certain aspects of context (e.g. selected payment methods, register customer, etc.). Please prefer using the POST version of this endpoint.", - "operationId": "contextGatewayGet", + "summary": "Fetch a product listing by category", + "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", + "operationId": "readProductListingGet", "parameters": [ { - "name": "appName", - "in": "query", + "name": "categoryId", + "in": "path", + "description": "Identifier of a category.", "required": true, "schema": { "type": "string" } }, { - "name": "data", + "name": "sw-include-seo-urls", + "in": "header", + "description": "Determines if the response must contain a SeoUrl entity for a product entity", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "name": "limit", "in": "query", + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", "schema": { - "type": "object" - }, - "style": "deepObject" + "type": "integer", + "minimum": 0 + } + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "name": "order", + "in": "query", + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "schema": { + "type": "string" + } + }, + { + "name": "p", + "in": "query", + "description": "Search result page", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "manufacturer", + "in": "query", + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "min-price", + "in": "query", + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "max-price", + "in": "query", + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "rating", + "in": "query", + "description": "Filter products with a minimum average rating.", + "schema": { + "type": "integer" + } + }, + { + "name": "shipping-free", + "in": "query", + "description": "Filters products that are marked as shipping-free.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "properties", + "in": "query", + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "reduce-aggregations", + "in": "query", + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + { + "$ref": "#/components/parameters/noAggregations" + }, + { + "$ref": "#/components/parameters/onlyAggregations" } ], "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "400": { - "description": "App server communication error" - }, - "422": { - "description": "Error provided by App Server with message to show customer" + "description": "Returns a product listing containing all products and additional fields to display a listing.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + } } }, "security": [ { - "ApiKey": [] + "ApiKey": [] + } + ] + } + }, + "/salutation": { + "post": { + "tags": [ + "System & Context", + "Endpoints supporting Criteria " + ], + "summary": "Fetch salutations", + "description": "Fetches salutations with a criteria obj.", + "operationId": "readSalutation", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } } - ] - } - }, - "/media": { - "post": { - "tags": [ - "Content" ], - "summary": "Fetch and resolve Media Entities", - "description": "Fetch one or multiple Media Entities with the corresponding Identifier.", - "operationId": "readMedia", "requestBody": { + "required": false, "content": { "application/json": { "schema": { - "properties": { - "ids": { - "description": "Identifier (UUID) of the media entity to be fetched.", - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object", - "required": [ - "ids" ] } } @@ -24790,20 +24285,7 @@ }, "responses": { "200": { - "description": "The loaded MediaCollection containing the requested Media Entities.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Media" - } - } - } - } - }, - "404": { - "$ref": "#/components/responses/404" + "$ref": "#/components/responses/SalutationListResponse" } }, "security": [ @@ -24814,42 +24296,75 @@ }, "get": { "tags": [ - "Content" + "System & Context", + "Endpoints supporting Criteria " ], - "summary": "Fetch and resolve Media Entities", - "description": "Fetch one or multiple Media Entities with the corresponding Identifier.", - "operationId": "readMediaGet", + "summary": "Fetch salutations", + "description": "Perform a filtered search for salutations.", + "operationId": "readSalutationGet", "parameters": [ { - "name": "ids[]", - "in": "query", - "description": "Identifier (UUID) of the media entity to be fetched.", - "required": true, + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, "schema": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "type": "string", + "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" } ], "responses": { "200": { - "description": "The loaded MediaCollection containing the requested Media Entities.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Media" - } - } - } - } - }, - "404": { - "$ref": "#/components/responses/404" + "$ref": "#/components/responses/SalutationListResponse" } }, "security": [ @@ -24996,100 +24511,14 @@ ] } }, - "/product-export/{accessKey}/{fileName}": { - "get": { - "tags": [ - "Product" - ], - "summary": "Export product export", - "operationId": "readProductExport", - "parameters": [ - { - "name": "accessKey", - "in": "path", - "description": "Access Key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "fileName", - "in": "path", - "description": "File Name", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/_info/routes": { - "get": { - "summary": "Get API routes", - "operationId": "getRoutes", - "tags": [ - "System Info & Health Check" - ], - "responses": { - "200": { - "description": "Successful operation", - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "endpoints" - ], - "properties": { - "endpoints": { - "type": "array", - "items": { - "type": "object", - "required": [ - "methods", - "path" - ], - "properties": { - "methods": { - "type": "array", - "items": { - "type": "string" - } - }, - "path": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - }, - "/search": { + "/search-suggest": { "post": { "tags": [ "Product" ], - "summary": "Search for products", - "description": "Performs a search for products which can be used to display a product listing.", - "operationId": "searchPage", + "summary": "Search for products (suggest)", + "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", + "operationId": "searchSuggest", "parameters": [ { "name": "p", @@ -25110,15 +24539,6 @@ "pattern": "^[0-9a-f]{32}$" } }, - { - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "in": "header", - "name": "sw-include-seo-urls", - "required": false, - "schema": { - "type": "boolean" - } - }, { "name": "sw-include-search-info", "in": "header", @@ -25135,11 +24555,15 @@ } ], "requestBody": { + "required": true, "content": { "application/json": { "schema": { "allOf": [ { + "required": [ + "search" + ], "properties": { "search": { "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", @@ -25161,7 +24585,7 @@ }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", + "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", "content": { "application/json": { "schema": { @@ -25180,10 +24604,10 @@ "get": { "tags": [ "Product" - ], - "summary": "Search for products", - "description": "Performs a search for products which can be used to display a product listing.", - "operationId": "searchPageGet", + ], + "summary": "Search for products (suggest)", + "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", + "operationId": "searchSuggestGet", "parameters": [ { "name": "sw-language-id", @@ -25195,20 +24619,11 @@ "pattern": "^[0-9a-f]{32}$" } }, - { - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "in": "header", - "name": "sw-include-seo-urls", - "required": false, - "schema": { - "type": "boolean" - } - }, { "name": "search", "in": "query", "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", - "required": false, + "required": true, "schema": { "type": "string" } @@ -25358,7 +24773,7 @@ ], "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", + "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", "content": { "application/json": { "schema": { @@ -25375,192 +24790,57 @@ ] } }, - "/shipping-cost/product/{productId}": { - "get": { + "/handle-payment": { + "post": { "tags": [ - "Cart", - "Endpoints supporting Criteria " - ], - "summary": "Calculate shipping costs for a product", - "description": "Calculates shipping costs for a single product using criteria-based shipping method selection.", - "operationId": "readShippingCostByProduct", - "parameters": [ - { - "name": "productId", - "in": "path", - "description": "The product identifier.", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaFields" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "$ref": "#/components/parameters/CompressedCriteria" - } + "Payment & Shipping" ], - "responses": { - "200": { - "description": "The calculated shipping costs.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "type": "object", - "required": [ - "shippingCost", - "deliveryDate", - "shippingMethod" - ], - "properties": { - "shippingCost": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" - } - } - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" - } - } + "summary": "Initiate a payment for an order", + "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order.", + "operationId": "handlePaymentMethod", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "orderId" + ], + "properties": { + "orderId": { + "description": "Identifier of an order", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "finishUrl": { + "description": "URL to which the client should be redirected after successful payment", + "type": "string" + }, + "errorUrl": { + "description": "URL to which the client should be redirected after erroneous payment", + "type": "string" } - } + }, + "type": "object" } } - }, - "400": { - "$ref": "#/components/responses/400" } }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/shipping-cost/cart": { - "get": { - "tags": [ - "Cart" - ], - "summary": "Calculate shipping costs for the cart", - "description": "Calculates shipping costs for the current cart across available shipping methods.", - "operationId": "readShippingCostsByCart", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], "responses": { "200": { - "description": "The calculated shipping costs.", + "description": "Redirect to external payment provider", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "type": "object", - "required": [ - "shippingCost", - "deliveryDate", - "shippingMethod" - ], - "properties": { - "shippingCost": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" - } - } - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" - } + "type": "object", + "properties": { + "redirectUrl": { + "type": "string" } - } + }, + "required": [ + "redirectUrl" + ] } } } @@ -25571,60 +24851,57 @@ "ApiKey": [] } ] - } - }, - "/checkout/cart": { + }, "get": { "tags": [ - "Cart" + "Payment & Shipping" ], - "summary": "Fetch or create a cart", - "description": "Used to fetch the current cart or for creating a new one.", - "operationId": "readCart", + "summary": "Initiate a payment for an order", + "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order. Please prefer the POST version of this endpoint.", + "operationId": "handlePaymentMethodGet", "parameters": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "name": "orderId", + "in": "query", + "required": true, + "description": "Identifier of an order", "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } - } - ], - "responses": { - "200": { - "description": "Cart", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Cart" - } - } + }, + { + "name": "finishUrl", + "in": "query", + "description": "URL to which the client should be redirected after successful payment", + "schema": { + "type": "string" } - } - }, - "security": [ + }, { - "ApiKey": [] + "name": "errorUrl", + "in": "query", + "description": "URL to which the client should be redirected after erroneous payment", + "schema": { + "type": "string" + } } - ] - }, - "delete": { - "tags": [ - "Cart" ], - "summary": "Delete a cart", - "description": "This route deletes the cart of the customer.", - "operationId": "deleteCart", "responses": { - "204": { - "description": "Successfully deleted the cart", + "200": { + "description": "Redirect to external payment provider", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "type": "object", + "properties": { + "redirectUrl": { + "type": "string" + } + }, + "required": [ + "redirectUrl" + ] } } } @@ -25637,15 +24914,25 @@ ] } }, - "/checkout/cart/line-item": { + "/country-state/{countryId}": { "post": { "tags": [ - "Cart" + "System & Context", + "Endpoints supporting Criteria " ], - "summary": "Add items to the cart", - "description": "This route adds items to the cart. An item can be a product or promotion for example. They are referenced by the `referencedId`-parameter.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#adding-new-items-to-the-cart)", - "operationId": "addLineItem", + "summary": "Fetch the states of a country", + "description": "Perform a filtered search the states for a country", + "operationId": "readCountryState", "parameters": [ + { + "name": "countryId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, { "name": "sw-language-id", "in": "header", @@ -25655,30 +24942,39 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } } ], "requestBody": { + "required": false, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CartItems" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] } } } }, "responses": { "200": { - "description": "The updated cart.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Cart" - } - } - } - }, - "400": { - "$ref": "#/components/responses/400" + "$ref": "#/components/responses/CountryStateListResponse" } }, "security": [ @@ -25687,26 +24983,22 @@ } ] }, - "delete": { + "get": { "tags": [ - "Cart" + "System & Context", + "Endpoints supporting Criteria " ], - "summary": "Remove items from the cart", - "description": "DEPRECATED: use removeLineItem instead. This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", - "operationId": "removeLineItemDeprecated", - "deprecated": true, + "summary": "Fetch the states of a country", + "description": "Perform a filtered search the states for a country", + "operationId": "readCountryStateGet", "parameters": [ { - "name": "ids", - "in": "query", - "description": "A list of product identifiers.", + "name": "countryId", + "in": "path", "required": true, "schema": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, { @@ -25718,18 +25010,59 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" } ], "responses": { "200": { - "description": "The updated cart.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Cart" - } - } - } + "$ref": "#/components/responses/CountryStateListResponse" } }, "security": [ @@ -25737,62 +25070,63 @@ "ApiKey": [] } ] - }, - "patch": { + } + }, + "/_info/routes": { + "get": { + "summary": "Get API routes", + "operationId": "getRoutes", "tags": [ - "Cart" - ], - "summary": "Update items in the cart", - "description": "This route updates items in the cart. A typical example is updating the quantity of an item.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#updating-items-in-the-cart)", - "operationId": "updateLineItem", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } + "System Info & Health Check" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CartItemsUpdate" - } - } - } - }, "responses": { "200": { - "description": "The updated cart.", + "description": "Successful operation", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "type": "object", + "required": [ + "endpoints" + ], + "properties": { + "endpoints": { + "type": "array", + "items": { + "type": "object", + "required": [ + "methods", + "path" + ], + "properties": { + "methods": { + "type": "array", + "items": { + "type": "string" + } + }, + "path": { + "type": "string" + } + } + } + } + } } } } } - }, - "security": [ - { - "ApiKey": [] - } - ] + } } }, - "/checkout/cart/line-item/delete": { + "/contact-form": { "post": { "tags": [ - "Cart" + "Content" ], - "summary": "Remove items from the cart", - "description": "This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", - "operationId": "removeLineItem", + "summary": "Submit a contact form message", + "description": "Used for submitting contact forms. Be aware that there can be more required fields, depending on the system settings.", + "operationId": "sendContactMail", "parameters": [ { "name": "sw-language-id", @@ -25811,17 +25145,57 @@ "application/json": { "schema": { "required": [ - "ids" + "email", + "subject", + "comment" ], "properties": { - "ids": { - "description": "A list of product identifiers.", - "type": "array", - "minItems": 1, - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "salutationId": { + "description": "Identifier of the salutation. Use `/api/salutation` endpoint to fetch possible values.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "firstName": { + "description": "Firstname. This field may be required depending on the system settings.", + "type": "string" + }, + "lastName": { + "description": "Lastname. This field may be required depending on the system settings.", + "type": "string" + }, + "email": { + "description": "Email address", + "type": "string" + }, + "phone": { + "description": "Phone. This field may be required depending on the system settings.", + "type": "string" + }, + "subject": { + "description": "The subject of the contact form.", + "type": "string" + }, + "comment": { + "description": "The message of the contact form", + "type": "string" + }, + "navigationId": { + "description": "Identifier of the navigation page. Can be used to override the configuration.\nTake a look at the settings of a category containing a concat form in the administration.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "slotId": { + "description": "Identifier of the cms element", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "cmsPageType": { + "description": "Type of the content management page", + "type": "string" + }, + "entityName": { + "description": "Entity name for slot config", + "type": "string" } }, "type": "object" @@ -25831,14 +25205,7 @@ }, "responses": { "200": { - "description": "The updated cart.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Cart" - } - } - } + "description": "Message sent successful." } }, "security": [ @@ -25848,19 +25215,36 @@ ] } }, - "/checkout/order": { + "/document/download/{documentId}/{deepLinkCode}": { "post": { "tags": [ - "Order" + "Document" ], - "summary": "Create an order from a cart", - "description": "Creates a new order from the current cart and deletes the cart.\n\nIf you are using the [prepared payment flow](https://developer.shopware.com/docs/concepts/commerce/checkout-concept/payments#2.1-prepare-payment-optional), this endpoint also receives additional transaction details. The exact name of the parameters depends on the implementation of the corresponding *payment handler*.", - "operationId": "createOrder", + "summary": "Download generated document", + "description": "Returns generated document to download.", + "operationId": "download", "parameters": [ + { + "name": "documentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "deepLinkCode", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, { "name": "sw-language-id", "in": "header", - "description": "Instructs Shopware to return the response in the given language.", + "description": "If a document is rendered on the fly the provided language id is added to fallback languages while the order language has priority. It does not change already generated documents.", "required": false, "schema": { "type": "string", @@ -25869,39 +25253,57 @@ } ], "requestBody": { - "description": "Contains additional metadata which is stored together with the order. It can also contain payment transaction details.", + "required": false, "content": { "application/json": { "schema": { + "type": "object", "properties": { - "customerComment": { - "description": "Adds a comment from the customer to the order.", - "type": "string" - }, - "affiliateCode": { - "description": "The affiliate code can be used to track which referrer the customer came through. An example could be `Price-comparison-company-XY`.", + "email": { "type": "string" }, - "campaignCode": { - "description": "The campaign code is used to track which action the customer came from. An example could be `Summer-Deals`", + "zipcode": { "type": "string" } }, - "type": "object" + "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." } } } }, "responses": { "200": { - "description": "Order", + "description": "Success", "content": { - "application/json": { + "application/pdf": { "schema": { - "$ref": "#/components/schemas/Order" + "type": "string", + "format": "binary" + } + }, + "text/html": { + "schema": { + "type": "string" + } + }, + "application/xml": { + "schema": { + "type": "string" } } } + }, + "204": { + "description": "DEPRECATED: Returns a no content response when no document is found. Will be changed in v6.8.0.0 and returns a 404 response instead." + }, + "403": { + "description": "Forbidden." + }, + "404": { + "description": "Document not found." + }, + "406": { + "description": "The requested mime type is not supported." } }, "security": [ @@ -25910,89 +25312,100 @@ "ContextToken": [] } ] - } - }, - "/checkout/gateway": { + }, "get": { "tags": [ - "Gateway" + "Document" + ], + "summary": "Download generated document", + "description": "Returns generated document to download.", + "operationId": "downloadGet", + "parameters": [ + { + "name": "documentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "deepLinkCode", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "email", + "required": false, + "in": "query", + "schema": { + "type": "string" + }, + "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." + }, + { + "name": "zipcode", + "required": false, + "in": "query", + "schema": { + "type": "string" + }, + "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." + }, + { + "name": "sw-language-id", + "in": "header", + "description": "If a document is rendered on the fly the provided language id is added to fallback languages while the order language has priority. It does not change already generated documents.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } ], - "summary": "Call the checkout gateway", - "description": "Call the checkout gateway, which is used to manipulate certain aspects of the checkout process (e.g. available payment methods).", - "operationId": "checkoutGateway", "responses": { "200": { - "description": "Checkout gateway response", + "description": "Success", "content": { - "application/json": { + "application/pdf": { "schema": { - "properties": { - "paymentMethods": { - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PaymentMethod" - } - } - }, - "type": "object" - }, - "shippingMethods": { - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "type": "object" - }, - "errors": { - "type": "array", - "items": { - "properties": { - "code": { - "description": "Error code", - "type": "string" - }, - "detail": { - "description": "Error detail", - "type": "string" - }, - "blocking": { - "description": "If the error is blocking", - "type": "boolean" - } - } - } - } - } + "type": "string", + "format": "binary" + } + }, + "text/html": { + "schema": { + "type": "string" + } + }, + "application/xml": { + "schema": { + "type": "string" } } } + }, + "204": { + "description": "DEPRECATED: Returns a no content response when no document is found. Will be changed in v6.8.0.0 and returns a 404 response instead." + }, + "403": { + "description": "Forbidden." + }, + "404": { + "description": "Document not found." + }, + "406": { + "description": "The requested mime type is not supported." } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } diff --git a/storeapi.summary.json b/storeapi.summary.json index db49a8b..43f1758 100644 --- a/storeapi.summary.json +++ b/storeapi.summary.json @@ -61,7 +61,6 @@ "/product", "/product-export/{accessKey}/{fileName}", "/product-listing/{categoryId}", - "/product/purchase-limit", "/product/{productId}", "/product/{productId}/cross-selling", "/product/{productId}/find-variant", @@ -73,8 +72,6 @@ "/search", "/search-suggest", "/seo-url", - "/shipping-cost/cart", - "/shipping-cost/product/{productId}", "/shipping-method", "/sitemap", "/sitemap/{filePath}" @@ -96,9 +93,6 @@ "AppCmsBlock", "AppFlowAction", "AppFlowEvent", - "AppMcpPrompt", - "AppMcpResource", - "AppMcpTool", "AppPaymentMethod", "AppScriptCondition", "AppShippingMethod", @@ -114,8 +108,6 @@ "CartDeliveryPosition", "CartError", "CartItems", - "CartItemsUpdate", - "CartLineItemUpdate", "CartListPrice", "CartPriceQuantity", "CartPriceReference", @@ -206,7 +198,6 @@ "NavigationType", "NewsletterRecipient", "NewsletterRecipientJsonApi", - "NewsletterStatus", "NoneFieldsCriteria", "Notification", "NumberRange", @@ -252,7 +243,6 @@ "ProductMeasurements", "ProductMedia", "ProductPrice", - "ProductPurchaseLimit", "ProductReview", "ProductReviewSummary", "ProductSearchConfig", @@ -280,8 +270,6 @@ "SalesChannelAnalytics", "SalesChannelContext", "SalesChannelDomain", - "SalesChannelTrackingCustomer", - "SalesChannelTrackingOrder", "SalesChannelType", "Salutation", "SalutationJsonApi", From 2094a5025f64ef1e026774b649126df8978ea914 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 22 May 2026 11:33:18 +0200 Subject: [PATCH 02/16] Update SwagDigitalSalesRooms store API schema (#404) * [create-pull-request] automated change (#115) Co-authored-by: shopwareBot * Remove vars * Remove vars * [create-pull-request] automated change (#120) Co-authored-by: shopwareBot * Add version * [create-pull-request] automated change (#130) Co-authored-by: shopwareBot * [create-pull-request] automated change (#129) Co-authored-by: shopwareBot * [create-pull-request] automated change (#140) Co-authored-by: shopwareBot * feat: upgrade to v4 * fix: commercial to 6.6 * fix: remove hardcoded version * fix: upgrade deps * fix: upgrade peter-evans/create-pull-request to v7 * [create-pull-request] automated change (#292) Co-authored-by: shopwareBot * [create-pull-request] automated change (#291) Co-authored-by: shopwareBot * [create-pull-request] automated change (#290) Co-authored-by: shopwareBot * [create-pull-request] automated change (#300) Co-authored-by: shopwareBot * [create-pull-request] automated change (#299) Co-authored-by: shopwareBot * [create-pull-request] automated change (#303) Co-authored-by: shopwareBot * [create-pull-request] automated change (#304) Co-authored-by: shopwareBot * [create-pull-request] automated change (#310) Co-authored-by: shopwareBot * [create-pull-request] automated change (#309) Co-authored-by: shopwareBot * [create-pull-request] automated change (#318) Co-authored-by: shopwareBot * [create-pull-request] automated change (#317) Co-authored-by: shopwareBot * [create-pull-request] automated change (#320) Co-authored-by: shopwareBot * [create-pull-request] automated change (#319) Co-authored-by: shopwareBot * [create-pull-request] automated change (#327) Co-authored-by: shopwareBot * [create-pull-request] automated change (#325) Co-authored-by: shopwareBot * [create-pull-request] automated change (#336) Co-authored-by: shopwareBot * [create-pull-request] automated change (#341) Co-authored-by: shopwareBot * [create-pull-request] automated change (#345) Co-authored-by: shopwareBot * [create-pull-request] automated change (#349) Co-authored-by: shopwareBot * [create-pull-request] automated change (#348) Co-authored-by: shopwareBot * [create-pull-request] automated change (#355) Co-authored-by: shopwareBot * [create-pull-request] automated change (#360) Co-authored-by: shopwareBot * [create-pull-request] automated change (#370) Co-authored-by: shopwareBot * [create-pull-request] automated change (#372) Co-authored-by: shopwareBot * [create-pull-request] automated change (#388) Co-authored-by: shopwareBot * [create-pull-request] automated change (#385) Co-authored-by: shopwareBot * [create-pull-request] automated change (#402) Co-authored-by: shopwareBot * [create-pull-request] automated change (#401) Co-authored-by: shopwareBot * [create-pull-request] automated change (#400) Co-authored-by: shopwareBot * [create-pull-request] automated change (#410) Co-authored-by: shopwareBot * [create-pull-request] automated change --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: shopwareBot Co-authored-by: Micha Hobert Co-authored-by: Bojan Rajh --- SwagCommercial-storeapi.json | 7947 +++++++++++--------------- SwagCommercial-storeapi.summary.json | 22 +- 2 files changed, 3342 insertions(+), 4627 deletions(-) diff --git a/SwagCommercial-storeapi.json b/SwagCommercial-storeapi.json index 232e304..9c2416b 100644 --- a/SwagCommercial-storeapi.json +++ b/SwagCommercial-storeapi.json @@ -7,7 +7,7 @@ "name": "MIT", "url": "https://github.com/shopware/shopware/blob/trunk/LICENSE" }, - "version": "6.7.9999999-dev" + "version": "6.7.9.0" }, "servers": [ { @@ -742,84 +742,6 @@ }, "type": "object" }, - "AppMcpPrompt": { - "description": "Added since version: 6.7.0.0", - "required": [ - "label" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - } - }, - "type": "object" - }, - "AppMcpResource": { - "description": "Added since version: 6.7.0.0", - "required": [ - "label" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - } - }, - "type": "object" - }, - "AppMcpTool": { - "description": "Added since version: 6.7.0.0", - "required": [ - "label" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - } - }, - "type": "object" - }, "AppPaymentMethod": { "description": "Added since version: 6.4.1.0", "properties": { @@ -951,9 +873,6 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "customFields": { - "type": "object" - }, "createdAt": { "type": "string", "format": "date-time", @@ -1035,6 +954,9 @@ }, "B2bComponentsApprovalRuleAppScriptCondition": { "description": "Added since version: 6.6.3.0", + "required": [ + "name" + ], "properties": { "id": { "type": "string", @@ -1145,9 +1067,6 @@ "format": "date-time", "readOnly": true }, - "customer": { - "$ref": "#/components/schemas/Customer" - }, "organizations": { "type": "array", "items": { @@ -1318,66 +1237,33 @@ }, "type": "object" }, - "B2bComponentsIndividualPricing": { - "description": "Added since version: 6.7.8.0", + "B2bComponentsOrganization": { "required": [ "id", - "active", - "showStrikeThrough", "name", - "target", - "priority", - "applyToAllProducts", - "useValidityRange", - "actionType", - "tiers" + "customerId", + "defaultShippingAddressId", + "defaultBillingAddressId" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "active": { - "type": "boolean" - }, - "showStrikeThrough": { - "type": "boolean" - }, "name": { "type": "string" }, - "target": { - "type": "string" - }, - "priority": { - "type": "integer", - "format": "int64" - }, - "applyToAllProducts": { - "type": "boolean" - }, - "productStreamId": { + "customerId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "useValidityRange": { - "type": "boolean" - }, - "validFrom": { - "type": "string" - }, - "validUntil": { - "type": "string" - }, - "description": { - "type": "string" - }, - "actionType": { - "type": "string" + "defaultShippingAddressId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "actionAmount": { - "type": "number", - "format": "float" + "defaultBillingAddressId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, "createdById": { "type": "string", @@ -1387,14 +1273,6 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "tagIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, "customFields": { "type": "object" }, @@ -1408,68 +1286,71 @@ "format": "date-time", "readOnly": true }, - "createdBy": { - "$ref": "#/components/schemas/User" - }, - "updatedBy": { - "$ref": "#/components/schemas/User" + "customer": { + "$ref": "#/components/schemas/Customer" }, - "productStream": { - "$ref": "#/components/schemas/ProductStream" + "employees": { + "type": "array", + "items": { + "$ref": "#/components/schemas/B2bEmployee" + } }, - "tiers": { + "organizationCustomerAddresses": { "type": "array", "items": { - "$ref": "#/components/schemas/B2bComponentsIndividualPricingTier" + "$ref": "#/components/schemas/B2bComponentsOrganizationCustomerAddress" } }, - "companyAssignments": { + "paymentMethods": { "type": "array", "items": { - "$ref": "#/components/schemas/B2bComponentsIndividualPricingCompanyAssignment" + "$ref": "#/components/schemas/PaymentMethod" } }, - "tags": { + "shippingMethods": { "type": "array", "items": { - "$ref": "#/components/schemas/Tag" + "$ref": "#/components/schemas/ShippingMethod" } + }, + "defaultShippingAddress": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "defaultBillingAddress": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "createdBy": { + "$ref": "#/components/schemas/User" + }, + "updatedBy": { + "$ref": "#/components/schemas/User" } }, "type": "object" }, - "B2bComponentsIndividualPricingCompanyAssignment": { - "description": "Added since version: 6.7.8.0", + "B2bComponentsOrganizationCustomerAddress": { "required": [ "id", - "individualPricingId", - "customerId", - "scope" + "organizationId", + "customerAddressId", + "type" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "individualPricingId": { + "organizationId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "customerId": { + "customerAddressId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "scope": { + "type": { "type": "string" }, - "organizationUnitIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, "createdAt": { "type": "string", "format": "date-time", @@ -1480,339 +1361,78 @@ "format": "date-time", "readOnly": true }, - "individualPricing": { - "$ref": "#/components/schemas/B2bComponentsIndividualPricing" - }, - "customer": { - "$ref": "#/components/schemas/Customer" - }, - "units": { - "type": "array", - "items": { - "$ref": "#/components/schemas/B2bComponentsOrganization" - } + "customerAddress": { + "$ref": "#/components/schemas/CustomerAddress" } }, "type": "object" }, - "B2bComponentsIndividualPricingCompanyAssignmentUnit": { - "description": "Added since version: 6.7.8.0", + "B2bComponentsPendingOrder": { + "description": "Added since version: 6.6.0.0", "required": [ - "assignmentId", - "orgUnitId" + "id", + "billingAddressId", + "customerId", + "employeeId", + "stateId", + "currencyId", + "countryId", + "salesChannelId", + "shippingMethodId", + "paymentMethodId", + "languageId", + "cartPayload" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "assignmentId": { + "orderId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "orgUnitId": { + "billingAddressId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "assignment": { - "$ref": "#/components/schemas/B2bComponentsIndividualPricingCompanyAssignment" + "customerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "orgUnit": { - "$ref": "#/components/schemas/B2bComponentsOrganization" - } - }, - "type": "object" - }, - "B2bComponentsIndividualPricingComputedCache": { - "properties": { - "id": { + "employeeId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { + "decidedById": { "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "updatedAt": { + "approvalRuleId": { "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "B2bComponentsIndividualPricingTag": { - "description": "Added since version: 6.7.8.0", - "required": [ - "individualPricingId", - "tagId" - ], - "properties": { - "id": { + "pattern": "^[0-9a-f]{32}$" + }, + "stateId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "individualPricingId": { + "currencyId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "tagId": { + "countryId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "individualPricing": { - "$ref": "#/components/schemas/B2bComponentsIndividualPricing" + "salesChannelId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "tag": { - "$ref": "#/components/schemas/Tag" - } - }, - "type": "object" - }, - "B2bComponentsIndividualPricingTier": { - "description": "Added since version: 6.7.8.0", - "required": [ - "individualPricingId", - "id", - "qtyFrom", - "price" - ], - "properties": { - "id": { + "shippingMethodId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "individualPricingId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "qtyFrom": { - "type": "integer", - "format": "int64" - }, - "qtyTo": { - "type": "integer", - "format": "int64" - }, - "price": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Price" - } - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "individualPricing": { - "$ref": "#/components/schemas/B2bComponentsIndividualPricing" - } - }, - "type": "object" - }, - "B2bComponentsOrganization": { - "required": [ - "id", - "name", - "customerId", - "defaultShippingAddressId", - "defaultBillingAddressId" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "name": { - "type": "string" - }, - "customerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "defaultShippingAddressId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "defaultBillingAddressId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdById": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "updatedById": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "customFields": { - "type": "object" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "customer": { - "$ref": "#/components/schemas/Customer" - }, - "employees": { - "type": "array", - "items": { - "$ref": "#/components/schemas/B2bEmployee" - } - }, - "organizationCustomerAddresses": { - "type": "array", - "items": { - "$ref": "#/components/schemas/B2bComponentsOrganizationCustomerAddress" - } - }, - "paymentMethods": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PaymentMethod" - } - }, - "shippingMethods": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ShippingMethod" - } - }, - "defaultShippingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "defaultBillingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "createdBy": { - "$ref": "#/components/schemas/User" - }, - "updatedBy": { - "$ref": "#/components/schemas/User" - } - }, - "type": "object" - }, - "B2bComponentsOrganizationCustomerAddress": { - "required": [ - "id", - "organizationId", - "customerAddressId", - "type" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "organizationId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "customerAddressId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "type": { - "type": "string" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "customerAddress": { - "$ref": "#/components/schemas/CustomerAddress" - } - }, - "type": "object" - }, - "B2bComponentsPendingOrder": { - "description": "Added since version: 6.6.0.0", - "required": [ - "id", - "billingAddressId", - "customerId", - "employeeId", - "stateId", - "currencyId", - "countryId", - "salesChannelId", - "shippingMethodId", - "paymentMethodId", - "languageId", - "cartPayload" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "orderId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "billingAddressId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "customerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "employeeId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "decidedById": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "approvalRuleId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "stateId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "salesChannelId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shippingMethodId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "paymentMethodId": { + "paymentMethodId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, @@ -2714,135 +2334,11 @@ }, "type": "object" }, - "BundleDiscount": { - "description": "Added since version: 6.7.9.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "versionId": { - "description": "Version identifier of the bundle discount entity.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "type": { - "type": "string", - "enum": [ - "absolute", - "percentage" - ] - }, - "value": { - "type": "number" - }, - "maxValue": { - "type": "number" - }, - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "preventCombination": { - "type": "boolean" - }, - "active": { - "type": "boolean" - }, - "apiAlias": { - "type": "string", - "example": "bundle_discount" - } - }, - "type": "object", - "required": [ - "id", - "type", - "value" - ] - }, - "BundleItem": { - "description": "Added since version: 6.7.9.0", - "required": [ - "productId", - "quantity", - "min", - "required", - "id" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "versionId": { - "description": "Version identifier of the bundle item entity.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "productId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "bundleId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "quantity": { - "type": "integer", - "minimum": 1 - }, - "min": { - "type": "integer", - "minimum": 1 - }, - "max": { - "type": "integer" - }, - "required": { - "type": "boolean" - }, - "position": { - "type": "integer" - }, - "showBundleOnItemPdp": { - "type": "boolean" - }, - "product": { - "type": "object" - }, - "apiAlias": { - "type": "string", - "example": "bundle_item" - } - }, - "type": "object" - }, - "CategoryJsonApi": { - "description": "Added since version: 6.0.0.0", - "allOf": [ - { - "$ref": "#/components/schemas/resource" + "CategoryJsonApi": { + "description": "Added since version: 6.0.0.0", + "allOf": [ + { + "$ref": "#/components/schemas/resource" }, { "required": [ @@ -4813,11 +4309,6 @@ }, "readOnly": true }, - "requestedGroupId": { - "description": "Unique identity of requested group.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, "createdById": { "type": "string", "pattern": "^[0-9a-f]{32}$" @@ -5775,7 +5266,7 @@ "description": "Unique number associated with every document.", "type": "string" }, - "customFields": { + "config": { "type": "object" }, "createdAt": { @@ -5783,9 +5274,8 @@ "format": "date-time", "readOnly": true }, - "config": { - "type": "object", - "deprecated": true + "customFields": { + "type": "object" }, "updatedAt": { "type": "string", @@ -9120,7 +8610,8 @@ "OrderReturnLineItemReason": { "required": [ "id", - "reasonKey" + "reasonKey", + "content" ], "properties": { "id": { @@ -10024,11 +9515,6 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "openGraphMediaId": { - "description": "Media used as Open Graph image for social media sharing.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, "productNumber": { "description": "Unique number assigned to individual products. Define rules for automatic assignment of every product creation as per your number range.", "type": "string" @@ -10222,12 +9708,6 @@ "customFields": { "type": "object" }, - "ogTitle": { - "type": "string" - }, - "ogDescription": { - "type": "string" - }, "type": { "description": "The type of the product, e.g., physical or digital.", "type": "string", @@ -10317,9 +9797,14 @@ } }, "type": "object" - }, - "bundleItems": { - "description": "Bundle items assigned to this grouped bundle product.", + } + }, + "type": "object" + }, + "relationships": { + "properties": { + "downloads": { + "description": "Downloadable files associated with the product (e.g., manuals, digital content)", "properties": { "links": { "type": "object", @@ -10327,7 +9812,7 @@ "related": { "type": "string", "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/bundleItems" + "example": "/product/deb10517653c255364175796ace3553f/downloads" } } }, @@ -10338,11 +9823,11 @@ "properties": { "type": { "type": "string", - "example": "bundle_item" + "example": "product_download" }, "id": { "type": "string", - "example": "d7706d2e11bc4878ffb242403ea5b274" + "example": "d07d50a751bc6ddf12bf3af0efee9b45" } } } @@ -10350,8 +9835,8 @@ }, "type": "object" }, - "bundleDiscounts": { - "description": "Discount configurations that belong to this bundle.", + "parent": { + "description": "Unique identity of the product.", "properties": { "links": { "type": "object", @@ -10359,31 +9844,29 @@ "related": { "type": "string", "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/bundleDiscounts" + "example": "/product/deb10517653c255364175796ace3553f/parent" } } }, "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "bundle_discount" - }, - "id": { - "type": "string", - "example": "a79712cce6d0182645b519f6add10f77" - } + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "d0e45878043844ffc41aac437e86b602" } } } }, "type": "object" }, - "bundleSalesChannels": { - "description": "Sales channels in which this bundle is available.", + "children": { + "description": "Product variants that inherit from this parent product", "properties": { "links": { "type": "object", @@ -10391,7 +9874,7 @@ "related": { "type": "string", "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/bundleSalesChannels" + "example": "/product/deb10517653c255364175796ace3553f/children" } } }, @@ -10402,21 +9885,20 @@ "properties": { "type": { "type": "string", - "example": "sales_channel" + "example": "product" }, "id": { "type": "string", - "example": "d4aa52cb00cd89c5e047c6a5c72a0384" + "example": "268184c12df027f536154d099d497b31" } } } } }, - "type": "object", - "readOnly": true + "type": "object" }, - "items": { - "description": "Products referenced as bundle items of this bundle.", + "deliveryTime": { + "description": "Estimated delivery time for the product", "properties": { "links": { "type": "object", @@ -10424,31 +9906,29 @@ "related": { "type": "string", "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/items" + "example": "/product/deb10517653c255364175796ace3553f/deliveryTime" } } }, "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product" - }, - "id": { - "type": "string", - "example": "691d502cfd0e0626cd3b058e5682ad1c" - } + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "delivery_time" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "8c888ae25a7bd42057370e31f7e01044" } } } }, "type": "object" }, - "belongToBundleItems": { - "description": "Reference to the bundle item definition when this product acts as a bundle item.", + "tax": { + "description": "Tax configuration (rate and calculation rules)", "properties": { "links": { "type": "object", @@ -10456,31 +9936,29 @@ "related": { "type": "string", "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/belongToBundleItems" + "example": "/product/deb10517653c255364175796ace3553f/tax" } } }, "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "bundle_item" - }, - "id": { - "type": "string", - "example": "db4ef6a91ceb3a70935c07a3617ea4cd" - } + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "tax" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "06565e5611f23fdf8cc43e5077b92b54" } } } }, "type": "object" }, - "bundles": { - "description": "Bundles that include this product as an item.", + "manufacturer": { + "description": "Product manufacturer or brand information", "properties": { "links": { "type": "object", @@ -10488,36 +9966,29 @@ "related": { "type": "string", "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/bundles" + "example": "/product/deb10517653c255364175796ace3553f/manufacturer" } } }, "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product" - }, - "id": { - "type": "string", - "example": "9e21e19f42862a3b26cd7aae135a3f74" - } + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product_manufacturer" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "c2904bca62b22443d6cf5e9d89cab204" } } } }, "type": "object" - } - }, - "type": "object" - }, - "relationships": { - "properties": { - "downloads": { - "description": "Downloadable files associated with the product (e.g., manuals, digital content)", + }, + "unit": { + "description": "Product unit of measure (e.g., piece, liter, kg)", "properties": { "links": { "type": "object", @@ -10525,31 +9996,29 @@ "related": { "type": "string", "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/downloads" + "example": "/product/deb10517653c255364175796ace3553f/unit" } } }, "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product_download" - }, - "id": { - "type": "string", - "example": "d07d50a751bc6ddf12bf3af0efee9b45" - } + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "unit" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "3e34bdebd9bd5edda27e8728904a2552" } } } }, "type": "object" }, - "parent": { - "description": "Unique identity of the product.", + "cover": { + "description": "Main product image displayed in listings and detail pages", "properties": { "links": { "type": "object", @@ -10557,189 +10026,7 @@ "related": { "type": "string", "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/parent" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "d0e45878043844ffc41aac437e86b602" - } - } - } - }, - "type": "object" - }, - "children": { - "description": "Product variants that inherit from this parent product", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/children" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product" - }, - "id": { - "type": "string", - "example": "268184c12df027f536154d099d497b31" - } - } - } - } - }, - "type": "object" - }, - "deliveryTime": { - "description": "Estimated delivery time for the product", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/deliveryTime" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "delivery_time" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "8c888ae25a7bd42057370e31f7e01044" - } - } - } - }, - "type": "object" - }, - "tax": { - "description": "Tax configuration (rate and calculation rules)", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/tax" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "tax" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "06565e5611f23fdf8cc43e5077b92b54" - } - } - } - }, - "type": "object" - }, - "manufacturer": { - "description": "Product manufacturer or brand information", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/manufacturer" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product_manufacturer" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "c2904bca62b22443d6cf5e9d89cab204" - } - } - } - }, - "type": "object" - }, - "unit": { - "description": "Product unit of measure (e.g., piece, liter, kg)", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/unit" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "unit" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "3e34bdebd9bd5edda27e8728904a2552" - } - } - } - }, - "type": "object" - }, - "cover": { - "description": "Main product image displayed in listings and detail pages", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/cover" + "example": "/product/deb10517653c255364175796ace3553f/cover" } } }, @@ -10760,36 +10047,6 @@ }, "type": "object" }, - "openGraphMedia": { - "description": "Open Graph image for social media sharing", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/openGraphMedia" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "media" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "bbda52d941a3452369a00f2880f4f358" - } - } - } - }, - "type": "object" - }, "cmsPage": { "description": "Custom CMS page layout for the product detail page", "properties": { @@ -11355,11 +10612,6 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "openGraphMediaId": { - "description": "Media used as Open Graph image for social media sharing.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, "productNumber": { "description": "Unique number assigned to individual products. Define rules for automatic assignment of every product creation as per your number range.", "type": "string" @@ -11553,12 +10805,6 @@ "customFields": { "type": "object" }, - "ogTitle": { - "type": "string" - }, - "ogDescription": { - "type": "string" - }, "type": { "description": "The type of the product, e.g., physical or digital.", "type": "string", @@ -11724,199 +10970,6 @@ } }, "type": "object" - }, - "bundleItems": { - "description": "Bundle items assigned to this grouped bundle product.", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/bundleItems" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "bundle_item" - }, - "id": { - "type": "string", - "example": "d7706d2e11bc4878ffb242403ea5b274" - } - } - } - } - }, - "type": "object" - }, - "bundleDiscounts": { - "description": "Discount configurations that belong to this bundle.", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/bundleDiscounts" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "bundle_discount" - }, - "id": { - "type": "string", - "example": "a79712cce6d0182645b519f6add10f77" - } - } - } - } - }, - "type": "object" - }, - "bundleSalesChannels": { - "description": "Sales channels in which this bundle is available.", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/bundleSalesChannels" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "sales_channel" - }, - "id": { - "type": "string", - "example": "d4aa52cb00cd89c5e047c6a5c72a0384" - } - } - } - } - }, - "type": "object", - "readOnly": true - }, - "items": { - "description": "Products referenced as bundle items of this bundle.", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/items" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product" - }, - "id": { - "type": "string", - "example": "691d502cfd0e0626cd3b058e5682ad1c" - } - } - } - } - }, - "type": "object" - }, - "belongToBundleItems": { - "description": "Reference to the bundle item definition when this product acts as a bundle item.", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/belongToBundleItems" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "bundle_item" - }, - "id": { - "type": "string", - "example": "db4ef6a91ceb3a70935c07a3617ea4cd" - } - } - } - } - }, - "type": "object" - }, - "bundles": { - "description": "Bundles that include this product as an item.", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/bundles" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product" - }, - "id": { - "type": "string", - "example": "9e21e19f42862a3b26cd7aae135a3f74" - } - } - } - } - }, - "type": "object" } }, "type": "object" @@ -11959,10 +11012,6 @@ "$ref": "#/components/schemas/ProductMedia", "description": "Main product image displayed in listings and detail pages" }, - "openGraphMedia": { - "$ref": "#/components/schemas/Media", - "description": "Open Graph image for social media sharing" - }, "cmsPage": { "$ref": "#/components/schemas/CmsPage", "description": "Custom CMS page layout for the product detail page" @@ -14888,46 +13937,6 @@ }, "type": "object" }, - "SalesChannelTrackingCustomer": { - "description": "Added since version: 6.7.9.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "SalesChannelTrackingOrder": { - "description": "Added since version: 6.7.9.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, "SalesChannelType": { "description": "Added since version: 6.0.0.0", "required": [ @@ -14985,11 +13994,6 @@ "customFields": { "type": "object" }, - "position": { - "description": "Numerical value that indicates the order in which the defined salutations must be displayed in the frontend.", - "type": "integer", - "format": "int64" - }, "createdAt": { "type": "string", "format": "date-time", @@ -15034,11 +14038,6 @@ "customFields": { "type": "object" }, - "position": { - "description": "Numerical value that indicates the order in which the defined salutations must be displayed in the frontend.", - "type": "integer", - "format": "int64" - }, "createdAt": { "type": "string", "format": "date-time", @@ -15134,10 +14133,9 @@ "description": "A destination routeName that has been registered somewhere in the app's router. For example: \\\\\"frontend.detail.page\\\\\"", "type": "string", "enum": [ + "frontend.detail.page", "frontend.navigation.page", - "frontend.landing.page", - "frontend.bundle.detail.page", - "frontend.detail.page" + "frontend.landing.page" ] }, "pathInfo": { @@ -15220,10 +14218,9 @@ "description": "A destination routeName that has been registered somewhere in the app's router. For example: \\\\\"frontend.detail.page\\\\\"", "type": "string", "enum": [ + "frontend.detail.page", "frontend.navigation.page", - "frontend.landing.page", - "frontend.bundle.detail.page", - "frontend.detail.page" + "frontend.landing.page" ] }, "pathInfo": { @@ -16393,10 +15390,6 @@ "additionalAddressLine2": { "type": "string" }, - "hash": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "string" - }, "customFields": { "type": "object" }, @@ -17310,76 +16303,38 @@ }, "type": "object" }, - "EntitySearchResult": { + "CartPriceQuantity": { "type": "object", "properties": { - "entity": { - "type": "string" - }, - "total": { - "type": "integer", - "description": "The total number of found entities" + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_quantity" + ] }, - "aggregations": { - "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", - "items": { - "type": "object" - } + "isCalculated": { + "type": "boolean" }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." + "listPrice": { + "$ref": "#/components/schemas/CartListPrice" }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." - } - } - }, - "SalesChannelContext": { - "type": "object", - "properties": { - "token": { - "description": "Context the user session", - "type": "string" + "price": { + "type": "number" }, - "currentCustomerGroup": { - "type": "object", - "description": "Customer group of the current user", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } - } + "quantity": { + "type": "number" }, - "fallbackCustomerGroup": { - "description": "Fallback group if the default customer group is not applicable", - "type": "object", + "regulationPrice": { "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" + "price": { + "type": "number", + "format": "float" } - } - }, - "currency": { - "$ref": "#/components/schemas/Currency" - }, - "salesChannel": { - "$ref": "#/components/schemas/SalesChannel" - }, - "measurementSystem": { - "$ref": "#/components/schemas/ContextMeasurementSystemInfo" + }, + "type": "object" }, "taxRules": { "type": "array", - "description": "Currently active tax rules and/or rates", "items": { "type": "object", "properties": { @@ -17393,330 +16348,154 @@ } } }, - "customer": { - "oneOf": [ - { - "type": "null" - }, - { - "$ref": "#/components/schemas/Customer" - } - ] + "type": { + "type": "string" + } + }, + "required": [ + "apiAlias" + ] + }, + "CrossSellingElement": { + "type": "object", + "properties": { + "crossSelling": { + "$ref": "#/components/schemas/ProductCrossSelling" }, - "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethod" + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } }, - "shippingLocation": { + "total": { + "type": "integer", + "format": "int32" + }, + "streamId": { + "type": "string", + "format": "uuid" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cross_selling_element" + ] + } + }, + "required": [ + "crossSelling", + "products", + "total", + "apiAlias" + ] + }, + "ProductMeasurements": { + "type": "object", + "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", + "properties": { + "width": { "type": "object", "properties": { - "apiAlias": { + "unit": { "type": "string", "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" + "value": { + "type": "number" } } }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" - }, - "context": { - "description": "Core context with general configuration values and state", + "height": { "type": "object", "properties": { - "versionId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "currencyFactor": { - "type": "integer" - }, - "currencyPrecision": { - "type": "integer", - "format": "int32" - }, - "languageIdChain": { - "type": "array", - "items": { - "type": "string" - } - }, - "scope": { - "type": "string" - }, - "source": { - "type": "object", - "required": [ - "salesChannelId", - "type" + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" ], - "properties": { - "type": { - "type": "string", - "enum": [ - "sales-channel", - "shop-api" - ] - }, - "salesChannelId": { - "type": "string" - } - } - }, - "taxState": { - "type": "string" + "default": "mm" }, - "useCache": { - "type": "boolean" + "value": { + "type": "number" } } }, - "itemRounding": { + "length": { "type": "object", - "required": [ - "decimals", - "interval", - "roundForNet", - "apiAlias" - ], "properties": { - "apiAlias": { + "unit": { "type": "string", "enum": [ - "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" - ] - }, - "decimals": { - "type": "integer", - "format": "int32" - }, - "interval": { - "type": "number", - "format": "float" + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" }, - "roundForNet": { - "type": "boolean" + "value": { + "type": "number" } } }, - "totalRounding": { + "weight": { "type": "object", - "required": [ - "decimals", - "interval", - "roundForNet", - "apiAlias" - ], "properties": { - "apiAlias": { + "unit": { "type": "string", "enum": [ - "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" - ] - }, - "decimals": { - "type": "integer", - "format": "int32" - }, - "interval": { - "type": "number", - "format": "float" + "g", + "kg", + "oz", + "lb" + ], + "default": "kg" }, - "roundForNet": { - "type": "boolean" + "value": { + "type": "number" } } + } + } + }, + "ProductListingCriteria": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" }, - "languageInfo": { + { "type": "object", - "required": [ - "localeCode", - "name" - ], + "description": "Additional search parameters for product listings", "properties": { - "name": { + "order": { + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", "type": "string" }, - "localeCode": { - "type": "string" - } - } - }, - "apiAlias": { - "type": "string", - "enum": [ - "sales_channel_context" - ] - } - }, - "required": [ - "salesChannel", - "apiAlias", - "itemRounding", - "totalRounding", - "languageInfo" - ] - }, - "CartError": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "key": { - "type": "string" - }, - "level": { - "type": "number", - "enum": [ - 0, - 10, - 20 - ], - "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" - }, - "message": { - "type": "string" - }, - "messageKey": { - "type": "string" - } - }, - "required": [ - "key", - "level", - "message", - "messageKey" - ] - }, - "ContextMeasurementSystemInfo": { - "type": "object", - "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", - "properties": { - "system": { - "type": "string", - "enum": [ - "metric", - "imperial" - ], - "default": "metric", - "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." - }, - "units": { - "type": "object", - "description": "Units used in the measurement system.", - "properties": { - "length": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm", - "description": "Unit of length." - }, - "weight": { - "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg", - "description": "Unit of weight." - } - } - } - } - }, - "CustomerAddressRead": { - "type": "object", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true - }, - "customerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true - }, - "createdAt": { - "type": "string", - "format": "date-time" - }, - "updatedAt": { - "oneOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "null" - } - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "oneOf": [ - { - "$ref": "#/components/schemas/CountryState" - }, - { - "type": "null" - } - ] - }, - "salutation": { - "$ref": "#/components/schemas/Salutation" - } - }, - "required": [ - "customerId", - "createdAt", - "updatedAt", - "country", - "salutation" - ] - }, - "ProductListingCriteria": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - }, - { - "type": "object", - "description": "Additional search parameters for product listings", - "properties": { - "order": { - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "type": "string" - }, - "limit": { - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "type": "integer", - "minimum": 0 - }, - "p": { - "description": "Search result page", - "type": "integer", - "default": 1 - }, - "manufacturer": { - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "limit": { + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "type": "integer", + "minimum": 0 + }, + "p": { + "description": "Search result page", + "type": "integer", + "default": 1 + }, + "manufacturer": { + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", "type": "string" }, "min-price": { @@ -17788,1662 +16567,1560 @@ } ] }, - "WishlistLoadRouteResponse": { - "type": "object", - "required": [ - "products" - ], - "properties": { - "wishlist": { - "type": "object", - "properties": { - "customerId": { - "type": "string" - }, - "salesChannelId": { - "type": "string" - } - } - }, - "products": { - "$ref": "#/components/schemas/ProductListingResult" - } - } - }, - "Sitemap": { - "type": "object", - "properties": { - "filename": { - "type": "string" - }, - "created": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "filename", - "created" - ] - }, - "CartPriceQuantity": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_quantity" - ] - }, - "isCalculated": { - "type": "boolean" - }, - "listPrice": { - "$ref": "#/components/schemas/CartListPrice" - }, - "price": { - "type": "number" - }, - "quantity": { - "type": "number" - }, - "regulationPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - } + "ShippingMethodPageRouteResponse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - "type": "object" - }, - "taxRules": { - "type": "array", - "items": { + "active": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "deliveryTimeId": { + "type": "string" + }, + "deliveryTime": { "type": "object", "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, "name": { "type": "string" + }, + "min": { + "type": "integer", + "format": "int32" + }, + "max": { + "type": "integer", + "format": "int32" + }, + "unit": { + "type": "string" } } - } - }, - "type": { - "type": "string" - } - }, - "required": [ - "apiAlias" - ] - }, - "ProductDetailResponse": { - "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", - "properties": { - "product": { - "$ref": "#/components/schemas/Product" - }, - "configurator": { - "type": "array", - "description": "List of property groups with their corresponding options and information on how to display them.", - "items": { - "$ref": "#/components/schemas/PropertyGroup" - } - } - }, - "required": [ - "product" - ] - }, - "NewsletterStatus": { - "type": "string", - "enum": [ - "notSet", - "optIn", - "optOut", - "direct", - "undefined" - ], - "description": "The subscription status. Possible values are: notSet, optIn, optOut, direct, undefined." - }, - "CartDelivery": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" - } - } - }, - "location": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "state": { - "$ref": "#/components/schemas/CountryState" - } - } - }, - "positions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDeliveryPosition" - } - }, - "shippingCosts": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "ReferencePrice": { - "type": "object", - "properties": { - "purchaseUnit": { - "type": "number" - }, - "referenceUnit": { - "type": "number" - }, - "unitName": { - "type": "string" - }, - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_reference" - ] - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/ListPrice" - }, - { - "type": "null" + }, + "translations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + } + } } - ] - }, - "regulationPrice": { - "oneOf": [ - { + }, + "orderDeliveries": { + "type": "array", + "items": { "type": "object", "properties": { - "price": { - "type": "number" + "orderId": { + "type": "string" }, - "apiAlias": { + "shippingOrderAddressId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "shippingDateEarliest": { "type": "string", - "enum": [ - "cart_regulation_price" - ] + "format": "date-time" + }, + "shippingDateLatest": { + "type": "string", + "format": "date-time" + }, + "stateId": { + "type": "string" } } - }, - { - "type": "null" } - ] - }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "^[0-9a-f]{32}$" - }, - { - "type": "null" + }, + "salesChannelDefaultAssignments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } } - ] - } - }, - "required": [ - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" - ] - }, - "CartDeliveryInformation": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_information" - ] - }, - "freeDelivery": { - "type": "boolean" - }, - "deliveryTime": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer" - }, - "max": { - "type": "integer" - }, - "unit": { - "type": "string" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_time" - ] - } - } - }, - "height": { - "type": "integer" - }, - "length": { - "type": "integer" - }, - "restockTime": { - "type": "integer" - }, - "stock": { - "type": "integer" - }, - "weight": { - "type": "integer" - }, - "width": { - "type": "integer" - } - }, - "required": [ - "apiAlias" - ] - }, - "Cart": { - "type": "object", - "properties": { - "name": { - "description": "Name of the cart - for example `guest-cart`", - "type": "string" - }, - "token": { - "description": "Context token identifying the cart and the user session", - "type": "string" - }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "lineItems": { - "description": "All items within the cart", - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - }, - "errors": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "anyOf": [ - { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartError" - } - }, - { + }, + "salesChannels": { + "type": "array", + "items": { "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "code": { - "type": "number" - }, - "key": { - "type": "string" - }, - "level": { - "type": "number" - }, - "message": { - "type": "string" - }, - "messageKey": { - "type": "string" - } + "properties": { + "typeId": { + "type": "string" }, - "required": [ - "code", - "key", - "level", - "message", - "messageKey" - ] + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } } } - ] - }, - "deliveries": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDelivery" - } - }, - "transactions": { - "description": "A list of all payment transactions associated with the current cart.", - "type": "array", - "items": { + }, + "availabilityRule": { "type": "object", "properties": { - "paymentMethodId": { + "name": { "type": "string" }, - "amount": { - "$ref": "#/components/schemas/CalculatedPrice" + "description": { + "type": "string" + }, + "priority": { + "type": "integer", + "format": "int32" + }, + "invalid": { + "type": "boolean" } } - } - }, - "modified": { - "type": "boolean" - }, - "customerComment": { - "description": "A comment that can be added to the cart.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "affiliateCode": { - "description": "An affiliate tracking code", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" + }, + "availabilityRuleId": { + "type": "string" + }, + "prices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "ruleId": { + "type": "string" + }, + "calculation": { + "type": "integer", + "format": "int32" + }, + "quantityStart": { + "type": "number", + "format": "float" + }, + "quantityEnd": { + "type": "number", + "format": "float" + }, + "price": { + "type": "number", + "format": "float" + }, + "calculationRuleId": { + "type": "string" + } + } } - ] - }, - "campaignCode": { - "description": "A campaign tracking code", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" + }, + "mediaId": { + "type": "string" + }, + "media": { + "type": "object", + "properties": { + "userId": { + "type": "string" + }, + "mimeType": { + "type": "string" + }, + "fileExtension": { + "type": "string" + }, + "fileSize": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string" + }, + "metaDataRaw": { + "type": "string" + }, + "mediaTypeRaw": { + "type": "string" + }, + "uploadedAt": { + "type": "string", + "format": "date-time" + }, + "alt": { + "type": "string" + }, + "url": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "mediaFolderId": { + "type": "string" + }, + "private": { + "type": "boolean" + }, + "thumbnailsRo": { + "type": "string" + } } - ] - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart" - ] + }, + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + } + } } - }, - "required": [ - "price", - "apiAlias" - ] + } }, - "AccountNewsletterRecipient": { + "ProductDetailResponse": { "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "status": { - "$ref": "#/components/schemas/NewsletterStatus" + "product": { + "$ref": "#/components/schemas/Product" }, - "apiAlias": { - "type": "string", - "enum": [ - "account_newsletter_recipient" - ] + "configurator": { + "type": "array", + "description": "List of property groups with their corresponding options and information on how to display them.", + "items": { + "$ref": "#/components/schemas/PropertyGroup" + } } }, "required": [ - "status", - "apiAlias" + "product" ] }, - "CrossSellingElementCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CrossSellingElement" - } - }, - "Criteria": { + "CartDeliveryPosition": { "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "page": { - "description": "Search result page", - "type": "integer" + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } }, - "term": { - "description": "Search term", + "identifier": { "type": "string" }, - "limit": { - "description": "Number of items per result page", - "type": "integer" + "lineItem": { + "$ref": "#/components/schemas/LineItem" }, - "filter": { + "price": { + "$ref": "#/components/schemas/CalculatedPrice" + } + } + }, + "LineItemType": { + "type": "string", + "deprecated": true, + "enum": [ + "product", + "credit", + "custom", + "promotion", + "discount", + "container", + "quantity" + ] + }, + "LineItem": { + "type": "object", + "properties": { + "children": { "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] + "$ref": "#/components/schemas/LineItem" } }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" - } + "cover": { + "$ref": "#/components/schemas/Media" }, - "query": { - "type": "string", - "description": "The query string to search for" + "dataContextHash": { + "type": "string" }, - "associations": { - "$ref": "#/components/schemas/Associations" + "dataTimestamp": { + "type": "string" }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } + "deliveryInformation": { + "$ref": "#/components/schemas/CartDeliveryInformation" }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" - } + "description": { + "type": "string" }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } + "good": { + "type": "boolean" }, - "fields": { - "type": "array", - "description": "Fields which should be returned in the search result.", - "items": { - "type": "string", - "description": "Name of a field" - } + "id": { + "type": "string" }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } + "label": { + "type": "string" }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" + "modified": { + "type": "boolean" }, - "includes": { - "$ref": "#/components/schemas/Includes" + "modifiedByApp": { + "type": "boolean" }, - "excludes": { - "$ref": "#/components/schemas/Excludes" - } - } - }, - "NoneFieldsCriteria": { - "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", - "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "term": { - "description": "Search term", - "type": "string" - }, - "limit": { - "description": "Number of items per result page", - "type": "integer" + "payload": { + "$ref": "#/components/schemas/ProductJsonApi" }, - "filter": { - "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" + "price": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] + }, + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] } - ] - } - }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" - } + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] + }, + "quantity": { + "type": "number" + }, + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] + }, + "totalPrice": { + "type": "number" + }, + "unitPrice": { + "type": "number" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } + } + }, + "required": [ + "apiAlias", + "totalPrice", + "quantity", + "unitPrice" + ] }, - "query": { - "type": "string", - "description": "The query string to search for" + "priceDefinition": { + "$ref": "#/components/schemas/CartPriceQuantity" }, - "associations": { - "$ref": "#/components/schemas/Associations" + "quantity": { + "type": "number" }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] + "quantityInformation": { + "type": "object", + "properties": { + "maxPurchase": { + "type": "number" + }, + "minPurchase": { + "type": "number" + }, + "purchaseSteps": { + "type": "number" + } } }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" - } + "referencedId": { + "type": "string" }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } + "removable": { + "type": "boolean" }, - "grouping": { + "stackable": { + "type": "boolean" + }, + "states": { + "deprecated": true, "type": "array", - "description": "Perform groupings over certain fields", "items": { "type": "string", - "description": "Name of a field" + "enum": [ + "is-physical", + "is-download" + ] } }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" - }, - "includes": { - "$ref": "#/components/schemas/Includes" + "type": { + "$ref": "#/components/schemas/OrderLineItem/properties/type" }, - "excludes": { - "$ref": "#/components/schemas/Excludes" + "uniqueIdentifier": { + "type": "string" } - } + }, + "required": [ + "id", + "type", + "deliveryInformation", + "payload", + "quantity", + "states" + ] }, - "Associations": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Criteria" + "CrossSellingElementCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrossSellingElement" } }, - "Includes": { + "Sitemap": { "type": "object", - "additionalProperties": { - "type": "array", - "items": { + "properties": { + "filename": { "type": "string" - } - } - }, - "Excludes": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "Aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "title": "AggregationEntity", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationFilter", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationTerms", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] }, - { - "title": "AggregationHistogram", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationRange", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationRange" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "created": { + "type": "string", + "format": "date-time" } + }, + "required": [ + "filename", + "created" ] }, - "SubAggregations": { + "CartItems": { "type": "object", + "required": [ + "items" + ], "properties": { - "aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/AggregationRange" - } - ] + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } } } }, - "TotalCountMode": { - "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", - "type": "string", - "default": "none", - "enum": [ - "none", - "exact", - "next-pages" - ] - }, - "Query": { + "CookieEntry": { "type": "object", "properties": { - "score": { - "type": "number" + "cookie": { + "type": "string" }, - "query": { - "oneOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "additionalProperties": true - }, - "Sort": { - "type": "object", - "properties": { - "field": { + "value": { "type": "string" }, - "order": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "expiration": { + "type": "integer" }, - "naturalSorting": { - "type": "boolean" + "name": { + "type": "string" }, - "type": { + "description": { "type": "string" - } - }, - "required": [ - "field", - "order" - ] - }, - "Filters": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "SimpleFilter": { - "type": "object", - "properties": { - "type": { + }, + "hidden": { + "type": "boolean" + }, + "apiAlias": { "type": "string", "enum": [ - "contains", - "equalsAny", - "prefix", - "suffix" + "cookie_entry" ] - }, - "field": { - "type": "string" - }, - "value": { - "type": "string" } }, "required": [ - "type", - "field", - "value" + "cookie", + "hidden", + "apiAlias" ] }, - "EqualsFilter": { + "CookieRouteResponse": { "type": "object", + "description": "Response containing cookie groups and their configuration hash.", "properties": { - "type": { + "apiAlias": { "type": "string", "enum": [ - "equals" + "cookie_groups_hash" ] }, - "field": { - "type": "string" + "elements": { + "type": "array", + "description": "Collection of cookie groups", + "items": { + "$ref": "#/components/schemas/CookieGroup" + } }, - "value": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "type": "null" - } - ] + "hash": { + "type": "string", + "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", + "example": "f86b6a872cb83dbd22d838ceda1aa3d4" + }, + "languageId": { + "type": "string", + "format": "uuid", + "description": "The language ID for which the cookie configuration was generated. Used to store hashes per language.", + "example": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" } }, "required": [ - "type", - "field", - "value" - ] - }, - "MultiNotFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "multi", - "not" - ] - }, - "operator": { - "type": "string", - "enum": [ - "and", - "or", - "nor", - "nand" - ] - }, - "queries": { - "$ref": "#/components/schemas/Filters" - } - }, - "required": [ - "type", - "operator", - "queries" - ] + "elements", + "hash", + "languageId", + "apiAlias" + ], + "example": { + "apiAlias": "cookie_groups_hash", + "elements": [ + { + "isRequired": true, + "description": "Cookies required for this shop to function:", + "name": "Technically required", + "entries": [ + { + "name": "Session", + "hidden": false, + "cookie": "session-", + "apiAlias": "cookie_entry" + }, + { + "name": "Timezone", + "hidden": false, + "cookie": "timezone", + "apiAlias": "cookie_entry" + }, + { + "value": "1", + "expiration": 30, + "name": "Cookie preferences", + "hidden": true, + "cookie": "cookie-preference", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "description": "Cookies used for statistics and shop performance metrics.", + "name": "Statistics", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "Google Analytics", + "hidden": false, + "cookie": "google-analytics-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "description": "Allows Google to collect personal data for online advertising and marketing.", + "name": "Marketing", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "Google Advertising", + "hidden": false, + "cookie": "google-ads-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "name": "Comfort features", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "YouTube video", + "hidden": false, + "cookie": "youtube-video", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + } + ], + "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", + "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" + } }, - "RangeFilter": { + "CartDelivery": { "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "type": { - "type": "string", - "enum": [ - "range" - ] - }, - "field": { - "type": "string" - }, - "parameters": { + "deliveryDate": { "type": "object", "properties": { - "gte": { - "type": "number" - }, - "gt": { - "type": "number" - }, - "lte": { - "type": "number" + "earliest": { + "type": "string", + "format": "date-time" }, - "lt": { - "type": "number" + "latest": { + "type": "string", + "format": "date-time" } } - } - }, - "required": [ - "type", - "field", - "parameters" - ] - }, - "FindProductVariantRouteResponse": { - "type": "object", - "properties": { - "foundCombination": { + }, + "location": { "type": "object", "properties": { - "variantId": { + "apiAlias": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "enum": [ + "cart_delivery_shipping_location" + ] }, - "options": { - "type": "array", - "items": { - "type": "string" - } + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "state": { + "$ref": "#/components/schemas/CountryState" } } + }, + "positions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDeliveryPosition" + } + }, + "shippingCosts": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" } } }, - "Price": { + "CookieEntryCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CookieEntry" + } + }, + "NavigationRouteResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + } + }, + "NavigationType": { + "type": "string", + "enum": [ + "main-navigation", + "footer-navigation", + "service-navigation" + ] + }, + "SalesChannelContext": { "type": "object", - "description": "Price object", "properties": { - "currencyId": { - "description": "Unique identity of the associated currency.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "Gross price for the associated currency.", - "type": "number" - }, - "net": { - "description": "Net price for the associated currency.", - "type": "number" - }, - "linked": { - "description": "Whether gross and net prices are linked through the tax configuration.", - "type": "boolean" + "token": { + "description": "Context the user session", + "type": "string" }, - "percentage": { - "description": "Discount percentage relative to the list price for the gross and net amounts. `null` when no list price is set.", - "type": [ - "object", - "null" - ], + "currentCustomerGroup": { + "type": "object", + "description": "Customer group of the current user", "properties": { - "gross": { - "description": "Discount percentage relative to the gross list price.", - "type": "number" + "name": { + "type": "string" }, - "net": { - "description": "Discount percentage relative to the net list price.", - "type": "number" + "displayGross": { + "type": "boolean" } - }, - "required": [ - "gross", - "net" - ] + } }, - "listPrice": { - "description": "Reference list price for displaying discounts.", + "fallbackCustomerGroup": { + "description": "Fallback group if the default customer group is not applicable", "type": "object", "properties": { - "currencyId": { - "description": "Unique identity of the associated currency.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "Gross list price for the associated currency.", - "type": "number" - }, - "net": { - "description": "Net list price for the associated currency.", - "type": "number" + "name": { + "type": "string" }, - "linked": { - "description": "Whether gross and net list prices are linked through the tax configuration.", + "displayGross": { "type": "boolean" } - }, - "required": [ - "gross", - "net" + } + }, + "currency": { + "$ref": "#/components/schemas/Currency" + }, + "salesChannel": { + "$ref": "#/components/schemas/SalesChannel" + }, + "measurementSystem": { + "$ref": "#/components/schemas/ContextMeasurementSystemInfo" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } + }, + "customer": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/Customer" + } ] }, - "regulationPrice": { - "description": "Reference price used for legal price disclosures.", + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod" + }, + "shippingLocation": { "type": "object", "properties": { - "currencyId": { - "description": "Unique identity of the associated currency.", + "apiAlias": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "Gross regulation price for the associated currency.", - "type": "number" + "enum": [ + "cart_delivery_shipping_location" + ] }, - "net": { - "description": "Net regulation price for the associated currency.", - "type": "number" + "country": { + "$ref": "#/components/schemas/Country" }, - "linked": { - "description": "Whether gross and net regulation prices are linked through the tax configuration.", - "type": "boolean" + "address": { + "$ref": "#/components/schemas/CustomerAddress" } - }, - "required": [ - "gross", - "net" - ] - } - }, - "required": [ - "currencyId", - "gross", - "net" - ] - }, - "NavigationType": { - "type": "string", - "enum": [ - "main-navigation", - "footer-navigation", - "service-navigation" - ] - }, - "OrderRouteResponse": { - "type": "object", - "properties": { - "orders": { + } + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + }, + "context": { + "description": "Core context with general configuration values and state", "type": "object", - "allOf": [ - { + "properties": { + "versionId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "currencyFactor": { + "type": "integer" + }, + "currencyPrecision": { + "type": "integer", + "format": "int32" + }, + "languageIdChain": { + "type": "array", + "items": { + "type": "string" + } + }, + "scope": { + "type": "string" + }, + "source": { "type": "object", "required": [ - "elements" + "salesChannelId", + "type" ], "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order" - } + "type": { + "type": "string", + "enum": [ + "sales-channel", + "shop-api" + ] + }, + "salesChannelId": { + "type": "string" } } }, - { - "$ref": "#/components/schemas/EntitySearchResult" + "taxState": { + "type": "string" + }, + "useCache": { + "type": "boolean" } - ] + } }, - "paymentChangeable": { + "itemRounding": { "type": "object", - "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", - "additionalProperties": { - "type": "boolean" + "required": [ + "decimals", + "interval", + "roundForNet", + "apiAlias" + ], + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" + ] + }, + "decimals": { + "type": "integer", + "format": "int32" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" + } + } + }, + "totalRounding": { + "type": "object", + "required": [ + "decimals", + "interval", + "roundForNet", + "apiAlias" + ], + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" + ] + }, + "decimals": { + "type": "integer", + "format": "int32" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" + } + } + }, + "languageInfo": { + "type": "object", + "required": [ + "localeCode", + "name" + ], + "properties": { + "name": { + "type": "string" + }, + "localeCode": { + "type": "string" + } } + }, + "apiAlias": { + "type": "string", + "enum": [ + "sales_channel_context" + ] } }, "required": [ - "orders" + "salesChannel", + "apiAlias", + "itemRounding", + "totalRounding", + "languageInfo" ] }, - "ProductListingResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EntitySearchResult" + "AggregationMetrics": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - { - "type": "object", - "properties": { - "currentFilters": { - "type": "object", - "description": "Contains the state of the filters. These can be used to create listing filters.", - "properties": { - "navigationId": { - "type": "string" - }, - "manufacturer": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "price": { - "type": "object", - "properties": { - "min": { - "type": "integer", - "default": 0 - }, - "max": { - "type": "integer", - "default": 0 - } - }, - "required": [ - "min", - "max" - ] - }, - "rating": { - "oneOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "shipping-free": { - "type": "boolean", - "default": false - }, - "properties": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "search": { - "type": "string" - } - }, - "required": [ - "manufacturer", - "navigationId", - "price", - "properties", - "rating", - "shipping-free" - ] - }, - "availableSortings": { - "type": "array", - "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", - "items": { - "type": "object", - "properties": { - "label": { - "type": "string" - }, - "translated": { - "type": "object", - "properties": { - "label": { - "type": "string" - } - }, - "required": [ - "label" - ] - }, - "key": { - "type": "string" - }, - "priority": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_sorting" - ] - } - }, - "required": [ - "label", - "translated", - "key", - "priority", - "apiAlias" - ] - } - }, - "sorting": { - "type": "string" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - }, - "entity": { - "type": "string", - "enum": [ - "product" - ] - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_listing" - ] - } - }, - "required": [ - "elements", - "availableSortings", - "currentFilters", - "apiAlias" + "type": { + "type": "string", + "enum": [ + "avg", + "count", + "max", + "min", + "stats", + "sum" ] + }, + "field": { + "type": "string" } + }, + "required": [ + "name", + "type", + "field" ] }, - "ProductMeasurements": { + "CookieGroupCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CookieGroup" + } + }, + "ProductListingFlags": { "type": "object", - "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", + "description": "Additional flags for product listings", "properties": { - "width": { - "type": "object", - "properties": { - "unit": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" - }, - "value": { - "type": "number" - } - } - }, - "height": { - "type": "object", - "properties": { - "unit": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" - }, - "value": { - "type": "number" - } - } - }, - "length": { - "type": "object", - "properties": { - "unit": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" + "no-aggregations": { + "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", + "oneOf": [ + { + "type": "string" }, - "value": { - "type": "number" + { + "type": "null" } - } + ] }, - "weight": { - "type": "object", - "properties": { - "unit": { - "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg" + "only-aggregations": { + "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", + "oneOf": [ + { + "type": "string" }, - "value": { - "type": "number" + { + "type": "null" } - } + ] } } }, - "CookieEntryCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CookieEntry" - } - }, - "CrossSellingElement": { + "Breadcrumb": { "type": "object", "properties": { - "crossSelling": { - "$ref": "#/components/schemas/ProductCrossSelling" + "name": { + "type": "string" }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" + "categoryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "type": { + "$ref": "#/components/schemas/Category/properties/type" + }, + "translated": { + "type": "object", + "additionalProperties": true, + "properties": { + "customFields": { + "type": "object" + }, + "slotConfig": { + "type": "object" + }, + "linkType": { + "$ref": "#/components/schemas/Category/properties/linkType" + }, + "internalLink": { + "type": "string" + }, + "externalLink": { + "type": "string" + }, + "linkNewTab": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "metaTitle": { + "type": "string" + }, + "metaDescription": { + "type": "string" + }, + "keywords": { + "type": "string" + } } }, - "total": { - "type": "integer", - "format": "int32" + "path": { + "type": "string" }, - "streamId": { - "type": "string", - "format": "uuid" + "seoUrls": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" + } }, "apiAlias": { "type": "string", "enum": [ - "cross_selling_element" + "breadcrumb" ] } }, "required": [ - "crossSelling", - "products", - "total", + "name", + "categoryId", + "type", + "translated", + "path", "apiAlias" ] }, - "CookieEntry": { + "CartError": { "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "cookie": { - "type": "string" - }, - "value": { + "key": { "type": "string" }, - "expiration": { - "type": "integer" + "level": { + "type": "number", + "enum": [ + 0, + 10, + 20 + ], + "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" }, - "name": { + "message": { "type": "string" }, - "description": { + "messageKey": { "type": "string" - }, - "hidden": { - "type": "boolean" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cookie_entry" - ] } }, "required": [ - "cookie", - "hidden", - "apiAlias" + "key", + "level", + "message", + "messageKey" ] }, - "MeasurementUnits": { + "CartPriceReference": { "type": "object", - "description": "Configuration of the measurement system", "properties": { - "system": { + "purchaseUnit": { + "type": "number" + }, + "referenceUnit": { + "type": "number" + }, + "unitName": { + "type": "string" + }, + "price": { + "type": "number" + }, + "apiAlias": { "type": "string", "enum": [ - "metric", - "imperial" - ], - "default": "metric", - "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." + "cart_price_reference" + ] }, - "units": { - "type": "object", - "description": "Units used in the measurement system.", - "properties": { - "length": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm", - "description": "Unit of length." + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" }, - "weight": { + { + "type": "null" + } + ] + }, + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg", - "description": "Unit of weight." + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" } - } + ] } - } + }, + "required": [ + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" + ] }, - "CartListPrice": { + "AccountNewsletterRecipient": { "type": "object", - "description": "", "properties": { - "discount": { - "type": "number" - }, - "percentage": { - "type": "number" - }, - "price": { - "type": "number" + "status": { + "type": "string", + "enum": [ + "undefined", + "notSet", + "direct", + "optIn", + "optOut" + ] }, "apiAlias": { "type": "string", "enum": [ - "cart_list_price" + "account_newsletter_recipient" ] } }, "required": [ + "status", "apiAlias" ] }, - "CookieGroup": { + "SuccessResponse": { "type": "object", "properties": { - "isRequired": { + "success": { "type": "boolean" - }, - "name": { - "type": "string" - }, - "description": { + } + } + }, + "EntitySearchResult": { + "type": "object", + "properties": { + "entity": { "type": "string" }, - "cookie": { - "type": "string" + "total": { + "type": "integer", + "description": "The total number of found entities" }, - "value": { - "type": "string" + "aggregations": { + "type": "array", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", + "items": { + "type": "object" + } }, - "expiration": { - "type": "integer" + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." }, - "entries": { - "$ref": "#/components/schemas/CookieEntryCollection" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cookie_group" - ] - } - }, - "not": { - "allOf": [ - { - "required": [ - "cookie" - ] - }, - { - "required": [ - "entries" - ] - } - ] - }, - "required": [ - "name", - "isRequired", - "apiAlias" - ] - }, - "SuccessResponse": { - "type": "object", - "properties": { - "success": { - "type": "boolean" + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." } } }, - "CartItems": { + "CalculatedPrice": { "type": "object", - "required": [ - "items" - ], + "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "items": { + "unitPrice": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "rawTotal": { + "type": "number" + }, + "totalPrice": { + "type": "number" + }, + "taxStatus": { + "type": "string", + "enum": [ + "net", + "tax-free" + ] + }, + "calculatedTaxes": { "type": "array", "items": { - "$ref": "#/components/schemas/LineItem" + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] } - } - } - }, - "AggregationMetrics": { - "type": "object", - "properties": { - "name": { - "type": "string" }, - "type": { - "type": "string", - "enum": [ - "avg", - "count", - "max", - "min", - "stats", - "sum" + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } ] }, - "field": { - "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "CartDeliveryPosition": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" }, - "latest": { - "type": "string", - "format": "date-time" + { + "type": "null" } - } + ] }, - "identifier": { - "type": "string" + "positionPrice": { + "type": "number" }, - "lineItem": { - "$ref": "#/components/schemas/LineItem" + "netPrice": { + "type": "number" }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } } - } + }, + "required": [ + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "referencePrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitPrice", + "positionPrice", + "netPrice", + "taxRules", + "rawTotal", + "taxStatus" + ] }, "CustomerAddressBody": { "description": "Added since version: 6.0.0.0", @@ -19515,1402 +18192,1564 @@ }, "type": "object" }, - "ProductPurchaseLimit": { + "ReferencePrice": { "type": "object", - "description": "Current quantity purchase limits for a product.", - "required": [ - "productId", - "minPurchase", - "purchaseSteps", - "maxPurchase", - "stock", - "apiAlias" - ], "properties": { - "productId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The product ID." - }, - "minPurchase": { - "type": "integer", - "description": "Minimum quantity a customer can purchase." + "purchaseUnit": { + "type": "number" }, - "purchaseSteps": { - "type": "integer", - "description": "Step increment for quantity selection." + "referenceUnit": { + "type": "number" }, - "maxPurchase": { - "type": "integer", - "description": "Maximum quantity a customer can purchase, reflecting current stock for closeout products." + "unitName": { + "type": "string" }, - "stock": { - "type": [ - "integer", - "null" - ], - "description": "Current stock level of the product." + "price": { + "type": "number" }, "apiAlias": { "type": "string", "enum": [ - "product_purchase_limit" + "cart_price_reference" + ] + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/ListPrice" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } ] } - } + }, + "required": [ + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" + ] }, - "CookieRouteResponse": { + "CustomerAddressRead": { "type": "object", - "description": "Response containing cookie groups and their configuration hash.", "properties": { - "apiAlias": { + "id": { "type": "string", - "enum": [ - "cookie_groups_hash" - ] - }, - "elements": { - "type": "array", - "description": "Collection of cookie groups", - "items": { - "$ref": "#/components/schemas/CookieGroup" - } + "pattern": "^[0-9a-f]{32}$", + "readOnly": true }, - "hash": { + "customerId": { "type": "string", - "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", - "example": "f86b6a872cb83dbd22d838ceda1aa3d4" + "pattern": "^[0-9a-f]{32}$", + "readOnly": true }, - "languageId": { + "createdAt": { "type": "string", - "format": "uuid", - "description": "The language ID for which the cookie configuration was generated. Used to store hashes per language.", - "example": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" + "format": "date-time" + }, + "updatedAt": { + "oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "oneOf": [ + { + "$ref": "#/components/schemas/CountryState" + }, + { + "type": "null" + } + ] + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, "required": [ - "elements", - "hash", - "languageId", - "apiAlias" - ], - "example": { - "apiAlias": "cookie_groups_hash", - "elements": [ - { - "isRequired": true, - "description": "Cookies required for this shop to function:", - "name": "Technically required", - "entries": [ + "customerId", + "createdAt", + "updatedAt", + "country", + "salutation" + ] + }, + "Criteria": { + "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", + "properties": { + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", + "type": "string" + }, + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ { - "name": "Session", - "hidden": false, - "cookie": "session-", - "apiAlias": "cookie_entry" + "$ref": "#/components/schemas/SimpleFilter" }, { - "name": "Timezone", - "hidden": false, - "cookie": "timezone", - "apiAlias": "cookie_entry" + "$ref": "#/components/schemas/EqualsFilter" }, { - "value": "1", - "expiration": 30, - "name": "Cookie preferences", - "hidden": true, - "cookie": "cookie-preference", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "description": "Cookies used for statistics and shop performance metrics.", - "name": "Statistics", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "Google Analytics", - "hidden": false, - "cookie": "google-analytics-enabled", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "description": "Allows Google to collect personal data for online advertising and marketing.", - "name": "Marketing", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "Google Advertising", - "hidden": false, - "cookie": "google-ads-enabled", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "name": "Comfort features", - "entries": [ + "$ref": "#/components/schemas/MultiNotFilter" + }, { - "value": "1", - "expiration": 30, - "name": "YouTube video", - "hidden": false, - "cookie": "youtube-video", - "apiAlias": "cookie_entry" + "$ref": "#/components/schemas/RangeFilter" } - ], - "apiAlias": "cookie_group" + ] } - ], - "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", - "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" - } - }, - "CartItemsUpdate": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { + }, + "ids": { "type": "array", + "description": "List of ids to search for", "items": { - "$ref": "#/components/schemas/CartLineItemUpdate" + "type": "string" } - } - } - }, - "CartLineItemUpdate": { - "type": "object", - "required": [ - "id" - ], - "properties": { - "id": { - "type": "string" }, - "type": { - "$ref": "#/components/schemas/OrderLineItem/properties/type" + "query": { + "type": "string", + "description": "The query string to search for" }, - "quantity": { - "type": "integer" + "associations": { + "$ref": "#/components/schemas/Associations" }, - "referencedId": { - "type": "string" + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } }, - "label": { - "type": "string" + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + } }, - "payload": { - "type": "object" + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } }, - "stackable": { - "type": "boolean" + "fields": { + "type": "array", + "description": "Fields which should be returned in the search result.", + "items": { + "type": "string", + "description": "Name of a field" + } }, - "removable": { - "type": "boolean" + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } }, - "coverId": { + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" + }, + "excludes": { + "$ref": "#/components/schemas/Excludes" + } + } + }, + "NoneFieldsCriteria": { + "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", + "properties": { + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", "type": "string" }, - "priceDefinition": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "price": { - "type": "number" - }, - "percentage": { - "type": "number" - }, - "quantity": { - "type": "integer" - }, - "isCalculated": { - "type": "boolean" - }, - "listPrice": { - "type": "number" - }, - "taxRules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number" - }, - "percentage": { - "type": "number" - } - } + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } - } + ] } + }, + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } + }, + "query": { + "type": "string", + "description": "The query string to search for" + }, + "associations": { + "$ref": "#/components/schemas/Associations" + }, + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + }, + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } + }, + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" + }, + "excludes": { + "$ref": "#/components/schemas/Excludes" } } }, - "NavigationRouteResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" + "Associations": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Criteria" } }, - "CookieGroupCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CookieGroup" + "Includes": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } } }, - "ProductListingFlags": { + "Excludes": { "type": "object", - "description": "Additional flags for product listings", - "properties": { - "no-aggregations": { - "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", - "oneOf": [ + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "Aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" + }, + { + "title": "AggregationEntity", + "allOf": [ { - "type": "string" + "$ref": "#/components/schemas/AggregationEntity" }, { - "type": "null" + "$ref": "#/components/schemas/SubAggregations" } ] }, - "only-aggregations": { - "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", - "oneOf": [ + { + "title": "AggregationFilter", + "allOf": [ { - "type": "string" + "$ref": "#/components/schemas/AggregationFilter" }, { - "type": "null" + "$ref": "#/components/schemas/SubAggregations" } ] - } - } - }, - "ShippingMethodPageRouteResponse": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "deliveryTimeId": { - "type": "string" - }, - "deliveryTime": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer", - "format": "int32" - }, - "max": { - "type": "integer", - "format": "int32" - }, - "unit": { - "type": "string" - } - } - }, - "translations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - } - } - } - }, - "orderDeliveries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "orderId": { - "type": "string" - }, - "shippingOrderAddressId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "shippingDateEarliest": { - "type": "string", - "format": "date-time" - }, - "shippingDateLatest": { - "type": "string", - "format": "date-time" - }, - "stateId": { - "type": "string" - } - } + }, + { + "title": "AggregationTerms", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/SubAggregations" } - }, - "salesChannelDefaultAssignments": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" - }, - "hreflangDefaultDomainId": { - "type": "string" - } - } + ] + }, + { + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/SubAggregations" } - }, - "salesChannels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" - }, - "hreflangDefaultDomainId": { - "type": "string" - } - } + ] + }, + { + "title": "AggregationRange", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationRange" + }, + { + "$ref": "#/components/schemas/SubAggregations" } - }, - "availabilityRule": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "priority": { - "type": "integer", - "format": "int32" - }, - "invalid": { - "type": "boolean" - } + ] + } + ] + }, + "SubAggregations": { + "type": "object", + "properties": { + "aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" + }, + { + "$ref": "#/components/schemas/AggregationEntity" + }, + { + "$ref": "#/components/schemas/AggregationFilter" + }, + { + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/AggregationRange" } - }, - "availabilityRuleId": { - "type": "string" - }, - "prices": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "ruleId": { - "type": "string" - }, - "calculation": { - "type": "integer", - "format": "int32" - }, - "quantityStart": { - "type": "number", - "format": "float" - }, - "quantityEnd": { - "type": "number", - "format": "float" - }, - "price": { - "type": "number", - "format": "float" - }, - "calculationRuleId": { - "type": "string" - } - } + ] + } + } + }, + "TotalCountMode": { + "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", + "type": "string", + "default": "none", + "enum": [ + "none", + "exact", + "next-pages" + ] + }, + "Query": { + "type": "object", + "properties": { + "score": { + "type": "number" + }, + "query": { + "oneOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } + ] + } + }, + "additionalProperties": true + }, + "Sort": { + "type": "object", + "properties": { + "field": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + }, + "naturalSorting": { + "type": "boolean" + }, + "type": { + "type": "string" + } + }, + "required": [ + "field", + "order" + ] + }, + "Filters": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "mediaId": { - "type": "string" + { + "$ref": "#/components/schemas/EqualsFilter" }, - "media": { - "type": "object", - "properties": { - "userId": { - "type": "string" - }, - "mimeType": { - "type": "string" - }, - "fileExtension": { - "type": "string" - }, - "fileSize": { - "type": "integer", - "format": "int32" - }, - "title": { - "type": "string" - }, - "metaDataRaw": { - "type": "string" - }, - "mediaTypeRaw": { - "type": "string" - }, - "uploadedAt": { - "type": "string", - "format": "date-time" - }, - "alt": { - "type": "string" - }, - "url": { - "type": "string" - }, - "fileName": { - "type": "string" - }, - "mediaFolderId": { - "type": "string" - }, - "private": { - "type": "boolean" - }, - "thumbnailsRo": { - "type": "string" - } - } + { + "$ref": "#/components/schemas/MultiNotFilter" }, - "tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - } - } + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "SimpleFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "contains", + "equalsAny", + "prefix", + "suffix" + ] + }, + "field": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": [ + "type", + "field", + "value" + ] + }, + "EqualsFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "equals" + ] + }, + "field": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" } - } + ] } - } + }, + "required": [ + "type", + "field", + "value" + ] }, - "CartPriceReference": { + "MultiNotFilter": { "type": "object", "properties": { - "purchaseUnit": { - "type": "number" - }, - "referenceUnit": { - "type": "number" - }, - "unitName": { - "type": "string" + "type": { + "type": "string", + "enum": [ + "multi", + "not" + ] }, - "price": { - "type": "number" + "operator": { + "type": "string", + "enum": [ + "and", + "or", + "nor", + "nand" + ] }, - "apiAlias": { + "queries": { + "$ref": "#/components/schemas/Filters" + } + }, + "required": [ + "type", + "operator", + "queries" + ] + }, + "RangeFilter": { + "type": "object", + "properties": { + "type": { "type": "string", "enum": [ - "cart_price_reference" + "range" ] }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" + "field": { + "type": "string" + }, + "parameters": { + "type": "object", + "properties": { + "gte": { + "type": "number" }, - { - "type": "null" + "gt": { + "type": "number" + }, + "lte": { + "type": "number" + }, + "lt": { + "type": "number" } - ] - }, - "regulationPrice": { - "oneOf": [ + } + } + }, + "required": [ + "type", + "field", + "parameters" + ] + }, + "Association": { + "additionalProperties": { + "$ref": "#/components/schemas/Association" + } + }, + "OrderRouteResponse": { + "type": "object", + "properties": { + "orders": { + "type": "object", + "allOf": [ { "type": "object", + "required": [ + "elements" + ], "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" + } } } }, { - "type": "null" + "$ref": "#/components/schemas/EntitySearchResult" } ] }, - "hasRange": { + "paymentChangeable": { + "type": "object", + "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", + "additionalProperties": { + "type": "boolean" + } + } + }, + "required": [ + "orders" + ] + }, + "CartDeliveryInformation": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_information" + ] + }, + "freeDelivery": { "type": "boolean" }, - "variantId": { - "oneOf": [ - { + "deliveryTime": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "min": { + "type": "integer" + }, + "max": { + "type": "integer" + }, + "unit": { + "type": "string" + }, + "apiAlias": { "type": "string", - "format": "^[0-9a-f]{32}$" + "enum": [ + "cart_delivery_time" + ] + } + } + }, + "height": { + "type": "integer" + }, + "length": { + "type": "integer" + }, + "restockTime": { + "type": "integer" + }, + "stock": { + "type": "integer" + }, + "weight": { + "type": "integer" + }, + "width": { + "type": "integer" + } + }, + "required": [ + "apiAlias" + ] + }, + "WishlistLoadRouteResponse": { + "type": "object", + "required": [ + "products" + ], + "properties": { + "wishlist": { + "type": "object", + "properties": { + "customerId": { + "type": "string" }, - { - "type": "null" + "salesChannelId": { + "type": "string" } + } + }, + "products": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + }, + "AggregationEntity": { + "title": "AggregationEntity", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "entity" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "definition": { + "description": "The entity definition e.g \"product_manufacturer\".", + "type": "string" + } + }, + "required": [ + "name", + "type", + "field", + "definition" + ] + }, + "AggregationFilter": { + "title": "AggregationFilter", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "filter" ] + }, + "filter": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Filters" + } } }, "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" + "name", + "type", + "filter" ] }, - "Breadcrumb": { + "AggregationTerms": { + "title": "AggregationTerms", "type": "object", "properties": { "name": { + "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" }, - "categoryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, "type": { - "$ref": "#/components/schemas/Category/properties/type" - }, - "translated": { - "type": "object", - "additionalProperties": true, - "properties": { - "customFields": { - "type": "object" - }, - "slotConfig": { - "type": "object" - }, - "linkType": { - "$ref": "#/components/schemas/Category/properties/linkType" - }, - "internalLink": { - "type": "string" - }, - "externalLink": { - "type": "string" - }, - "linkNewTab": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "metaTitle": { - "type": "string" - }, - "metaDescription": { - "type": "string" - }, - "keywords": { - "type": "string" - } - } + "description": "The type of aggregation", + "type": "string", + "enum": [ + "terms" + ] }, - "path": { + "field": { + "description": "The field you want to aggregate over.", "type": "string" }, - "seoUrls": { + "limit": { + "description": "The number of terms to return", + "type": "number" + }, + "sort": { "type": "array", + "description": "Sorting the aggregation result.", "items": { - "$ref": "#/components/schemas/SeoUrl" + "$ref": "#/components/schemas/Sort" } - }, - "apiAlias": { - "type": "string", - "enum": [ - "breadcrumb" - ] } }, "required": [ "name", - "categoryId", "type", - "translated", - "path", - "apiAlias" + "field" ] }, - "CalculatedPrice": { + "AggregationHistogram": { + "title": "AggregationHistogram", "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "unitPrice": { - "type": "number" + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "quantity": { - "type": "number" + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "histogram" + ] }, - "rawTotal": { - "type": "number" + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "totalPrice": { + "interval": { + "description": "The interval of the histogram", "type": "number" }, - "taxStatus": { + "format": { + "description": "The format of the histogram", + "type": "string" + }, + "timeZone": { + "description": "The timezone of the histogram", + "type": "string" + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "AggregationRange": { + "title": "AggregationRange", + "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", "type": "string", "enum": [ - "net", - "tax-free" + "range" ] }, - "calculatedTaxes": { + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "ranges": { + "description": "The ranges of the aggregation", "type": "array", "items": { "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" + "anyOf": [ + { + "type": "object", + "title": "From and to", + "properties": { + "from": { + "type": "number", + "description": "The lower bound of the range" + }, + "to": { + "type": "number", + "description": "The upper bound of the range" + } + }, + "required": [ + "from", + "to" ] }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" + { + "type": "object", + "title": "From only", + "properties": { + "from": { + "type": "string", + "description": "The lower bound of the range" + } + }, + "required": [ + "from" + ] }, - "price": { - "type": "number" + { + "type": "object", + "title": "To only", + "properties": { + "to": { + "type": "string", + "description": "The upper bound of the range" + } + }, + "required": [ + "to" + ] } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" ] } - }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] - }, - "positionPrice": { - "type": "number" - }, - "netPrice": { + } + }, + "required": [ + "name", + "type", + "field", + "ranges" + ] + }, + "CartListPrice": { + "type": "object", + "description": "", + "properties": { + "discount": { "type": "number" }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } - }, - { - "type": "null" - } - ] - }, - "hasRange": { - "type": "boolean" + "percentage": { + "type": "number" }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } - ] + "price": { + "type": "number" }, "apiAlias": { "type": "string", "enum": [ - "calculated_price" + "cart_list_price" ] - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } } }, "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "referencePrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitPrice", - "positionPrice", - "netPrice", - "taxRules", - "rawTotal", - "taxStatus" - ] - }, - "Association": { - "additionalProperties": { - "$ref": "#/components/schemas/Association" - } - }, - "LineItemType": { - "type": "string", - "deprecated": true, - "enum": [ - "product", - "credit", - "custom", - "promotion", - "discount", - "container", - "quantity" + "apiAlias" ] }, - "LineItem": { + "Cart": { "type": "object", "properties": { - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - }, - "cover": { - "$ref": "#/components/schemas/Media" - }, - "dataContextHash": { - "type": "string" - }, - "dataTimestamp": { - "type": "string" - }, - "deliveryInformation": { - "$ref": "#/components/schemas/CartDeliveryInformation" - }, - "description": { - "type": "string" - }, - "good": { - "type": "boolean" - }, - "id": { + "name": { + "description": "Name of the cart - for example `guest-cart`", "type": "string" }, - "label": { + "token": { + "description": "Context token identifying the cart and the user session", "type": "string" }, - "modified": { - "type": "boolean" - }, - "modifiedByApp": { - "type": "boolean" + "price": { + "$ref": "#/components/schemas/CalculatedPrice" }, - "payload": { - "$ref": "#/components/schemas/ProductJsonApi" + "lineItems": { + "description": "All items within the cart", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } }, - "price": { + "errors": { "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "calculated_price" - ] - }, - "calculatedTaxes": { + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "anyOf": [ + { "type": "array", "items": { + "$ref": "#/components/schemas/CartError" + } + }, + { + "type": "object", + "additionalProperties": { "type": "object", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { + "code": { "type": "number" }, - "taxRate": { - "type": "number" + "key": { + "type": "string" }, - "price": { + "level": { "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] - }, - "quantity": { - "type": "number" - }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] - }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } - }, - { - "type": "null" - } - ] - }, - "totalPrice": { - "type": "number" - }, - "unitPrice": { - "type": "number" - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" }, - "name": { + "message": { + "type": "string" + }, + "messageKey": { "type": "string" } - } - } - } - }, - "required": [ - "apiAlias", - "totalPrice", - "quantity", - "unitPrice" + }, + "required": [ + "code", + "key", + "level", + "message", + "messageKey" + ] + } + } ] }, - "priceDefinition": { - "$ref": "#/components/schemas/CartPriceQuantity" - }, - "quantity": { - "type": "number" + "deliveries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDelivery" + } }, - "quantityInformation": { - "type": "object", - "properties": { - "maxPurchase": { - "type": "number" - }, - "minPurchase": { - "type": "number" - }, - "purchaseSteps": { - "type": "number" + "transactions": { + "description": "A list of all payment transactions associated with the current cart.", + "type": "array", + "items": { + "type": "object", + "properties": { + "paymentMethodId": { + "type": "string" + }, + "amount": { + "$ref": "#/components/schemas/CalculatedPrice" + } } } }, - "referencedId": { - "type": "string" - }, - "removable": { + "modified": { "type": "boolean" }, - "stackable": { - "type": "boolean" + "customerComment": { + "description": "A comment that can be added to the cart.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] }, - "states": { - "deprecated": true, - "type": "array", - "items": { - "type": "string", - "enum": [ - "is-physical", - "is-download" - ] - } + "affiliateCode": { + "description": "An affiliate tracking code", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] }, - "type": { - "$ref": "#/components/schemas/OrderLineItem/properties/type" + "campaignCode": { + "description": "A campaign tracking code", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] }, - "uniqueIdentifier": { - "type": "string" + "apiAlias": { + "type": "string", + "enum": [ + "cart" + ] } }, "required": [ - "id", - "type" + "price", + "apiAlias" ] }, - "ListPrice": { + "CookieGroup": { "type": "object", - "description": "", "properties": { - "discount": { - "type": "number" + "isRequired": { + "type": "boolean" }, - "percentage": { - "type": "number" + "name": { + "type": "string" }, - "price": { - "type": "number" + "description": { + "type": "string" + }, + "cookie": { + "type": "string" + }, + "value": { + "type": "string" + }, + "expiration": { + "type": "integer" + }, + "entries": { + "$ref": "#/components/schemas/CookieEntryCollection" }, "apiAlias": { "type": "string", "enum": [ - "cart_list_price" + "cookie_group" ] } }, + "not": { + "allOf": [ + { + "required": [ + "cookie" + ] + }, + { + "required": [ + "entries" + ] + } + ] + }, "required": [ + "name", + "isRequired", "apiAlias" ] }, - "AggregationEntity": { - "title": "AggregationEntity", + "MeasurementUnits": { "type": "object", + "description": "Configuration of the measurement system", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", + "system": { "type": "string", "enum": [ - "entity" + "metric", + "imperial" + ], + "default": "metric", + "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." + }, + "units": { + "type": "object", + "description": "Units used in the measurement system.", + "properties": { + "length": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Unit of length." + }, + "weight": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." + } + } + } + } + }, + "Price": { + "type": "object", + "description": "Price object", + "properties": { + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "gross": { + "description": "", + "type": "number" + }, + "net": { + "description": "", + "type": "number" + }, + "linked": { + "description": "", + "type": "boolean" + }, + "listPrice": { + "description": "", + "type": "object", + "properties": { + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "gross": { + "description": "", + "type": "number" + }, + "net": { + "description": "", + "type": "number" + }, + "linked": { + "description": "", + "type": "boolean" + } + }, + "required": [ + "gross", + "net" + ] + }, + "regulationPrice": { + "description": "", + "type": "object", + "properties": { + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "gross": { + "description": "", + "type": "number" + }, + "net": { + "description": "", + "type": "number" + }, + "linked": { + "description": "", + "type": "boolean" + } + }, + "required": [ + "gross", + "net" ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "definition": { - "description": "The entity definition e.g \"product_manufacturer\".", - "type": "string" } }, "required": [ - "name", - "type", - "field", - "definition" + "currencyId", + "gross", + "net" ] }, - "AggregationFilter": { - "title": "AggregationFilter", + "ContextMeasurementSystemInfo": { "type": "object", + "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", + "system": { "type": "string", "enum": [ - "filter" - ] + "metric", + "imperial" + ], + "default": "metric", + "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." }, - "filter": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Filters" + "units": { + "type": "object", + "description": "Units used in the measurement system.", + "properties": { + "length": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Unit of length." + }, + "weight": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." + } } } - }, - "required": [ - "name", - "type", - "filter" - ] + } }, - "AggregationTerms": { - "title": "AggregationTerms", + "FindProductVariantRouteResponse": { "type": "object", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "terms" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "limit": { - "description": "The number of terms to return", - "type": "number" - }, - "sort": { - "type": "array", - "description": "Sorting the aggregation result.", - "items": { - "$ref": "#/components/schemas/Sort" + "foundCombination": { + "type": "object", + "properties": { + "variantId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "options": { + "type": "array", + "items": { + "type": "string" + } + } } } - }, - "required": [ - "name", - "type", - "field" - ] + } }, - "AggregationHistogram": { - "title": "AggregationHistogram", + "ListPrice": { "type": "object", + "description": "", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "histogram" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "discount": { + "type": "number" }, - "interval": { - "description": "The interval of the histogram", + "percentage": { "type": "number" }, - "format": { - "description": "The format of the histogram", - "type": "string" + "price": { + "type": "number" }, - "timeZone": { - "description": "The timezone of the histogram", - "type": "string" + "apiAlias": { + "type": "string", + "enum": [ + "cart_list_price" + ] } }, "required": [ - "name", - "type", - "field" + "apiAlias" ] }, - "AggregationRange": { - "title": "AggregationRange", - "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "range" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "ProductListingResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EntitySearchResult" }, - "ranges": { - "description": "The ranges of the aggregation", - "type": "array", - "items": { - "type": "object", - "anyOf": [ - { - "type": "object", - "title": "From and to", - "properties": { - "from": { - "type": "number", - "description": "The lower bound of the range" - }, - "to": { - "type": "number", - "description": "The upper bound of the range" + { + "type": "object", + "properties": { + "currentFilters": { + "type": "object", + "description": "Contains the state of the filters. These can be used to create listing filters.", + "properties": { + "navigationId": { + "type": "string" + }, + "manufacturer": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, - "required": [ - "from", - "to" - ] - }, - { - "type": "object", - "title": "From only", + "price": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "default": 0 + }, + "max": { + "type": "integer", + "default": 0 + } + }, + "required": [ + "min", + "max" + ] + }, + "rating": { + "oneOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "shipping-free": { + "type": "boolean", + "default": false + }, "properties": { - "from": { + "type": "array", + "items": { "type": "string", - "description": "The lower bound of the range" + "pattern": "^[0-9a-f]{32}$" } }, - "required": [ - "from" - ] + "search": { + "type": "string" + } }, - { + "required": [ + "manufacturer", + "navigationId", + "price", + "properties", + "rating", + "shipping-free" + ] + }, + "availableSortings": { + "type": "array", + "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", + "items": { "type": "object", - "title": "To only", "properties": { - "to": { + "label": { + "type": "string" + }, + "translated": { + "type": "object", + "properties": { + "label": { + "type": "string" + } + }, + "required": [ + "label" + ] + }, + "key": { + "type": "string" + }, + "priority": { + "type": "number" + }, + "apiAlias": { "type": "string", - "description": "The upper bound of the range" + "enum": [ + "product_sorting" + ] } }, "required": [ - "to" + "label", + "translated", + "key", + "priority", + "apiAlias" ] } - ] - } + }, + "sorting": { + "type": "string" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "entity": { + "type": "string", + "enum": [ + "product" + ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_listing" + ] + } + }, + "required": [ + "elements", + "availableSortings", + "currentFilters", + "apiAlias" + ] } - }, - "required": [ - "name", - "type", - "field", - "ranges" ] }, "SearchByImageSearchTermResponse": { @@ -21220,47 +20059,6 @@ "required": [ "categories" ] - }, - "BundleProduct": { - "type": "object", - "required": [ - "id", - "productNumber" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "name": { - "type": "string" - }, - "productNumber": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "available": { - "type": "boolean" - }, - "bundleItems": { - "type": "array", - "items": { - "$ref": "#/components/schemas/BundleItem" - } - }, - "bundleDiscounts": { - "type": "array", - "items": { - "$ref": "#/components/schemas/BundleDiscount" - } - }, - "apiAlias": { - "type": "string", - "example": "product" - } - } } }, "responses": { @@ -21399,25 +20197,38 @@ "204": { "description": "No Content" }, - "SeoUrlListResponse": { - "description": "Entity search result containing seo urls.", + "CurrencyListResponse": { + "description": "Entity search result containing currencies.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Currency" + } + } + } + } + }, + "ProductListResponse": { + "description": "Entity search result containing products", "content": { "application/json": { "schema": { "allOf": [ { + "required": [ + "elements" + ], "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/SeoUrl" + "$ref": "#/components/schemas/Product" } } }, - "type": "object", - "required": [ - "elements" - ] + "type": "object" }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -21427,25 +20238,25 @@ } } }, - "ProductListResponse": { - "description": "Entity search result containing products", + "SeoUrlListResponse": { + "description": "Entity search result containing seo urls.", "content": { "application/json": { "schema": { "allOf": [ { - "required": [ - "elements" - ], "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Product" + "$ref": "#/components/schemas/SeoUrl" } } }, - "type": "object" + "type": "object", + "required": [ + "elements" + ] }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -21455,21 +20266,33 @@ } } }, - "CurrencyListResponse": { - "description": "Entity search result containing currencies.", + "CategoryListResponse": { + "description": "Entity search result containing categories.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Currency" - } + "allOf": [ + { + "type": "object", + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + } + } + } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } }, - "CountryListResponse": { - "description": "Entity search result containing countries.", + "LanguageListResponse": { + "description": "Entity search result containing languages.", "content": { "application/json": { "schema": { @@ -21479,10 +20302,13 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Country" + "$ref": "#/components/schemas/Language" } } }, + "required": [ + "elements" + ], "type": "object" }, { @@ -21493,8 +20319,8 @@ } } }, - "SalutationListResponse": { - "description": "Entity search result containing salutations.", + "CountryStateListResponse": { + "description": "Entity search result containing countries.", "content": { "application/json": { "schema": { @@ -21504,7 +20330,7 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Salutation" + "$ref": "#/components/schemas/CountryState" } } }, @@ -21518,22 +20344,46 @@ } } }, - "CategoryListResponse": { - "description": "Entity search result containing categories.", + "ContextTokenResponse": { + "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", + "headers": { + "sw-context-token": { + "description": "Contains sw-context-token value", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redirectUrl": { + "description": "Define the URL which browser will be redirected to", + "type": "string" + } + } + } + } + } + }, + "SalutationListResponse": { + "description": "Entity search result containing salutations.", "content": { "application/json": { "schema": { "allOf": [ { - "type": "object", "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Category" + "$ref": "#/components/schemas/Salutation" } } - } + }, + "type": "object" }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -21543,18 +20393,29 @@ } } }, - "CountryStateListResponse": { - "description": "Entity search result containing countries.", + "ShippingMethodListResponse": { + "description": "Entity search result containing shipping methods.", "content": { "application/json": { "schema": { "allOf": [ { + "required": [ + "elements" + ], "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/CountryState" + "$ref": "#/components/schemas/ShippingMethod" } } }, @@ -21568,8 +20429,8 @@ } } }, - "LanguageListResponse": { - "description": "Entity search result containing languages.", + "CountryListResponse": { + "description": "Entity search result containing countries.", "content": { "application/json": { "schema": { @@ -21579,13 +20440,10 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Language" + "$ref": "#/components/schemas/Country" } } }, - "required": [ - "elements" - ], "type": "object" }, { @@ -21596,30 +20454,6 @@ } } }, - "ContextTokenResponse": { - "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", - "headers": { - "sw-context-token": { - "description": "Contains sw-context-token value", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "description": "Define the URL which browser will be redirected to", - "type": "string" - } - } - } - } - } - }, "OpenApi3": { "description": "Returns information about the store API.", "content": { @@ -21834,42 +20668,6 @@ } } } - }, - "ShippingMethodListResponse": { - "description": "Entity search result containing shipping methods.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "required": [ - "elements" - ], - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } } }, "parameters": { @@ -22144,15 +20942,69 @@ } ], "paths": { - "/role/create": { + "/permission": { + "get": { + "tags": [ + "B2B Employee Management" + ], + "summary": "Fetch all available permissions", + "description": "This route is used to fetch all available permissions", + "operationId": "readPermissions", + "responses": { + "200": { + "description": "Permission collection", + "content": { + "application/json": { + "schema": { + "type": "object", + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "type": "object", + "properties": { + "permissionName": { + "type": "string" + }, + "permissionDependencies": { + "type": "array", + "items": { + "type": "string" + } + }, + "permissionGroupName": { + "type": "string" + } + } + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + }, "post": { "tags": [ "B2B Employee Management" ], - "summary": "Create a single role and return the role", - "description": "This route is used to create and return an role", - "operationId": "createRole", - "parameters": [], + "summary": "Add a new permission", + "description": "This route is used to add a new permissions", + "operationId": "addPermission", "requestBody": { "required": true, "content": { @@ -22160,21 +21012,120 @@ "schema": { "properties": { "name": { - "description": "Name of the new role", + "description": "Name of the new permission", "type": "string" }, - "permissions": { - "description": "Permissions of the new role", + "group": { + "description": "Group of the new permission", + "type": "string" + }, + "dependencies": { + "description": "Optional dependencies for the new permission", "type": "array", "items": { "type": "string" } + } + }, + "type": "object" + } + } + } + }, + "parameters": [], + "responses": { + "200": { + "description": "Permission collection", + "content": { + "application/json": { + "schema": { + "type": "object", + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "type": "object", + "properties": { + "permissionName": { + "type": "string" + }, + "permissionDependencies": { + "type": "array", + "items": { + "type": "string" + } + }, + "permissionGroupName": { + "type": "string" + } + } + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/employee/create": { + "post": { + "tags": [ + "B2B Employee Management" + ], + "summary": "Create a single employee and return the employee", + "description": "This route is used to create and return an employee", + "operationId": "createEmployee", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "firstName": { + "description": "First name of the new employee", + "type": "string" }, - "isDefaultRole": { - "description": "Ability to set the new role as default", - "type": "boolean" + "lastName": { + "description": "Last name of the new employee", + "type": "string" + }, + "email": { + "description": "Email of the new employee", + "type": "string" + }, + "languageId": { + "description": "Identifier of the [language](#/System%20%26%20Context/readLanguages) to be set for the new employee.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "roleId": { + "description": "Id of the role of the new employee", + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, + "required": [ + "firstName", + "lastName", + "email", + "languageId" + ], "type": "object" } } @@ -22182,11 +21133,11 @@ }, "responses": { "200": { - "description": "Role entity", + "description": "Employee entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/B2bComponentsRole" + "$ref": "#/components/schemas/B2bEmployee" } } } @@ -22199,14 +21150,14 @@ ] } }, - "/role": { + "/employee": { "get": { "tags": [ "B2B Employee Management" ], - "summary": "Fetch a list of roles", - "description": "This route is used to load roles", - "operationId": "readRoles", + "summary": "Fetch a list of employees", + "description": "This route is used to load employees", + "operationId": "readEmployees", "parameters": [], "requestBody": { "required": false, @@ -22224,7 +21175,7 @@ }, "responses": { "200": { - "description": "Entity search result containing roles", + "description": "Entity search result containing employees", "content": { "application/json": { "schema": { @@ -22235,7 +21186,7 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/B2bComponentsRole" + "$ref": "#/components/schemas/B2bEmployee" } } }, @@ -22260,9 +21211,9 @@ "tags": [ "B2B Employee Management" ], - "summary": "Fetch a list of roles", - "description": "This route is used to load roles", - "operationId": "readRolesPOST", + "summary": "Fetch a list of employees", + "description": "This route is used to load employees", + "operationId": "readEmployeesPOST", "parameters": [], "requestBody": { "required": false, @@ -22280,7 +21231,7 @@ }, "responses": { "200": { - "description": "Entity search result containing roles", + "description": "Entity search result containing employees", "content": { "application/json": { "schema": { @@ -22291,7 +21242,7 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/B2bComponentsRole" + "$ref": "#/components/schemas/B2bEmployee" } } }, @@ -22313,33 +21264,33 @@ ] } }, - "/role/{id}": { + "/employee/{id}": { "get": { "tags": [ "B2B Employee Management" ], - "summary": "Fetch one role by id", - "description": "This route is used to fetch one role by id", - "operationId": "readRole", + "summary": "Fetch one employee by id", + "description": "This route is used to fetch one employee by id\n\n**Available Associations:**\n- `role`\n- `language`\n- `organization`", + "operationId": "readB2bEmployee", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the role to be fetched", + "description": "Identifier of the employee to be read", "required": true, "schema": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "uuid" } } ], "responses": { "200": { - "description": "Role entity", + "description": "Employee entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/B2bComponentsRole" + "$ref": "#/components/schemas/B2bEmployee" } } } @@ -22355,14 +21306,14 @@ "tags": [ "B2B Employee Management" ], - "summary": "Update one role by id", - "description": "This route is used to update one role by id", - "operationId": "updateRole", + "summary": "Update one employee by id", + "description": "This route is used to update one employee by id", + "operationId": "updateEmployee", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the role to be updated", + "description": "Identifier of the employee to be updated", "required": true, "schema": { "type": "string", @@ -22376,20 +21327,21 @@ "application/json": { "schema": { "properties": { - "name": { - "description": "New name of the role", + "firstName": { + "description": "New first name of the employee", "type": "string" }, - "permissions": { - "description": "New permissions of the role", - "type": "array", - "items": { - "type": "string" - } + "lastName": { + "description": "New last name of the employee", + "type": "string" }, - "isDefaultRole": { - "description": "Ability to set the role as default", - "type": "boolean" + "email": { + "description": "New email of the employee", + "type": "string" + }, + "roleId": { + "description": "New id of the role of the employee", + "type": "string" } }, "type": "object" @@ -22399,11 +21351,11 @@ }, "responses": { "200": { - "description": "Role entity", + "description": "Employee entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/B2bComponentsRole" + "$ref": "#/components/schemas/B2bEmployee" } } } @@ -22419,14 +21371,14 @@ "tags": [ "B2B Employee Management" ], - "summary": "Delete one role by id", - "description": "This route is used to delete one role by id", - "operationId": "deleteRole", + "summary": "Delete one employee by id", + "description": "This route is used to delete one employee by id", + "operationId": "deleteEmployee", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the role to be fetched", + "description": "Identifier of the employee to be deleted", "required": true, "schema": { "type": "string", @@ -22446,125 +21398,35 @@ ] } }, - "/role/default": { + "/employee/reinvite/{id}": { "post": { "tags": [ "B2B Employee Management" ], - "summary": "Sets the default role Id for new employees", - "description": "This route is used to update the defaultRoleId for new employees", - "operationId": "updateDefaultRoleId", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "properties": { - "id": { - "description": "Id of the roleId to be set as default", - "type": "string" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "204": { - "description": "No content response" - } - }, - "security": [ + "summary": "Reinvite employee by id", + "description": "This route is used to reinvite an employee via email by id", + "operationId": "reinviteEmployee", + "parameters": [ { - "ApiKey": [] - } - ] - } - }, - "/permission": { - "get": { - "tags": [ - "B2B Employee Management" - ], - "summary": "Fetch all available permissions", - "description": "This route is used to fetch all available permissions", - "operationId": "readPermissions", - "responses": { - "200": { - "description": "Permission collection", - "content": { - "application/json": { - "schema": { - "type": "object", - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "type": "object", - "properties": { - "permissionName": { - "type": "string" - }, - "permissionDependencies": { - "type": "array", - "items": { - "type": "string" - } - }, - "permissionGroupName": { - "type": "string" - } - } - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } + "name": "id", + "in": "path", + "description": "Identifier of the employee to be reinvited", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } - }, - "security": [ - { - "ApiKey": [] - } - ] - }, - "post": { - "tags": [ - "B2B Employee Management" ], - "summary": "Add a new permission", - "description": "This route is used to add a new permissions", - "operationId": "addPermission", "requestBody": { "required": true, "content": { "application/json": { "schema": { "properties": { - "name": { - "description": "Name of the new permission", - "type": "string" - }, - "group": { - "description": "Group of the new permission", + "storefrontUrl": { + "description": "URL of the storefront domain", "type": "string" - }, - "dependencies": { - "description": "Optional dependencies for the new permission", - "type": "array", - "items": { - "type": "string" - } } }, "type": "object" @@ -22572,44 +21434,13 @@ } } }, - "parameters": [], "responses": { "200": { - "description": "Permission collection", + "description": "Employee entity", "content": { "application/json": { "schema": { - "type": "object", - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "type": "object", - "properties": { - "permissionName": { - "type": "string" - }, - "permissionDependencies": { - "type": "array", - "items": { - "type": "string" - } - }, - "permissionGroupName": { - "type": "string" - } - } - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/B2bEmployee" } } } @@ -22622,14 +21453,14 @@ ] } }, - "/employee/create": { + "/role/create": { "post": { "tags": [ "B2B Employee Management" ], - "summary": "Create a single employee and return the employee", - "description": "This route is used to create and return an employee", - "operationId": "createEmployee", + "summary": "Create a single role and return the role", + "description": "This route is used to create and return an role", + "operationId": "createRole", "parameters": [], "requestBody": { "required": true, @@ -22637,35 +21468,22 @@ "application/json": { "schema": { "properties": { - "firstName": { - "description": "First name of the new employee", - "type": "string" - }, - "lastName": { - "description": "Last name of the new employee", - "type": "string" - }, - "email": { - "description": "Email of the new employee", + "name": { + "description": "Name of the new role", "type": "string" }, - "languageId": { - "description": "Identifier of the [language](#/System%20%26%20Context/readLanguages) to be set for the new employee.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "permissions": { + "description": "Permissions of the new role", + "type": "array", + "items": { + "type": "string" + } }, - "roleId": { - "description": "Id of the role of the new employee", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "isDefaultRole": { + "description": "Ability to set the new role as default", + "type": "boolean" } }, - "required": [ - "firstName", - "lastName", - "email", - "languageId" - ], "type": "object" } } @@ -22673,11 +21491,11 @@ }, "responses": { "200": { - "description": "Employee entity", + "description": "Role entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/B2bEmployee" + "$ref": "#/components/schemas/B2bComponentsRole" } } } @@ -22690,14 +21508,14 @@ ] } }, - "/employee": { + "/role": { "get": { "tags": [ "B2B Employee Management" ], - "summary": "Fetch a list of employees", - "description": "This route is used to load employees", - "operationId": "readEmployees", + "summary": "Fetch a list of roles", + "description": "This route is used to load roles", + "operationId": "readRoles", "parameters": [], "requestBody": { "required": false, @@ -22715,7 +21533,7 @@ }, "responses": { "200": { - "description": "Entity search result containing employees", + "description": "Entity search result containing roles", "content": { "application/json": { "schema": { @@ -22726,7 +21544,7 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/B2bEmployee" + "$ref": "#/components/schemas/B2bComponentsRole" } } }, @@ -22751,9 +21569,9 @@ "tags": [ "B2B Employee Management" ], - "summary": "Fetch a list of employees", - "description": "This route is used to load employees", - "operationId": "readEmployeesPOST", + "summary": "Fetch a list of roles", + "description": "This route is used to load roles", + "operationId": "readRolesPOST", "parameters": [], "requestBody": { "required": false, @@ -22771,7 +21589,7 @@ }, "responses": { "200": { - "description": "Entity search result containing employees", + "description": "Entity search result containing roles", "content": { "application/json": { "schema": { @@ -22782,7 +21600,7 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/B2bEmployee" + "$ref": "#/components/schemas/B2bComponentsRole" } } }, @@ -22804,33 +21622,33 @@ ] } }, - "/employee/{id}": { + "/role/{id}": { "get": { "tags": [ "B2B Employee Management" ], - "summary": "Fetch one employee by id", - "description": "This route is used to fetch one employee by id\n\n**Available Associations:**\n- `role`\n- `language`\n- `organization`", - "operationId": "readB2bEmployee", + "summary": "Fetch one role by id", + "description": "This route is used to fetch one role by id", + "operationId": "readRole", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the employee to be read", + "description": "Identifier of the role to be fetched", "required": true, "schema": { "type": "string", - "format": "uuid" + "pattern": "^[0-9a-f]{32}$" } } ], "responses": { "200": { - "description": "Employee entity", + "description": "Role entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/B2bEmployee" + "$ref": "#/components/schemas/B2bComponentsRole" } } } @@ -22846,14 +21664,14 @@ "tags": [ "B2B Employee Management" ], - "summary": "Update one employee by id", - "description": "This route is used to update one employee by id", - "operationId": "updateEmployee", + "summary": "Update one role by id", + "description": "This route is used to update one role by id", + "operationId": "updateRole", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the employee to be updated", + "description": "Identifier of the role to be updated", "required": true, "schema": { "type": "string", @@ -22867,21 +21685,20 @@ "application/json": { "schema": { "properties": { - "firstName": { - "description": "New first name of the employee", - "type": "string" - }, - "lastName": { - "description": "New last name of the employee", + "name": { + "description": "New name of the role", "type": "string" }, - "email": { - "description": "New email of the employee", - "type": "string" + "permissions": { + "description": "New permissions of the role", + "type": "array", + "items": { + "type": "string" + } }, - "roleId": { - "description": "New id of the role of the employee", - "type": "string" + "isDefaultRole": { + "description": "Ability to set the role as default", + "type": "boolean" } }, "type": "object" @@ -22891,11 +21708,11 @@ }, "responses": { "200": { - "description": "Employee entity", + "description": "Role entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/B2bEmployee" + "$ref": "#/components/schemas/B2bComponentsRole" } } } @@ -22911,14 +21728,14 @@ "tags": [ "B2B Employee Management" ], - "summary": "Delete one employee by id", - "description": "This route is used to delete one employee by id", - "operationId": "deleteEmployee", + "summary": "Delete one role by id", + "description": "This route is used to delete one role by id", + "operationId": "deleteRole", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the employee to be deleted", + "description": "Identifier of the role to be fetched", "required": true, "schema": { "type": "string", @@ -22938,34 +21755,22 @@ ] } }, - "/employee/reinvite/{id}": { + "/role/default": { "post": { "tags": [ "B2B Employee Management" ], - "summary": "Reinvite employee by id", - "description": "This route is used to reinvite an employee via email by id", - "operationId": "reinviteEmployee", - "parameters": [ - { - "name": "id", - "in": "path", - "description": "Identifier of the employee to be reinvited", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], + "summary": "Sets the default role Id for new employees", + "description": "This route is used to update the defaultRoleId for new employees", + "operationId": "updateDefaultRoleId", "requestBody": { "required": true, "content": { "application/json": { "schema": { "properties": { - "storefrontUrl": { - "description": "URL of the storefront domain", + "id": { + "description": "Id of the roleId to be set as default", "type": "string" } }, @@ -22975,15 +21780,8 @@ } }, "responses": { - "200": { - "description": "Employee entity", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/B2bEmployee" - } - } - } + "204": { + "description": "No content response" } }, "security": [ @@ -23483,7 +22281,7 @@ { "name": "id", "in": "path", - "description": "Identifier of the quote to send message", + "description": "Identifier of the quote to be reinvited", "required": true, "schema": { "type": "string", @@ -23519,48 +22317,6 @@ ] } }, - "/quote/{id}/read-message": { - "post": { - "tags": [ - "B2B Quote Management" - ], - "summary": "Mark messages as read in a quote", - "description": "This route is used to mark all messages as read in the specified quote.", - "operationId": "markMessagesAsReadInQuote", - "parameters": [ - { - "name": "id", - "in": "path", - "description": "Identifier of the quote whose messages will be marked as read", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "type": "object" - } - } - } - }, - "responses": { - "204": { - "description": "No content response" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, "/product/natural-language/search-term": { "post": { "tags": [ @@ -24909,18 +23665,34 @@ "description": "Identifier (UUID) of the addresses for shipping.", "type": "array", "items": { - "type": "string", - "description": "The Identifier (UUID) of the customer address", - "pattern": "^[0-9a-f]{32}$" + "type": "array", + "properties": { + "customerAddressId": { + "type": "string", + "description": "The Identifier (UUID) of the customer address", + "pattern": "^[0-9a-f]{32}$" + } + }, + "required": [ + "customerAddressId" + ] } }, "billingAddressIds": { "description": "Identifier (UUID) of the addresses for billing.", "type": "array", "items": { - "type": "string", - "description": "The Identifier (UUID) of the customer address", - "pattern": "^[0-9a-f]{32}$" + "type": "array", + "properties": { + "customerAddressId": { + "type": "string", + "description": "The Identifier (UUID) of the customer address", + "pattern": "^[0-9a-f]{32}$" + } + }, + "required": [ + "customerAddressId" + ] } }, "paymentMethodIds": { @@ -25148,18 +23920,36 @@ "description": "Identifier (UUID) of the addresses for shipping.", "type": "array", "items": { - "type": "string", - "description": "The Identifier (UUID) of the customer address", - "pattern": "^[0-9a-f]{32}$" + "type": "array", + "properties": { + "customerAddressId": { + "type": "string", + "description": "The Identifier (UUID) of the customer address", + "pattern": "^[0-9a-f]{32}$" + } + }, + "required": [ + "customerAddressId", + "id" + ] } }, "billingAddressIds": { "description": "Identifier (UUID) of the addresses for billing.", "type": "array", "items": { - "type": "string", - "description": "The Identifier (UUID) of the customer address", - "pattern": "^[0-9a-f]{32}$" + "type": "array", + "properties": { + "customerAddressId": { + "type": "string", + "description": "The Identifier (UUID) of the customer address", + "pattern": "^[0-9a-f]{32}$" + } + }, + "required": [ + "customerAddressId", + "id" + ] } }, "paymentMethodIds": { @@ -25723,7 +24513,7 @@ "B2B Budget Management" ], "summary": "Load single budget", - "description": "This route is used to load one budget by ID\n\n**Available Associations:**\n- `customer`\n- `organizations`\n- `notificationRecipients`\n- `reviewerRole`\n- `currency`", + "description": "This route is used to load one budget by ID\n\n**Available Associations:**\n- `organizations`\n- `notificationRecipients`\n- `reviewerRole`\n- `currency`", "operationId": "readBudget", "requestBody": { "required": false, @@ -25773,7 +24563,7 @@ "B2B Budget Management" ], "summary": "Load single budget", - "description": "This route is used to load one budget by ID\n\n**Available Associations:**\n- `customer`\n- `organizations`\n- `notificationRecipients`\n- `reviewerRole`\n- `currency`", + "description": "This route is used to load one budget by ID\n\n**Available Associations:**\n- `organizations`\n- `notificationRecipients`\n- `reviewerRole`\n- `currency`", "operationId": "readBudgetGet", "parameters": [ { @@ -26554,61 +25344,6 @@ } ] } - }, - "/store-api/product/{productId}/recommended-bundles": { - "post": { - "tags": [ - "Product Bundles" - ], - "summary": "Fetch bundle recommendations for a product", - "description": "Returns bundle products that include the given product as an item and have show_bundle_on_item_pdp enabled.", - "operationId": "getRecommendedBundles", - "parameters": [ - { - "name": "productId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "type": "object", - "description": "Optional criteria payload." - } - } - } - }, - "responses": { - "200": { - "description": "List of bundle products", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "$ref": "#/components/schemas/BundleProduct" - } - } - } - } - } - } - }, - "404": { - "description": "Returned when the product cannot be resolved." - } - } - } } }, "tags": [ diff --git a/SwagCommercial-storeapi.summary.json b/SwagCommercial-storeapi.summary.json index 1de3ab0..0e918d4 100644 --- a/SwagCommercial-storeapi.summary.json +++ b/SwagCommercial-storeapi.summary.json @@ -36,7 +36,6 @@ "/quote/request", "/quote/{id}/configure", "/quote/{id}/decline", - "/quote/{id}/read-message", "/quote/{id}/request-change", "/quote/{id}/send-message", "/quotes", @@ -55,8 +54,7 @@ "/shopping-lists", "/shopping-lists/add-to-cart", "/sso/auth/{providerId}", - "/sso/redirect/{providerId}", - "/store-api/product/{productId}/recommended-bundles" + "/sso/redirect/{providerId}" ], "schemas": [ "AccountNewsletterRecipient", @@ -82,9 +80,6 @@ "AppCmsBlock", "AppFlowAction", "AppFlowEvent", - "AppMcpPrompt", - "AppMcpResource", - "AppMcpTool", "AppPaymentMethod", "AppScriptCondition", "AppShippingMethod", @@ -101,12 +96,6 @@ "B2bComponentsBudgetOrganization", "B2bComponentsEmployeeWishlist", "B2bComponentsEmployeeWishlistProduct", - "B2bComponentsIndividualPricing", - "B2bComponentsIndividualPricingCompanyAssignment", - "B2bComponentsIndividualPricingCompanyAssignmentUnit", - "B2bComponentsIndividualPricingComputedCache", - "B2bComponentsIndividualPricingTag", - "B2bComponentsIndividualPricingTier", "B2bComponentsOrganization", "B2bComponentsOrganizationCustomerAddress", "B2bComponentsPendingOrder", @@ -121,9 +110,6 @@ "B2bOrderEmployee", "B2bPermission", "Breadcrumb", - "BundleDiscount", - "BundleItem", - "BundleProduct", "CalculatedPrice", "Cart", "CartDelivery", @@ -131,8 +117,6 @@ "CartDeliveryPosition", "CartError", "CartItems", - "CartItemsUpdate", - "CartLineItemUpdate", "CartListPrice", "CartPriceQuantity", "CartPriceReference", @@ -225,7 +209,6 @@ "NavigationType", "NewsletterRecipient", "NewsletterRecipientJsonApi", - "NewsletterStatus", "NoneFieldsCriteria", "Notification", "NumberRange", @@ -272,7 +255,6 @@ "ProductMeasurements", "ProductMedia", "ProductPrice", - "ProductPurchaseLimit", "ProductReview", "ProductReviewSummary", "ProductSearchConfig", @@ -309,8 +291,6 @@ "SalesChannelAnalytics", "SalesChannelContext", "SalesChannelDomain", - "SalesChannelTrackingCustomer", - "SalesChannelTrackingOrder", "SalesChannelType", "Salutation", "SalutationJsonApi", From 7057757dbb8843cbde0897a5fde5f9791685df77 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 22 May 2026 16:18:33 +0200 Subject: [PATCH 03/16] [create-pull-request] automated change (#417) Co-authored-by: shopwareBot --- storeapi.json | 16586 ++++++++++++++++++++-------------------- storeapi.summary.json | 12 + 2 files changed, 8475 insertions(+), 8123 deletions(-) diff --git a/storeapi.json b/storeapi.json index 56657f6..0e1aada 100644 --- a/storeapi.json +++ b/storeapi.json @@ -7,7 +7,7 @@ "name": "MIT", "url": "https://github.com/shopware/shopware/blob/trunk/LICENSE" }, - "version": "6.7.9.1" + "version": "6.7.9999999-dev" }, "servers": [ { @@ -560,6 +560,84 @@ }, "type": "object" }, + "AppMcpPrompt": { + "description": "Added since version: 6.7.0.0", + "required": [ + "label" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + }, + "AppMcpResource": { + "description": "Added since version: 6.7.0.0", + "required": [ + "label" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + }, + "AppMcpTool": { + "description": "Added since version: 6.7.0.0", + "required": [ + "label" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + }, "AppPaymentMethod": { "description": "Added since version: 6.4.1.0", "properties": { @@ -2657,6 +2735,11 @@ "readOnly": true, "description": "Unique identity tag names given to the line item." }, + "requestedGroupId": { + "description": "Unique identity of requested group.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "createdById": { "type": "string", "pattern": "^[0-9a-f]{32}$" @@ -3529,18 +3612,19 @@ "description": "Unique number associated with every document.", "type": "string" }, - "config": { + "customFields": { "type": "object", - "description": "Specifies detailed information about the component." + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, "createdAt": { "type": "string", "format": "date-time", "readOnly": true }, - "customFields": { + "config": { "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + "deprecated": true, + "description": "Specifies detailed information about the component." }, "updatedAt": { "type": "string", @@ -7458,6 +7542,11 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "openGraphMediaId": { + "description": "Media used as Open Graph image for social media sharing.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "productNumber": { "description": "Unique number assigned to individual products. Define rules for automatic assignment of every product creation as per your number range.", "type": "string" @@ -7651,6 +7740,12 @@ "customFields": { "type": "object" }, + "ogTitle": { + "type": "string" + }, + "ogDescription": { + "type": "string" + }, "type": { "description": "The type of the product, e.g., physical or digital.", "type": "string", @@ -7954,6 +8049,36 @@ }, "type": "object" }, + "openGraphMedia": { + "description": "Open Graph image for social media sharing", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/openGraphMedia" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "media" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "bbda52d941a3452369a00f2880f4f358" + } + } + } + }, + "type": "object" + }, "cmsPage": { "description": "Custom CMS page layout for the product detail page", "properties": { @@ -8526,6 +8651,11 @@ "pattern": "^[0-9a-f]{32}$", "description": "Unique identifier of CMS page's version." }, + "openGraphMediaId": { + "description": "Media used as Open Graph image for social media sharing.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "productNumber": { "description": "Unique number assigned to individual products. Define rules for automatic assignment of every product creation as per your number range.", "type": "string" @@ -8733,6 +8863,12 @@ "type": "object", "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, + "ogTitle": { + "type": "string" + }, + "ogDescription": { + "type": "string" + }, "type": { "description": "The type of the product, e.g., physical or digital.", "type": "string", @@ -8909,6 +9045,10 @@ "$ref": "#/components/schemas/ProductMedia", "description": "Main product image displayed in listings and detail pages" }, + "openGraphMedia": { + "$ref": "#/components/schemas/Media", + "description": "Open Graph image for social media sharing" + }, "cmsPage": { "$ref": "#/components/schemas/CmsPage", "description": "Custom CMS page layout for the product detail page" @@ -10344,6 +10484,46 @@ }, "type": "object" }, + "SalesChannelTrackingCustomer": { + "description": "Added since version: 6.7.9.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "SalesChannelTrackingOrder": { + "description": "Added since version: 6.7.9.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, "SalesChannelType": { "description": "Added since version: 6.0.0.0", "required": [ @@ -10403,6 +10583,11 @@ "customFields": { "type": "object" }, + "position": { + "description": "Numerical value that indicates the order in which the defined salutations must be displayed in the frontend.", + "type": "integer", + "format": "int64" + }, "createdAt": { "type": "string", "format": "date-time", @@ -10451,6 +10636,11 @@ "type": "object", "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, + "position": { + "description": "Numerical value that indicates the order in which the defined salutations must be displayed in the frontend.", + "type": "integer", + "format": "int64" + }, "createdAt": { "type": "string", "format": "date-time", @@ -11854,1249 +12044,808 @@ "$ref": "#/components/schemas/Breadcrumb" } }, - "CartPriceQuantity": { + "EntitySearchResult": { "type": "object", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_quantity" - ] - }, - "isCalculated": { - "type": "boolean" - }, - "listPrice": { - "$ref": "#/components/schemas/CartListPrice" - }, - "price": { - "type": "number" - }, - "quantity": { - "type": "number" + "entity": { + "type": "string" }, - "regulationPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - } - }, - "type": "object" + "total": { + "type": "integer", + "description": "The total number of found entities" }, - "taxRules": { + "aggregations": { "type": "array", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } + "type": "object" } }, - "type": { - "type": "string" + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." + }, + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." } - }, - "required": [ - "apiAlias" - ] + } }, - "CrossSellingElement": { + "SalesChannelContext": { "type": "object", "properties": { - "crossSelling": { - "$ref": "#/components/schemas/ProductCrossSelling" + "token": { + "description": "Context the user session", + "type": "string" }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" + "currentCustomerGroup": { + "type": "object", + "description": "Customer group of the current user", + "properties": { + "name": { + "type": "string", + "description": "Name of customer group to which the customer belongs within the specific sales channel they are currently interacting with." + }, + "displayGross": { + "type": "boolean", + "description": "When `true`, product's gross price is displayed for that customer group who belongs to the specific sales channel they are currently interacting with." + } } }, - "total": { - "type": "integer", - "format": "int32" - }, - "streamId": { - "type": "string", - "format": "uuid" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cross_selling_element" - ] - } - }, - "required": [ - "crossSelling", - "products", - "total", - "apiAlias" - ] - }, - "ProductMeasurements": { - "type": "object", - "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", - "properties": { - "width": { + "fallbackCustomerGroup": { + "description": "Fallback group if the default customer group is not applicable", "type": "object", "properties": { - "unit": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" + "name": { + "type": "string" }, - "value": { - "type": "number" + "displayGross": { + "type": "boolean" } } }, - "height": { - "type": "object", + "currency": { + "$ref": "#/components/schemas/Currency", "properties": { - "unit": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" + "isoCode": { + "description": "Standard international three digit code to represent currency in a given sales channel. For example, USD." }, - "value": { - "type": "number" - } - } - }, - "length": { - "type": "object", - "properties": { - "unit": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" + "factor": { + "description": "Currency exchange rate in a specific sales channel the customer is currently interacting with." }, - "value": { - "type": "number" - } - } - }, - "weight": { - "type": "object", - "properties": { - "unit": { - "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg" + "symbol": { + "description": "A currency symbol is a graphical representation used as shorthand for a currency's name, for example US Dollar - $ in a given sales channel." }, - "value": { - "type": "number" + "shortName": { + "description": "Acronym for international currencies, for example, USD in a given sales channel." + }, + "name": { + "description": "Full name of the currency in a given sales channel. For example, US-Dollar." + }, + "position": { + "description": "The order of the tabs for multiple currencies defined in a given sales channel." + }, + "decimalPrecision": { + "description": "It defines the round off value for currency to the nearest decimal point in a given sales channel. If set to 2, it rounds off to two significant decimal points." + }, + "isSystemDefault": { + "description": "Runtime field, cannot be used as part of the criteria." } } - } - } - }, - "ProductListingCriteria": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" }, - { - "type": "object", - "description": "Additional search parameters for product listings", + "salesChannel": { + "$ref": "#/components/schemas/SalesChannel", "properties": { - "order": { - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "type": "string" + "typeId": { + "description": "Unique identity of a sales channel's type within a specific sales channel." }, - "limit": { - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "type": "integer", - "minimum": 0 + "languageId": { + "description": "Unique identity of a sales channel's language within a specific sales channel." }, - "p": { - "description": "Search result page", - "type": "integer", - "default": 1 + "currencyId": { + "description": "Unique identity of a sales channel's currency within a specific sales channel." }, - "manufacturer": { - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", - "type": "string" + "paymentMethodId": { + "description": "Unique identity of a sales channel's payment method within a specific sales channel." }, - "min-price": { - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 + "shippingMethodId": { + "description": "Unique identity of a sales channel's shipping method within a specific sales channel." }, - "max-price": { - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 + "countryId": { + "description": "Unique identity of a sales channel's country within a specific sales channel." }, - "rating": { - "description": "Filter products with a minimum average rating.", - "type": "integer" + "navigationCategoryId": { + "description": "Unique identity of a sales channel's navigation category within a specific sales channel." }, - "shipping-free": { - "description": "Filters products that are marked as shipping-free.", - "type": "boolean", - "default": false + "navigationCategoryDepth": { + "description": "It determines the number of levels of subcategories in the storefront category menu within a specific sales channel." }, - "properties": { - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", - "type": "string" + "footerCategoryId": { + "description": "Unique identity of a sales channel's footer category within a specific sales channel." }, - "manufacturer-filter": { - "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", - "type": "boolean", - "default": true + "serviceCategoryId": { + "description": "Unique identity of a sales channel's service category within a specific sales channel." }, - "price-filter": { - "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", - "type": "boolean", - "default": true + "name": { + "description": "Name of the sales channel." }, - "rating-filter": { - "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", - "type": "boolean", - "default": true + "shortName": { + "description": "A short name for sales channel." }, - "shipping-free-filter": { - "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", - "type": "boolean", - "default": true + "accessKey": { + "description": "Access key to store api." }, - "property-filter": { - "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", - "type": "boolean", - "default": true + "active": { + "description": "When `true`, the sales channel is enabled." }, - "property-whitelist": { - "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", - "type": "string" + "maintenance": { + "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." }, - "reduce-aggregations": { - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - } - } - ], - "properties": { - "filter": { - "properties": { - "type": { - "description": "To filter the results and aggregations with filter types like ==, >=, etc." + "maintenanceIpWhitelist": { + "description": "Array of IP address allowed to access the sales channel." }, - "field": { - "description": "To filter the results and aggregations by field like an property identifier." + "mailHeaderFooterId": { + "description": "Unique identity of a sales channel's mail header and footer within a specific sales channel." }, - "value": { - "description": "To filter the results and aggregations by value." + "customerGroupId": { + "description": "Unique identity of a sales channel's customer group within a specific sales channel." + }, + "hreflangActive": { + "description": "When `true`, the sales channel pages are available in different languages within a specific sales channel." + }, + "hreflangDefaultDomainId": { + "description": "Unique identity of a sales channel's hreflangDefaultDomain within a specific sales channel." + }, + "analyticsId": { + "description": "Unique identity of a sales channel's analytics within a specific sales channel." } } }, - "sort": { - "properties": { - "field": { - "description": "Sort the search results by field like an property identifier." - }, - "order": { - "description": "Sort the search results of orders by ascending or descending." + "measurementSystem": { + "$ref": "#/components/schemas/ContextMeasurementSystemInfo" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + }, + "properties": { + "taxRate": { + "description": "Rate of tax within a specific sales channel." }, - "naturalSorting": { - "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." + "name": { + "description": "Name defined for a Tax within a specific sales channel." } } }, - "post-filter": { + "customer": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/Customer" + } + ], "properties": { - "type": { - "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." + "groupId": { + "description": "Unique identity of a customer's group within a specific sales channel." }, - "field": { - "description": "To filter only the results but not the aggregations by field like an property identifier." + "defaultPaymentMethodId": { + "description": "Unique identity of a customer's default payment method within a specific sales channel." }, - "value": { - "description": "To filter only the results but not the aggregations by value." + "salesChannelId": { + "description": "Unique identity of sales channel the customer is currently interacting with." + }, + "languageId": { + "description": "Unique identity of language within a specific sales channel the customer is interacting." + }, + "lastPaymentMethodId": { + "description": "Unique identity of customer's last payment method within a specific sales channel." + }, + "defaultBillingAddressId": { + "description": "Unique identity of customer's default billing address within a specific sales channel." + }, + "defaultShippingAddressId": { + "description": "Unique identity of customer's default shipping address within a specific sales channel." + }, + "customerNumber": { + "description": "Name of the customer within a specific sales channel the customer is interacting." + }, + "salutationId": { + "description": "Unique identity of customer's default shipping address within a specific sales channel." + }, + "firstName": { + "description": "First name of the customer within a specific sales channel." + }, + "lastName": { + "description": "Last name of the customer within a specific sales channel." + }, + "company": { + "description": "Company name of the customer within a specific sales channel." + }, + "password": { + "description": "Password of the customer within a specific sales channel." + }, + "email": { + "description": "Email of the customer within a specific sales channel." + }, + "title": { + "description": "Customer's title or honorifics like Mr, Mrs, etc within a specific sales channel." + }, + "affiliateCode": { + "description": "An affiliate code is an identification option with which website operators can mark outgoing links within a specific sales channel." + }, + "campaignCode": { + "description": "A unique identifier for a campaign within a specific sales channel." + }, + "active": { + "description": "When `true`, the status of the customer is set active within a specific sales channel." + }, + "doubleOptInRegistration": { + "description": "When `true`, user subscriptions to an email marketing list is allowed within a specific sales channel." + }, + "doubleOptInEmailSentDate": { + "description": "Date and time when the double opt-in email was sent within a specific sales channel." + }, + "doubleOptInConfirmDate": { + "description": "Date and time when the double opt-in email was confirmed within a specific sales channel." + }, + "hash": { + "description": "Password hash for account recovery within a specific sales channel." + }, + "guest": { + "description": "Boolean value is `true` for a guest account within a specific sales channel." + }, + "firstLogin": { + "description": "Captures date and time of customer's first login within a specific sales channel." + }, + "lastLogin": { + "description": "Captures date and time of customer's last login within a specific sales channel." + }, + "newsletter": { + "description": "When `true`, then the customer gets subscribe to the newsletter" + }, + "birthday": { + "description": "Captures customer's birthday details within a specific sales channel." + }, + "lastOrderDate": { + "description": "Captures customer's last order date within a specific sales channel." + }, + "orderCount": { + "description": "Captures the number of orders placed by a customer within a specific sales channel." + }, + "legacyEncoder": { + "description": "encapsulates shop credentials when needed to migrate shop system from old instance to new instance" + }, + "legacyPassword": { + "description": "Hashed password of the old shop system" + }, + "autoIncrement": { + "description": "Internal field. " + }, + "remoteAddress": { + "description": "Anonymous IP address of the customer for last session." } } - } - } - }, - "ShippingMethodPageRouteResponse": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "deliveryTimeId": { - "type": "string" - }, - "deliveryTime": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer", - "format": "int32" - }, - "max": { - "type": "integer", - "format": "int32" - }, - "unit": { - "type": "string" - } + }, + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod", + "properties": { + "pluginId": { + "description": "Unique identity of payment plugin within a specific sales channel." + }, + "handlerIdentifier": { + "description": "Internal field that contains system identifier details for payment methods like Paypal." + }, + "name": { + "description": "Name of the payment method within a specific sales channel." + }, + "description": { + "description": "A short description about the payment method within a specific sales channel." + }, + "position": { + "description": "The order of the tabs of your defined payment methods in the storefront by entering numerical values like 1,2,3, etc within a specific sales channel." + }, + "active": { + "description": "When `true`, the payment method is available for usage within a specific sales channel." + }, + "availabilityRuleId": { + "description": "Unique identity of the rule for the payment method." + }, + "mediaId": { + "description": "Unique identity of media used in payment method within a specific sales channel." + }, + "formattedHandlerIdentifier": { + "description": "Internal field that contains system identifier details for payment methods like Paypal." } - }, - "translations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - } - } + } + }, + "shippingLocation": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" } - }, - "orderDeliveries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "orderId": { - "type": "string" - }, - "shippingOrderAddressId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "shippingDateEarliest": { - "type": "string", - "format": "date-time" - }, - "shippingDateLatest": { - "type": "string", - "format": "date-time" - }, - "stateId": { - "type": "string" - } - } + } + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod", + "properties": { + "name": { + "description": "Name of the shipping method within a specific sales channel." + }, + "active": { + "description": "When `true`, the shipping method is available for usage within a specific sales channel." + }, + "description": { + "description": "A short description about the shipping method within a specific sales channel." + }, + "trackingUrl": { + "description": "URL that allows to track packages for a specific sales channel." + }, + "deliveryTimeId": { + "description": "Unique identity of deliveryTime within a specific sales channel." + }, + "availabilityRuleId": { + "description": "Unique identity of the rule for the payment method." + }, + "mediaId": { + "description": "Unique identity of media used in shipping method within a specific sales channel." } - }, - "salesChannelDefaultAssignments": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" - }, - "hreflangDefaultDomainId": { - "type": "string" - } + } + }, + "context": { + "description": "Core context with general configuration values and state", + "type": "object", + "properties": { + "versionId": { + "type": "string", + "description": "Unique identity of context's version in a specific sales channel." + }, + "currencyId": { + "type": "string", + "description": "Unique identity of currency context in a specific sales channel." + }, + "currencyFactor": { + "type": "integer", + "description": "Unique identity of currency factor context in a specific sales channel." + }, + "currencyPrecision": { + "type": "integer", + "format": "int32", + "description": "It defines the round off value of currency to the nearest decimal point. If set to 2, it rounds off to two significant decimal points." + }, + "languageIdChain": { + "type": "array", + "items": { + "type": "string" } - } - }, - "salesChannels": { - "type": "array", - "items": { + }, + "scope": { + "type": "string", + "description": "Scope defines if its related to system or user context." + }, + "source": { "type": "object", + "required": [ + "salesChannelId", + "type" + ], "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" + "type": { + "type": "string", + "enum": [ + "sales-channel", + "shop-api" + ] }, - "hreflangDefaultDomainId": { + "salesChannelId": { "type": "string" } - } - } - }, - "availabilityRule": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "priority": { - "type": "integer", - "format": "int32" }, - "invalid": { - "type": "boolean" - } - } - }, - "availabilityRuleId": { - "type": "string" - }, - "prices": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "ruleId": { - "type": "string" - }, - "calculation": { - "type": "integer", - "format": "int32" - }, - "quantityStart": { - "type": "number", - "format": "float" - }, - "quantityEnd": { - "type": "number", - "format": "float" - }, - "price": { - "type": "number", - "format": "float" - }, - "calculationRuleId": { - "type": "string" - } - } - } - }, - "mediaId": { - "type": "string" - }, - "media": { - "type": "object", - "properties": { - "userId": { - "type": "string" - }, - "mimeType": { - "type": "string" - }, - "fileExtension": { - "type": "string" - }, - "fileSize": { - "type": "integer", - "format": "int32" - }, - "title": { - "type": "string" - }, - "metaDataRaw": { - "type": "string" - }, - "mediaTypeRaw": { - "type": "string" - }, - "uploadedAt": { - "type": "string", - "format": "date-time" - }, - "alt": { - "type": "string" - }, - "url": { - "type": "string" - }, - "fileName": { - "type": "string" - }, - "mediaFolderId": { - "type": "string" - }, - "private": { - "type": "boolean" - }, - "thumbnailsRo": { - "type": "string" - } - } - }, - "tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - } - } + "description": "When context is related to user in the source, then there is userId." + }, + "taxState": { + "type": "string", + "description": "Tax state can either be `gross` or `net`." + }, + "useCache": { + "type": "boolean", + "description": "When boolean value is `true`, caching is used." } } - } - }, - "properties": { - "name": { - "description": "Name of the shipping method." - }, - "active": { - "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." }, - "description": { - "description": "The order of the tabs of your defined shipping methods in the storefront by entering numerical values like 1,2,3, etc." - }, - "deliveryTimeId": { - "description": "Unique identity of the delivery time." - }, - "deliveryTime": { + "itemRounding": { + "type": "object", + "required": [ + "decimals", + "interval", + "roundForNet", + "apiAlias" + ], "properties": { - "name": { - "description": "Name given to delivery time." - }, - "min": { - "description": "Minimum delivery time taken." - }, - "max": { - "description": "Maximum delivery time taken." + "apiAlias": { + "type": "string", + "enum": [ + "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" + ] }, - "unit": { - "description": "Unit in which the delivery time is defined. For example, days or hours." - } - } - }, - "translations": { - "properties": { - "shippingMethodId": { - "description": "Unique identity of shipping method." + "decimals": { + "type": "integer", + "format": "int32" }, - "name": { - "description": "Name of the shipping method." + "interval": { + "type": "number", + "format": "float" }, - "description": { - "description": "A short description of the shipping method." + "roundForNet": { + "type": "boolean" } } }, - "orderDeliveries": { + "totalRounding": { + "type": "object", + "required": [ + "decimals", + "interval", + "roundForNet", + "apiAlias" + ], "properties": { - "orderId": { - "description": "Unique identity of order." - }, - "shippingOrderAddressId": { - "description": "Unique identity of shipping order address." - }, - "shippingMethodId": { - "description": "Unique identity of shipping method." + "apiAlias": { + "type": "string", + "enum": [ + "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" + ] }, - "shippingDateEarliest": { - "description": "Date and time of earliest delivery of products." + "decimals": { + "type": "integer", + "format": "int32" }, - "shippingDateLatest": { - "description": "Date and time of latest delivery of products." + "interval": { + "type": "number", + "format": "float" }, - "stateId": { - "description": "Unique identity of state." + "roundForNet": { + "type": "boolean" } } }, - "salesChannelDefaultAssignments": { + "languageInfo": { + "type": "object", + "required": [ + "localeCode", + "name" + ], "properties": { - "stateId": { - "description": "Unique identity of state." - }, - "languageId": { - "description": "Unique identity of language." - }, - "currencyId": { - "description": "Unique identity of currency." - }, - "paymentMethodId": { - "description": "Unique identity of payment method." - }, - "shippingMethodId": { - "description": "Unique identity of shipping method." - }, - "countryId": { - "description": "Unique identity of country." - }, - "navigationCategoryId": { - "description": "Unique identity of navigation category." - }, - "navigationCategoryDepth": { - "description": "It determines the number of levels of subcategories in the storefront category menu." - }, - "footerCategoryId": { - "description": "Unique identity of footer category." - }, - "serviceCategoryId": { - "description": "Unique identity of service category." - }, "name": { - "description": "Name of the sales channel." - }, - "shortName": { - "description": "A short name for sales channel." - }, - "accessKey": { - "description": "Access key to store api." - }, - "active": { - "description": "When boolean value is `true`, the shipping methods are available for selection in the sales channel's storefront." - }, - "maintenance": { - "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." - }, - "maintenanceIpWhitelist": { - "description": "Array of IP address allowed to access the sales channel." - }, - "mailHeaderFooterId": { - "description": "Unique identity of mail header and footer." - }, - "customerGroupId": { - "description": "Unique identity of customer group." - }, - "hreflangActive": { - "description": "When boolean value is `true`, the sales channel pages are available in different languages." + "type": "string" }, - "hreflangDefaultDomainId": { - "description": "Unique identity of hreflangDefaultDomain." + "localeCode": { + "type": "string" } } }, - "salesChannels": { - "properties": { - "stateId": { - "description": "Unique identity of state." - }, - "languageId": { - "description": "Unique identity of language." - }, - "currencyId": { - "description": "Unique identity of currency." - }, - "paymentMethodId": { - "description": "Unique identity of payment method." - }, - "shippingMethodId": { - "description": "Unique identity of shipping method." - }, - "countryId": { - "description": "Unique identity of country." - }, - "navigationCategoryId": { - "description": "Unique identity of navigation category." - }, - "navigationCategoryDepth": { - "description": "It determines the number of levels of subcategories in the storefront category menu." - }, - "footerCategoryId": { - "description": "Unique identity of footer category." - }, - "serviceCategoryId": { - "description": "Unique identity of service category." - }, - "name": { - "description": "Name of the sales channel." - }, - "shortName": { - "description": "A short name for sales channel." - }, - "accessKey": { - "description": "Access key to store api." - }, - "active": { - "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." - }, - "maintenance": { - "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." - }, - "maintenanceIpWhitelist": { - "description": "Array of IP address allowed to access the sales channel." - }, - "mailHeaderFooterId": { - "description": "Unique identity of mail header and footer." - }, - "customerGroupId": { - "description": "Unique identity of customer group." - }, - "hreflangActive": { - "description": "When boolean value is `true``, the sales channel pages are available in different languages." - }, - "hreflangDefaultDomainId": { - "description": "Unique identity of hreflangDefaultDomain." - } - } - }, - "availabilityRule": { - "properties": { - "name": { - "description": "Unique name for the rule." - }, - "description": { - "description": "A short description about the rule." - }, - "priority": { - "description": "A numerical value to prioritize one of the rules from the list." - }, - "invalid": { - "description": "When the boolean value is `true`, the rule is no more available for usage." - } - } - }, - "availabilityRuleId": { - "description": "Unique identity of availability rule." - }, - "prices": { - "properties": { - "shippingMethodId": { - "description": "Unique identity of shipping method." - }, - "currencyId": { - "description": "Unique identity of currency." - }, - "ruleId": { - "description": "Unique identity of rule." - }, - "calculation": { - "description": "Shipping price calculated based on quantity, price, weight or volume of items." - }, - "quantityStart": { - "description": "Starting range of quantity of an item." - }, - "quantityEnd": { - "description": "Ending range of quantity of an item." - }, - "price": { - "description": "Shipping method price after applied rules." - }, - "calculationRuleId": { - "description": "Unique identity of calculation rule." - } - } - }, - "mediaId": { - "description": "Unique identity of media." - }, - "media": { - "properties": { - "userId": { - "description": "Unique identity of user." - }, - "mimeType": { - "description": "A string sent along with a file indicating the type of the file. For example: image/jpeg." - }, - "fileExtension": { - "description": "Type of file indication. For example: jpeg, png." - }, - "fileSize": { - "description": "Size of the file media file uploaded." - }, - "title": { - "description": "Title name give to the media." - }, - "metaDataRaw": { - "description": "Details of the media file uploaded." - }, - "alt": { - "description": "Alternate text for media." - }, - "url": { - "description": "Runtime field, cannot be used as part of the criteria." - }, - "fileName": { - "description": "Name of the media file uploaded." - }, - "mediaFolderId": { - "description": "Unique identity of media folder." - }, - "private": { - "description": "Boolean value is `true` to keep the media display private." - } - } - }, - "tags": { - "properties": { - "name": { - "description": "Name of the tag." - } - } + "apiAlias": { + "type": "string", + "enum": [ + "sales_channel_context" + ] } - } + }, + "required": [ + "salesChannel", + "apiAlias", + "itemRounding", + "totalRounding", + "languageInfo" + ] }, - "ProductDetailResponse": { + "CartError": { "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "product": { - "$ref": "#/components/schemas/Product" - }, - "configurator": { - "type": "array", - "description": "List of property groups with their corresponding options and information on how to display them.", - "items": { - "$ref": "#/components/schemas/PropertyGroup" - } - }, - "id": { - "description": "Unique identity of product detail response." - }, - "available": { - "description": "When boolean value is true, the product is available for purchase." - }, - "isCloseout": { - "description": "Boolean value to check if the product is still buyable when stock value is 0." - }, - "displayGroup": { - "description": "Internal field." + "key": { + "type": "string" }, - "manufacturerNumber": { - "description": "Unique number of the product manufacturer." + "level": { + "type": "number", + "enum": [ + 0, + 10, + 20 + ], + "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" }, - "stock": { - "description": "Quantity of product available." + "message": { + "type": "string" }, - "sortedProperties": { - "description": "Properties of the product that are sorted" + "messageKey": { + "type": "string" } }, "required": [ - "product" + "key", + "level", + "message", + "messageKey" ] }, - "CartDeliveryPosition": { + "ContextMeasurementSystemInfo": { "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", "properties": { - "deliveryDate": { + "system": { + "type": "string", + "enum": [ + "metric", + "imperial" + ], + "default": "metric", + "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." + }, + "units": { "type": "object", + "description": "Units used in the measurement system.", "properties": { - "earliest": { + "length": { "type": "string", - "format": "date-time" + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Unit of length." }, - "latest": { + "weight": { "type": "string", - "format": "date-time" + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." } } - }, - "identifier": { - "type": "string" - }, - "lineItem": { - "$ref": "#/components/schemas/LineItem" - }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" } } }, - "LineItemType": { - "type": "string", - "deprecated": true, - "enum": [ - "product", - "credit", - "custom", - "promotion", - "discount", - "container", - "quantity" - ] - }, - "LineItem": { + "CustomerAddressRead": { "type": "object", "properties": { - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - }, - "cover": { - "$ref": "#/components/schemas/Media" - }, - "dataContextHash": { - "type": "string" - }, - "dataTimestamp": { - "type": "string" - }, - "deliveryInformation": { - "$ref": "#/components/schemas/CartDeliveryInformation" - }, - "description": { + "id": { "type": "string", - "description": "Description of line items in an order." - }, - "good": { - "type": "boolean", - "description": "When set to true, it indicates the line item is physical else it is virtual." + "pattern": "^[0-9a-f]{32}$", + "readOnly": true }, - "id": { + "customerId": { "type": "string", - "description": "Unique identity of line item." + "pattern": "^[0-9a-f]{32}$", + "readOnly": true }, - "label": { + "createdAt": { "type": "string", - "description": "It is a typical product name given to the line item." + "format": "date-time" }, - "modified": { - "type": "boolean", - "description": "When boolean value is `true`, line items are said to be modified." + "updatedAt": { + "oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ] }, - "modifiedByApp": { - "type": "boolean" + "country": { + "$ref": "#/components/schemas/Country" }, - "payload": { - "$ref": "#/components/schemas/ProductJsonApi" + "countryState": { + "oneOf": [ + { + "$ref": "#/components/schemas/CountryState" + }, + { + "type": "null" + } + ] }, - "price": { + "salutation": { + "$ref": "#/components/schemas/Salutation" + } + }, + "required": [ + "customerId", + "createdAt", + "updatedAt", + "country", + "salutation" + ] + }, + "ProductListingCriteria": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + }, + { "type": "object", + "description": "Additional search parameters for product listings", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "calculated_price" - ] + "order": { + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "type": "string" }, - "calculatedTaxes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } + "limit": { + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "type": "integer", + "minimum": 0 }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] + "p": { + "description": "Search result page", + "type": "integer", + "default": 1 }, - "quantity": { - "type": "number" + "manufacturer": { + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "type": "string" }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] + "min-price": { + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 }, - "regulationPrice": { + "max-price": { + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "rating": { + "description": "Filter products with a minimum average rating.", + "type": "integer" + }, + "shipping-free": { + "description": "Filters products that are marked as shipping-free.", + "type": "boolean", + "default": false + }, + "properties": { + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "type": "string" + }, + "manufacturer-filter": { + "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "price-filter": { + "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "rating-filter": { + "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "shipping-free-filter": { + "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-filter": { + "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-whitelist": { + "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", + "type": "string" + }, + "reduce-aggregations": { + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", "oneOf": [ { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } + "type": "string" }, { "type": "null" } ] + } + } + } + ], + "properties": { + "filter": { + "properties": { + "type": { + "description": "To filter the results and aggregations with filter types like ==, >=, etc." }, - "totalPrice": { - "type": "number" + "field": { + "description": "To filter the results and aggregations by field like an property identifier." }, - "unitPrice": { - "type": "number" + "value": { + "description": "To filter the results and aggregations by value." + } + } + }, + "sort": { + "properties": { + "field": { + "description": "Sort the search results by field like an property identifier." }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } + "order": { + "description": "Sort the search results of orders by ascending or descending." + }, + "naturalSorting": { + "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." } - }, - "required": [ - "apiAlias", - "totalPrice", - "quantity", - "unitPrice" - ] - }, - "priceDefinition": { - "$ref": "#/components/schemas/CartPriceQuantity" - }, - "quantity": { - "type": "number", - "description": "Number of items of product." + } }, - "quantityInformation": { - "type": "object", + "post-filter": { "properties": { - "maxPurchase": { - "type": "number" + "type": { + "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." }, - "minPurchase": { - "type": "number" + "field": { + "description": "To filter only the results but not the aggregations by field like an property identifier." }, - "purchaseSteps": { - "type": "number" + "value": { + "description": "To filter only the results but not the aggregations by value." } } - }, - "referencedId": { - "type": "string", - "description": "Unique identity of type of entity." - }, - "removable": { - "type": "boolean", - "description": "Allows the line item to be removable from the cart when set to true." - }, - "stackable": { - "type": "boolean", - "description": "Allows to change the quantity of the line item when set to true." - }, - "states": { - "deprecated": true, - "type": "array", - "items": { - "type": "string", - "enum": [ - "is-physical", - "is-download" - ] - } - }, - "type": { - "$ref": "#/components/schemas/OrderLineItem/properties/type", - "description": "Type refers to the entity type of an item whether it is product or promotion for instance." - }, - "uniqueIdentifier": { - "type": "string" } - }, - "required": [ - "id", - "type", - "deliveryInformation", - "payload", - "quantity", - "states" - ] + } }, - "CrossSellingElementCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CrossSellingElement" - }, + "WishlistLoadRouteResponse": { + "type": "object", + "required": [ + "products" + ], "properties": { - "total": { - "description": "Number of cross selling elements found." + "wishlist": { + "type": "object", + "properties": { + "customerId": { + "type": "string", + "description": "Unique identity of the customer." + }, + "salesChannelId": { + "type": "string", + "description": "Unique identity of the sales channel." + } + } + }, + "products": { + "$ref": "#/components/schemas/ProductListingResult" } } }, @@ -13117,179 +12866,109 @@ "created" ] }, - "CartItems": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - }, - "properties": { - "id": { - "description": "Unique identity of cart item." - }, - "modified": { - "description": "When boolean value is `true`, the cart is said to be modified." - } - } - } - } - }, - "CookieEntry": { + "CartPriceQuantity": { "type": "object", "properties": { - "cookie": { - "type": "string" + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_quantity" + ] }, - "value": { - "type": "string" + "isCalculated": { + "type": "boolean" }, - "expiration": { - "type": "integer" + "listPrice": { + "$ref": "#/components/schemas/CartListPrice" }, - "name": { - "type": "string" + "price": { + "type": "number" }, - "description": { - "type": "string" + "quantity": { + "type": "number" }, - "hidden": { - "type": "boolean" + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + } + }, + "type": "object" }, - "apiAlias": { - "type": "string", - "enum": [ - "cookie_entry" - ] + "taxRules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } + }, + "type": { + "type": "string" } }, "required": [ - "cookie", - "hidden", "apiAlias" ] }, - "CookieRouteResponse": { + "ProductDetailResponse": { "type": "object", - "description": "Response containing cookie groups and their configuration hash.", + "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cookie_groups_hash" - ] + "product": { + "$ref": "#/components/schemas/Product" }, - "elements": { + "configurator": { "type": "array", - "description": "Collection of cookie groups", + "description": "List of property groups with their corresponding options and information on how to display them.", "items": { - "$ref": "#/components/schemas/CookieGroup" + "$ref": "#/components/schemas/PropertyGroup" } }, - "hash": { - "type": "string", - "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", - "example": "f86b6a872cb83dbd22d838ceda1aa3d4" + "id": { + "description": "Unique identity of product detail response." }, - "languageId": { - "type": "string", - "format": "uuid", - "description": "The language ID for which the cookie configuration was generated. Used to store hashes per language.", - "example": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" + "available": { + "description": "When boolean value is true, the product is available for purchase." + }, + "isCloseout": { + "description": "Boolean value to check if the product is still buyable when stock value is 0." + }, + "displayGroup": { + "description": "Internal field." + }, + "manufacturerNumber": { + "description": "Unique number of the product manufacturer." + }, + "stock": { + "description": "Quantity of product available." + }, + "sortedProperties": { + "description": "Properties of the product that are sorted" } }, "required": [ - "elements", - "hash", - "languageId", - "apiAlias" + "product" + ] + }, + "NewsletterStatus": { + "type": "string", + "enum": [ + "notSet", + "optIn", + "optOut", + "direct", + "undefined" ], - "example": { - "apiAlias": "cookie_groups_hash", - "elements": [ - { - "isRequired": true, - "description": "Cookies required for this shop to function:", - "name": "Technically required", - "entries": [ - { - "name": "Session", - "hidden": false, - "cookie": "session-", - "apiAlias": "cookie_entry" - }, - { - "name": "Timezone", - "hidden": false, - "cookie": "timezone", - "apiAlias": "cookie_entry" - }, - { - "value": "1", - "expiration": 30, - "name": "Cookie preferences", - "hidden": true, - "cookie": "cookie-preference", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "description": "Cookies used for statistics and shop performance metrics.", - "name": "Statistics", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "Google Analytics", - "hidden": false, - "cookie": "google-analytics-enabled", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "description": "Allows Google to collect personal data for online advertising and marketing.", - "name": "Marketing", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "Google Advertising", - "hidden": false, - "cookie": "google-ads-enabled", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "name": "Comfort features", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "YouTube video", - "hidden": false, - "cookie": "youtube-video", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - } - ], - "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", - "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" - } + "description": "The subscription status. Possible values are: notSet, optIn, optOut, direct, undefined." }, "CartDelivery": { "type": "object", @@ -13342,746 +13021,806 @@ } } }, - "CookieEntryCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CookieEntry" - } - }, - "NavigationRouteResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - }, - "properties": { - "id": { - "description": "Unique identity of navigation route response." - } - } - }, - "NavigationType": { - "type": "string", - "enum": [ - "main-navigation", - "footer-navigation", - "service-navigation" - ] - }, - "SalesChannelContext": { + "ReferencePrice": { "type": "object", "properties": { - "token": { - "description": "Context the user session", + "purchaseUnit": { + "type": "number" + }, + "referenceUnit": { + "type": "number" + }, + "unitName": { "type": "string" }, - "currentCustomerGroup": { - "type": "object", - "description": "Customer group of the current user", - "properties": { - "name": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_reference" + ] + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/ListPrice" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { "type": "string", - "description": "Name of customer group to which the customer belongs within the specific sales channel they are currently interacting with." + "format": "^[0-9a-f]{32}$" }, - "displayGross": { - "type": "boolean", - "description": "When `true`, product's gross price is displayed for that customer group who belongs to the specific sales channel they are currently interacting with." + { + "type": "null" } - } + ] + } + }, + "required": [ + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" + ] + }, + "CartDeliveryInformation": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_information" + ] }, - "fallbackCustomerGroup": { - "description": "Fallback group if the default customer group is not applicable", + "freeDelivery": { + "type": "boolean" + }, + "deliveryTime": { "type": "object", "properties": { "name": { "type": "string" }, - "displayGross": { - "type": "boolean" - } - } - }, - "currency": { - "$ref": "#/components/schemas/Currency", - "properties": { - "isoCode": { - "description": "Standard international three digit code to represent currency in a given sales channel. For example, USD." - }, - "factor": { - "description": "Currency exchange rate in a specific sales channel the customer is currently interacting with." - }, - "symbol": { - "description": "A currency symbol is a graphical representation used as shorthand for a currency's name, for example US Dollar - $ in a given sales channel." - }, - "shortName": { - "description": "Acronym for international currencies, for example, USD in a given sales channel." - }, - "name": { - "description": "Full name of the currency in a given sales channel. For example, US-Dollar." + "min": { + "type": "integer" }, - "position": { - "description": "The order of the tabs for multiple currencies defined in a given sales channel." + "max": { + "type": "integer" }, - "decimalPrecision": { - "description": "It defines the round off value for currency to the nearest decimal point in a given sales channel. If set to 2, it rounds off to two significant decimal points." + "unit": { + "type": "string" }, - "isSystemDefault": { - "description": "Runtime field, cannot be used as part of the criteria." + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_time" + ] } } }, - "salesChannel": { - "$ref": "#/components/schemas/SalesChannel", - "properties": { - "typeId": { - "description": "Unique identity of a sales channel's type within a specific sales channel." - }, - "languageId": { - "description": "Unique identity of a sales channel's language within a specific sales channel." - }, - "currencyId": { - "description": "Unique identity of a sales channel's currency within a specific sales channel." - }, - "paymentMethodId": { - "description": "Unique identity of a sales channel's payment method within a specific sales channel." - }, - "shippingMethodId": { - "description": "Unique identity of a sales channel's shipping method within a specific sales channel." - }, - "countryId": { - "description": "Unique identity of a sales channel's country within a specific sales channel." - }, - "navigationCategoryId": { - "description": "Unique identity of a sales channel's navigation category within a specific sales channel." - }, - "navigationCategoryDepth": { - "description": "It determines the number of levels of subcategories in the storefront category menu within a specific sales channel." - }, - "footerCategoryId": { - "description": "Unique identity of a sales channel's footer category within a specific sales channel." - }, - "serviceCategoryId": { - "description": "Unique identity of a sales channel's service category within a specific sales channel." - }, - "name": { - "description": "Name of the sales channel." - }, - "shortName": { - "description": "A short name for sales channel." - }, - "accessKey": { - "description": "Access key to store api." - }, - "active": { - "description": "When `true`, the sales channel is enabled." - }, - "maintenance": { - "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." - }, - "maintenanceIpWhitelist": { - "description": "Array of IP address allowed to access the sales channel." - }, - "mailHeaderFooterId": { - "description": "Unique identity of a sales channel's mail header and footer within a specific sales channel." - }, - "customerGroupId": { - "description": "Unique identity of a sales channel's customer group within a specific sales channel." + "height": { + "type": "integer" + }, + "length": { + "type": "integer" + }, + "restockTime": { + "type": "integer" + }, + "stock": { + "type": "integer" + }, + "weight": { + "type": "integer" + }, + "width": { + "type": "integer" + } + }, + "required": [ + "apiAlias" + ] + }, + "Cart": { + "type": "object", + "properties": { + "name": { + "description": "Name of the cart - for example `guest-cart`", + "type": "string" + }, + "token": { + "description": "Context token identifying the cart and the user session", + "type": "string" + }, + "price": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "lineItems": { + "description": "All items within the cart", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + }, + "errors": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartError" + } }, - "hreflangActive": { - "description": "When `true`, the sales channel pages are available in different languages within a specific sales channel." + { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "code": { + "type": "number" + }, + "key": { + "type": "string" + }, + "level": { + "type": "number" + }, + "message": { + "type": "string" + }, + "messageKey": { + "type": "string" + } + }, + "required": [ + "code", + "key", + "level", + "message", + "messageKey" + ] + } + } + ], + "properties": { + "key": { + "description": "Unique key for every message." }, - "hreflangDefaultDomainId": { - "description": "Unique identity of a sales channel's hreflangDefaultDomain within a specific sales channel." + "level": { + "description": "Types of level - Notice, warning and error. " }, - "analyticsId": { - "description": "Unique identity of a sales channel's analytics within a specific sales channel." + "message": { + "description": "A persistent error passed from the shopping cart calculation processes to the user end." } } }, - "measurementSystem": { - "$ref": "#/components/schemas/ContextMeasurementSystemInfo" + "deliveries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDelivery" + } }, - "taxRules": { + "transactions": { + "description": "A list of all payment transactions associated with the current cart.", "type": "array", - "description": "Currently active tax rules and/or rates", "items": { "type": "object", "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { + "paymentMethodId": { "type": "string" + }, + "amount": { + "$ref": "#/components/schemas/CalculatedPrice" } } }, "properties": { - "taxRate": { - "description": "Rate of tax within a specific sales channel." - }, - "name": { - "description": "Name defined for a Tax within a specific sales channel." + "paymentMethodId": { + "description": "Unique identity of payment method." } } }, - "customer": { + "modified": { + "type": "boolean", + "description": "It signifies any changes to cart." + }, + "customerComment": { + "description": "A comment that can be added to the cart.", "oneOf": [ { - "type": "null" + "type": "string" }, { - "$ref": "#/components/schemas/Customer" + "type": "null" } - ], - "properties": { - "groupId": { - "description": "Unique identity of a customer's group within a specific sales channel." - }, - "defaultPaymentMethodId": { - "description": "Unique identity of a customer's default payment method within a specific sales channel." - }, - "salesChannelId": { - "description": "Unique identity of sales channel the customer is currently interacting with." - }, - "languageId": { - "description": "Unique identity of language within a specific sales channel the customer is interacting." - }, - "lastPaymentMethodId": { - "description": "Unique identity of customer's last payment method within a specific sales channel." - }, - "defaultBillingAddressId": { - "description": "Unique identity of customer's default billing address within a specific sales channel." - }, - "defaultShippingAddressId": { - "description": "Unique identity of customer's default shipping address within a specific sales channel." - }, - "customerNumber": { - "description": "Name of the customer within a specific sales channel the customer is interacting." - }, - "salutationId": { - "description": "Unique identity of customer's default shipping address within a specific sales channel." - }, - "firstName": { - "description": "First name of the customer within a specific sales channel." - }, - "lastName": { - "description": "Last name of the customer within a specific sales channel." - }, - "company": { - "description": "Company name of the customer within a specific sales channel." - }, - "password": { - "description": "Password of the customer within a specific sales channel." - }, - "email": { - "description": "Email of the customer within a specific sales channel." - }, - "title": { - "description": "Customer's title or honorifics like Mr, Mrs, etc within a specific sales channel." - }, - "affiliateCode": { - "description": "An affiliate code is an identification option with which website operators can mark outgoing links within a specific sales channel." - }, - "campaignCode": { - "description": "A unique identifier for a campaign within a specific sales channel." - }, - "active": { - "description": "When `true`, the status of the customer is set active within a specific sales channel." - }, - "doubleOptInRegistration": { - "description": "When `true`, user subscriptions to an email marketing list is allowed within a specific sales channel." - }, - "doubleOptInEmailSentDate": { - "description": "Date and time when the double opt-in email was sent within a specific sales channel." - }, - "doubleOptInConfirmDate": { - "description": "Date and time when the double opt-in email was confirmed within a specific sales channel." + ] + }, + "affiliateCode": { + "description": "An affiliate tracking code", + "oneOf": [ + { + "type": "string" }, - "hash": { - "description": "Password hash for account recovery within a specific sales channel." + { + "type": "null" + } + ] + }, + "campaignCode": { + "description": "A campaign tracking code", + "oneOf": [ + { + "type": "string" }, - "guest": { - "description": "Boolean value is `true` for a guest account within a specific sales channel." - }, - "firstLogin": { - "description": "Captures date and time of customer's first login within a specific sales channel." - }, - "lastLogin": { - "description": "Captures date and time of customer's last login within a specific sales channel." - }, - "newsletter": { - "description": "When `true`, then the customer gets subscribe to the newsletter" - }, - "birthday": { - "description": "Captures customer's birthday details within a specific sales channel." - }, - "lastOrderDate": { - "description": "Captures customer's last order date within a specific sales channel." - }, - "orderCount": { - "description": "Captures the number of orders placed by a customer within a specific sales channel." - }, - "legacyEncoder": { - "description": "encapsulates shop credentials when needed to migrate shop system from old instance to new instance" - }, - "legacyPassword": { - "description": "Hashed password of the old shop system" - }, - "autoIncrement": { - "description": "Internal field. " - }, - "remoteAddress": { - "description": "Anonymous IP address of the customer for last session." + { + "type": "null" } - } + ] }, - "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethod", + "apiAlias": { + "type": "string", + "enum": [ + "cart" + ] + }, + "id": { + "description": "Unique identity of cart." + } + }, + "required": [ + "price", + "apiAlias" + ] + }, + "AccountNewsletterRecipient": { + "type": "object", + "properties": { + "status": { + "$ref": "#/components/schemas/NewsletterStatus" + }, + "apiAlias": { + "type": "string", + "enum": [ + "account_newsletter_recipient" + ] + } + }, + "required": [ + "status", + "apiAlias" + ] + }, + "CrossSellingElementCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrossSellingElement" + }, + "properties": { + "total": { + "description": "Number of cross selling elements found." + } + } + }, + "Criteria": { + "type": "object", + "description": "Criteria to query entities.", + "properties": { + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", + "type": "string" + }, + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + }, "properties": { - "pluginId": { - "description": "Unique identity of payment plugin within a specific sales channel." - }, - "handlerIdentifier": { - "description": "Internal field that contains system identifier details for payment methods like Paypal." - }, - "name": { - "description": "Name of the payment method within a specific sales channel." - }, - "description": { - "description": "A short description about the payment method within a specific sales channel." - }, - "position": { - "description": "The order of the tabs of your defined payment methods in the storefront by entering numerical values like 1,2,3, etc within a specific sales channel." - }, - "active": { - "description": "When `true`, the payment method is available for usage within a specific sales channel." - }, - "availabilityRuleId": { - "description": "Unique identity of the rule for the payment method." + "type": { + "description": "To filter the results and aggregations with filter types like ==, >=, etc." }, - "mediaId": { - "description": "Unique identity of media used in payment method within a specific sales channel." + "field": { + "description": "To filter the results and aggregations by field like an property identifier." }, - "formattedHandlerIdentifier": { - "description": "Internal field that contains system identifier details for payment methods like Paypal." + "value": { + "description": "To filter the results and aggregations by value." } } }, - "shippingLocation": { - "type": "object", + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } + }, + "query": { + "type": "string", + "description": "The query string to search for" + }, + "associations": { + "$ref": "#/components/schemas/Associations" + }, + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + }, "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] + "type": { + "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." }, - "country": { - "$ref": "#/components/schemas/Country" + "field": { + "description": "To filter only the results but not the aggregations by field like an property identifier." }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" + "value": { + "description": "To filter only the results but not the aggregations by value." } } }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod", + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + }, "properties": { - "name": { - "description": "Name of the shipping method within a specific sales channel." - }, - "active": { - "description": "When `true`, the shipping method is available for usage within a specific sales channel." - }, - "description": { - "description": "A short description about the shipping method within a specific sales channel." - }, - "trackingUrl": { - "description": "URL that allows to track packages for a specific sales channel." - }, - "deliveryTimeId": { - "description": "Unique identity of deliveryTime within a specific sales channel." + "field": { + "description": "Sort the search results by field like an property identifier." }, - "availabilityRuleId": { - "description": "Unique identity of the rule for the payment method." + "order": { + "description": "Sort the search results of orders by ascending or descending." }, - "mediaId": { - "description": "Unique identity of media used in shipping method within a specific sales channel." + "naturalSorting": { + "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." } } }, - "context": { - "description": "Core context with general configuration values and state", - "type": "object", - "properties": { - "versionId": { - "type": "string", - "description": "Unique identity of context's version in a specific sales channel." - }, - "currencyId": { - "type": "string", - "description": "Unique identity of currency context in a specific sales channel." - }, - "currencyFactor": { - "type": "integer", - "description": "Unique identity of currency factor context in a specific sales channel." - }, - "currencyPrecision": { - "type": "integer", - "format": "int32", - "description": "It defines the round off value of currency to the nearest decimal point. If set to 2, it rounds off to two significant decimal points." - }, - "languageIdChain": { - "type": "array", - "items": { - "type": "string" - } - }, - "scope": { - "type": "string", - "description": "Scope defines if its related to system or user context." - }, - "source": { - "type": "object", - "required": [ - "salesChannelId", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "sales-channel", - "shop-api" - ] - }, - "salesChannelId": { - "type": "string" - } - }, - "description": "When context is related to user in the source, then there is userId." - }, - "taxState": { - "type": "string", - "description": "Tax state can either be `gross` or `net`." - }, - "useCache": { - "type": "boolean", - "description": "When boolean value is `true`, caching is used." - } + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" } }, - "itemRounding": { - "type": "object", - "required": [ - "decimals", - "interval", - "roundForNet", - "apiAlias" - ], - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" - ] - }, - "decimals": { - "type": "integer", - "format": "int32" - }, - "interval": { - "type": "number", - "format": "float" - }, - "roundForNet": { - "type": "boolean" - } + "fields": { + "type": "array", + "description": "Fields which should be returned in the search result.", + "items": { + "type": "string", + "description": "Name of a field" } }, - "totalRounding": { - "type": "object", - "required": [ - "decimals", - "interval", - "roundForNet", - "apiAlias" - ], - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" - ] - }, - "decimals": { - "type": "integer", - "format": "int32" - }, - "interval": { - "type": "number", - "format": "float" - }, - "roundForNet": { - "type": "boolean" - } + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" } }, - "languageInfo": { - "type": "object", - "required": [ - "localeCode", - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "localeCode": { - "type": "string" - } - } + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" }, - "apiAlias": { - "type": "string", - "enum": [ - "sales_channel_context" - ] + "includes": { + "$ref": "#/components/schemas/Includes" + }, + "excludes": { + "$ref": "#/components/schemas/Excludes" } - }, - "required": [ - "salesChannel", - "apiAlias", - "itemRounding", - "totalRounding", - "languageInfo" - ] + } }, - "AggregationMetrics": { + "NoneFieldsCriteria": { "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "name": { + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", "type": "string" }, - "type": { + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } + }, + "query": { "type": "string", - "enum": [ - "avg", - "count", - "max", - "min", - "stats", - "sum" - ] + "description": "The query string to search for" }, - "field": { - "type": "string" + "associations": { + "$ref": "#/components/schemas/Associations" + }, + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + }, + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } + }, + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" + }, + "excludes": { + "$ref": "#/components/schemas/Excludes" } - }, - "required": [ - "name", - "type", - "field" - ] + } }, - "CookieGroupCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CookieGroup" + "Associations": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Criteria" } }, - "ProductListingFlags": { + "Includes": { "type": "object", - "description": "Additional flags for product listings", - "properties": { - "no-aggregations": { - "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", - "oneOf": [ + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "Excludes": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "Aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" + }, + { + "title": "AggregationEntity", + "allOf": [ { - "type": "string" + "$ref": "#/components/schemas/AggregationEntity" }, { - "type": "null" + "$ref": "#/components/schemas/SubAggregations" } ] }, - "only-aggregations": { - "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", - "oneOf": [ + { + "title": "AggregationFilter", + "allOf": [ { - "type": "string" + "$ref": "#/components/schemas/AggregationFilter" }, { - "type": "null" + "$ref": "#/components/schemas/SubAggregations" } ] - } - } - }, - "Breadcrumb": { - "type": "object", - "properties": { - "name": { - "type": "string" }, - "categoryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + { + "title": "AggregationTerms", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] }, - "type": { - "$ref": "#/components/schemas/Category/properties/type" + { + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] }, - "translated": { - "type": "object", - "additionalProperties": true, - "properties": { - "customFields": { - "type": "object" + { + "title": "AggregationRange", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationRange" }, - "slotConfig": { - "type": "object" + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + } + ] + }, + "SubAggregations": { + "type": "object", + "properties": { + "aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" }, - "linkType": { - "$ref": "#/components/schemas/Category/properties/linkType" + { + "$ref": "#/components/schemas/AggregationEntity" }, - "internalLink": { - "type": "string" + { + "$ref": "#/components/schemas/AggregationFilter" }, - "externalLink": { - "type": "string" + { + "$ref": "#/components/schemas/AggregationTerms" }, - "linkNewTab": { - "type": "boolean" + { + "$ref": "#/components/schemas/AggregationHistogram" }, - "description": { - "type": "string" + { + "$ref": "#/components/schemas/AggregationRange" + } + ] + } + } + }, + "TotalCountMode": { + "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", + "type": "string", + "default": "none", + "enum": [ + "none", + "exact", + "next-pages" + ] + }, + "Query": { + "type": "object", + "properties": { + "score": { + "type": "number" + }, + "query": { + "oneOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "metaTitle": { - "type": "string" + { + "$ref": "#/components/schemas/EqualsFilter" }, - "metaDescription": { - "type": "string" + { + "$ref": "#/components/schemas/MultiNotFilter" }, - "keywords": { - "type": "string" + { + "$ref": "#/components/schemas/RangeFilter" } - } - }, - "path": { + ] + } + }, + "additionalProperties": true + }, + "Sort": { + "type": "object", + "properties": { + "field": { "type": "string" }, - "seoUrls": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } - }, - "apiAlias": { + "order": { "type": "string", "enum": [ - "breadcrumb" + "ASC", + "DESC" ] + }, + "naturalSorting": { + "type": "boolean" + }, + "type": { + "type": "string" } }, "required": [ - "name", - "categoryId", - "type", - "translated", - "path", - "apiAlias" + "field", + "order" ] }, - "CartError": { + "Filters": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "SimpleFilter": { "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "key": { - "type": "string" - }, - "level": { - "type": "number", + "type": { + "type": "string", "enum": [ - 0, - 10, - 20 - ], - "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" + "contains", + "equalsAny", + "prefix", + "suffix" + ] }, - "message": { + "field": { "type": "string" }, - "messageKey": { + "value": { "type": "string" } }, "required": [ - "key", - "level", - "message", - "messageKey" + "type", + "field", + "value" ] }, - "CartPriceReference": { + "EqualsFilter": { "type": "object", "properties": { - "purchaseUnit": { - "type": "number" + "type": { + "type": "string", + "enum": [ + "equals" + ] }, - "referenceUnit": { - "type": "number" - }, - "unitName": { + "field": { "type": "string" }, - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_reference" - ] - }, - "listPrice": { + "value": { "oneOf": [ { - "$ref": "#/components/schemas/CartListPrice" + "type": "string" }, { - "type": "null" - } - ] - }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } + "type": "number" }, { - "type": "null" - } - ] - }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "^[0-9a-f]{32}$" + "type": "boolean" }, { "type": "null" @@ -14090,1745 +13829,2281 @@ } }, "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" + "type", + "field", + "value" ] }, - "AccountNewsletterRecipient": { + "MultiNotFilter": { "type": "object", "properties": { - "status": { + "type": { "type": "string", "enum": [ - "undefined", - "notSet", - "direct", - "optIn", - "optOut" + "multi", + "not" ] }, - "apiAlias": { + "operator": { "type": "string", "enum": [ - "account_newsletter_recipient" + "and", + "or", + "nor", + "nand" ] + }, + "queries": { + "$ref": "#/components/schemas/Filters" } }, "required": [ - "status", - "apiAlias" + "type", + "operator", + "queries" ] }, - "SuccessResponse": { + "RangeFilter": { "type": "object", "properties": { - "success": { - "type": "boolean" + "type": { + "type": "string", + "enum": [ + "range" + ] + }, + "field": { + "type": "string" + }, + "parameters": { + "type": "object", + "properties": { + "gte": { + "type": "number" + }, + "gt": { + "type": "number" + }, + "lte": { + "type": "number" + }, + "lt": { + "type": "number" + } + } } - } + }, + "required": [ + "type", + "field", + "parameters" + ] }, - "EntitySearchResult": { + "FindProductVariantRouteResponse": { "type": "object", "properties": { - "entity": { - "type": "string" - }, - "total": { - "type": "integer", - "description": "The total number of found entities" - }, - "aggregations": { - "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", - "items": { - "type": "object" + "foundCombination": { + "type": "object", + "properties": { + "variantId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of a variant." + }, + "options": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Available product variant options. For example, for variant `Size`, option would be `XS`, `S`, `M`, `L`, `XL`." + } } - }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." - }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." } } }, - "CalculatedPrice": { + "Price": { "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", + "description": "Price object", "properties": { - "unitPrice": { - "type": "number" - }, - "quantity": { - "type": "number" + "currencyId": { + "description": "Unique identity of the associated currency.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "rawTotal": { + "gross": { + "description": "Gross price for the associated currency.", "type": "number" }, - "totalPrice": { + "net": { + "description": "Net price for the associated currency.", "type": "number" }, - "taxStatus": { - "type": "string", - "enum": [ - "net", - "tax-free" - ] - }, - "calculatedTaxes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } + "linked": { + "description": "Whether gross and net prices are linked through the tax configuration.", + "type": "boolean" }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" + "percentage": { + "description": "Discount percentage relative to the list price for the gross and net amounts. `null` when no list price is set.", + "type": [ + "object", + "null" + ], + "properties": { + "gross": { + "description": "Discount percentage relative to the gross list price.", + "type": "number" }, - { - "type": "null" + "net": { + "description": "Discount percentage relative to the net list price.", + "type": "number" } + }, + "required": [ + "gross", + "net" ] }, "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" + "description": "Reference list price for displaying discounts.", + "type": "object", + "properties": { + "currencyId": { + "description": "Unique identity of the associated currency.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - { - "type": "null" + "gross": { + "description": "Gross list price for the associated currency.", + "type": "number" + }, + "net": { + "description": "Net list price for the associated currency.", + "type": "number" + }, + "linked": { + "description": "Whether gross and net list prices are linked through the tax configuration.", + "type": "boolean" } + }, + "required": [ + "gross", + "net" ] }, - "positionPrice": { - "type": "number" - }, - "netPrice": { - "type": "number" - }, "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } - }, - { - "type": "null" - } - ] - }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "oneOf": [ - { + "description": "Reference price used for legal price disclosures.", + "type": "object", + "properties": { + "currencyId": { + "description": "Unique identity of the associated currency.", "type": "string", - "format": "^[0-9a-f]{32}$" + "pattern": "^[0-9a-f]{32}$" }, - { - "type": "null" + "gross": { + "description": "Gross regulation price for the associated currency.", + "type": "number" + }, + "net": { + "description": "Net regulation price for the associated currency.", + "type": "number" + }, + "linked": { + "description": "Whether gross and net regulation prices are linked through the tax configuration.", + "type": "boolean" } + }, + "required": [ + "gross", + "net" ] - }, - "apiAlias": { - "type": "string", - "enum": [ - "calculated_price" - ] - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } } }, "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "referencePrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitPrice", - "positionPrice", - "netPrice", - "taxRules", - "rawTotal", - "taxStatus" + "currencyId", + "gross", + "net" ] }, - "CustomerAddressBody": { - "description": "Added since version: 6.0.0.0", - "required": [ - "countryId", - "firstName", - "lastName", - "city", - "street" - ], - "properties": { - "countryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryStateId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "salutationId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "zipcode": { - "type": "string" - }, - "city": { - "type": "string" - }, - "company": { - "type": "string" - }, - "street": { - "type": "string" - }, - "department": { - "type": "string" - }, - "title": { - "type": "string" - }, - "phoneNumber": { - "type": "string" - }, - "additionalAddressLine1": { - "type": "string" - }, - "additionalAddressLine2": { - "type": "string" - }, - "customFields": { - "type": "object" - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "$ref": "#/components/schemas/CountryState" - }, - "salutation": { - "$ref": "#/components/schemas/Salutation" - } - }, - "type": "object" + "NavigationType": { + "type": "string", + "enum": [ + "main-navigation", + "footer-navigation", + "service-navigation" + ] }, - "ReferencePrice": { + "OrderRouteResponse": { "type": "object", "properties": { - "purchaseUnit": { - "type": "number" - }, - "referenceUnit": { - "type": "number" - }, - "unitName": { - "type": "string" - }, - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_reference" - ] - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/ListPrice" - }, - { - "type": "null" - } - ] - }, - "regulationPrice": { - "oneOf": [ + "orders": { + "type": "object", + "allOf": [ { "type": "object", + "required": [ + "elements" + ], "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" + } } } }, { - "type": "null" + "$ref": "#/components/schemas/EntitySearchResult" } ] }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } - ] + "paymentChangeable": { + "type": "object", + "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", + "additionalProperties": { + "type": "boolean" + } } }, "required": [ - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" + "orders" ] }, - "CustomerAddressRead": { - "type": "object", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true - }, - "customerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true + "ProductListingResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EntitySearchResult" }, - "createdAt": { - "type": "string", - "format": "date-time" - }, - "updatedAt": { - "oneOf": [ - { - "type": "string", - "format": "date-time" + { + "type": "object", + "properties": { + "currentFilters": { + "type": "object", + "description": "Contains the state of the filters. These can be used to create listing filters.", + "properties": { + "navigationId": { + "type": "string" + }, + "manufacturer": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "price": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "default": 0 + }, + "max": { + "type": "integer", + "default": 0 + } + }, + "required": [ + "min", + "max" + ] + }, + "rating": { + "oneOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "shipping-free": { + "type": "boolean", + "default": false + }, + "properties": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "search": { + "type": "string" + } + }, + "required": [ + "manufacturer", + "navigationId", + "price", + "properties", + "rating", + "shipping-free" + ] }, - { - "type": "null" - } - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "oneOf": [ - { - "$ref": "#/components/schemas/CountryState" + "availableSortings": { + "type": "array", + "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", + "items": { + "type": "object", + "properties": { + "label": { + "type": "string" + }, + "translated": { + "type": "object", + "properties": { + "label": { + "type": "string" + } + }, + "required": [ + "label" + ] + }, + "key": { + "type": "string" + }, + "priority": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_sorting" + ] + } + }, + "required": [ + "label", + "translated", + "key", + "priority", + "apiAlias" + ] + } }, - { - "type": "null" + "sorting": { + "type": "string" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "entity": { + "type": "string", + "enum": [ + "product" + ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_listing" + ] } + }, + "required": [ + "elements", + "availableSortings", + "currentFilters", + "apiAlias" ] - }, - "salutation": { - "$ref": "#/components/schemas/Salutation" } - }, - "required": [ - "customerId", - "createdAt", - "updatedAt", - "country", - "salutation" ] }, - "Criteria": { + "ProductMeasurements": { "type": "object", - "description": "Criteria to query entities.", + "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "term": { - "description": "Search term", - "type": "string" - }, - "limit": { - "description": "Number of items per result page", - "type": "integer" - }, - "filter": { - "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - }, + "width": { + "type": "object", "properties": { - "type": { - "description": "To filter the results and aggregations with filter types like ==, >=, etc." - }, - "field": { - "description": "To filter the results and aggregations by field like an property identifier." + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" }, "value": { - "description": "To filter the results and aggregations by value." + "type": "number" } } }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" + "height": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" + }, + "value": { + "type": "number" + } } }, - "query": { - "type": "string", - "description": "The query string to search for" - }, - "associations": { - "$ref": "#/components/schemas/Associations" - }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - }, + "length": { + "type": "object", "properties": { - "type": { - "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." - }, - "field": { - "description": "To filter only the results but not the aggregations by field like an property identifier." + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" }, "value": { - "description": "To filter only the results but not the aggregations by value." + "type": "number" } } }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" - }, + "weight": { + "type": "object", "properties": { - "field": { - "description": "Sort the search results by field like an property identifier." - }, - "order": { - "description": "Sort the search results of orders by ascending or descending." + "unit": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg" }, - "naturalSorting": { - "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." + "value": { + "type": "number" } } + } + } + }, + "CookieEntryCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CookieEntry" + } + }, + "CrossSellingElement": { + "type": "object", + "properties": { + "crossSelling": { + "$ref": "#/components/schemas/ProductCrossSelling" }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } - }, - "fields": { - "type": "array", - "description": "Fields which should be returned in the search result.", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "grouping": { + "products": { "type": "array", - "description": "Perform groupings over certain fields", "items": { - "type": "string", - "description": "Name of a field" + "$ref": "#/components/schemas/Product" } }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" + "total": { + "type": "integer", + "format": "int32" }, - "includes": { - "$ref": "#/components/schemas/Includes" + "streamId": { + "type": "string", + "format": "uuid" }, - "excludes": { - "$ref": "#/components/schemas/Excludes" + "apiAlias": { + "type": "string", + "enum": [ + "cross_selling_element" + ] } - } + }, + "required": [ + "crossSelling", + "products", + "total", + "apiAlias" + ] }, - "NoneFieldsCriteria": { + "CookieEntry": { "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "page": { - "description": "Search result page", - "type": "integer" + "cookie": { + "type": "string" }, - "term": { - "description": "Search term", + "value": { "type": "string" }, - "limit": { - "description": "Number of items per result page", + "expiration": { "type": "integer" }, - "filter": { - "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } + "name": { + "type": "string" }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" - } + "description": { + "type": "string" }, - "query": { - "type": "string", - "description": "The query string to search for" + "hidden": { + "type": "boolean" }, - "associations": { - "$ref": "#/components/schemas/Associations" + "apiAlias": { + "type": "string", + "enum": [ + "cookie_entry" + ] + } + }, + "required": [ + "cookie", + "hidden", + "apiAlias" + ] + }, + "MeasurementUnits": { + "type": "object", + "description": "Configuration of the measurement system", + "properties": { + "system": { + "type": "string", + "enum": [ + "metric", + "imperial" + ], + "default": "metric", + "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] + "units": { + "type": "object", + "description": "Units used in the measurement system.", + "properties": { + "length": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Unit of length." + }, + "weight": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." + } } + } + } + }, + "CartListPrice": { + "type": "object", + "description": "", + "properties": { + "discount": { + "type": "number" }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" - } + "percentage": { + "type": "number" }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } - }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" - }, - "includes": { - "$ref": "#/components/schemas/Includes" + "price": { + "type": "number" }, - "excludes": { - "$ref": "#/components/schemas/Excludes" + "apiAlias": { + "type": "string", + "enum": [ + "cart_list_price" + ] } - } - }, - "Associations": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Criteria" - } + }, + "required": [ + "apiAlias" + ] }, - "Includes": { + "CookieGroup": { "type": "object", - "additionalProperties": { - "type": "array", - "items": { + "properties": { + "isRequired": { + "type": "boolean" + }, + "name": { "type": "string" - } - } - }, - "Excludes": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { + }, + "description": { "type": "string" - } - } - }, - "Aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" }, - { - "title": "AggregationEntity", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "cookie": { + "type": "string" }, - { - "title": "AggregationFilter", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "value": { + "type": "string" }, - { - "title": "AggregationTerms", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "expiration": { + "type": "integer" }, - { - "title": "AggregationHistogram", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "entries": { + "$ref": "#/components/schemas/CookieEntryCollection" }, - { - "title": "AggregationRange", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationRange" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } + "apiAlias": { + "type": "string", + "enum": [ + "cookie_group" ] } + }, + "not": { + "allOf": [ + { + "required": [ + "cookie" + ] + }, + { + "required": [ + "entries" + ] + } + ] + }, + "required": [ + "name", + "isRequired", + "apiAlias" ] }, - "SubAggregations": { + "SuccessResponse": { "type": "object", "properties": { - "aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/AggregationRange" - } - ] + "success": { + "type": "boolean" } } }, - "TotalCountMode": { - "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", - "type": "string", - "default": "none", - "enum": [ - "none", - "exact", - "next-pages" - ] - }, - "Query": { + "CartItems": { "type": "object", + "required": [ + "items" + ], "properties": { - "score": { - "type": "number" - }, - "query": { - "oneOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + }, + "properties": { + "id": { + "description": "Unique identity of cart item." }, - { - "$ref": "#/components/schemas/RangeFilter" + "modified": { + "description": "When boolean value is `true`, the cart is said to be modified." } - ] + } } - }, - "additionalProperties": true + } }, - "Sort": { + "AggregationMetrics": { "type": "object", "properties": { - "field": { + "name": { "type": "string" }, - "order": { + "type": { "type": "string", "enum": [ - "ASC", - "DESC" + "avg", + "count", + "max", + "min", + "stats", + "sum" ] }, - "naturalSorting": { - "type": "boolean" - }, - "type": { + "field": { "type": "string" } }, "required": [ - "field", - "order" + "name", + "type", + "field" ] }, - "Filters": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "SimpleFilter": { + "CartDeliveryPosition": { "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "type": { + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } + }, + "identifier": { + "type": "string" + }, + "lineItem": { + "$ref": "#/components/schemas/LineItem" + }, + "price": { + "$ref": "#/components/schemas/CalculatedPrice" + } + } + }, + "CustomerAddressBody": { + "description": "Added since version: 6.0.0.0", + "required": [ + "countryId", + "firstName", + "lastName", + "city", + "street" + ], + "properties": { + "countryId": { "type": "string", - "enum": [ - "contains", - "equalsAny", - "prefix", - "suffix" - ] + "pattern": "^[0-9a-f]{32}$" }, - "field": { + "countryStateId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "salutationId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "firstName": { "type": "string" }, - "value": { + "lastName": { + "type": "string" + }, + "zipcode": { + "type": "string" + }, + "city": { + "type": "string" + }, + "company": { + "type": "string" + }, + "street": { + "type": "string" + }, + "department": { + "type": "string" + }, + "title": { + "type": "string" + }, + "phoneNumber": { + "type": "string" + }, + "additionalAddressLine1": { + "type": "string" + }, + "additionalAddressLine2": { "type": "string" + }, + "customFields": { + "type": "object" + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "$ref": "#/components/schemas/CountryState" + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, + "type": "object" + }, + "ProductPurchaseLimit": { + "type": "object", + "description": "Current quantity purchase limits for a product.", "required": [ - "type", - "field", - "value" - ] + "productId", + "minPurchase", + "purchaseSteps", + "maxPurchase", + "stock", + "apiAlias" + ], + "properties": { + "productId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The product ID." + }, + "minPurchase": { + "type": "integer", + "description": "Minimum quantity a customer can purchase." + }, + "purchaseSteps": { + "type": "integer", + "description": "Step increment for quantity selection." + }, + "maxPurchase": { + "type": "integer", + "description": "Maximum quantity a customer can purchase, reflecting current stock for closeout products." + }, + "stock": { + "type": [ + "integer", + "null" + ], + "description": "Current stock level of the product." + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_purchase_limit" + ] + } + } }, - "EqualsFilter": { + "CookieRouteResponse": { "type": "object", + "description": "Response containing cookie groups and their configuration hash.", "properties": { - "type": { + "apiAlias": { "type": "string", "enum": [ - "equals" + "cookie_groups_hash" ] }, - "field": { - "type": "string" + "elements": { + "type": "array", + "description": "Collection of cookie groups", + "items": { + "$ref": "#/components/schemas/CookieGroup" + } + }, + "hash": { + "type": "string", + "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", + "example": "f86b6a872cb83dbd22d838ceda1aa3d4" + }, + "languageId": { + "type": "string", + "format": "uuid", + "description": "The language ID for which the cookie configuration was generated. Used to store hashes per language.", + "example": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" + } + }, + "required": [ + "elements", + "hash", + "languageId", + "apiAlias" + ], + "example": { + "apiAlias": "cookie_groups_hash", + "elements": [ + { + "isRequired": true, + "description": "Cookies required for this shop to function:", + "name": "Technically required", + "entries": [ + { + "name": "Session", + "hidden": false, + "cookie": "session-", + "apiAlias": "cookie_entry" + }, + { + "name": "Timezone", + "hidden": false, + "cookie": "timezone", + "apiAlias": "cookie_entry" + }, + { + "value": "1", + "expiration": 30, + "name": "Cookie preferences", + "hidden": true, + "cookie": "cookie-preference", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "description": "Cookies used for statistics and shop performance metrics.", + "name": "Statistics", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "Google Analytics", + "hidden": false, + "cookie": "google-analytics-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "description": "Allows Google to collect personal data for online advertising and marketing.", + "name": "Marketing", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "Google Advertising", + "hidden": false, + "cookie": "google-ads-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "name": "Comfort features", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "YouTube video", + "hidden": false, + "cookie": "youtube-video", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + } + ], + "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", + "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" + } + }, + "CartItemsUpdate": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartLineItemUpdate" + } + } + } + }, + "CartLineItemUpdate": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "string" + }, + "type": { + "$ref": "#/components/schemas/OrderLineItem/properties/type" + }, + "quantity": { + "type": "integer" + }, + "referencedId": { + "type": "string" + }, + "label": { + "type": "string" + }, + "payload": { + "type": "object" + }, + "stackable": { + "type": "boolean" + }, + "removable": { + "type": "boolean" + }, + "coverId": { + "type": "string" + }, + "priceDefinition": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "price": { + "type": "number" + }, + "percentage": { + "type": "number" + }, + "quantity": { + "type": "integer" + }, + "isCalculated": { + "type": "boolean" + }, + "listPrice": { + "type": "number" + }, + "taxRules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number" + }, + "percentage": { + "type": "number" + } + } + } + } + } + } + } + }, + "NavigationRouteResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + }, + "properties": { + "id": { + "description": "Unique identity of navigation route response." + } + } + }, + "CookieGroupCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CookieGroup" + } + }, + "ProductListingFlags": { + "type": "object", + "description": "Additional flags for product listings", + "properties": { + "no-aggregations": { + "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "only-aggregations": { + "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + } + }, + "ShippingMethodPageRouteResponse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "deliveryTimeId": { + "type": "string" + }, + "deliveryTime": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "min": { + "type": "integer", + "format": "int32" + }, + "max": { + "type": "integer", + "format": "int32" + }, + "unit": { + "type": "string" + } + } + }, + "translations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + } + } + } + }, + "orderDeliveries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "orderId": { + "type": "string" + }, + "shippingOrderAddressId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "shippingDateEarliest": { + "type": "string", + "format": "date-time" + }, + "shippingDateLatest": { + "type": "string", + "format": "date-time" + }, + "stateId": { + "type": "string" + } + } + } + }, + "salesChannelDefaultAssignments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } + } + }, + "salesChannels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } + } + }, + "availabilityRule": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "priority": { + "type": "integer", + "format": "int32" + }, + "invalid": { + "type": "boolean" + } + } + }, + "availabilityRuleId": { + "type": "string" + }, + "prices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "ruleId": { + "type": "string" + }, + "calculation": { + "type": "integer", + "format": "int32" + }, + "quantityStart": { + "type": "number", + "format": "float" + }, + "quantityEnd": { + "type": "number", + "format": "float" + }, + "price": { + "type": "number", + "format": "float" + }, + "calculationRuleId": { + "type": "string" + } + } + } + }, + "mediaId": { + "type": "string" + }, + "media": { + "type": "object", + "properties": { + "userId": { + "type": "string" + }, + "mimeType": { + "type": "string" + }, + "fileExtension": { + "type": "string" + }, + "fileSize": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string" + }, + "metaDataRaw": { + "type": "string" + }, + "mediaTypeRaw": { + "type": "string" + }, + "uploadedAt": { + "type": "string", + "format": "date-time" + }, + "alt": { + "type": "string" + }, + "url": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "mediaFolderId": { + "type": "string" + }, + "private": { + "type": "boolean" + }, + "thumbnailsRo": { + "type": "string" + } + } + }, + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + } + } + } + }, + "properties": { + "name": { + "description": "Name of the shipping method." + }, + "active": { + "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." }, - "value": { - "oneOf": [ - { - "type": "string" + "description": { + "description": "The order of the tabs of your defined shipping methods in the storefront by entering numerical values like 1,2,3, etc." + }, + "deliveryTimeId": { + "description": "Unique identity of the delivery time." + }, + "deliveryTime": { + "properties": { + "name": { + "description": "Name given to delivery time." }, - { - "type": "number" + "min": { + "description": "Minimum delivery time taken." }, - { - "type": "boolean" + "max": { + "description": "Maximum delivery time taken." }, - { - "type": "null" + "unit": { + "description": "Unit in which the delivery time is defined. For example, days or hours." } - ] - } - }, - "required": [ - "type", - "field", - "value" - ] - }, - "MultiNotFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "multi", - "not" - ] - }, - "operator": { - "type": "string", - "enum": [ - "and", - "or", - "nor", - "nand" - ] + } }, - "queries": { - "$ref": "#/components/schemas/Filters" - } - }, - "required": [ - "type", - "operator", - "queries" - ] - }, - "RangeFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "range" - ] + "translations": { + "properties": { + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "name": { + "description": "Name of the shipping method." + }, + "description": { + "description": "A short description of the shipping method." + } + } }, - "field": { - "type": "string" + "orderDeliveries": { + "properties": { + "orderId": { + "description": "Unique identity of order." + }, + "shippingOrderAddressId": { + "description": "Unique identity of shipping order address." + }, + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "shippingDateEarliest": { + "description": "Date and time of earliest delivery of products." + }, + "shippingDateLatest": { + "description": "Date and time of latest delivery of products." + }, + "stateId": { + "description": "Unique identity of state." + } + } }, - "parameters": { - "type": "object", + "salesChannelDefaultAssignments": { "properties": { - "gte": { - "type": "number" + "stateId": { + "description": "Unique identity of state." }, - "gt": { - "type": "number" + "languageId": { + "description": "Unique identity of language." }, - "lte": { - "type": "number" + "currencyId": { + "description": "Unique identity of currency." }, - "lt": { - "type": "number" + "paymentMethodId": { + "description": "Unique identity of payment method." + }, + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "countryId": { + "description": "Unique identity of country." + }, + "navigationCategoryId": { + "description": "Unique identity of navigation category." + }, + "navigationCategoryDepth": { + "description": "It determines the number of levels of subcategories in the storefront category menu." + }, + "footerCategoryId": { + "description": "Unique identity of footer category." + }, + "serviceCategoryId": { + "description": "Unique identity of service category." + }, + "name": { + "description": "Name of the sales channel." + }, + "shortName": { + "description": "A short name for sales channel." + }, + "accessKey": { + "description": "Access key to store api." + }, + "active": { + "description": "When boolean value is `true`, the shipping methods are available for selection in the sales channel's storefront." + }, + "maintenance": { + "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." + }, + "maintenanceIpWhitelist": { + "description": "Array of IP address allowed to access the sales channel." + }, + "mailHeaderFooterId": { + "description": "Unique identity of mail header and footer." + }, + "customerGroupId": { + "description": "Unique identity of customer group." + }, + "hreflangActive": { + "description": "When boolean value is `true`, the sales channel pages are available in different languages." + }, + "hreflangDefaultDomainId": { + "description": "Unique identity of hreflangDefaultDomain." } } - } - }, - "required": [ - "type", - "field", - "parameters" - ] - }, - "Association": { - "additionalProperties": { - "$ref": "#/components/schemas/Association" - } - }, - "OrderRouteResponse": { - "type": "object", - "properties": { - "orders": { - "type": "object", - "allOf": [ - { - "type": "object", - "required": [ - "elements" - ], - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order" - } - } - } + }, + "salesChannels": { + "properties": { + "stateId": { + "description": "Unique identity of state." + }, + "languageId": { + "description": "Unique identity of language." + }, + "currencyId": { + "description": "Unique identity of currency." + }, + "paymentMethodId": { + "description": "Unique identity of payment method." + }, + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "countryId": { + "description": "Unique identity of country." + }, + "navigationCategoryId": { + "description": "Unique identity of navigation category." + }, + "navigationCategoryDepth": { + "description": "It determines the number of levels of subcategories in the storefront category menu." + }, + "footerCategoryId": { + "description": "Unique identity of footer category." + }, + "serviceCategoryId": { + "description": "Unique identity of service category." + }, + "name": { + "description": "Name of the sales channel." + }, + "shortName": { + "description": "A short name for sales channel." + }, + "accessKey": { + "description": "Access key to store api." }, - { - "$ref": "#/components/schemas/EntitySearchResult" + "active": { + "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." + }, + "maintenance": { + "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." + }, + "maintenanceIpWhitelist": { + "description": "Array of IP address allowed to access the sales channel." + }, + "mailHeaderFooterId": { + "description": "Unique identity of mail header and footer." + }, + "customerGroupId": { + "description": "Unique identity of customer group." + }, + "hreflangActive": { + "description": "When boolean value is `true``, the sales channel pages are available in different languages." + }, + "hreflangDefaultDomainId": { + "description": "Unique identity of hreflangDefaultDomain." } - ] - }, - "paymentChangeable": { - "type": "object", - "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", - "additionalProperties": { - "type": "boolean" } - } - }, - "required": [ - "orders" - ] - }, - "CartDeliveryInformation": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_information" - ] - }, - "freeDelivery": { - "type": "boolean" }, - "deliveryTime": { - "type": "object", + "availabilityRule": { "properties": { "name": { - "type": "string" - }, - "min": { - "type": "integer" + "description": "Unique name for the rule." }, - "max": { - "type": "integer" + "description": { + "description": "A short description about the rule." }, - "unit": { - "type": "string" + "priority": { + "description": "A numerical value to prioritize one of the rules from the list." }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_time" - ] + "invalid": { + "description": "When the boolean value is `true`, the rule is no more available for usage." } } }, - "height": { - "type": "integer" - }, - "length": { - "type": "integer" - }, - "restockTime": { - "type": "integer" - }, - "stock": { - "type": "integer" - }, - "weight": { - "type": "integer" + "availabilityRuleId": { + "description": "Unique identity of availability rule." }, - "width": { - "type": "integer" - } - }, - "required": [ - "apiAlias" - ] - }, - "WishlistLoadRouteResponse": { - "type": "object", - "required": [ - "products" - ], - "properties": { - "wishlist": { - "type": "object", + "prices": { "properties": { - "customerId": { - "type": "string", - "description": "Unique identity of the customer." + "shippingMethodId": { + "description": "Unique identity of shipping method." }, - "salesChannelId": { - "type": "string", - "description": "Unique identity of the sales channel." + "currencyId": { + "description": "Unique identity of currency." + }, + "ruleId": { + "description": "Unique identity of rule." + }, + "calculation": { + "description": "Shipping price calculated based on quantity, price, weight or volume of items." + }, + "quantityStart": { + "description": "Starting range of quantity of an item." + }, + "quantityEnd": { + "description": "Ending range of quantity of an item." + }, + "price": { + "description": "Shipping method price after applied rules." + }, + "calculationRuleId": { + "description": "Unique identity of calculation rule." } } }, - "products": { - "$ref": "#/components/schemas/ProductListingResult" - } - } - }, - "AggregationEntity": { - "title": "AggregationEntity", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "entity" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "definition": { - "description": "The entity definition e.g \"product_manufacturer\".", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field", - "definition" - ] - }, - "AggregationFilter": { - "title": "AggregationFilter", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "filter" - ] + "mediaId": { + "description": "Unique identity of media." }, - "filter": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Filters" + "media": { + "properties": { + "userId": { + "description": "Unique identity of user." + }, + "mimeType": { + "description": "A string sent along with a file indicating the type of the file. For example: image/jpeg." + }, + "fileExtension": { + "description": "Type of file indication. For example: jpeg, png." + }, + "fileSize": { + "description": "Size of the file media file uploaded." + }, + "title": { + "description": "Title name give to the media." + }, + "metaDataRaw": { + "description": "Details of the media file uploaded." + }, + "alt": { + "description": "Alternate text for media." + }, + "url": { + "description": "Runtime field, cannot be used as part of the criteria." + }, + "fileName": { + "description": "Name of the media file uploaded." + }, + "mediaFolderId": { + "description": "Unique identity of media folder." + }, + "private": { + "description": "Boolean value is `true` to keep the media display private." + } } - } - }, - "required": [ - "name", - "type", - "filter" - ] - }, - "AggregationTerms": { - "title": "AggregationTerms", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "terms" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "limit": { - "description": "The number of terms to return", - "type": "number" }, - "sort": { - "type": "array", - "description": "Sorting the aggregation result.", - "items": { - "$ref": "#/components/schemas/Sort" + "tags": { + "properties": { + "name": { + "description": "Name of the tag." + } } } - }, - "required": [ - "name", - "type", - "field" - ] + } }, - "AggregationHistogram": { - "title": "AggregationHistogram", + "CartPriceReference": { "type": "object", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "histogram" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "purchaseUnit": { + "type": "number" }, - "interval": { - "description": "The interval of the histogram", + "referenceUnit": { "type": "number" }, - "format": { - "description": "The format of the histogram", + "unitName": { "type": "string" }, - "timeZone": { - "description": "The timezone of the histogram", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "AggregationRange": { - "title": "AggregationRange", - "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" + "price": { + "type": "number" }, - "type": { - "description": "The type of aggregation", + "apiAlias": { "type": "string", "enum": [ - "range" + "cart_price_reference" ] }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] }, - "ranges": { - "description": "The ranges of the aggregation", - "type": "array", - "items": { - "type": "object", - "anyOf": [ - { - "type": "object", - "title": "From and to", - "properties": { - "from": { - "type": "number", - "description": "The lower bound of the range" - }, - "to": { - "type": "number", - "description": "The upper bound of the range" - } - }, - "required": [ - "from", - "to" - ] - }, - { - "type": "object", - "title": "From only", - "properties": { - "from": { - "type": "string", - "description": "The lower bound of the range" - } - }, - "required": [ - "from" - ] - }, - { - "type": "object", - "title": "To only", - "properties": { - "to": { - "type": "string", - "description": "The upper bound of the range" - } + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" }, - "required": [ - "to" - ] + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } } - ] - } - } - }, - "required": [ - "name", - "type", - "field", - "ranges" - ] - }, - "CartListPrice": { - "type": "object", - "description": "", - "properties": { - "discount": { - "type": "number" - }, - "percentage": { - "type": "number" + }, + { + "type": "null" + } + ] }, - "price": { - "type": "number" + "hasRange": { + "type": "boolean" }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_list_price" + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } ] } }, "required": [ - "apiAlias" + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" ] }, - "Cart": { + "Breadcrumb": { "type": "object", "properties": { "name": { - "description": "Name of the cart - for example `guest-cart`", - "type": "string" - }, - "token": { - "description": "Context token identifying the cart and the user session", "type": "string" }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" + "categoryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "lineItems": { - "description": "All items within the cart", - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } + "type": { + "$ref": "#/components/schemas/Category/properties/type" }, - "errors": { + "translated": { "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "anyOf": [ - { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartError" - } - }, - { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "code": { - "type": "number" - }, - "key": { - "type": "string" - }, - "level": { - "type": "number" - }, - "message": { - "type": "string" - }, - "messageKey": { - "type": "string" - } - }, - "required": [ - "code", - "key", - "level", - "message", - "messageKey" - ] - } - } - ], + "additionalProperties": true, "properties": { - "key": { - "description": "Unique key for every message." + "customFields": { + "type": "object" + }, + "slotConfig": { + "type": "object" }, - "level": { - "description": "Types of level - Notice, warning and error. " + "linkType": { + "$ref": "#/components/schemas/Category/properties/linkType" }, - "message": { - "description": "A persistent error passed from the shopping cart calculation processes to the user end." + "internalLink": { + "type": "string" + }, + "externalLink": { + "type": "string" + }, + "linkNewTab": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "metaTitle": { + "type": "string" + }, + "metaDescription": { + "type": "string" + }, + "keywords": { + "type": "string" } } }, - "deliveries": { + "path": { + "type": "string" + }, + "seoUrls": { "type": "array", "items": { - "$ref": "#/components/schemas/CartDelivery" + "$ref": "#/components/schemas/SeoUrl" } }, - "transactions": { - "description": "A list of all payment transactions associated with the current cart.", + "apiAlias": { + "type": "string", + "enum": [ + "breadcrumb" + ] + } + }, + "required": [ + "name", + "categoryId", + "type", + "translated", + "path", + "apiAlias" + ] + }, + "CalculatedPrice": { + "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", + "properties": { + "unitPrice": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "rawTotal": { + "type": "number" + }, + "totalPrice": { + "type": "number" + }, + "taxStatus": { + "type": "string", + "enum": [ + "net", + "tax-free" + ] + }, + "calculatedTaxes": { "type": "array", "items": { "type": "object", "properties": { - "paymentMethodId": { - "type": "string" + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] }, - "amount": { - "$ref": "#/components/schemas/CalculatedPrice" + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" } - } - }, - "properties": { - "paymentMethodId": { - "description": "Unique identity of payment method." - } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] } }, - "modified": { - "type": "boolean", - "description": "It signifies any changes to cart." - }, - "customerComment": { - "description": "A comment that can be added to the cart.", + "referencePrice": { "oneOf": [ { - "type": "string" + "$ref": "#/components/schemas/CartPriceReference" }, { "type": "null" } ] }, - "affiliateCode": { - "description": "An affiliate tracking code", + "listPrice": { "oneOf": [ { - "type": "string" + "$ref": "#/components/schemas/CartListPrice" }, { "type": "null" } ] }, - "campaignCode": { - "description": "A campaign tracking code", + "positionPrice": { + "type": "number" + }, + "netPrice": { + "type": "number" + }, + "regulationPrice": { "oneOf": [ { - "type": "string" + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } }, { "type": "null" } ] }, - "apiAlias": { - "type": "string", - "enum": [ - "cart" - ] - }, - "id": { - "description": "Unique identity of cart." - } - }, - "required": [ - "price", - "apiAlias" - ] - }, - "CookieGroup": { - "type": "object", - "properties": { - "isRequired": { + "hasRange": { "type": "boolean" }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "cookie": { - "type": "string" - }, - "value": { - "type": "string" - }, - "expiration": { - "type": "integer" - }, - "entries": { - "$ref": "#/components/schemas/CookieEntryCollection" + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] }, "apiAlias": { "type": "string", "enum": [ - "cookie_group" + "calculated_price" ] - } - }, - "not": { - "allOf": [ - { - "required": [ - "cookie" - ] - }, - { - "required": [ - "entries" - ] - } - ] - }, - "required": [ - "name", - "isRequired", - "apiAlias" - ] - }, - "MeasurementUnits": { - "type": "object", - "description": "Configuration of the measurement system", - "properties": { - "system": { - "type": "string", - "enum": [ - "metric", - "imperial" - ], - "default": "metric", - "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." }, - "units": { - "type": "object", - "description": "Units used in the measurement system.", - "properties": { - "length": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm", - "description": "Unit of length." - }, - "weight": { - "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg", - "description": "Unit of weight." + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } } } } + }, + "required": [ + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "referencePrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitPrice", + "positionPrice", + "netPrice", + "taxRules", + "rawTotal", + "taxStatus" + ] + }, + "Association": { + "additionalProperties": { + "$ref": "#/components/schemas/Association" } }, - "Price": { + "LineItemType": { + "type": "string", + "deprecated": true, + "enum": [ + "product", + "credit", + "custom", + "promotion", + "discount", + "container", + "quantity" + ] + }, + "LineItem": { "type": "object", - "description": "Price object", "properties": { - "currencyId": { + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + }, + "cover": { + "$ref": "#/components/schemas/Media" + }, + "dataContextHash": { + "type": "string" + }, + "dataTimestamp": { + "type": "string" + }, + "deliveryInformation": { + "$ref": "#/components/schemas/CartDeliveryInformation" + }, + "description": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "description": "Description of line items in an order." }, - "gross": { - "description": "", - "type": "number" + "good": { + "type": "boolean", + "description": "When set to true, it indicates the line item is physical else it is virtual." }, - "net": { - "description": "", - "type": "number" + "id": { + "type": "string", + "description": "Unique identity of line item." }, - "linked": { - "description": "", + "label": { + "type": "string", + "description": "It is a typical product name given to the line item." + }, + "modified": { + "type": "boolean", + "description": "When boolean value is `true`, line items are said to be modified." + }, + "modifiedByApp": { "type": "boolean" }, - "listPrice": { - "description": "", + "payload": { + "$ref": "#/components/schemas/ProductJsonApi" + }, + "price": { "type": "object", "properties": { - "currencyId": { + "apiAlias": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "enum": [ + "calculated_price" + ] }, - "gross": { - "description": "", - "type": "number" + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } }, - "net": { - "description": "", + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] + }, + "quantity": { "type": "number" }, - "linked": { - "description": "", - "type": "boolean" - } - }, - "required": [ - "gross", - "net" - ] - }, - "regulationPrice": { - "description": "", - "type": "object", - "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] }, - "gross": { - "description": "", - "type": "number" + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] }, - "net": { - "description": "", + "totalPrice": { "type": "number" }, - "linked": { - "description": "", - "type": "boolean" - } - }, - "required": [ - "gross", - "net" - ] - } - }, - "required": [ - "currencyId", - "gross", - "net" - ] - }, - "ContextMeasurementSystemInfo": { - "type": "object", - "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", - "properties": { - "system": { - "type": "string", - "enum": [ - "metric", - "imperial" - ], - "default": "metric", - "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." - }, - "units": { - "type": "object", - "description": "Units used in the measurement system.", - "properties": { - "length": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm", - "description": "Unit of length." + "unitPrice": { + "type": "number" }, - "weight": { - "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg", - "description": "Unit of weight." + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } } - } - } - } - }, - "FindProductVariantRouteResponse": { - "type": "object", - "properties": { - "foundCombination": { + }, + "required": [ + "apiAlias", + "totalPrice", + "quantity", + "unitPrice" + ] + }, + "priceDefinition": { + "$ref": "#/components/schemas/CartPriceQuantity" + }, + "quantity": { + "type": "number", + "description": "Number of items of product." + }, + "quantityInformation": { "type": "object", "properties": { - "variantId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of a variant." + "maxPurchase": { + "type": "number" }, - "options": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Available product variant options. For example, for variant `Size`, option would be `XS`, `S`, `M`, `L`, `XL`." + "minPurchase": { + "type": "number" + }, + "purchaseSteps": { + "type": "number" } } + }, + "referencedId": { + "type": "string", + "description": "Unique identity of type of entity." + }, + "removable": { + "type": "boolean", + "description": "Allows the line item to be removable from the cart when set to true." + }, + "stackable": { + "type": "boolean", + "description": "Allows to change the quantity of the line item when set to true." + }, + "states": { + "deprecated": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "is-physical", + "is-download" + ] + } + }, + "type": { + "$ref": "#/components/schemas/OrderLineItem/properties/type", + "description": "Type refers to the entity type of an item whether it is product or promotion for instance." + }, + "uniqueIdentifier": { + "type": "string" } - } + }, + "required": [ + "id", + "type" + ] }, "ListPrice": { "type": "object", @@ -15854,150 +16129,219 @@ "apiAlias" ] }, - "ProductListingResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EntitySearchResult" + "AggregationEntity": { + "title": "AggregationEntity", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - { - "type": "object", - "properties": { - "currentFilters": { - "type": "object", - "description": "Contains the state of the filters. These can be used to create listing filters.", - "properties": { - "navigationId": { - "type": "string" - }, - "manufacturer": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "price": { - "type": "object", - "properties": { - "min": { - "type": "integer", - "default": 0 - }, - "max": { - "type": "integer", - "default": 0 - } + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "entity" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "definition": { + "description": "The entity definition e.g \"product_manufacturer\".", + "type": "string" + } + }, + "required": [ + "name", + "type", + "field", + "definition" + ] + }, + "AggregationFilter": { + "title": "AggregationFilter", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "filter" + ] + }, + "filter": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Filters" + } + } + }, + "required": [ + "name", + "type", + "filter" + ] + }, + "AggregationTerms": { + "title": "AggregationTerms", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "terms" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "limit": { + "description": "The number of terms to return", + "type": "number" + }, + "sort": { + "type": "array", + "description": "Sorting the aggregation result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "AggregationHistogram": { + "title": "AggregationHistogram", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "histogram" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "interval": { + "description": "The interval of the histogram", + "type": "number" + }, + "format": { + "description": "The format of the histogram", + "type": "string" + }, + "timeZone": { + "description": "The timezone of the histogram", + "type": "string" + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "AggregationRange": { + "title": "AggregationRange", + "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "range" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "ranges": { + "description": "The ranges of the aggregation", + "type": "array", + "items": { + "type": "object", + "anyOf": [ + { + "type": "object", + "title": "From and to", + "properties": { + "from": { + "type": "number", + "description": "The lower bound of the range" }, - "required": [ - "min", - "max" - ] - }, - "rating": { - "oneOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "shipping-free": { - "type": "boolean", - "default": false + "to": { + "type": "number", + "description": "The upper bound of the range" + } }, + "required": [ + "from", + "to" + ] + }, + { + "type": "object", + "title": "From only", "properties": { - "type": "array", - "items": { + "from": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "description": "The lower bound of the range" } }, - "search": { - "type": "string" - } + "required": [ + "from" + ] }, - "required": [ - "manufacturer", - "navigationId", - "price", - "properties", - "rating", - "shipping-free" - ] - }, - "availableSortings": { - "type": "array", - "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", - "items": { + { "type": "object", + "title": "To only", "properties": { - "label": { - "type": "string" - }, - "translated": { - "type": "object", - "properties": { - "label": { - "type": "string" - } - }, - "required": [ - "label" - ] - }, - "key": { - "type": "string" - }, - "priority": { - "type": "number" - }, - "apiAlias": { + "to": { "type": "string", - "enum": [ - "product_sorting" - ] + "description": "The upper bound of the range" } }, "required": [ - "label", - "translated", - "key", - "priority", - "apiAlias" + "to" ] } - }, - "sorting": { - "type": "string" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - }, - "entity": { - "type": "string", - "enum": [ - "product" - ] - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_listing" - ] - } - }, - "required": [ - "elements", - "availableSortings", - "currentFilters", - "apiAlias" - ] + ] + } } + }, + "required": [ + "name", + "type", + "field", + "ranges" ] }, "AccountNewsletterRecipientResult": { @@ -16658,38 +17002,25 @@ "204": { "description": "No Content" }, - "CurrencyListResponse": { - "description": "Entity search result containing currencies.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Currency" - } - } - } - } - }, - "ProductListResponse": { - "description": "Entity search result containing products", + "SeoUrlListResponse": { + "description": "Entity search result containing seo urls.", "content": { "application/json": { "schema": { "allOf": [ { - "required": [ - "elements" - ], "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Product" + "$ref": "#/components/schemas/SeoUrl" } } }, - "type": "object" + "type": "object", + "required": [ + "elements" + ] }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -16699,25 +17030,25 @@ } } }, - "SeoUrlListResponse": { - "description": "Entity search result containing seo urls.", + "ProductListResponse": { + "description": "Entity search result containing products", "content": { "application/json": { "schema": { "allOf": [ { + "required": [ + "elements" + ], "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/SeoUrl" + "$ref": "#/components/schemas/Product" } } }, - "type": "object", - "required": [ - "elements" - ] + "type": "object" }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -16727,33 +17058,21 @@ } } }, - "CategoryListResponse": { - "description": "Entity search result containing categories.", + "CurrencyListResponse": { + "description": "Entity search result containing currencies.", "content": { "application/json": { "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - } - } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "type": "array", + "items": { + "$ref": "#/components/schemas/Currency" + } } } } }, - "LanguageListResponse": { - "description": "Entity search result containing languages.", + "CountryListResponse": { + "description": "Entity search result containing countries.", "content": { "application/json": { "schema": { @@ -16763,13 +17082,10 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Language" + "$ref": "#/components/schemas/Country" } } }, - "required": [ - "elements" - ], "type": "object" }, { @@ -16780,8 +17096,8 @@ } } }, - "CountryStateListResponse": { - "description": "Entity search result containing countries.", + "SalutationListResponse": { + "description": "Entity search result containing salutations.", "content": { "application/json": { "schema": { @@ -16791,60 +17107,36 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/CountryState" + "$ref": "#/components/schemas/Salutation" } } }, "type": "object" }, { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } - }, - "ContextTokenResponse": { - "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", - "headers": { - "sw-context-token": { - "description": "Contains sw-context-token value", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "description": "Define the URL which browser will be redirected to", - "type": "string" + "$ref": "#/components/schemas/EntitySearchResult" } - } + ] } } } }, - "SalutationListResponse": { - "description": "Entity search result containing salutations.", + "CategoryListResponse": { + "description": "Entity search result containing categories.", "content": { "application/json": { "schema": { "allOf": [ { + "type": "object", "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Salutation" + "$ref": "#/components/schemas/Category" } } - }, - "type": "object" + } }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -16854,29 +17146,18 @@ } } }, - "ShippingMethodListResponse": { - "description": "Entity search result containing shipping methods.", + "CountryStateListResponse": { + "description": "Entity search result containing countries.", "content": { "application/json": { "schema": { "allOf": [ { - "required": [ - "elements" - ], "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/ShippingMethod" + "$ref": "#/components/schemas/CountryState" } } }, @@ -16890,8 +17171,8 @@ } } }, - "CountryListResponse": { - "description": "Entity search result containing countries.", + "LanguageListResponse": { + "description": "Entity search result containing languages.", "content": { "application/json": { "schema": { @@ -16901,10 +17182,13 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Country" + "$ref": "#/components/schemas/Language" } } }, + "required": [ + "elements" + ], "type": "object" }, { @@ -16915,6 +17199,30 @@ } } }, + "ContextTokenResponse": { + "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", + "headers": { + "sw-context-token": { + "description": "Contains sw-context-token value", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redirectUrl": { + "description": "Define the URL which browser will be redirected to", + "type": "string" + } + } + } + } + } + }, "OpenApi3": { "description": "Returns information about the store API.", "content": { @@ -17129,6 +17437,42 @@ } } } + }, + "ShippingMethodListResponse": { + "description": "Entity search result containing shipping methods.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "required": [ + "elements" + ], + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingMethod" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } } }, "parameters": { @@ -17152,6 +17496,16 @@ "default": "application/json" } }, + "swLanguageId": { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, "noAggregations": { "name": "no-aggregations", "in": "query", @@ -17390,487 +17744,462 @@ "in": "header" }, "ContextToken": { - "type": "apiKey", - "description": "Identifies an anonymous or identified user session", - "name": "sw-context-token", - "in": "header" - } - } - }, - "security": [ - { - "ApiKey": [] - } - ], - "paths": { - "/country": { - "post": { - "tags": [ - "System & Context", - "Endpoints supporting Criteria " - ], - "summary": "Fetch countries", - "description": "Perform a filtered search for countries\n\n**Available Associations:**\n- `states` - States/provinces/regions within the country", - "operationId": "readCountry", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } - } - ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } - } - } - }, - "responses": { - "200": { - "$ref": "#/components/responses/CountryListResponse" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - }, - "get": { - "tags": [ - "System & Context", - "Endpoints supporting Criteria " - ], - "summary": "Fetch countries", - "description": "Perform a filtered search for countries\n\n**Available Associations:**\n- `states` - States/provinces/regions within the country", - "operationId": "readCountryGet", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaFields" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "$ref": "#/components/parameters/CompressedCriteria" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/CountryListResponse" - } - }, - "security": [ - { - "ApiKey": [] - } - ] + "type": "apiKey", + "description": "Identifies an anonymous or identified user session", + "name": "sw-context-token", + "in": "header" } - }, - "/account/newsletter-recipient": { + } + }, + "security": [ + { + "ApiKey": [] + } + ], + "paths": { + "/revocation-request-form": { "post": { "tags": [ - "Profile", - "Newsletter", - "Endpoints supporting Criteria" - ], - "summary": "Fetch newsletter recipients", - "description": "Perform a filtered search for newsletter recipients.", - "operationId": "readNewsletterRecipient", - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AccountNewsletterRecipient" - } - } - } - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } + "Content" ], + "summary": "Submit a revocation request form message", + "description": "Used for submitting revocation request forms. Be aware that there can be more required fields, depending on the system settings.", + "operationId": "sendRevocationRequestMail", "parameters": [ { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } + "$ref": "#/components/parameters/swLanguageId" } - ] - } - }, - "/account/change-profile": { - "post": { - "tags": [ - "Profile" ], - "summary": "Change the customer's information", - "description": "Make changes to a customer's account, like changing their name, salutation or title.", - "operationId": "changeProfile", "requestBody": { "required": true, "content": { "application/json": { "schema": { - "type": "object", "required": [ - "firstName", - "lastName" + "email", + "contractNumber" ], "properties": { - "salutationId": { - "description": "Id of the salutation for the customer account. Fetch options using `salutation` endpoint.", + "firstName": { + "description": "First name. This field may be required depending on the system settings.", "type": "string" }, - "title": { - "description": "(Academic) title of the customer", + "lastName": { + "description": "Last name. This field may be required depending on the system settings.", "type": "string" }, - "firstName": { - "description": "Customer first name. Value will be reused for shipping and billing address if not provided explicitly.", + "email": { + "description": "Email address.", "type": "string" }, - "lastName": { - "description": "Customer last name. Value will be reused for shipping and billing address if not provided explicitly.", + "contractNumber": { + "description": "The number of the contract.", "type": "string" }, - "birthdayDay": { - "description": "Birthday day", - "type": "integer" + "comment": { + "description": "The message of the revocation request form.", + "type": "string" }, - "birthdayMonth": { - "description": "Birthday month", - "type": "integer" + "navigationId": { + "description": "Identifier of the navigation page. Can be used to override the configuration.\nTake a look at the settings of a category containing a revocation form in the administration.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "birthdayYear": { - "description": "Birthday year", - "type": "integer" - } - }, - "oneOf": [ - { - "properties": { - "accountType": { - "description": "Type of the customer account. Default value is 'private'.", - "type": "string", - "enum": [ - "private" - ], - "default": "private" - }, - "company": { - "type": "null" - }, - "vatIds": { - "type": "null" - } - } + "slotId": { + "description": "Identifier of the cms element.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - { - "required": [ - "accountType", - "company", - "vatIds" - ], - "properties": { - "accountType": { - "description": "Type of the customer account. Can be `private` or `business`.", - "type": "string", - "enum": [ - "business" - ] - }, - "company": { - "description": "Company of the customer. Only required when `accountType` is `business`.", - "type": "string" - }, - "vatIds": { - "description": "VAT IDs of the customer's company. Only valid when `accountType` is `business`.", - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - } - } + "cmsPageType": { + "description": "Type of the content management page.", + "type": "string" + }, + "entityName": { + "description": "Entity name for slot config.", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "Returns a success response indicating a successful update", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } + "description": "Message sent successfully." } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/change-email": { + "/landing-page/{landingPageId}": { "post": { "tags": [ - "Profile" + "Content", + "Endpoints supporting Criteria " + ], + "summary": "Fetch a landing page with the resolved CMS page", + "description": "Loads a landing page by its identifier and resolves the CMS page.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `cmsPage` - CMS page layout for the landing page\n- `seoUrls` - SEO-friendly URLs for the landing page across different sales channels", + "operationId": "readLandingPage", + "parameters": [ + { + "name": "landingPageId", + "in": "path", + "description": "Identifier of the landing page.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } ], - "summary": "Change the customer's email address", - "description": "Changes a customer's email address to a new email address, using their current password as a validation.", - "operationId": "changeEmail", "requestBody": { - "required": true, "content": { "application/json": { "schema": { - "required": [ - "email", - "emailConfirmation", - "password" - ], - "properties": { - "email": { - "description": "New email address. Has to be unique amongst all customers", - "type": "string" - }, - "emailConfirmation": { - "description": "Confirmation of the new email address.", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" }, - "password": { - "description": "Customer's current password", - "type": "string" + { + "allOf": [ + { + "properties": { + "slots": { + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/ProductListingCriteria" + } + ] } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Returns a success response indicating a successful update", + "description": "The loaded landing page with cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/LandingPage" } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] - } - }, - "/account/change-language": { - "post": { + }, + "get": { "tags": [ - "Profile" + "Content", + "Endpoints supporting Criteria " ], - "summary": "Change the customer's language.", - "description": "Changes the language of the logged in customer", - "operationId": "changeLanguage", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "languageId" - ], - "properties": { - "language": { - "description": "New languageId", - "type": "string" - } + "summary": "Fetch a landing page with the resolved CMS page", + "description": "Loads a landing page by its identifier and resolves the CMS page.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `cmsPage` - CMS page layout for the landing page\n- `seoUrls` - SEO-friendly URLs for the landing page across different sales channels", + "operationId": "readLandingPageGet", + "parameters": [ + { + "name": "landingPageId", + "in": "path", + "description": "Identifier of the landing page.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "name": "limit", + "in": "query", + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "schema": { + "type": "integer", + "minimum": 0 + } + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "name": "order", + "in": "query", + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "schema": { + "type": "string" + } + }, + { + "name": "p", + "in": "query", + "description": "Search result page", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "manufacturer", + "in": "query", + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "min-price", + "in": "query", + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "max-price", + "in": "query", + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "rating", + "in": "query", + "description": "Filter products with a minimum average rating.", + "schema": { + "type": "integer" + } + }, + { + "name": "shipping-free", + "in": "query", + "description": "Filters products that are marked as shipping-free.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "properties", + "in": "query", + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "reduce-aggregations", + "in": "query", + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "schema": { + "oneOf": [ + { + "type": "string" }, - "type": "object" - } + { + "type": "null" + } + ] } + }, + { + "$ref": "#/components/parameters/swLanguageId" } - }, + ], "responses": { "200": { - "description": "Returns a success response indicating a successful update", + "description": "The loaded landing page with cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/LandingPage" } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/change-password": { + "/shipping-method": { "post": { "tags": [ - "Profile" + "Payment & Shipping", + "Endpoints supporting Criteria " + ], + "summary": "Fetch shipping methods", + "description": "Perform a filtered search for shipping methods.\n\n**Available Associations:**\n- `prices` - Shipping method price configurations (based on current cart and context)\n- `deliveryTime` - Delivery time information (min/max days, unit)\n- `media` - Media/images associated with the shipping method (loaded by default)\n- `availabilityRule` - Availability rule determining when this method is available\n- `tax` - Tax configuration for the shipping method\n\n**Example with associations:**\n```json\n{\n \"associations\": {\n \"prices\": {},\n \"deliveryTime\": {}\n }\n}\n```\n\nNote: The `prices` association is essential for accessing shipping cost configurations.", + "operationId": "readShippingMethod", + "parameters": [ + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, + { + "name": "onlyAvailable", + "in": "query", + "description": "List only available shipping methods. This filters shipping methods methods which can not be used in the actual context because of their availability rule.", + "schema": { + "type": "boolean" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } ], - "summary": "Change the customer's password", - "description": "Changes a customer's password using their current password as a validation.", - "operationId": "changePassword", "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "required": [ - "password", - "newPassword", - "newPasswordConfirm" - ], - "properties": { - "password": { - "description": "Current password of the customer", - "type": "string" - }, - "newPassword": { - "description": "New Password for the customer", - "type": "string" - }, - "newPasswordConfirm": { - "description": "Confirmation of the new password", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Returns a success response indicating a successful update.", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "allOf": [ + { + "required": [ + "elements" + ], + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingMethod" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -17878,78 +18207,111 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] - } - }, - "/account/convert-guest": { - "post": { + }, + "get": { "tags": [ - "Profile" + "Payment & Shipping", + "Endpoints supporting Criteria " ], - "summary": "Convert a guest customer to a registered customer", - "description": "Takes a password to convert a guest customer to a registered customer. The customer can then log in with the provided password in the future.", - "operationId": "convertGuest", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "password" - ], - "properties": { - "password": { - "description": "New Password for the customer", - "type": "string" - } - }, - "type": "object" - } - } + "summary": "Fetch shipping methods", + "description": "Perform a filtered search for shipping methods.\n\n**Available Associations:**\n- `prices` - Shipping method price configurations (graduated prices, quantity-based pricing)\n- `deliveryTime` - Delivery time information (min/max days, unit)\n- `media` - Media/images associated with the shipping method (loaded by default)\n- `availabilityRule` - Availability rule determining when this method is available\n- `tax` - Tax configuration for the shipping method\n\nNote: The `prices` association is essential for accessing shipping cost configurations.", + "operationId": "readShippingMethodGet", + "parameters": [ + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" + }, + { + "$ref": "#/components/parameters/swLanguageId" } - }, + ], "responses": { "200": { - "description": "Returns a success response indicating a successful update.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } + "$ref": "#/components/responses/ShippingMethodListResponse" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/customer-recovery-is-expired": { + "/handle-payment": { "post": { "tags": [ - "Profile" + "Payment & Shipping" ], - "summary": "Checks if the customer recovery entry for a given hash is expired.", - "description": "This can be used to validate a provided hash has a valid and not expired customer recovery hash.", - "operationId": "getCustomerRecoveryIsExpired", + "summary": "Initiate a payment for an order", + "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order.", + "operationId": "handlePaymentMethod", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "hash" + "orderId" ], "properties": { - "hash": { - "description": "Parameter from the link in the confirmation mail sent in Step 1", + "orderId": { + "description": "Identifier of an order", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "finishUrl": { + "description": "URL to which the client should be redirected after successful payment", + "type": "string" + }, + "errorUrl": { + "description": "URL to which the client should be redirected after erroneous payment", "type": "string" } }, @@ -17960,33 +18322,88 @@ }, "responses": { "200": { - "description": "Returns a CustomerRecoveryIsExpiredResponse that indicates if the hash is expired or not.", + "description": "Redirect to external payment provider", "content": { "application/json": { "schema": { "type": "object", "properties": { - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "isExpired": { - "type": "boolean" - } - }, - "required": [ - "isExpired" - ] - } - }, - "apiAlias": { - "enum": [ - "array_struct" - ], + "redirectUrl": { + "type": "string" + } + }, + "required": [ + "redirectUrl" + ] + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + }, + "get": { + "tags": [ + "Payment & Shipping" + ], + "summary": "Initiate a payment for an order", + "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order. Please prefer the POST version of this endpoint.", + "operationId": "handlePaymentMethodGet", + "parameters": [ + { + "name": "orderId", + "in": "query", + "required": true, + "description": "Identifier of an order", + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "finishUrl", + "in": "query", + "description": "URL to which the client should be redirected after successful payment", + "schema": { + "type": "string" + } + }, + { + "name": "errorUrl", + "in": "query", + "description": "URL to which the client should be redirected after erroneous payment", + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "responses": { + "200": { + "description": "Redirect to external payment provider", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redirectUrl": { "type": "string" } - } + }, + "required": [ + "redirectUrl" + ] } } } @@ -17999,23 +18416,65 @@ ] } }, - "/account/customer": { + "/search-suggest": { "post": { "tags": [ - "Profile", - "Endpoints supporting Criteria " + "Product" + ], + "summary": "Search for products (suggest)", + "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", + "operationId": "searchSuggest", + "parameters": [ + { + "name": "p", + "in": "query", + "description": "The page number to fetch.", + "required": false, + "schema": { + "type": "integer" + } + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } ], - "summary": "Get information about current customer", - "description": "Returns information about the current customer.\n\n**Available Associations:**\n- `group` - Customer group determining pricing and permissions\n- `language` - Preferred language for customer communication\n- `lastPaymentMethod` - Last used payment method by the customer\n- `defaultBillingAddress` - Default billing address for the customer\n- `activeBillingAddress` - Currently active billing address in the session\n- `defaultShippingAddress` - Default shipping address for the customer\n- `activeShippingAddress` - Currently active shipping address in the session\n- `salutation` - Customer salutation (e.g., Mr., Mrs., Ms.)\n- `addresses` - All addresses saved for the customer\n- `tags` - Tags assigned to the customer for organization and segmentation", - "operationId": "readCustomer", "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/NoneFieldsCriteria" + "required": [ + "search" + ], + "properties": { + "search": { + "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/ProductListingCriteria" + }, + { + "$ref": "#/components/schemas/ProductListingFlags" } ] } @@ -18024,11 +18483,11 @@ }, "responses": { "200": { - "description": "Returns the logged in customer, also for guest sessions. Check for the value of `guest` field to see whether the customer is a guest.", + "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Customer" + "$ref": "#/components/schemas/ProductListingResult" } } } @@ -18036,122 +18495,180 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] - } - ], - "parameters": [ - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } + "ApiKey": [] } ] }, - "delete": { - "tags": [ - "Profile" - ], - "summary": "Delete the customer's profile", - "description": "Deletes a customer profile along with their addresses, wishlists and associated data. Created orders and their payment/shipping information (addresses) and reviews are not deleted.", - "operationId": "deleteCustomer", - "responses": { - "204": { - "description": "Returns a no content response indicating a successful removal of the customer profile" - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/account/address/{addressId}": { - "delete": { + "get": { "tags": [ - "Address" + "Product" ], - "summary": "Delete an address of a customer", - "description": "Delete an address of customer.\n\n Only addresses which are not set as default addresses for shipping or billing can be deleted. You can check the current default addresses of your customer using the profile information endpoint and change them using the default address endpoint.\n\n **A customer must have at least one address (which can be used for shipping and billing).**\n\n An automatic fallback is not applied.", - "operationId": "deleteCustomerAddress", + "summary": "Search for products (suggest)", + "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", + "operationId": "searchSuggestGet", "parameters": [ { - "name": "addressId", - "in": "path", - "description": "ID of the address to be deleted.", + "name": "search", + "in": "query", + "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", "required": true, "schema": { "type": "string" } - } - ], - "responses": { - "204": { - "description": "No Content response, when the address has been deleted" }, - "400": { - "description": "Response containing a list of errors, most likely due to the address being in use" - } - }, - "security": [ { - "ApiKey": [], - "ContextToken": [] - } - ] - }, - "patch": { - "tags": [ - "Address" - ], - "summary": "Modify an address of a customer", - "description": "Modifies an existing address of a customer.", - "operationId": "updateCustomerAddress", - "parameters": [ + "$ref": "#/components/parameters/criteriaPage" + }, + { + "name": "limit", + "in": "query", + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "schema": { + "type": "integer", + "minimum": 0 + } + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "name": "order", + "in": "query", + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "schema": { + "type": "string" + } + }, + { + "name": "p", + "in": "query", + "description": "Search result page", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "manufacturer", + "in": "query", + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "min-price", + "in": "query", + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "max-price", + "in": "query", + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "rating", + "in": "query", + "description": "Filter products with a minimum average rating.", + "schema": { + "type": "integer" + } + }, { - "name": "addressId", - "in": "path", - "description": "Address ID", - "required": true, + "name": "shipping-free", + "in": "query", + "description": "Filters products that are marked as shipping-free.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "properties", + "in": "query", + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", "schema": { "type": "string" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomerAddressBody" - } + }, + { + "name": "reduce-aggregations", + "in": "query", + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] } + }, + { + "$ref": "#/components/parameters/noAggregations" + }, + { + "$ref": "#/components/parameters/onlyAggregations" + }, + { + "$ref": "#/components/parameters/swLanguageId" } - }, + ], "responses": { "200": { - "description": "", + "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/CustomerAddress" - }, - { - "$ref": "#/components/schemas/CustomerAddressRead" - } - ] + "$ref": "#/components/schemas/ProductListingResult" } } } @@ -18159,71 +18676,20 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/list-address": { + "/country": { "post": { "tags": [ - "Address", + "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch addresses of a customer", - "description": "Lists all addresses of the current customer and allows filtering them based on a criteria.", - "operationId": "listAddress", - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "required": [ - "elements" - ], - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CustomerAddress" - } - } - } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ], + "summary": "Fetch countries", + "description": "Perform a filtered search for countries\n\n**Available Associations:**\n- `states` - States/provinces/regions within the country", + "operationId": "readCountry", "parameters": [ { "name": "sw-include-search-info", @@ -18238,55 +18704,28 @@ ], "default": "1" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } - ] - } - }, - "/account/login": { - "post": { - "tags": [ - "Login & Registration" ], - "summary": "Log in a customer", - "description": "Logs in customers given their credentials.", - "operationId": "loginCustomer", "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "required": [ - "username", - "password" - ], - "properties": { - "username": { - "description": "Email", - "type": "string" - }, - "password": { - "description": "Password", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "401": { - "description": "If credentials are incorrect an error is returned", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - } - } - } + "$ref": "#/components/responses/CountryListResponse" } }, "security": [ @@ -18294,99 +18733,88 @@ "ApiKey": [] } ] - } - }, - "/account/login/imitate-customer": { - "post": { + }, + "get": { "tags": [ - "Login & Registration" + "System & Context", + "Endpoints supporting Criteria " ], - "summary": "Imitate the log in as a customer", - "description": "Imitate the log in as a customer given a generated token.", - "operationId": "imitateCustomerLogin", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "token", - "customerId", - "userId" - ], - "properties": { - "token": { - "description": "Generated customer impersonation token", - "type": "string" - }, - "customerId": { - "description": "ID of the customer", - "type": "string" - }, - "userId": { - "description": "ID of the user who generated the token", - "type": "string" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "$ref": "#/components/responses/ContextTokenResponse" + "summary": "Fetch countries", + "description": "Perform a filtered search for countries\n\n**Available Associations:**\n- `states` - States/provinces/regions within the country", + "operationId": "readCountryGet", + "parameters": [ + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" }, - "400": { - "description": "If the token is incorrect an error is returned", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - } - } - } - } - }, - "security": [ { - "ApiKey": [] + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" + }, + { + "$ref": "#/components/parameters/swLanguageId" } - ] - } - }, - "/account/logout": { - "post": { - "tags": [ - "Login & Registration" ], - "summary": "Log out a customer", - "description": "Logs out a customer.", - "operationId": "logoutCustomer", "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "403": { - "$ref": "#/components/responses/403" + "$ref": "#/components/responses/CountryListResponse" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/register-confirm": { + "/newsletter/confirm": { "post": { "tags": [ - "Login & Registration" + "Newsletter" ], - "summary": "Confirm a customer registration", - "description": "Confirms a customer registration when double opt-in is activated.\n\nLearn more about double opt-in registration in our guide \"Register a customer\".", - "operationId": "registerConfirm", + "summary": "Confirm a newsletter registration", + "description": "You have to use the hash from the link sent out via email to confirm the user registration.", + "operationId": "confirmNewsletter", "requestBody": { "required": true, "content": { @@ -18398,11 +18826,11 @@ ], "properties": { "hash": { - "description": "Hash from the email received", + "description": "Hash parameter from link the in the confirmation mail", "type": "string" }, "em": { - "description": "Email hash from the email received", + "description": "Email hash parameter from the link in the confirmation mail", "type": "string" } }, @@ -18413,210 +18841,94 @@ }, "responses": { "200": { - "description": "Returns the logged in customer. The customer is automatically logged in with the `sw-context-token` header provided, which can be reused for subsequent requests." - }, - "404": { - "description": "No hash provided" + "description": "The newsletter confirmation was successful.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } }, - "412": { - "description": "The customer has already been confirmed" + "400": { + "$ref": "#/components/responses/400" } }, "security": [ { "ApiKey": [] } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ] } }, - "/account/register": { + "/newsletter/subscribe": { "post": { "tags": [ - "Login & Registration" + "Newsletter" ], - "summary": "Register a customer", - "description": "Registers a customer. Used both for normal customers and guest customers.See the Guide \"Register a customer\" for more information on customer registration.", - "operationId": "register", + "summary": "Create or remove a newsletter subscription", + "description": "This route is used to create/remove/confirm a newsletter subscription.\n\nThe `option` property controls what should happen:\n* `direct`: The subscription is directly active and does not need a confirmation.\n* `subscribe`: An email will be send to the provided email address containing a link to the /newsletter/confirm route.\nThe subscription is only successful, if the /newsletter/confirm route is called with the generated hashes.\n* `unsubscribe`: The email address will be removed from the newsletter subscriptions.\n* `confirmSubscribe`: Confirms the newsletter subscription for the provided email address.", + "operationId": "subscribeToNewsletter", "requestBody": { "required": true, "content": { "application/json": { "schema": { + "required": [ + "email", + "option", + "storefrontUrl" + ], "properties": { "email": { - "description": "Email of the customer. Has to be unique, unless `guest` is `true`", - "type": "string" - }, - "password": { - "description": "Password for the customer. Required, unless `guest` is `true`", - "type": "string" - }, - "salutationId": { - "description": "Id of the salutation for the customer account. Fetch options using `salutation` endpoint.", - "type": "string" - }, - "firstName": { - "description": "Customer first name. Value will be reused for shipping and billing address if not provided explicitly.", + "description": "Email address that will receive the confirmation and the newsletter.", "type": "string" }, - "lastName": { - "description": "Customer last name. Value will be reused for shipping and billing address if not provided explicitly.", + "option": { + "description": "Defines what should be done.", "type": "string" }, - "acceptedDataProtection": { - "description": "Flag indicating accepted data protection", - "type": "boolean" - }, "storefrontUrl": { - "description": "URL of the storefront for that registration. Used in confirmation emails. Has to be one of the configured domains of the sales channel.", - "type": "string" - }, - "billingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "shippingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "guest": { - "description": "If set, will create a guest customer. Guest customers can re-use an email address and don't need a password.", - "type": "boolean", - "default": false - }, - "birthdayDay": { - "description": "Birthday day", - "type": "integer" - }, - "birthdayMonth": { - "description": "Birthday month", - "type": "integer" - }, - "birthdayYear": { - "description": "Birthday year", - "type": "integer" - }, - "title": { - "description": "(Academic) title of the customer", - "type": "string" - }, - "affiliateCode": { - "description": "Field can be used to store an affiliate tracking code", + "description": "Url of the storefront of the shop. This will be used for generating the link to the /newsletter/confirm inside the confirm email.", "type": "string" }, - "campaignCode": { - "description": "Field can be used to store a campaign tracking code", - "type": "string" - } - }, - "required": [ - "email", - "password", - "firstName", - "lastName", - "acceptedDataProtection", - "storefrontUrl", - "billingAddress" - ], - "oneOf": [ - { - "properties": { - "accountType": { - "description": "Type of the customer account. Default value is 'private'.", - "type": "string", - "enum": [ - "private" - ], - "default": "private" - }, - "company": { - "type": "null" - }, - "vatIds": { - "type": "null" - } - } + "salutationId": { + "description": "Identifier of the salutation.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - { - "required": [ - "accountType", - "company", - "vatIds" - ], - "properties": { - "accountType": { - "description": "Type of the customer account. Can be `private` or `business`.", - "type": "string", - "enum": [ - "business" - ] - }, - "company": { - "description": "Company of the customer. Only required when `accountType` is `business`.", - "type": "string" - }, - "vatIds": { - "description": "VAT IDs of the customer's company. Only valid when `accountType` is `business`.", - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - } - } - } - ], - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Customer" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/account/recovery-password-confirm": { - "post": { - "tags": [ - "Profile" - ], - "summary": "Reset a password with recovery credentials", - "description": "This operation is Step 2 of the password reset flow. It is required to conduct Step 1 \"Send a password recovery mail\" in order to obtain the required credentials for this step.Resets a customer's password using credentials from a password recovery mail as a validation.", - "operationId": "recoveryPassword", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "hash", - "newPassword", - "newPasswordConfirm" - ], - "properties": { - "hash": { - "description": "Parameter from the link in the confirmation mail sent in Step 1", + "firstName": { + "description": "First name", "type": "string" }, - "newPassword": { - "description": "New password for the customer", + "lastName": { + "description": "Last name", "type": "string" }, - "newPasswordConfirm": { - "description": "Confirmation of the new password", + "street": { + "description": "Street", + "type": "string" + }, + "city": { + "description": "City", + "type": "string" + }, + "zipCode": { + "description": "Zip code", + "type": "string" + }, + "languageId": { + "description": "Identifier of the language.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "customFields": { + "description": "Custom field data that should be added to the subscription.", "type": "string" } }, @@ -18627,47 +18939,63 @@ }, "responses": { "200": { - "description": "Returns a success response indicating a successful update.", + "description": "Success", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "required": [ + "success", + "status" + ], + "properties": { + "success": { + "description": "Indicates whether the subscribe request was successful.", + "type": "boolean" + }, + "status": { + "$ref": "#/components/schemas/NewsletterStatus" + } + }, + "type": "object" } } } + }, + "400": { + "$ref": "#/components/responses/400" } }, "security": [ { "ApiKey": [] } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ] } }, - "/account/recovery-password": { + "/newsletter/unsubscribe": { "post": { "tags": [ - "Profile" + "Newsletter" ], - "summary": "Send a password recovery mail", - "description": "This operation is Step 1 of the password reset flow. Make sure to implement Step 2 \"Reset password with recovery credentials\" in order to allow for the complete flow in your application. Sends a recovery mail containing a link with credentials that allows a customer to reset their password.", - "operationId": "sendRecoveryMail", + "summary": "Remove a newsletter subscription", + "description": "Removes a newsletter recipient from the mailing lists.", + "operationId": "unsubscribeToNewsletter", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "email", - "storefrontUrl" + "email" ], "properties": { "email": { - "description": "E-Mail address to identify the customer", - "type": "string" - }, - "storefrontUrl": { - "description": "URL of the storefront to use for the generated reset link. It has to be a domain that is configured in the sales channel domain settings.", + "description": "Email address that should be removed from the mailing lists.", "type": "string" } }, @@ -18678,7 +19006,7 @@ }, "responses": { "200": { - "description": "If email corresponds to an existing customer, a mail will be sent out to that customer containing a link assembled using the following schema:\n\nReturns a success indicating a successful initialisation of the reset flow.", + "description": "Unsubscribing was successful.", "content": { "application/json": { "schema": { @@ -18686,141 +19014,166 @@ } } } + }, + "400": { + "$ref": "#/components/responses/400" } }, "security": [ { "ApiKey": [] } - ] - } - }, - "/account/address/default-shipping/{addressId}": { - "patch": { - "tags": [ - "Address" ], - "summary": "Change a customer's default shipping address", - "description": "Updates the default (preselected) shipping addresses of a customer.", - "operationId": "defaultShippingAddress", "parameters": [ { - "name": "addressId", - "in": "path", - "description": "Address ID", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "" - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] + "$ref": "#/components/parameters/swLanguageId" } ] } }, - "/account/address/default-billing/{addressId}": { - "patch": { + "/category": { + "post": { "tags": [ - "Address" + "Category", + "Endpoints supporting Criteria " ], - "summary": "Change a customer's default billing address", - "description": "Updates the default (preselected) billing addresses of a customer.", - "operationId": "defaultBillingAddress", + "summary": "Fetch a list of categories", + "description": "Perform a filtered search for categories.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", + "operationId": "readCategoryList", "parameters": [ { - "name": "addressId", - "in": "path", - "description": "Address ID", - "required": true, + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, "schema": { - "type": "string" + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } + } + } + }, "responses": { "200": { - "description": "" + "$ref": "#/components/responses/CategoryListResponse" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] - } - }, - "/account/address": { - "post": { + }, + "get": { "tags": [ - "Address" + "Category", + "Endpoints supporting Criteria " ], - "summary": "Create a new address for a customer", - "description": "Creates a new address for a customer.", - "operationId": "createCustomerAddress", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomerAddressBody" - } - } + "summary": "Fetch a list of categories", + "description": "Perform a filtered search for categories.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", + "operationId": "readCategoryListGet", + "parameters": [ + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" + }, + { + "$ref": "#/components/parameters/swLanguageId" } - }, + ], "responses": { "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/CustomerAddress" - }, - { - "$ref": "#/components/schemas/CustomerAddressRead" - } - ] - } - } - } + "$ref": "#/components/responses/CategoryListResponse" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/seo-url": { + "/category/{navigationId}": { "post": { "tags": [ - "Sitemap & Routes", + "Category", "Endpoints supporting Criteria " ], - "summary": "Fetch SEO routes", - "description": "Perform a filtered search for seo urls.", - "operationId": "readSeoUrl", + "summary": "Fetch a single category", + "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", + "operationId": "readCategory", "parameters": [ { - "name": "sw-language-id", + "name": "sw-include-seo-urls", "in": "header", - "description": "Instructs Shopware to return the response in the given language.", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", "required": false, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "boolean" } }, { @@ -18836,16 +19189,36 @@ ], "default": "1" } + }, + { + "name": "navigationId", + "in": "path", + "description": "Identifier of the category to be fetched", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "slots", + "in": "query", + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { - "required": false, "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/Criteria" + "$ref": "#/components/schemas/ProductListingCriteria" } ] } @@ -18854,10 +19227,14 @@ }, "responses": { "200": { - "$ref": "#/components/responses/SeoUrlListResponse" - }, - "404": { - "$ref": "#/components/responses/404" + "description": "The loaded category with cms page", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Category" + } + } + } } }, "security": [ @@ -18868,28 +19245,51 @@ }, "get": { "tags": [ - "Sitemap & Routes", + "Category", "Endpoints supporting Criteria " ], - "summary": "Fetch SEO routes", - "description": "Perform a filtered search for seo urls.", - "operationId": "readSeoUrlGet", + "summary": "Fetch a single category", + "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", + "operationId": "readCategoryGet", "parameters": [ { - "name": "sw-language-id", + "name": "sw-include-seo-urls", "in": "header", - "description": "Instructs Shopware to return the response in the given language.", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "navigationId", + "in": "path", + "description": "Identifier of the category to be fetched", + "required": true, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } }, + { + "name": "slots", + "in": "query", + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", + "schema": { + "type": "string" + } + }, { "$ref": "#/components/parameters/criteriaPage" }, { - "$ref": "#/components/parameters/criteriaLimit" + "name": "limit", + "in": "query", + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "schema": { + "type": "integer", + "minimum": 0 + } }, { "$ref": "#/components/parameters/criteriaTerm" @@ -18931,15 +19331,104 @@ "$ref": "#/components/parameters/criteriaExcludes" }, { - "$ref": "#/components/parameters/CompressedCriteria" + "name": "order", + "in": "query", + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "schema": { + "type": "string" + } + }, + { + "name": "p", + "in": "query", + "description": "Search result page", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "manufacturer", + "in": "query", + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "min-price", + "in": "query", + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "max-price", + "in": "query", + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "rating", + "in": "query", + "description": "Filter products with a minimum average rating.", + "schema": { + "type": "integer" + } + }, + { + "name": "shipping-free", + "in": "query", + "description": "Filters products that are marked as shipping-free.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "properties", + "in": "query", + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "reduce-aggregations", + "in": "query", + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "$ref": "#/components/responses/SeoUrlListResponse" - }, - "404": { - "$ref": "#/components/responses/404" + "description": "The loaded category with cms page", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Category" + } + } + } } }, "security": [ @@ -18959,14 +19448,7 @@ "operationId": "readSitemap", "parameters": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { @@ -19011,14 +19493,7 @@ } }, { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { @@ -19028,73 +19503,13 @@ "application/xml": { "schema": { "type": "string", - "format": "binary" - } - }, - "application/gzip": { - "schema": { - "type": "string", - "format": "binary" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/app-system/{name}/generate-token": { - "post": { - "tags": [ - "App system" - ], - "summary": "Generate JWT token for app system backend", - "description": "Generate JWT token for authenticated communication with the app server", - "operationId": "generateJWTAppSystemAppServer", - "parameters": [ - { - "in": "path", - "name": "name", - "required": true, - "description": "Name of the app", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "token": { - "type": "string" - }, - "expires": { - "type": "string", - "format": "date-time" - }, - "shopId": { - "type": "string" - } - } + "format": "binary" + } + }, + "application/gzip": { + "schema": { + "type": "string", + "format": "binary" } } } @@ -19107,31 +19522,43 @@ ] } }, - "/media": { + "/seo-url": { "post": { "tags": [ - "Content" + "Sitemap & Routes", + "Endpoints supporting Criteria " + ], + "summary": "Fetch SEO routes", + "description": "Perform a filtered search for seo urls.", + "operationId": "readSeoUrl", + "parameters": [ + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } ], - "summary": "Fetch and resolve Media Entities", - "description": "Fetch one or multiple Media Entities with the corresponding Identifier.", - "operationId": "readMedia", "requestBody": { + "required": false, "content": { "application/json": { "schema": { - "properties": { - "ids": { - "description": "Identifier (UUID) of the media entity to be fetched.", - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object", - "required": [ - "ids" ] } } @@ -19139,17 +19566,7 @@ }, "responses": { "200": { - "description": "The loaded MediaCollection containing the requested Media Entities.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Media" - } - } - } - } + "$ref": "#/components/responses/SeoUrlListResponse" }, "404": { "$ref": "#/components/responses/404" @@ -19163,39 +19580,68 @@ }, "get": { "tags": [ - "Content" + "Sitemap & Routes", + "Endpoints supporting Criteria " ], - "summary": "Fetch and resolve Media Entities", - "description": "Fetch one or multiple Media Entities with the corresponding Identifier.", - "operationId": "readMediaGet", + "summary": "Fetch SEO routes", + "description": "Perform a filtered search for seo urls.", + "operationId": "readSeoUrlGet", "parameters": [ { - "name": "ids[]", - "in": "query", - "description": "Identifier (UUID) of the media entity to be fetched.", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "description": "The loaded MediaCollection containing the requested Media Entities.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Media" - } - } - } - } + "$ref": "#/components/responses/SeoUrlListResponse" }, "404": { "$ref": "#/components/responses/404" @@ -19208,24 +19654,23 @@ ] } }, - "/category": { + "/navigation/{activeId}/{rootId}": { "post": { "tags": [ "Category", "Endpoints supporting Criteria " ], - "summary": "Fetch a list of categories", - "description": "Perform a filtered search for categories.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", - "operationId": "readCategoryList", + "summary": "Fetch a navigation menu", + "description": "This endpoint returns categories that can be used as a page navigation. You can either return them as a tree or as a flat list. You can also control the depth of the tree.\n\n Instead of passing uuids, you can also use one of the following aliases for the activeId and rootId parameters to get the respective navigations of your sales channel.\n\n * main-navigation\n * service-navigation\n * footer-navigation", + "operationId": "readNavigation", "parameters": [ { - "name": "sw-language-id", + "name": "sw-include-seo-urls", "in": "header", - "description": "Instructs Shopware to return the response in the given language.", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", "required": false, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "boolean" } }, { @@ -19241,16 +19686,70 @@ ], "default": "1" } + }, + { + "name": "activeId", + "in": "path", + "description": "Identifier of the active category in the navigation tree (if not used, just set to the same as rootId).", + "required": true, + "schema": { + "oneOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "$ref": "#/components/schemas/NavigationType" + } + ] + } + }, + { + "name": "rootId", + "in": "path", + "description": "Identifier of the root category for your desired navigation tree. You can use it to fetch sub-trees of your navigation tree.", + "required": true, + "schema": { + "oneOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "$ref": "#/components/schemas/NavigationType" + } + ] + } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/Criteria" + "$ref": "#/components/schemas/NoneFieldsCriteria" + }, + { + "properties": { + "depth": { + "description": "Determines the depth of fetched navigation levels.", + "type": "integer", + "format": "int32" + }, + "buildTree": { + "description": "Return the categories as a tree or as a flat list.", + "type": "array", + "items": { + "type": "object" + } + } + }, + "type": "object" } ] } @@ -19259,7 +19758,14 @@ }, "responses": { "200": { - "$ref": "#/components/responses/CategoryListResponse" + "description": "All available navigations", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NavigationRouteResponse" + } + } + } } }, "security": [ @@ -19273,20 +19779,77 @@ "Category", "Endpoints supporting Criteria " ], - "summary": "Fetch a list of categories", - "description": "Perform a filtered search for categories.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", - "operationId": "readCategoryListGet", + "summary": "Fetch a navigation menu", + "description": "This endpoint returns categories that can be used as a page navigation. You can either return them as a tree or as a flat list. You can also control the depth of the tree.\n\n Instead of passing uuids, you can also use one of the following aliases for the activeId and rootId parameters to get the respective navigations of your sales channel.\n\n * main-navigation\n * service-navigation\n * footer-navigation", + "operationId": "readNavigationGet", "parameters": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "activeId", + "in": "path", + "description": "Identifier of the active category in the navigation tree (if not used, just set to the same as rootId).", + "required": true, + "schema": { + "oneOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "$ref": "#/components/schemas/NavigationType" + } + ] + } + }, + { + "name": "rootId", + "in": "path", + "description": "Identifier of the root category for your desired navigation tree. You can use it to fetch sub-trees of your navigation tree.", + "required": true, + "schema": { + "oneOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "$ref": "#/components/schemas/NavigationType" + } + ] + } + }, + { + "name": "depth", + "in": "query", + "description": "Determines the depth of fetched navigation levels.", "required": false, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "integer", + "format": "int32" } }, + { + "name": "buildTree", + "in": "query", + "description": "Return the categories as a tree or as a flat list.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "object" + } + }, + "style": "deepObject", + "explode": true + }, { "$ref": "#/components/parameters/criteriaPage" }, @@ -19317,9 +19880,6 @@ { "$ref": "#/components/parameters/criteriaAggregations" }, - { - "$ref": "#/components/parameters/criteriaFields" - }, { "$ref": "#/components/parameters/criteriaGrouping" }, @@ -19333,12 +19893,22 @@ "$ref": "#/components/parameters/criteriaExcludes" }, { - "$ref": "#/components/parameters/CompressedCriteria" + "$ref": "#/components/parameters/CompressedNoneFieldsCriteria" + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "$ref": "#/components/responses/CategoryListResponse" + "description": "All available navigations", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NavigationRouteResponse" + } + } + } } }, "security": [ @@ -19348,35 +19918,57 @@ ] } }, - "/category/{navigationId}": { - "post": { + "/customer-group-registration/config/{customerGroupId}": { + "get": { "tags": [ - "Category", - "Endpoints supporting Criteria " + "Login & Registration" ], - "summary": "Fetch a single category", - "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", - "operationId": "readCategory", + "summary": "Fetch registration settings for customer group", + "operationId": "getCustomerGroupRegistrationInfo", "parameters": [ { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "name": "customerGroupId", + "in": "path", + "description": "Customer group id", + "required": true, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "responses": { + "200": { + "description": "Returns the customer group including registration settings.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomerGroup" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/language": { + "post": { + "tags": [ + "System & Context", + "Endpoints supporting Criteria " + ], + "summary": "Fetch languages", + "description": "Perform a filtered search for languages.\n\n**Available Associations:**\n- `locale` - Locale defining regional settings (date, time, number formats)\n- `translationCode` - Locale used for translating content\n- `children` - Child languages inheriting from this parent language", + "operationId": "readLanguages", + "parameters": [ { "name": "sw-include-search-info", "in": "header", @@ -19392,31 +19984,17 @@ } }, { - "name": "navigationId", - "in": "path", - "description": "Identifier of the category to be fetched", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "slots", - "in": "query", - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { + "required": false, "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/ProductListingCriteria" + "$ref": "#/components/schemas/Criteria" } ] } @@ -19425,14 +20003,7 @@ }, "responses": { "200": { - "description": "The loaded category with cms page", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Category" - } - } - } + "$ref": "#/components/responses/LanguageListResponse" } }, "security": [ @@ -19443,61 +20014,18 @@ }, "get": { "tags": [ - "Category", + "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch a single category", - "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", - "operationId": "readCategoryGet", + "summary": "Fetch languages", + "description": "Perform a filtered search for languages.\n\n**Available Associations:**\n- `locale` - Locale defining regional settings (date, time, number formats)\n- `translationCode` - Locale used for translating content\n- `children` - Child languages inheriting from this parent language", + "operationId": "readLanguagesGet", "parameters": [ - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "navigationId", - "in": "path", - "description": "Identifier of the category to be fetched", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "slots", - "in": "query", - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", - "schema": { - "type": "string" - } - }, { "$ref": "#/components/parameters/criteriaPage" }, { - "name": "limit", - "in": "query", - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "schema": { - "type": "integer", - "minimum": 0 - } + "$ref": "#/components/parameters/criteriaLimit" }, { "$ref": "#/components/parameters/criteriaTerm" @@ -19539,98 +20067,194 @@ "$ref": "#/components/parameters/criteriaExcludes" }, { - "name": "order", - "in": "query", - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "schema": { - "type": "string" - } - }, - { - "name": "p", - "in": "query", - "description": "Search result page", - "schema": { - "type": "integer", - "default": 1 - } - }, - { - "name": "manufacturer", - "in": "query", - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/CompressedCriteria" }, { - "name": "min-price", - "in": "query", - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, + "$ref": "#/components/parameters/swLanguageId" + } + ], + "responses": { + "200": { + "$ref": "#/components/responses/LanguageListResponse" + } + }, + "security": [ { - "name": "max-price", - "in": "query", - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 + "ApiKey": [] + } + ] + } + }, + "/account/newsletter-recipient": { + "post": { + "tags": [ + "Profile", + "Newsletter", + "Endpoints supporting Criteria" + ], + "summary": "Fetch newsletter recipients", + "description": "Perform a filtered search for newsletter recipients.", + "operationId": "readNewsletterRecipient", + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } } - }, - { - "name": "rating", - "in": "query", - "description": "Filter products with a minimum average rating.", - "schema": { - "type": "integer" + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AccountNewsletterRecipient" + } + } } - }, + } + }, + "security": [ { - "name": "shipping-free", - "in": "query", - "description": "Filters products that are marked as shipping-free.", - "schema": { - "type": "boolean", - "default": false - } - }, + "ApiKey": [], + "ContextToken": [] + } + ], + "parameters": [ { - "name": "properties", - "in": "query", - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, "schema": { - "type": "string" + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" } }, { - "name": "reduce-aggregations", - "in": "query", - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", - "schema": { - "oneOf": [ - { - "type": "string" + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/account/change-profile": { + "post": { + "tags": [ + "Profile" + ], + "summary": "Change the customer's information", + "description": "Make changes to a customer's account, like changing their name, salutation or title.", + "operationId": "changeProfile", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "firstName", + "lastName" + ], + "properties": { + "salutationId": { + "description": "Id of the salutation for the customer account. Fetch options using `salutation` endpoint.", + "type": "string" + }, + "title": { + "description": "(Academic) title of the customer", + "type": "string" + }, + "firstName": { + "description": "Customer first name. Value will be reused for shipping and billing address if not provided explicitly.", + "type": "string" + }, + "lastName": { + "description": "Customer last name. Value will be reused for shipping and billing address if not provided explicitly.", + "type": "string" + }, + "birthdayDay": { + "description": "Birthday day", + "type": "integer" + }, + "birthdayMonth": { + "description": "Birthday month", + "type": "integer" + }, + "birthdayYear": { + "description": "Birthday year", + "type": "integer" + } }, - { - "type": "null" - } - ] + "oneOf": [ + { + "properties": { + "accountType": { + "description": "Type of the customer account. Default value is 'private'.", + "type": "string", + "enum": [ + "private" + ], + "default": "private" + }, + "company": { + "type": "null" + }, + "vatIds": { + "type": "null" + } + } + }, + { + "required": [ + "accountType", + "company", + "vatIds" + ], + "properties": { + "accountType": { + "description": "Type of the customer account. Can be `private` or `business`.", + "type": "string", + "enum": [ + "business" + ] + }, + "company": { + "description": "Company of the customer. Only required when `accountType` is `business`.", + "type": "string" + }, + "vatIds": { + "description": "VAT IDs of the customer's company. Only valid when `accountType` is `business`.", + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + } + } + } + ] + } } } - ], + }, "responses": { "200": { - "description": "The loaded category with cms page", + "description": "Returns a success response indicating a successful update", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Category" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -19638,47 +20262,61 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" } ] } }, - "/customer-group-registration/config/{customerGroupId}": { - "get": { + "/account/change-email": { + "post": { "tags": [ - "Login & Registration" + "Profile" ], - "summary": "Fetch registration settings for customer group", - "operationId": "getCustomerGroupRegistrationInfo", - "parameters": [ - { - "name": "customerGroupId", - "in": "path", - "description": "Customer group id", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "summary": "Change the customer's email address", + "description": "Changes a customer's email address to a new email address, using their current password as a validation.", + "operationId": "changeEmail", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "email", + "emailConfirmation", + "password" + ], + "properties": { + "email": { + "description": "New email address. Has to be unique amongst all customers", + "type": "string" + }, + "emailConfirmation": { + "description": "Confirmation of the new email address.", + "type": "string" + }, + "password": { + "description": "Customer's current password", + "type": "string" + } + }, + "type": "object" + } } } - ], + }, "responses": { "200": { - "description": "Returns the customer group including registration settings.", + "description": "Returns a success response indicating a successful update", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerGroup" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -19686,77 +20324,36 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" } ] } }, - "/revocation-request-form": { + "/account/change-language": { "post": { "tags": [ - "Content" - ], - "summary": "Submit a revocation request form message", - "description": "Used for submitting revocation request forms. Be aware that there can be more required fields, depending on the system settings.", - "operationId": "sendRevocationRequestMail", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } + "Profile" ], + "summary": "Change the customer's language.", + "description": "Changes the language of the logged in customer", + "operationId": "changeLanguage", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "email", - "contractNumber" + "languageId" ], "properties": { - "firstName": { - "description": "First name. This field may be required depending on the system settings.", - "type": "string" - }, - "lastName": { - "description": "Last name. This field may be required depending on the system settings.", - "type": "string" - }, - "email": { - "description": "Email address.", - "type": "string" - }, - "contractNumber": { - "description": "The number of the contract.", - "type": "string" - }, - "comment": { - "description": "The message of the revocation request form.", - "type": "string" - }, - "navigationId": { - "description": "Identifier of the navigation page. Can be used to override the configuration.\nTake a look at the settings of a category containing a revocation form in the administration.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "slotId": { - "description": "Identifier of the cms element.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "cmsPageType": { - "description": "Type of the content management page.", - "type": "string" - }, - "entityName": { - "description": "Entity name for slot config.", + "language": { + "description": "New languageId", "type": "string" } }, @@ -19767,187 +20364,110 @@ }, "responses": { "200": { - "description": "Message sent successfully." + "description": "Returns a success response indicating a successful update", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" } ] } }, - "/payment-method": { + "/account/change-password": { "post": { "tags": [ - "Payment Method", - "Endpoints supporting Criteria " - ], - "summary": "Loads all available payment methods", - "operationId": "readPaymentMethod", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } - } + "Profile" ], + "summary": "Change the customer's password", + "description": "Changes a customer's password using their current password as a validation.", + "operationId": "changePassword", "requestBody": { "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "password", + "newPassword", + "newPasswordConfirm" + ], + "properties": { + "password": { + "description": "Current password of the customer", + "type": "string" }, - { - "properties": { - "onlyAvailable": { - "description": "List only available", - "type": "boolean" - } - }, - "type": "object" + "newPassword": { + "description": "New Password for the customer", + "type": "string" + }, + "newPasswordConfirm": { + "description": "Confirmation of the new password", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "$ref": "#/components/responses/PaymentMethodListResponse" + "description": "Returns a success response indicating a successful update.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } - ] - }, - "get": { - "tags": [ - "Payment Method", - "Endpoints supporting Criteria " ], - "summary": "Loads all available payment methods", - "operationId": "readPaymentMethodGet", "parameters": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaFields" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "$ref": "#/components/parameters/CompressedCriteria" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/PaymentMethodListResponse" - } - }, - "security": [ - { - "ApiKey": [] + "$ref": "#/components/parameters/swLanguageId" } ] } }, - "/newsletter/confirm": { + "/account/convert-guest": { "post": { "tags": [ - "Newsletter" + "Profile" ], - "summary": "Confirm a newsletter registration", - "description": "You have to use the hash from the link sent out via email to confirm the user registration.", - "operationId": "confirmNewsletter", + "summary": "Convert a guest customer to a registered customer", + "description": "Takes a password to convert a guest customer to a registered customer. The customer can then log in with the provided password in the future.", + "operationId": "convertGuest", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "hash", - "em" - ], - "properties": { - "hash": { - "description": "Hash parameter from link the in the confirmation mail", - "type": "string" - }, - "em": { - "description": "Email hash parameter from the link in the confirmation mail", + "password" + ], + "properties": { + "password": { + "description": "New Password for the customer", "type": "string" } }, @@ -19958,7 +20478,7 @@ }, "responses": { "200": { - "description": "The newsletter confirmation was successful.", + "description": "Returns a success response indicating a successful update.", "content": { "application/json": { "schema": { @@ -19966,81 +20486,40 @@ } } } - }, - "400": { - "$ref": "#/components/responses/400" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" } ] } }, - "/newsletter/subscribe": { + "/account/customer-recovery-is-expired": { "post": { "tags": [ - "Newsletter" + "Profile" ], - "summary": "Create or remove a newsletter subscription", - "description": "This route is used to create/remove/confirm a newsletter subscription.\n\nThe `option` property controls what should happen:\n* `direct`: The subscription is directly active and does not need a confirmation.\n* `subscribe`: An email will be send to the provided email address containing a link to the /newsletter/confirm route.\nThe subscription is only successful, if the /newsletter/confirm route is called with the generated hashes.\n* `unsubscribe`: The email address will be removed from the newsletter subscriptions.\n* `confirmSubscribe`: Confirms the newsletter subscription for the provided email address.", - "operationId": "subscribeToNewsletter", + "summary": "Checks if the customer recovery entry for a given hash is expired.", + "description": "This can be used to validate a provided hash has a valid and not expired customer recovery hash.", + "operationId": "getCustomerRecoveryIsExpired", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "email", - "option", - "storefrontUrl" + "hash" ], "properties": { - "email": { - "description": "Email address that will receive the confirmation and the newsletter.", - "type": "string" - }, - "option": { - "description": "Defines what should be done.", - "type": "string" - }, - "storefrontUrl": { - "description": "Url of the storefront of the shop. This will be used for generating the link to the /newsletter/confirm inside the confirm email.", - "type": "string" - }, - "salutationId": { - "description": "Identifier of the salutation.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "description": "First name", - "type": "string" - }, - "lastName": { - "description": "Last name", - "type": "string" - }, - "street": { - "description": "Street", - "type": "string" - }, - "city": { - "description": "City", - "type": "string" - }, - "zipCode": { - "description": "Zip code", - "type": "string" - }, - "languageId": { - "description": "Identifier of the language.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "customFields": { - "description": "Custom field data that should be added to the subscription.", + "hash": { + "description": "Parameter from the link in the confirmation mail sent in Step 1", "type": "string" } }, @@ -20051,140 +20530,270 @@ }, "responses": { "200": { - "description": "Success", + "description": "Returns a CustomerRecoveryIsExpiredResponse that indicates if the hash is expired or not.", "content": { "application/json": { "schema": { - "required": [ - "success", - "status" - ], + "type": "object", "properties": { - "success": { - "description": "Indicates whether the subscribe request was successful.", - "type": "boolean" + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "isExpired": { + "type": "boolean" + } + }, + "required": [ + "isExpired" + ] + } }, - "status": { - "description": "The subscription status.", - "type": "string", + "apiAlias": { "enum": [ - "notSet", - "optIn", - "optOut", - "direct" - ] + "array_struct" + ], + "type": "string" } - }, - "type": "object" + } } } } - }, - "400": { - "$ref": "#/components/responses/400" } }, "security": [ { "ApiKey": [] } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ] } }, - "/newsletter/unsubscribe": { + "/account/customer": { "post": { "tags": [ - "Newsletter" + "Profile", + "Endpoints supporting Criteria " ], - "summary": "Remove a newsletter subscription", - "description": "Removes a newsletter recipient from the mailing lists.", - "operationId": "unsubscribeToNewsletter", + "summary": "Get information about current customer", + "description": "Returns information about the current customer.\n\n**Available Associations:**\n- `group` - Customer group determining pricing and permissions\n- `language` - Preferred language for customer communication\n- `lastPaymentMethod` - Last used payment method by the customer\n- `defaultBillingAddress` - Default billing address for the customer\n- `activeBillingAddress` - Currently active billing address in the session\n- `defaultShippingAddress` - Default shipping address for the customer\n- `activeShippingAddress` - Currently active shipping address in the session\n- `salutation` - Customer salutation (e.g., Mr., Mrs., Ms.)\n- `addresses` - All addresses saved for the customer\n- `tags` - Tags assigned to the customer for organization and segmentation", + "operationId": "readCustomer", "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "required": [ - "email" - ], - "properties": { - "email": { - "description": "Email address that should be removed from the mailing lists.", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/NoneFieldsCriteria" } - }, - "type": "object" + ] + } + } + } + }, + "responses": { + "200": { + "description": "Returns the logged in customer, also for guest sessions. Check for the value of `guest` field to see whether the customer is a guest.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Customer" + } + } + } + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ], + "parameters": [ + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + }, + "delete": { + "tags": [ + "Profile" + ], + "summary": "Delete the customer's profile", + "description": "Deletes a customer profile along with their addresses, wishlists and associated data. Created orders and their payment/shipping information (addresses) and reviews are not deleted.", + "operationId": "deleteCustomer", + "responses": { + "204": { + "description": "Returns a no content response indicating a successful removal of the customer profile" + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/account/address/{addressId}": { + "delete": { + "tags": [ + "Address" + ], + "summary": "Delete an address of a customer", + "description": "Delete an address of customer.\n\n Only addresses which are not set as default addresses for shipping or billing can be deleted. You can check the current default addresses of your customer using the profile information endpoint and change them using the default address endpoint.\n\n **A customer must have at least one address (which can be used for shipping and billing).**\n\n An automatic fallback is not applied.", + "operationId": "deleteCustomerAddress", + "parameters": [ + { + "name": "addressId", + "in": "path", + "description": "ID of the address to be deleted.", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No Content response, when the address has been deleted" + }, + "400": { + "description": "Response containing a list of errors, most likely due to the address being in use" + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + }, + "patch": { + "tags": [ + "Address" + ], + "summary": "Modify an address of a customer", + "description": "Modifies an existing address of a customer.", + "operationId": "updateCustomerAddress", + "parameters": [ + { + "name": "addressId", + "in": "path", + "description": "Address ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomerAddressBody" } } } }, "responses": { "200": { - "description": "Unsubscribing was successful.", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "allOf": [ + { + "$ref": "#/components/schemas/CustomerAddress" + }, + { + "$ref": "#/components/schemas/CustomerAddressRead" + } + ] } } } - }, - "400": { - "$ref": "#/components/responses/400" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/product/{productId}/cross-selling": { + "/account/list-address": { "post": { "tags": [ - "Product" + "Address", + "Endpoints supporting Criteria " ], - "summary": "Fetch cross-selling groups of a product", - "description": "This route is used to load the cross sellings for a product. A product has several cross selling definitions in which several products are linked. The route returns the cross sellings together with the linked products", - "operationId": "readProductCrossSellings", - "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Product ID", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, - "schema": { - "type": "boolean" + "summary": "Fetch addresses of a customer", + "description": "Lists all addresses of the current customer and allows filtering them based on a criteria.", + "operationId": "listAddress", + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } } } - ], + }, "responses": { "200": { - "description": "Found cross sellings", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CrossSellingElementCollection" + "allOf": [ + { + "type": "object", + "required": [ + "elements" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomerAddress" + } + } + } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -20192,54 +20801,73 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } - ] - }, - "get": { - "tags": [ - "Product" ], - "summary": "Fetch cross-selling groups of a product", - "description": "This route is used to load the cross sellings for a product. A product has several cross selling definitions in which several products are linked. The route returns the cross sellings together with the linked products", - "operationId": "readProductCrossSellingsGet", "parameters": [ { - "name": "productId", - "in": "path", - "description": "Product ID", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "sw-language-id", + "name": "sw-include-search-info", "in": "header", - "description": "Instructs Shopware to return the response in the given language.", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", "required": false, "schema": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "enum": [ + "0", + "1" + ], + "default": "1" } }, { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, - "schema": { - "type": "boolean" - } + "$ref": "#/components/parameters/swLanguageId" } + ] + } + }, + "/account/login": { + "post": { + "tags": [ + "Login & Registration" ], + "summary": "Log in a customer", + "description": "Logs in customers given their credentials.", + "operationId": "loginCustomer", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "username", + "password" + ], + "properties": { + "username": { + "description": "Email", + "type": "string" + }, + "password": { + "description": "Password", + "type": "string" + } + }, + "type": "object" + } + } + } + }, "responses": { "200": { - "description": "Found cross sellings", + "$ref": "#/components/responses/ContextTokenResponse" + }, + "401": { + "description": "If credentials are incorrect an error is returned", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CrossSellingElementCollection" + "$ref": "#/components/schemas/failure" } } } @@ -20249,101 +20877,61 @@ { "ApiKey": [] } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ] } }, - "/product/{productId}": { + "/account/login/imitate-customer": { "post": { "tags": [ - "Product" - ], - "summary": "Fetch a single product", - "description": "This route is used to load a single product with the corresponding details. In addition to loading the data, the best variant of the product is determined when a parent id is passed.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", - "operationId": "readProductDetail", - "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Product ID", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$'" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "in": "header", - "name": "sw-include-seo-urls", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } - }, - { - "description": "Instructs Shopware to skip loading the configurator data", - "in": "query", - "name": "skipConfigurator", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Instructs Shopware to skip loading the CMS page data", - "in": "query", - "name": "skipCmsPage", - "required": false, - "schema": { - "type": "boolean" - } - } + "Login & Registration" ], + "summary": "Imitate the log in as a customer", + "description": "Imitate the log in as a customer given a generated token.", + "operationId": "imitateCustomerLogin", "requestBody": { - "required": false, + "required": true, "content": { "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/NoneFieldsCriteria" + "schema": { + "required": [ + "token", + "customerId", + "userId" + ], + "properties": { + "token": { + "description": "Generated customer impersonation token", + "type": "string" + }, + "customerId": { + "description": "ID of the customer", + "type": "string" + }, + "userId": { + "description": "ID of the user who generated the token", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "Product information along with variant groups and options", + "$ref": "#/components/responses/ContextTokenResponse" + }, + "400": { + "description": "If the token is incorrect an error is returned", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductDetailResponse" + "$ref": "#/components/schemas/failure" } } } @@ -20353,116 +20941,249 @@ { "ApiKey": [] } - ] - }, - "get": { - "tags": [ - "Product" ], - "summary": "Fetch a single product", - "description": "This route is used to load a single product with the corresponding details. In addition to loading the data, the best variant of the product is determined when a parent id is passed.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", - "operationId": "readProductDetailGet", "parameters": [ { - "name": "productId", - "in": "path", - "description": "Product ID", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$'" - } + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/account/logout": { + "post": { + "tags": [ + "Login & Registration" + ], + "summary": "Log out a customer", + "description": "Logs out a customer.", + "operationId": "logoutCustomer", + "responses": { + "200": { + "$ref": "#/components/responses/ContextTokenResponse" }, + "403": { + "$ref": "#/components/responses/403" + } + }, + "security": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, + "ApiKey": [], + "ContextToken": [] + } + ], + "parameters": [ { - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "in": "header", - "name": "sw-include-seo-urls", - "required": false, - "schema": { - "type": "boolean" + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/account/register-confirm": { + "post": { + "tags": [ + "Login & Registration" + ], + "summary": "Confirm a customer registration", + "description": "Confirms a customer registration when double opt-in is activated.\n\nLearn more about double opt-in registration in our guide \"Register a customer\".", + "operationId": "registerConfirm", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "hash", + "em" + ], + "properties": { + "hash": { + "description": "Hash from the email received", + "type": "string" + }, + "em": { + "description": "Email hash from the email received", + "type": "string" + } + }, + "type": "object" + } } + } + }, + "responses": { + "200": { + "description": "Returns the logged in customer. The customer is automatically logged in with the `sw-context-token` header provided, which can be reused for subsequent requests." }, - { - "description": "Instructs Shopware to skip loading the configurator data", - "in": "query", - "name": "skipConfigurator", - "required": false, - "schema": { - "type": "boolean" - } + "404": { + "description": "No hash provided" }, + "412": { + "description": "The customer has already been confirmed" + } + }, + "security": [ { - "description": "Instructs Shopware to skip loading the CMS page data", - "in": "query", - "name": "skipCmsPage", - "required": false, - "schema": { - "type": "boolean" + "ApiKey": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/account/register": { + "post": { + "tags": [ + "Login & Registration" + ], + "summary": "Register a customer", + "description": "Registers a customer. Used both for normal customers and guest customers.See the Guide \"Register a customer\" for more information on customer registration.", + "operationId": "register", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "email": { + "description": "Email of the customer. Has to be unique, unless `guest` is `true`", + "type": "string" + }, + "password": { + "description": "Password for the customer. Required, unless `guest` is `true`", + "type": "string" + }, + "salutationId": { + "description": "Id of the salutation for the customer account. Fetch options using `salutation` endpoint.", + "type": "string" + }, + "firstName": { + "description": "Customer first name. Value will be reused for shipping and billing address if not provided explicitly.", + "type": "string" + }, + "lastName": { + "description": "Customer last name. Value will be reused for shipping and billing address if not provided explicitly.", + "type": "string" + }, + "acceptedDataProtection": { + "description": "Flag indicating accepted data protection", + "type": "boolean" + }, + "storefrontUrl": { + "description": "URL of the storefront for that registration. Used in confirmation emails. Has to be one of the configured domains of the sales channel.", + "type": "string" + }, + "requestedGroupId": { + "description": "Optional customer group registration request. The customer is created in the current sales channel group and this field stores the requested target group. The group must be available for registration in the current sales channel.", + "type": "string" + }, + "billingAddress": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "shippingAddress": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "guest": { + "description": "If set, will create a guest customer. Guest customers can re-use an email address and don't need a password.", + "type": "boolean", + "default": false + }, + "birthdayDay": { + "description": "Birthday day", + "type": "integer" + }, + "birthdayMonth": { + "description": "Birthday month", + "type": "integer" + }, + "birthdayYear": { + "description": "Birthday year", + "type": "integer" + }, + "title": { + "description": "(Academic) title of the customer", + "type": "string" + }, + "affiliateCode": { + "description": "Field can be used to store an affiliate tracking code", + "type": "string" + }, + "campaignCode": { + "description": "Field can be used to store a campaign tracking code", + "type": "string" + } + }, + "required": [ + "email", + "password", + "firstName", + "lastName", + "acceptedDataProtection", + "storefrontUrl", + "billingAddress" + ], + "oneOf": [ + { + "properties": { + "accountType": { + "description": "Type of the customer account. Default value is 'private'.", + "type": "string", + "enum": [ + "private" + ], + "default": "private" + }, + "company": { + "type": "null" + }, + "vatIds": { + "type": "null" + } + } + }, + { + "required": [ + "accountType", + "company", + "vatIds" + ], + "properties": { + "accountType": { + "description": "Type of the customer account. Can be `private` or `business`.", + "type": "string", + "enum": [ + "business" + ] + }, + "company": { + "description": "Company of the customer. Only required when `accountType` is `business`.", + "type": "string" + }, + "vatIds": { + "description": "VAT IDs of the customer's company. Only valid when `accountType` is `business`.", + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + } + } + } + ], + "type": "object" + } } - }, - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "$ref": "#/components/parameters/CompressedNoneFieldsCriteria" } - ], + }, "responses": { "200": { - "description": "Product information along with variant groups and options", + "description": "Success", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductDetailResponse" + "$ref": "#/components/schemas/Customer" } } } @@ -20472,229 +21193,114 @@ { "ApiKey": [] } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ] } }, - "/product": { + "/account/recovery-password-confirm": { "post": { "tags": [ - "Product", - "Endpoints supporting Criteria " - ], - "summary": "Fetch a list of products", - "description": "List products that match the given criteria. For performance reasons a limit should always be set.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", - "operationId": "readProduct", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } - } + "Profile" ], + "summary": "Reset a password with recovery credentials", + "description": "This operation is Step 2 of the password reset flow. It is required to conduct Step 1 \"Send a password recovery mail\" in order to obtain the required credentials for this step.Resets a customer's password using credentials from a password recovery mail as a validation.", + "operationId": "recoveryPassword", "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "hash", + "newPassword", + "newPasswordConfirm" + ], + "properties": { + "hash": { + "description": "Parameter from the link in the confirmation mail sent in Step 1", + "type": "string" + }, + "newPassword": { + "description": "New password for the customer", + "type": "string" + }, + "newPasswordConfirm": { + "description": "Confirmation of the new password", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "$ref": "#/components/responses/ProductListResponse" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - }, - "get": { - "tags": [ - "Product", - "Endpoints supporting Criteria " - ], - "summary": "Fetch a list of products", - "description": "List products that match the given criteria. For performance reasons a limit should always be set.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", - "operationId": "readProductGet", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaFields" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "$ref": "#/components/parameters/CompressedCriteria" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/ProductListResponse" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/product/{productId}/reviews": { - "post": { - "tags": [ - "Product", - "Endpoints supporting Criteria " - ], - "summary": "Fetch product reviews", - "description": "Perform a filtered search for product reviews.", - "operationId": "readProductReviews", - "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Identifier of the product.", - "required": true, - "schema": { - "type": "string" + "description": "Returns a success response indicating a successful update.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } } - }, + } + }, + "security": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, + "ApiKey": [] + } + ], + "parameters": [ { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } + "$ref": "#/components/parameters/swLanguageId" } + ] + } + }, + "/account/recovery-password": { + "post": { + "tags": [ + "Profile" ], + "summary": "Send a password recovery mail", + "description": "This operation is Step 1 of the password reset flow. Make sure to implement Step 2 \"Reset password with recovery credentials\" in order to allow for the complete flow in your application. Sends a recovery mail containing a link with credentials that allows a customer to reset their password.", + "operationId": "sendRecoveryMail", "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "email", + "storefrontUrl" + ], + "properties": { + "email": { + "description": "E-Mail address to identify the customer", + "type": "string" + }, + "storefrontUrl": { + "description": "URL of the storefront to use for the generated reset link. It has to be a domain that is configured in the sales channel domain settings.", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "Entity search result containing product reviews", + "description": "If email corresponds to an existing customer, a mail will be sent out to that customer containing a link assembled using the following schema:\n\nReturns a success indicating a successful initialisation of the reset flow.", "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductReview" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -20704,189 +21310,74 @@ { "ApiKey": [] } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ] - }, - "get": { + } + }, + "/account/address/default-shipping/{addressId}": { + "patch": { "tags": [ - "Product", - "Endpoints supporting Criteria " + "Address" ], - "summary": "Fetch product reviews", - "description": "Perform a filtered search for product reviews.", - "operationId": "readProductReviewsGet", + "summary": "Change a customer's default shipping address", + "description": "Updates the default (preselected) shipping addresses of a customer.", + "operationId": "defaultShippingAddress", "parameters": [ { - "name": "productId", + "name": "addressId", "in": "path", - "description": "Identifier of the product.", + "description": "Address ID", "required": true, "schema": { "type": "string" } }, { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaFields" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "$ref": "#/components/parameters/CompressedCriteria" + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "description": "Entity search result containing product reviews", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductReview" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } + "description": "" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/product/{productId}/review": { - "post": { + "/account/address/default-billing/{addressId}": { + "patch": { "tags": [ - "Product" + "Address" ], - "summary": "Save a product review", - "description": "Saves a review for a product. Reviews have to be activated in the settings.", - "operationId": "saveProductReview", + "summary": "Change a customer's default billing address", + "description": "Updates the default (preselected) billing addresses of a customer.", + "operationId": "defaultBillingAddress", "parameters": [ { - "name": "productId", - "in": "path", - "description": "Identifier of the product which is reviewed.", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "required": [ - "title", - "content", - "points" - ], - "properties": { - "name": { - "description": "The name of the review author. If not set, the first name of the customer is chosen.", - "type": "string" - }, - "email": { - "description": "The email address of the review author. If not set, the email of the customer is chosen.", - "type": "string" - }, - "title": { - "description": "The title of the review.", - "type": "string" - }, - "content": { - "description": "The content of review.", - "type": "string" - }, - "points": { - "description": "The review rating for the product.", - "type": "number", - "format": "double" - } - }, - "type": "object" - } + "name": "addressId", + "in": "path", + "description": "Address ID", + "required": true, + "schema": { + "type": "string" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } - }, + ], "responses": { "200": { - "description": "Success response indicating the review was saved successfully." + "description": "" } }, "security": [ @@ -20897,78 +21388,37 @@ ] } }, - "/product/{productId}/find-variant": { + "/account/address": { "post": { "tags": [ - "Product" - ], - "summary": "Search for a matching variant by product options.", - "description": "Performs a search for product variants and returns the best matching variant.", - "operationId": "searchProductVariantIds", - "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Product ID", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } + "Address" ], + "summary": "Create a new address for a customer", + "description": "Creates a new address for a customer.", + "operationId": "createCustomerAddress", "requestBody": { "content": { "application/json": { "schema": { - "required": [ - "options" - ], - "properties": { - "options": { - "oneOf": [ - { - "description": "The options parameter for the variant to find.", - "type": "array", - "items": { - "type": "string" - } - }, - { - "description": "The options parameter as a map of groupId => optionId.", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - ] - }, - "switchedGroup": { - "description": "The id of the option group that has been switched.", - "type": "string" - } - }, - "type": "object" + "$ref": "#/components/schemas/CustomerAddressBody" } } } }, "responses": { "200": { - "description": "Returns an FoundCombination struct containing the ids matching the search.", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/FindProductVariantRouteResponse" + "allOf": [ + { + "$ref": "#/components/schemas/CustomerAddress" + }, + { + "$ref": "#/components/schemas/CustomerAddressRead" + } + ] } } } @@ -20976,69 +21426,62 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" } ] - }, - "get": { + } + }, + "/salutation": { + "post": { "tags": [ - "Product" + "System & Context", + "Endpoints supporting Criteria " ], - "summary": "Search for a matching variant by product options.", - "description": "Performs a search for product variants and returns the best matching variant.", - "operationId": "searchProductVariantIdsGet", + "summary": "Fetch salutations", + "description": "Fetches salutations with a criteria obj.", + "operationId": "readSalutation", "parameters": [ { - "name": "productId", - "in": "path", - "description": "Product ID", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "sw-language-id", + "name": "sw-include-search-info", "in": "header", - "description": "Instructs Shopware to return the response in the given language.", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", "required": false, "schema": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "enum": [ + "0", + "1" + ], + "default": "1" } }, { - "name": "options[]", - "in": "query", - "description": "The options parameter for the variant to find. Array of option IDs.", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string" + "$ref": "#/components/parameters/swLanguageId" + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] } } - }, - { - "name": "switchedGroup", - "in": "query", - "description": "The id of the option group that has been switched.", - "required": false, - "schema": { - "type": "string" - } } - ], + }, "responses": { "200": { - "description": "Returns an FoundCombination struct containing the ids matching the search.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/FindProductVariantRouteResponse" - } - } - } + "$ref": "#/components/responses/SalutationListResponse" } }, "security": [ @@ -21046,81 +21489,108 @@ "ApiKey": [] } ] - } - }, - "/customer/wishlist/add/{productId}": { - "post": { + }, + "get": { "tags": [ - "Wishlist" + "System & Context", + "Endpoints supporting Criteria " ], - "summary": "Add a product to a wishlist", - "description": "Adds a product to a customers wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "addProductOnWishlist", + "summary": "Fetch salutations", + "description": "Perform a filtered search for salutations.", + "operationId": "readSalutationGet", "parameters": [ { - "name": "productId", - "in": "path", - "description": "Identifier of the product to be added.", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "description": "Returns a success response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } + "$ref": "#/components/responses/SalutationListResponse" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/customer/wishlist": { + "/document/download/{documentId}/{deepLinkCode}": { "post": { "tags": [ - "Wishlist", - "Endpoints supporting Criteria " + "Document" ], - "summary": "Fetch a wishlist", - "description": "Fetch a customer's wishlist. Products on the wishlist can be filtered using a criteria object.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "readCustomerWishlist", + "summary": "Download generated document", + "description": "Returns generated document to download.", + "operationId": "download", "parameters": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "name": "documentId", + "in": "path", + "required": true, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } }, { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, + "name": "deepLinkCode", + "required": true, + "in": "path", "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" + "type": "string" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { @@ -21128,25 +21598,53 @@ "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "type": "object", + "properties": { + "email": { + "type": "string" + }, + "zipcode": { + "type": "string" } - ] + }, + "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." } } } }, "responses": { "200": { - "description": "", + "description": "Success", "content": { - "application/json": { + "application/pdf": { "schema": { - "$ref": "#/components/schemas/WishlistLoadRouteResponse" + "type": "string", + "format": "binary" + } + }, + "text/html": { + "schema": { + "type": "string" + } + }, + "application/xml": { + "schema": { + "type": "string" } } } + }, + "204": { + "description": "DEPRECATED: Returns a no content response when no document is found. Will be changed in v6.8.0.0 and returns a 404 response instead." + }, + "403": { + "description": "Forbidden." + }, + "404": { + "description": "Document not found." + }, + "406": { + "description": "The requested mime type is not supported." } }, "security": [ @@ -21155,47 +21653,87 @@ "ContextToken": [] } ] - } - }, - "/customer/wishlist/merge": { - "post": { + }, + "get": { "tags": [ - "Wishlist" + "Document" ], - "summary": "Create a wishlist for a customer", - "description": "Create a new wishlist for a logged in customer or extend the existing wishlist given a set of products.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * A customer can only have a single wishlist.\n * The wishlist feature has to be activated.", - "operationId": "mergeProductOnWishlist", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "properties": { - "productIds": { - "description": "List product id", - "type": "array", - "items": { - "description": "product id", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - }, - "type": "object" - } + "summary": "Download generated document", + "description": "Returns generated document to download.", + "operationId": "downloadGet", + "parameters": [ + { + "name": "documentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "deepLinkCode", + "required": true, + "in": "path", + "schema": { + "type": "string" } + }, + { + "name": "email", + "required": false, + "in": "query", + "schema": { + "type": "string" + }, + "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." + }, + { + "name": "zipcode", + "required": false, + "in": "query", + "schema": { + "type": "string" + }, + "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." + }, + { + "$ref": "#/components/parameters/swLanguageId" } - }, + ], "responses": { "200": { - "description": "Returns a success response.", + "description": "Success", "content": { - "application/json": { + "application/pdf": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "type": "string", + "format": "binary" + } + }, + "text/html": { + "schema": { + "type": "string" + } + }, + "application/xml": { + "schema": { + "type": "string" } } } + }, + "204": { + "description": "DEPRECATED: Returns a no content response when no document is found. Will be changed in v6.8.0.0 and returns a 404 response instead." + }, + "403": { + "description": "Forbidden." + }, + "404": { + "description": "Document not found." + }, + "406": { + "description": "The requested mime type is not supported." } }, "security": [ @@ -21206,43 +21744,44 @@ ] } }, - "/customer/wishlist/delete/{productId}": { - "delete": { + "/product/{productId}/cross-selling": { + "post": { "tags": [ - "Wishlist" + "Product" ], - "summary": "Remove a product from a wishlist", - "description": "Removes a product from a customer's wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "deleteProductOnWishlist", + "summary": "Fetch cross-selling groups of a product", + "description": "This route is used to load the cross sellings for a product. A product has several cross selling definitions in which several products are linked. The route returns the cross sellings together with the linked products", + "operationId": "readProductCrossSellings", "parameters": [ { "name": "productId", "in": "path", - "description": "The identifier of the product to be removed from the wishlist.", + "description": "Product ID", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" + } + }, + { + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, + "schema": { + "type": "boolean" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "description": "Returns a success response indicating a successful removal.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } - }, - "404": { - "description": "The removal of the product failed. Probably because the product could not be found on the wishlist.", + "description": "Found cross sellings", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/failure" + "$ref": "#/components/schemas/CrossSellingElementCollection" } } } @@ -21250,59 +21789,47 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] - } - }, - "/order/state/cancel": { - "post": { + }, + "get": { "tags": [ - "Order" + "Product" ], - "summary": "Cancel an order", - "description": "Cancels an order. The order state will be set to 'cancelled'.", - "operationId": "cancelOrder", + "summary": "Fetch cross-selling groups of a product", + "description": "This route is used to load the cross sellings for a product. A product has several cross selling definitions in which several products are linked. The route returns the cross sellings together with the linked products", + "operationId": "readProductCrossSellingsGet", "parameters": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "properties": { - "orderId": { - "description": "The identifier of the order to be canceled.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "type": "object", - "required": [ - "orderId" - ] - } + "name": "productId", + "in": "path", + "description": "Product ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, + "schema": { + "type": "boolean" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } - }, + ], "responses": { "200": { - "description": "Returns the state of the state machine\n\n example: More information about the state machine can be found in the corresponding guide: [Using the state machine](https://developer.shopware.com/docs/guides/plugins/plugins/checkout/order/using-the-state-machine)", + "description": "Found cross sellings", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/StateMachineState" + "$ref": "#/components/schemas/CrossSellingElementCollection" } } } @@ -21310,30 +21837,37 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/order": { + "/product/{productId}": { "post": { "tags": [ - "Order", - "Endpoints supporting Criteria " + "Product" ], - "summary": "Fetch a list of orders", - "description": "List orders of a customer.\n\n**Available Associations:**\n- `stateMachineState` - Current order state (e.g., open, in_progress, completed, cancelled)\n- `primaryOrderDelivery` - Primary delivery information for the order\n- `primaryOrderTransaction` - Primary payment transaction for the order\n- `orderCustomer` - Customer information associated with the order\n- `currency` - Currency used for the order\n- `language` - Language used when placing the order\n- `addresses` - All addresses associated with the order (billing and shipping)\n- `billingAddress` - Billing address for the order\n- `deliveries` - Delivery information including shipping address and tracking\n- `lineItems` - Order line items (products, discounts, fees)\n- `transactions` - Payment transactions for the order\n- `documents` - Generated documents (invoices, delivery notes, credit notes)\n- `tags` - Tags assigned to the order for organization and filtering", - "operationId": "readOrder", + "summary": "Fetch a single product", + "description": "This route is used to load a single product with the corresponding details. In addition to loading the data, the best variant of the product is determined when a parent id is passed.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", + "operationId": "readProductDetail", "parameters": [ { - "name": "sw-language-id", + "name": "productId", + "in": "path", + "description": "Product ID", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$'" + } + }, + { + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", "in": "header", - "description": "Instructs Shopware to return the response in the given language.", + "name": "sw-include-seo-urls", "required": false, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "boolean" } }, { @@ -21349,71 +21883,37 @@ ], "default": "1" } + }, + { + "description": "Instructs Shopware to skip loading the configurator data", + "in": "query", + "name": "skipConfigurator", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Instructs Shopware to skip loading the CMS page data", + "in": "query", + "name": "skipCmsPage", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/NoneFieldsCriteria" - }, - { - "properties": { - "checkPromotion": { - "description": "Check if the payment method of the order is still changeable.", - "type": "boolean" - }, - "filter": { - "type": "array", - "description": "Pass the deepLinkCode criteria filter to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", - "items": { - "allOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "equals" - ] - }, - "field": { - "type": "string", - "enum": [ - "deepLinkCode" - ] - }, - "value": { - "type": "string" - } - }, - "required": [ - "type", - "field", - "value" - ] - } - ] - } - }, - "email": { - "description": "The email address of the customer. Pass this value to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", - "type": "string", - "format": "email" - }, - "zipcode": { - "description": "The zip/postal code of the billing address of the customer. Pass this value to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", - "type": "string" - }, - "login": { - "description": "If set and when handling a guest order, a context token will be returned in the response header with a logged-in session.", - "type": "boolean" - } - }, - "type": "object" } ] } @@ -21422,19 +21922,11 @@ }, "responses": { "200": { - "description": "An array of orders and an indicator if the payment of the order can be changed.", - "headers": { - "sw-context-token": { - "description": "Contains sw-context-token value, if login parameter is set to true and a guest order was found and the correct credentials were provided.", - "schema": { - "type": "string" - } - } - }, + "description": "Product information along with variant groups and options", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OrderRouteResponse" + "$ref": "#/components/schemas/ProductDetailResponse" } } } @@ -21442,124 +21934,111 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] - } - }, - "/order/payment": { - "post": { + }, + "get": { "tags": [ - "Order" + "Product" ], - "summary": "Update the payment method of an order", - "description": "Changes the payment method of a specific order. You can use the /order route to find out if the payment method of an order can be changed - take a look at the `paymentChangeable`- array in the response.", - "operationId": "orderSetPayment", + "summary": "Fetch a single product", + "description": "This route is used to load a single product with the corresponding details. In addition to loading the data, the best variant of the product is determined when a parent id is passed.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", + "operationId": "readProductDetailGet", "parameters": [ { - "name": "sw-language-id", + "name": "productId", + "in": "path", + "description": "Product ID", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$'" + } + }, + { + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", "in": "header", - "description": "Instructs Shopware to return the response in the given language.", + "name": "sw-include-seo-urls", "required": false, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "boolean" } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "paymentMethodId", - "orderId" - ], - "properties": { - "paymentMethodId": { - "description": "The identifier of the paymentMethod to be set", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "orderId": { - "description": "The identifier of the order.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "type": "object" - } + }, + { + "description": "Instructs Shopware to skip loading the configurator data", + "in": "query", + "name": "skipConfigurator", + "required": false, + "schema": { + "type": "boolean" } - } - }, - "responses": { - "200": { - "description": "Successfully updated the payment method of the order.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } + }, + { + "description": "Instructs Shopware to skip loading the CMS page data", + "in": "query", + "name": "skipCmsPage", + "required": false, + "schema": { + "type": "boolean" } - } - }, - "security": [ + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/order/download/{orderId}/{downloadId}": { - "get": { - "tags": [ - "Order" - ], - "summary": "Download a purchased file", - "description": "Download a file included in the given order and with the given id. Access must be granted.", - "operationId": "orderDownloadFile", - "parameters": [ + "$ref": "#/components/parameters/criteriaGrouping" + }, { - "name": "orderId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "$ref": "#/components/parameters/criteriaTotalCountMode" }, { - "name": "downloadId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "$ref": "#/components/parameters/criteriaIncludes" }, { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedNoneFieldsCriteria" + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "description": "An arbitrary binary file.", + "description": "Product information along with variant groups and options", "content": { - "application/octet-stream": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/ProductDetailResponse" } } } @@ -21567,32 +22046,21 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/language": { + "/product": { "post": { "tags": [ - "System & Context", + "Product", "Endpoints supporting Criteria " ], - "summary": "Fetch languages", - "description": "Perform a filtered search for languages.\n\n**Available Associations:**\n- `locale` - Locale defining regional settings (date, time, number formats)\n- `translationCode` - Locale used for translating content\n- `children` - Child languages inheriting from this parent language", - "operationId": "readLanguages", + "summary": "Fetch a list of products", + "description": "List products that match the given criteria. For performance reasons a limit should always be set.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", + "operationId": "readProduct", "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, { "name": "sw-include-search-info", "in": "header", @@ -21606,6 +22074,9 @@ ], "default": "1" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { @@ -21624,7 +22095,7 @@ }, "responses": { "200": { - "$ref": "#/components/responses/LanguageListResponse" + "$ref": "#/components/responses/ProductListResponse" } }, "security": [ @@ -21635,23 +22106,13 @@ }, "get": { "tags": [ - "System & Context", + "Product", "Endpoints supporting Criteria " ], - "summary": "Fetch languages", - "description": "Perform a filtered search for languages.\n\n**Available Associations:**\n- `locale` - Locale defining regional settings (date, time, number formats)\n- `translationCode` - Locale used for translating content\n- `children` - Child languages inheriting from this parent language", - "operationId": "readLanguagesGet", + "summary": "Fetch a list of products", + "description": "List products that match the given criteria. For performance reasons a limit should always be set.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", + "operationId": "readProductGet", "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, { "$ref": "#/components/parameters/criteriaPage" }, @@ -21699,11 +22160,14 @@ }, { "$ref": "#/components/parameters/CompressedCriteria" + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "$ref": "#/components/responses/LanguageListResponse" + "$ref": "#/components/responses/ProductListResponse" } }, "security": [ @@ -21713,21 +22177,79 @@ ] } }, - "/context": { - "get": { + "/product/{productId}/reviews": { + "post": { "tags": [ - "System & Context" + "Product", + "Endpoints supporting Criteria " ], - "summary": "Fetch the current context", - "description": "Fetches the current context. This includes for example the `customerGroup`, `currency`, `taxRules` and many more.", - "operationId": "readContext", + "summary": "Fetch product reviews", + "description": "Perform a filtered search for product reviews.", + "operationId": "readProductReviews", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Identifier of the product.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } + } + } + }, "responses": { "200": { - "description": "Returns the current context.", + "description": "Entity search result containing product reviews", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SalesChannelContext" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductReview" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -21739,68 +22261,101 @@ } ] }, - "patch": { + "get": { "tags": [ - "System & Context" + "Product", + "Endpoints supporting Criteria " ], - "summary": "Modify the current context", - "description": "Used for switching the context. A typical example would be changing the language or changing the currency.", - "operationId": "updateContext", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "properties": { - "currencyId": { - "description": "Currency", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "languageId": { - "description": "Language", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "billingAddressId": { - "description": "Billing Address", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shippingAddressId": { - "description": "Shipping Address", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "paymentMethodId": { - "description": "Payment Method", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shippingMethodId": { - "description": "Shipping Method", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryId": { - "description": "Country", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryStateId": { - "description": "Country State", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "type": "object" - } + "summary": "Fetch product reviews", + "description": "Perform a filtered search for product reviews.", + "operationId": "readProductReviewsGet", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Identifier of the product.", + "required": true, + "schema": { + "type": "string" } + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" + }, + { + "$ref": "#/components/parameters/swLanguageId" } - }, + ], "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" + "description": "Entity search result containing product reviews", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductReview" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } } }, "security": [ @@ -21810,22 +22365,59 @@ ] } }, - "/context/gateway": { + "/product/{productId}/review": { "post": { + "tags": [ + "Product" + ], + "summary": "Save a product review", + "description": "Saves a review for a product. Reviews have to be activated in the settings.", + "operationId": "saveProductReview", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Identifier of the product which is reviewed.", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], "requestBody": { - "required": true, "content": { "application/json": { "schema": { "required": [ - "appName" + "title", + "content", + "points" ], "properties": { - "appName": { + "name": { + "description": "The name of the review author. If not set, the first name of the customer is chosen.", "type": "string" }, - "data": { - "type": "object" + "email": { + "description": "The email address of the review author. If not set, the email of the customer is chosen.", + "type": "string" + }, + "title": { + "description": "The title of the review.", + "type": "string" + }, + "content": { + "description": "The content of review.", + "type": "string" + }, + "points": { + "description": "The review rating for the product.", + "type": "number", + "format": "double" } }, "type": "object" @@ -21833,63 +22425,61 @@ } } }, - "tags": [ - "Gateway" - ], - "summary": "Call the context gateway", - "description": "Call the context gateway, which is used to manipulate certain aspects of context (e.g. selected payment methods, register customer, etc.).", - "operationId": "contextGateway", "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "400": { - "description": "App server communication error" - }, - "422": { - "description": "Error provided by App Server with message to show customer" + "description": "Success response indicating the review was saved successfully." } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] - }, + } + }, + "/product/purchase-limit": { "get": { "tags": [ - "Gateway" + "Product" ], - "summary": "Call the context gateway", - "description": "Call the context gateway, which is used to manipulate certain aspects of context (e.g. selected payment methods, register customer, etc.). Please prefer using the POST version of this endpoint.", - "operationId": "contextGatewayGet", + "summary": "Fetch current purchase quantity limits for products", + "description": "Returns the current min/max/step purchase constraints for the given products, reflecting live stock or configured limitations. Intended for use on PDP to show actual values on product pages.", + "operationId": "readProductsPurchaseLimit", "parameters": [ { - "name": "appName", + "name": "ids[]", "in": "query", + "description": "List of product IDs to fetch quantity limits for.", "required": true, "schema": { - "type": "string" + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } }, { - "name": "data", - "in": "query", - "schema": { - "type": "object" - }, - "style": "deepObject" + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" + "description": "Current quantity limits for the requested products", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductPurchaseLimit" + } + } + } + } }, "400": { - "description": "App server communication error" - }, - "422": { - "description": "Error provided by App Server with message to show customer" + "$ref": "#/components/responses/400" } }, "security": [ @@ -21899,63 +22489,74 @@ ] } }, - "/breadcrumb/{id}": { - "get": { + "/product/{productId}/find-variant": { + "post": { "tags": [ - "Experimental", - "Breadcrumb" + "Product" ], - "summary": "Fetch a breadcrumb", - "description": "Perform search to get category or product breadcrumb. \n\nExperimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", - "operationId": "readBreadcrumb", + "summary": "Search for a matching variant by product options.", + "description": "Performs a search for product variants and returns the best matching variant.", + "operationId": "searchProductVariantIds", "parameters": [ { - "name": "id", + "name": "productId", "in": "path", - "description": "UUID for product or category", + "description": "Product ID", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "type", - "in": "query", - "description": "Type: category or product (optional - default: product)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "product", - "category" - ] + "type": "string" } }, { - "name": "referrerCategoryId", - "in": "query", - "description": "UUID for referrer category only used for product breadcrumb", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "$ref": "#/components/parameters/swLanguageId" } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "required": [ + "options" + ], + "properties": { + "options": { + "oneOf": [ + { + "description": "The options parameter for the variant to find.", + "type": "array", + "items": { + "type": "string" + } + }, + { + "description": "The options parameter as a map of groupId => optionId.", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + ] + }, + "switchedGroup": { + "description": "The id of the option group that has been switched.", + "type": "string" + } + }, + "type": "object" + } + } + } + }, "responses": { "200": { - "description": "Search result containing SeoUrl\\'s to be used as breadcrumb.", + "description": "Returns an FoundCombination struct containing the ids matching the search.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BreadcrumbCollection" + "$ref": "#/components/schemas/FindProductVariantRouteResponse" } } } - }, - "400": { - "$ref": "#/components/responses/400" } }, "security": [ @@ -21963,38 +22564,59 @@ "ApiKey": [] } ] - } - }, - "/product-export/{accessKey}/{fileName}": { + }, "get": { "tags": [ "Product" ], - "summary": "Export product export", - "operationId": "readProductExport", + "summary": "Search for a matching variant by product options.", + "description": "Performs a search for product variants and returns the best matching variant.", + "operationId": "searchProductVariantIdsGet", "parameters": [ { - "name": "accessKey", + "name": "productId", "in": "path", - "description": "Access Key", + "description": "Product ID", "required": true, "schema": { "type": "string" } }, { - "name": "fileName", - "in": "path", - "description": "File Name", + "name": "options[]", + "in": "query", + "description": "The options parameter for the variant to find. Array of option IDs.", "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "switchedGroup", + "in": "query", + "description": "The id of the option group that has been switched.", + "required": false, "schema": { "type": "string" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "description": "" + "description": "Returns an FoundCombination struct containing the ids matching the search.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FindProductVariantRouteResponse" + } + } + } } }, "security": [ @@ -22022,6 +22644,9 @@ "schema": { "type": "string" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { @@ -22083,6 +22708,9 @@ "schema": { "type": "string" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { @@ -22128,206 +22756,171 @@ ] } }, - "/checkout/cart": { - "get": { - "tags": [ - "Cart" - ], - "summary": "Fetch or create a cart", - "description": "Used to fetch the current cart or for creating a new one.", - "operationId": "readCart", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], - "responses": { - "200": { - "description": "Cart", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Cart" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Cart" - ], - "summary": "Delete a cart", - "description": "This route deletes the cart of the customer.", - "operationId": "deleteCart", - "responses": { - "204": { - "description": "Successfully deleted the cart", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/checkout/cart/line-item": { + "/order/state/cancel": { "post": { "tags": [ - "Cart" + "Order" ], - "summary": "Add items to the cart", - "description": "This route adds items to the cart. An item can be a product or promotion for example. They are referenced by the `referencedId`-parameter.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#adding-new-items-to-the-cart)", - "operationId": "addLineItem", + "summary": "Cancel an order", + "description": "Cancels an order. The order state will be set to 'cancelled'.", + "operationId": "cancelOrder", "parameters": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CartItems" + "properties": { + "orderId": { + "description": "The identifier of the order to be canceled.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "type": "object", + "required": [ + "orderId" + ] } } } }, "responses": { "200": { - "description": "The updated cart.", + "description": "Returns the state of the state machine\n\n example: More information about the state machine can be found in the corresponding guide: [Using the state machine](https://developer.shopware.com/docs/guides/plugins/plugins/checkout/order/using-the-state-machine)", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "$ref": "#/components/schemas/StateMachineState" } } } - }, - "400": { - "$ref": "#/components/responses/400" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] - }, - "delete": { + } + }, + "/order": { + "post": { "tags": [ - "Cart" + "Order", + "Endpoints supporting Criteria " ], - "summary": "Remove items from the cart", - "description": "DEPRECATED: use removeLineItem instead. This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", - "operationId": "removeLineItemDeprecated", - "deprecated": true, + "summary": "Fetch a list of orders", + "description": "List orders of a customer.\n\n**Available Associations:**\n- `stateMachineState` - Current order state (e.g., open, in_progress, completed, cancelled)\n- `primaryOrderDelivery` - Primary delivery information for the order\n- `primaryOrderTransaction` - Primary payment transaction for the order\n- `orderCustomer` - Customer information associated with the order\n- `currency` - Currency used for the order\n- `language` - Language used when placing the order\n- `addresses` - All addresses associated with the order (billing and shipping)\n- `billingAddress` - Billing address for the order\n- `deliveries` - Delivery information including shipping address and tracking\n- `lineItems` - Order line items (products, discounts, fees)\n- `transactions` - Payment transactions for the order\n- `documents` - Generated documents (invoices, delivery notes, credit notes)\n- `tags` - Tags assigned to the order for organization and filtering", + "operationId": "readOrder", "parameters": [ { - "name": "ids", - "in": "query", - "description": "A list of product identifiers.", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - }, - { - "name": "sw-language-id", + "name": "sw-include-search-info", "in": "header", - "description": "Instructs Shopware to return the response in the given language.", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", "required": false, "schema": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], - "responses": { - "200": { - "description": "The updated cart.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Cart" - } - } + "enum": [ + "0", + "1" + ], + "default": "1" } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - }, - "patch": { - "tags": [ - "Cart" - ], - "summary": "Update items in the cart", - "description": "This route updates items in the cart. A typical example is updating the quantity of an item.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#updating-items-in-the-cart)", - "operationId": "updateLineItem", - "parameters": [ + }, { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CartItems" + "allOf": [ + { + "$ref": "#/components/schemas/NoneFieldsCriteria" + }, + { + "properties": { + "checkPromotion": { + "description": "Check if the payment method of the order is still changeable.", + "type": "boolean" + }, + "filter": { + "type": "array", + "description": "Pass the deepLinkCode criteria filter to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "equals" + ] + }, + "field": { + "type": "string", + "enum": [ + "deepLinkCode" + ] + }, + "value": { + "type": "string" + } + }, + "required": [ + "type", + "field", + "value" + ] + } + ] + } + }, + "email": { + "description": "The email address of the customer. Pass this value to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", + "type": "string", + "format": "email" + }, + "zipcode": { + "description": "The zip/postal code of the billing address of the customer. Pass this value to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", + "type": "string" + }, + "login": { + "description": "If set and when handling a guest order, a context token will be returned in the response header with a logged-in session.", + "type": "boolean" + } + }, + "type": "object" + } + ] } } } }, "responses": { "200": { - "description": "The updated cart.", + "description": "An array of orders and an indicator if the payment of the order can be changed.", + "headers": { + "sw-context-token": { + "description": "Contains sw-context-token value, if login parameter is set to true and a guest order was found and the correct credentials were provided.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "$ref": "#/components/schemas/OrderRouteResponse" } } } @@ -22335,29 +22928,23 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/checkout/cart/line-item/delete": { + "/order/payment": { "post": { "tags": [ - "Cart" + "Order" ], - "summary": "Remove items from the cart", - "description": "This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", - "operationId": "removeLineItem", + "summary": "Update the payment method of an order", + "description": "Changes the payment method of a specific order. You can use the /order route to find out if the payment method of an order can be changed - take a look at the `paymentChangeable`- array in the response.", + "operationId": "orderSetPayment", "parameters": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { @@ -22366,17 +22953,19 @@ "application/json": { "schema": { "required": [ - "ids" + "paymentMethodId", + "orderId" ], "properties": { - "ids": { - "description": "A list of product identifiers.", - "type": "array", - "minItems": 1, - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "paymentMethodId": { + "description": "The identifier of the paymentMethod to be set", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "orderId": { + "description": "The identifier of the order.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, "type": "object" @@ -22386,11 +22975,11 @@ }, "responses": { "200": { - "description": "The updated cart.", + "description": "Successfully updated the payment method of the order.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -22398,148 +22987,51 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/checkout/order": { - "post": { + "/order/download/{orderId}/{downloadId}": { + "get": { "tags": [ "Order" ], - "summary": "Create an order from a cart", - "description": "Creates a new order from the current cart and deletes the cart.\n\nIf you are using the [prepared payment flow](https://developer.shopware.com/docs/concepts/commerce/checkout-concept/payments#2.1-prepare-payment-optional), this endpoint also receives additional transaction details. The exact name of the parameters depends on the implementation of the corresponding *payment handler*.", - "operationId": "createOrder", + "summary": "Download a purchased file", + "description": "Download a file included in the given order and with the given id. Access must be granted.", + "operationId": "orderDownloadFile", "parameters": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "name": "orderId", + "in": "path", + "required": true, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } - } - ], - "requestBody": { - "description": "Contains additional metadata which is stored together with the order. It can also contain payment transaction details.", - "content": { - "application/json": { - "schema": { - "properties": { - "customerComment": { - "description": "Adds a comment from the customer to the order.", - "type": "string" - }, - "affiliateCode": { - "description": "The affiliate code can be used to track which referrer the customer came through. An example could be `Price-comparison-company-XY`.", - "type": "string" - }, - "campaignCode": { - "description": "The campaign code is used to track which action the customer came from. An example could be `Summer-Deals`", - "type": "string" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Order", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Order" - } - } + }, + { + "name": "downloadId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } - } - }, - "security": [ + }, { - "ApiKey": [], - "ContextToken": [] + "$ref": "#/components/parameters/swLanguageId" } - ] - } - }, - "/checkout/gateway": { - "get": { - "tags": [ - "Gateway" ], - "summary": "Call the checkout gateway", - "description": "Call the checkout gateway, which is used to manipulate certain aspects of the checkout process (e.g. available payment methods).", - "operationId": "checkoutGateway", "responses": { "200": { - "description": "Checkout gateway response", + "description": "An arbitrary binary file.", "content": { - "application/json": { + "application/octet-stream": { "schema": { - "properties": { - "paymentMethods": { - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PaymentMethod" - } - } - }, - "type": "object" - }, - "shippingMethods": { - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "type": "object" - }, - "errors": { - "type": "array", - "items": { - "properties": { - "code": { - "description": "Error code", - "type": "string" - }, - "detail": { - "description": "Error detail", - "type": "string" - }, - "blocking": { - "description": "If the error is blocking", - "type": "boolean" - } - } - } - } - } + "type": "string", + "format": "binary" } } } @@ -22547,35 +23039,26 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/cms/{id}": { + "/country-state/{countryId}": { "post": { "tags": [ - "Content" + "System & Context", + "Endpoints supporting Criteria " ], - "summary": "Fetch and resolve a CMS page", - "description": "Loads a content management page by its identifier and resolve the slot data. This could be media files, product listing and so on.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `sections` - Content sections within the CMS page (layout blocks containing slots)\n- `previewMedia` - Preview image for the CMS page in admin panel and page selection\n- `landingPages` - Landing pages using this CMS layout", - "operationId": "readCms", + "summary": "Fetch the states of a country", + "description": "Perform a filtered search the states for a country", + "operationId": "readCountryState", "parameters": [ { - "name": "id", - "in": "path", - "description": "Identifier of the CMS page to be resolved", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "name": "countryId", + "in": "path", + "required": true, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" @@ -22594,24 +23077,19 @@ ], "default": "1" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { + "required": false, "content": { "application/json": { "schema": { "allOf": [ { - "properties": { - "slots": { - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/ProductListingCriteria" + "$ref": "#/components/schemas/Criteria" } ] } @@ -22620,17 +23098,7 @@ }, "responses": { "200": { - "description": "The loaded cms page", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CmsPage" - } - } - } - }, - "404": { - "$ref": "#/components/responses/404" + "$ref": "#/components/responses/CountryStateListResponse" } }, "security": [ @@ -22641,51 +23109,27 @@ }, "get": { "tags": [ - "Content" + "System & Context", + "Endpoints supporting Criteria " ], - "summary": "Fetch and resolve a CMS page", - "description": "Loads a content management page by its identifier and resolve the slot data. This could be media files, product listing and so on.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `sections` - Content sections within the CMS page (layout blocks containing slots)\n- `previewMedia` - Preview image for the CMS page in admin panel and page selection\n- `landingPages` - Landing pages using this CMS layout", - "operationId": "readCmsGet", + "summary": "Fetch the states of a country", + "description": "Perform a filtered search the states for a country", + "operationId": "readCountryStateGet", "parameters": [ { - "name": "id", + "name": "countryId", "in": "path", - "description": "Identifier of the CMS page to be resolved", "required": true, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "slots", - "in": "query", - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", - "schema": { - "type": "string" - } - }, { "$ref": "#/components/parameters/criteriaPage" }, { - "name": "limit", - "in": "query", - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "schema": { - "type": "integer", - "minimum": 0 - } + "$ref": "#/components/parameters/criteriaLimit" }, { "$ref": "#/components/parameters/criteriaTerm" @@ -22727,104 +23171,84 @@ "$ref": "#/components/parameters/criteriaExcludes" }, { - "name": "order", - "in": "query", - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "schema": { - "type": "string" - } - }, - { - "name": "p", - "in": "query", - "description": "Search result page", - "schema": { - "type": "integer", - "default": 1 - } - }, - { - "name": "manufacturer", - "in": "query", - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/CompressedCriteria" }, { - "name": "min-price", - "in": "query", - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, + "$ref": "#/components/parameters/swLanguageId" + } + ], + "responses": { + "200": { + "$ref": "#/components/responses/CountryStateListResponse" + } + }, + "security": [ { - "name": "max-price", - "in": "query", - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, + "ApiKey": [] + } + ] + } + }, + "/breadcrumb/{id}": { + "get": { + "tags": [ + "Experimental", + "Breadcrumb" + ], + "summary": "Fetch a breadcrumb", + "description": "Perform search to get category or product breadcrumb. \n\nExperimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", + "operationId": "readBreadcrumb", + "parameters": [ { - "name": "rating", - "in": "query", - "description": "Filter products with a minimum average rating.", + "name": "id", + "in": "path", + "description": "UUID for product or category", + "required": true, "schema": { - "type": "integer" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, { - "name": "shipping-free", + "name": "type", "in": "query", - "description": "Filters products that are marked as shipping-free.", + "description": "Type: category or product (optional - default: product)", + "required": false, "schema": { - "type": "boolean", - "default": false + "type": "string", + "enum": [ + "product", + "category" + ] } }, { - "name": "properties", + "name": "referrerCategoryId", "in": "query", - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "description": "UUID for referrer category only used for product breadcrumb", + "required": false, "schema": { - "type": "string" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, { - "name": "reduce-aggregations", - "in": "query", - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", - "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "description": "The loaded cms page", + "description": "Search result containing SeoUrl\\'s to be used as breadcrumb.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CmsPage" + "$ref": "#/components/schemas/BreadcrumbCollection" } } } }, - "404": { - "$ref": "#/components/responses/404" + "400": { + "$ref": "#/components/responses/400" } }, "security": [ @@ -22834,43 +23258,25 @@ ] } }, - "/search": { + "/cms/{id}": { "post": { "tags": [ - "Product" + "Content" ], - "summary": "Search for products", - "description": "Performs a search for products which can be used to display a product listing.", - "operationId": "searchPage", + "summary": "Fetch and resolve a CMS page", + "description": "Loads a content management page by its identifier and resolve the slot data. This could be media files, product listing and so on.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `sections` - Content sections within the CMS page (layout blocks containing slots)\n- `previewMedia` - Preview image for the CMS page in admin panel and page selection\n- `landingPages` - Landing pages using this CMS layout", + "operationId": "readCms", "parameters": [ { - "name": "p", - "in": "query", - "description": "The page number to fetch.", - "required": false, - "schema": { - "type": "integer" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "name": "id", + "in": "path", + "description": "Identifier of the CMS page to be resolved", + "required": true, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } }, - { - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "in": "header", - "name": "sw-include-seo-urls", - "required": false, - "schema": { - "type": "boolean" - } - }, { "name": "sw-include-search-info", "in": "header", @@ -22884,6 +23290,9 @@ ], "default": "1" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { @@ -22893,8 +23302,8 @@ "allOf": [ { "properties": { - "search": { - "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", + "slots": { + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", "type": "string" } }, @@ -22902,9 +23311,6 @@ }, { "$ref": "#/components/schemas/ProductListingCriteria" - }, - { - "$ref": "#/components/schemas/ProductListingFlags" } ] } @@ -22913,14 +23319,17 @@ }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", + "description": "The loaded cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "$ref": "#/components/schemas/CmsPage" } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -22931,36 +23340,26 @@ }, "get": { "tags": [ - "Product" + "Content" ], - "summary": "Search for products", - "description": "Performs a search for products which can be used to display a product listing.", - "operationId": "searchPageGet", + "summary": "Fetch and resolve a CMS page", + "description": "Loads a content management page by its identifier and resolve the slot data. This could be media files, product listing and so on.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `sections` - Content sections within the CMS page (layout blocks containing slots)\n- `previewMedia` - Preview image for the CMS page in admin panel and page selection\n- `landingPages` - Landing pages using this CMS layout", + "operationId": "readCmsGet", "parameters": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "in": "header", - "name": "sw-include-seo-urls", - "required": false, + "name": "id", + "in": "path", + "description": "Identifier of the CMS page to be resolved", + "required": true, "schema": { - "type": "boolean" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, { - "name": "search", + "name": "slots", "in": "query", - "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", - "required": false, + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", "schema": { "type": "string" } @@ -23102,22 +23501,22 @@ } }, { - "$ref": "#/components/parameters/noAggregations" - }, - { - "$ref": "#/components/parameters/onlyAggregations" + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", + "description": "The loaded cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "$ref": "#/components/schemas/CmsPage" } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -23127,35 +23526,59 @@ ] } }, - "/landing-page/{landingPageId}": { + "/customer/wishlist/add/{productId}": { "post": { "tags": [ - "Content", - "Endpoints supporting Criteria " + "Wishlist" ], - "summary": "Fetch a landing page with the resolved CMS page", - "description": "Loads a landing page by its identifier and resolves the CMS page.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `cmsPage` - CMS page layout for the landing page\n- `seoUrls` - SEO-friendly URLs for the landing page across different sales channels", - "operationId": "readLandingPage", + "summary": "Add a product to a wishlist", + "description": "Adds a product to a customers wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "addProductOnWishlist", "parameters": [ { - "name": "landingPageId", + "name": "productId", "in": "path", - "description": "Identifier of the landing page.", + "description": "Identifier of the product to be added.", "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "responses": { + "200": { + "description": "Returns a success response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/customer/wishlist": { + "post": { + "tags": [ + "Wishlist", + "Endpoints supporting Criteria " + ], + "summary": "Fetch a wishlist", + "description": "Fetch a customer's wishlist. Products on the wishlist can be filtered using a criteria object.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "readCustomerWishlist", + "parameters": [ { "name": "sw-include-search-info", "in": "header", @@ -23169,31 +23592,19 @@ ], "default": "1" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { + "required": false, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Criteria" - }, - { - "allOf": [ - { - "properties": { - "slots": { - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/ProductListingCriteria" - } - ] } ] } @@ -23202,253 +23613,189 @@ }, "responses": { "200": { - "description": "The loaded landing page with cms page", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LandingPage" + "$ref": "#/components/schemas/WishlistLoadRouteResponse" } } } - }, - "404": { - "$ref": "#/components/responses/404" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] - }, - "get": { + } + }, + "/customer/wishlist/merge": { + "post": { "tags": [ - "Content", - "Endpoints supporting Criteria " + "Wishlist" ], - "summary": "Fetch a landing page with the resolved CMS page", - "description": "Loads a landing page by its identifier and resolves the CMS page.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `cmsPage` - CMS page layout for the landing page\n- `seoUrls` - SEO-friendly URLs for the landing page across different sales channels", - "operationId": "readLandingPageGet", - "parameters": [ - { - "name": "landingPageId", - "in": "path", - "description": "Identifier of the landing page.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } - }, - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "name": "limit", - "in": "query", - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "schema": { - "type": "integer", - "minimum": 0 - } - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaFields" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "name": "order", - "in": "query", - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "schema": { - "type": "string" - } - }, - { - "name": "p", - "in": "query", - "description": "Search result page", - "schema": { - "type": "integer", - "default": 1 - } - }, - { - "name": "manufacturer", - "in": "query", - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", - "schema": { - "type": "string" - } - }, - { - "name": "min-price", - "in": "query", - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "max-price", - "in": "query", - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 + "summary": "Create a wishlist for a customer", + "description": "Create a new wishlist for a logged in customer or extend the existing wishlist given a set of products.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * A customer can only have a single wishlist.\n * The wishlist feature has to be activated.", + "operationId": "mergeProductOnWishlist", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "productIds": { + "description": "List product id", + "type": "array", + "items": { + "description": "product id", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + }, + "type": "object" + } } - }, - { - "name": "rating", - "in": "query", - "description": "Filter products with a minimum average rating.", - "schema": { - "type": "integer" + } + }, + "responses": { + "200": { + "description": "Returns a success response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } } - }, + } + }, + "security": [ { - "name": "shipping-free", - "in": "query", - "description": "Filters products that are marked as shipping-free.", - "schema": { - "type": "boolean", - "default": false - } - }, + "ApiKey": [], + "ContextToken": [] + } + ], + "parameters": [ { - "name": "properties", - "in": "query", - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", - "schema": { - "type": "string" - } - }, + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/customer/wishlist/delete/{productId}": { + "delete": { + "tags": [ + "Wishlist" + ], + "summary": "Remove a product from a wishlist", + "description": "Removes a product from a customer's wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "deleteProductOnWishlist", + "parameters": [ { - "name": "reduce-aggregations", - "in": "query", - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "name": "productId", + "in": "path", + "description": "The identifier of the product to be removed from the wishlist.", + "required": true, "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } ], "responses": { "200": { - "description": "The loaded landing page with cms page", + "description": "Returns a success response indicating a successful removal.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LandingPage" + "$ref": "#/components/schemas/SuccessResponse" } } } }, "404": { - "$ref": "#/components/responses/404" + "description": "The removal of the product failed. Probably because the product could not be found on the wishlist.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + } + } + } } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/_info/openapi3.json": { - "get": { + "/app-system/{name}/generate-token": { + "post": { "tags": [ - "System Info & Health Check" + "App system" ], - "summary": "Get OpenAPI Specification", - "description": "Get information about the store API in OpenAPI format.", - "operationId": "api-info", + "summary": "Generate JWT token for app system backend", + "description": "Generate JWT token for authenticated communication with the app server", + "operationId": "generateJWTAppSystemAppServer", "parameters": [ { - "name": "type", - "in": "query", - "description": "Type of the api", + "in": "path", + "name": "name", + "required": true, + "description": "Name of the app", "schema": { - "type": "string", - "enum": [ - "jsonapi", - "json" - ] + "type": "string" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, "responses": { "200": { - "$ref": "#/components/responses/OpenApi3" + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "token": { + "type": "string" + }, + "expires": { + "type": "string", + "format": "date-time" + }, + "shopId": { + "type": "string" + } + } + } + } + } } - } + }, + "security": [ + { + "ApiKey": [] + } + ] } }, "/cookie-groups": { @@ -23479,27 +23826,48 @@ { "ApiKey": [] } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ] } }, - "/shipping-method": { + "/product-listing/{categoryId}": { "post": { "tags": [ - "Payment & Shipping", - "Endpoints supporting Criteria " + "Product" ], - "summary": "Fetch shipping methods", - "description": "Perform a filtered search for shipping methods.\n\n**Available Associations:**\n- `prices` - Shipping method price configurations (based on current cart and context)\n- `deliveryTime` - Delivery time information (min/max days, unit)\n- `media` - Media/images associated with the shipping method (loaded by default)\n- `availabilityRule` - Availability rule determining when this method is available\n- `tax` - Tax configuration for the shipping method\n\n**Example with associations:**\n```json\n{\n \"associations\": {\n \"prices\": {},\n \"deliveryTime\": {}\n }\n}\n```\n\nNote: The `prices` association is essential for accessing shipping cost configurations.", - "operationId": "readShippingMethod", + "summary": "Fetch a product listing by category", + "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", + "operationId": "readProductListing", "parameters": [ { - "name": "sw-language-id", + "name": "categoryId", + "in": "path", + "description": "Identifier of a category.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "p", + "in": "query", + "description": "The page number to fetch.", + "required": false, + "schema": { + "type": "integer" + } + }, + { + "name": "sw-include-seo-urls", "in": "header", - "description": "Instructs Shopware to return the response in the given language.", + "description": "Determines if the response must contain a SeoUrl entity for a product entity", "required": false, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "boolean" } }, { @@ -23517,61 +23885,32 @@ } }, { - "name": "onlyAvailable", - "in": "query", - "description": "List only available shipping methods. This filters shipping methods methods which can not be used in the actual context because of their availability rule.", - "schema": { - "type": "boolean" - } + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { - "required": false, "content": { "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "required": [ - "elements" - ], - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/ProductListingCriteria" + }, + { + "$ref": "#/components/schemas/ProductListingFlags" + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Returns a product listing containing all products and additional fields to display a listing.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductListingResult" } } } @@ -23585,28 +23924,41 @@ }, "get": { "tags": [ - "Payment & Shipping", - "Endpoints supporting Criteria " + "Product" ], - "summary": "Fetch shipping methods", - "description": "Perform a filtered search for shipping methods.\n\n**Available Associations:**\n- `prices` - Shipping method price configurations (graduated prices, quantity-based pricing)\n- `deliveryTime` - Delivery time information (min/max days, unit)\n- `media` - Media/images associated with the shipping method (loaded by default)\n- `availabilityRule` - Availability rule determining when this method is available\n- `tax` - Tax configuration for the shipping method\n\nNote: The `prices` association is essential for accessing shipping cost configurations.", - "operationId": "readShippingMethodGet", + "summary": "Fetch a product listing by category", + "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", + "operationId": "readProductListingGet", "parameters": [ { - "name": "sw-language-id", + "name": "categoryId", + "in": "path", + "description": "Identifier of a category.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "sw-include-seo-urls", "in": "header", - "description": "Instructs Shopware to return the response in the given language.", + "description": "Determines if the response must contain a SeoUrl entity for a product entity", "required": false, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "boolean" } }, { "$ref": "#/components/parameters/criteriaPage" }, { - "$ref": "#/components/parameters/criteriaLimit" + "name": "limit", + "in": "query", + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "schema": { + "type": "integer", + "minimum": 0 + } }, { "$ref": "#/components/parameters/criteriaTerm" @@ -23648,12 +24000,110 @@ "$ref": "#/components/parameters/criteriaExcludes" }, { - "$ref": "#/components/parameters/CompressedCriteria" + "name": "order", + "in": "query", + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "schema": { + "type": "string" + } + }, + { + "name": "p", + "in": "query", + "description": "Search result page", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "manufacturer", + "in": "query", + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "min-price", + "in": "query", + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "max-price", + "in": "query", + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "rating", + "in": "query", + "description": "Filter products with a minimum average rating.", + "schema": { + "type": "integer" + } + }, + { + "name": "shipping-free", + "in": "query", + "description": "Filters products that are marked as shipping-free.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "properties", + "in": "query", + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "reduce-aggregations", + "in": "query", + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + { + "$ref": "#/components/parameters/noAggregations" + }, + { + "$ref": "#/components/parameters/onlyAggregations" + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "$ref": "#/components/responses/ShippingMethodListResponse" + "description": "Returns a product listing containing all products and additional fields to display a listing.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + } } }, "security": [ @@ -23663,35 +24113,44 @@ ] } }, - "/navigation/{activeId}/{rootId}": { - "post": { + "/_info/openapi3.json": { + "get": { "tags": [ - "Category", - "Endpoints supporting Criteria " + "System Info & Health Check" ], - "summary": "Fetch a navigation menu", - "description": "This endpoint returns categories that can be used as a page navigation. You can either return them as a tree or as a flat list. You can also control the depth of the tree.\n\n Instead of passing uuids, you can also use one of the following aliases for the activeId and rootId parameters to get the respective navigations of your sales channel.\n\n * main-navigation\n * service-navigation\n * footer-navigation", - "operationId": "readNavigation", + "summary": "Get OpenAPI Specification", + "description": "Get information about the store API in OpenAPI format.", + "operationId": "api-info", "parameters": [ { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "name": "type", + "in": "query", + "description": "Type of the api", "schema": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "enum": [ + "jsonapi", + "json" + ] } - }, + } + ], + "responses": { + "200": { + "$ref": "#/components/responses/OpenApi3" + } + } + } + }, + "/payment-method": { + "post": { + "tags": [ + "Payment Method", + "Endpoints supporting Criteria " + ], + "summary": "Loads all available payment methods", + "operationId": "readPaymentMethod", + "parameters": [ { "name": "sw-include-search-info", "in": "header", @@ -23707,62 +24166,23 @@ } }, { - "name": "activeId", - "in": "path", - "description": "Identifier of the active category in the navigation tree (if not used, just set to the same as rootId).", - "required": true, - "schema": { - "oneOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "$ref": "#/components/schemas/NavigationType" - } - ] - } - }, - { - "name": "rootId", - "in": "path", - "description": "Identifier of the root category for your desired navigation tree. You can use it to fetch sub-trees of your navigation tree.", - "required": true, - "schema": { - "oneOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "$ref": "#/components/schemas/NavigationType" - } - ] - } + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { "required": true, "content": { "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/NoneFieldsCriteria" - }, - { - "properties": { - "depth": { - "description": "Determines the depth of fetched navigation levels.", - "type": "integer", - "format": "int32" - }, - "buildTree": { - "description": "Return the categories as a tree or as a flat list.", - "type": "array", - "items": { - "type": "object" - } + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + }, + { + "properties": { + "onlyAvailable": { + "description": "List only available", + "type": "boolean" } }, "type": "object" @@ -23774,14 +24194,7 @@ }, "responses": { "200": { - "description": "All available navigations", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/NavigationRouteResponse" - } - } - } + "$ref": "#/components/responses/PaymentMethodListResponse" } }, "security": [ @@ -23792,90 +24205,12 @@ }, "get": { "tags": [ - "Category", + "Payment Method", "Endpoints supporting Criteria " ], - "summary": "Fetch a navigation menu", - "description": "This endpoint returns categories that can be used as a page navigation. You can either return them as a tree or as a flat list. You can also control the depth of the tree.\n\n Instead of passing uuids, you can also use one of the following aliases for the activeId and rootId parameters to get the respective navigations of your sales channel.\n\n * main-navigation\n * service-navigation\n * footer-navigation", - "operationId": "readNavigationGet", + "summary": "Loads all available payment methods", + "operationId": "readPaymentMethodGet", "parameters": [ - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "activeId", - "in": "path", - "description": "Identifier of the active category in the navigation tree (if not used, just set to the same as rootId).", - "required": true, - "schema": { - "oneOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "$ref": "#/components/schemas/NavigationType" - } - ] - } - }, - { - "name": "rootId", - "in": "path", - "description": "Identifier of the root category for your desired navigation tree. You can use it to fetch sub-trees of your navigation tree.", - "required": true, - "schema": { - "oneOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "$ref": "#/components/schemas/NavigationType" - } - ] - } - }, - { - "name": "depth", - "in": "query", - "description": "Determines the depth of fetched navigation levels.", - "required": false, - "schema": { - "type": "integer", - "format": "int32" - } - }, - { - "name": "buildTree", - "in": "query", - "description": "Return the categories as a tree or as a flat list.", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "object" - } - }, - "style": "deepObject", - "explode": true - }, { "$ref": "#/components/parameters/criteriaPage" }, @@ -23906,6 +24241,9 @@ { "$ref": "#/components/parameters/criteriaAggregations" }, + { + "$ref": "#/components/parameters/criteriaFields" + }, { "$ref": "#/components/parameters/criteriaGrouping" }, @@ -23919,19 +24257,15 @@ "$ref": "#/components/parameters/criteriaExcludes" }, { - "$ref": "#/components/parameters/CompressedNoneFieldsCriteria" + "$ref": "#/components/parameters/CompressedCriteria" + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "description": "All available navigations", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/NavigationRouteResponse" - } - } - } + "$ref": "#/components/responses/PaymentMethodListResponse" } }, "security": [ @@ -23941,290 +24275,290 @@ ] } }, - "/product-listing/{categoryId}": { + "/contact-form": { "post": { "tags": [ - "Product" + "Content" ], - "summary": "Fetch a product listing by category", - "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", - "operationId": "readProductListing", + "summary": "Submit a contact form message", + "description": "Used for submitting contact forms. Be aware that there can be more required fields, depending on the system settings.", + "operationId": "sendContactMail", "parameters": [ { - "name": "categoryId", - "in": "path", - "description": "Identifier of a category.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "p", - "in": "query", - "description": "The page number to fetch.", - "required": false, - "schema": { - "type": "integer" - } - }, - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Determines if the response must contain a SeoUrl entity for a product entity", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "$ref": "#/components/parameters/swLanguageId" + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "email", + "subject", + "comment" + ], + "properties": { + "salutationId": { + "description": "Identifier of the salutation. Use `/api/salutation` endpoint to fetch possible values.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "firstName": { + "description": "Firstname. This field may be required depending on the system settings.", + "type": "string" + }, + "lastName": { + "description": "Lastname. This field may be required depending on the system settings.", + "type": "string" + }, + "email": { + "description": "Email address", + "type": "string" + }, + "phone": { + "description": "Phone. This field may be required depending on the system settings.", + "type": "string" + }, + "subject": { + "description": "The subject of the contact form.", + "type": "string" + }, + "comment": { + "description": "The message of the contact form", + "type": "string" + }, + "navigationId": { + "description": "Identifier of the navigation page. Can be used to override the configuration.\nTake a look at the settings of a category containing a concat form in the administration.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "slotId": { + "description": "Identifier of the cms element", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "cmsPageType": { + "description": "Type of the content management page", + "type": "string" + }, + "entityName": { + "description": "Entity name for slot config", + "type": "string" + } + }, + "type": "object" + } } - }, + } + }, + "responses": { + "200": { + "description": "Message sent successful." + } + }, + "security": [ { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" + "ApiKey": [] + } + ] + } + }, + "/context": { + "get": { + "tags": [ + "System & Context" + ], + "summary": "Fetch the current context", + "description": "Fetches the current context. This includes for example the `customerGroup`, `currency`, `taxRules` and many more.", + "operationId": "readContext", + "responses": { + "200": { + "description": "Returns the current context.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SalesChannelContext" + } + } } } + }, + "security": [ + { + "ApiKey": [] + } ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + }, + "patch": { + "tags": [ + "System & Context" + ], + "summary": "Modify the current context", + "description": "Used for switching the context. A typical example would be changing the language or changing the currency.", + "operationId": "updateContext", "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/ProductListingCriteria" + "properties": { + "currencyId": { + "description": "Currency", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - { - "$ref": "#/components/schemas/ProductListingFlags" + "languageId": { + "description": "Language", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "billingAddressId": { + "description": "Billing Address", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingAddressId": { + "description": "Shipping Address", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "paymentMethodId": { + "description": "Payment Method", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingMethodId": { + "description": "Shipping Method", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryId": { + "description": "Country", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryStateId": { + "description": "Country State", + "type": "string", + "pattern": "^[0-9a-f]{32}$" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProductListingResult" - } - } - } + "$ref": "#/components/responses/ContextTokenResponse" } }, "security": [ { "ApiKey": [] } - ] - }, - "get": { - "tags": [ - "Product" ], - "summary": "Fetch a product listing by category", - "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", - "operationId": "readProductListingGet", "parameters": [ { - "name": "categoryId", - "in": "path", - "description": "Identifier of a category.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Determines if the response must contain a SeoUrl entity for a product entity", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "name": "limit", - "in": "query", - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "schema": { - "type": "integer", - "minimum": 0 - } - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaFields" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "name": "order", - "in": "query", - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "schema": { - "type": "string" - } - }, - { - "name": "p", - "in": "query", - "description": "Search result page", - "schema": { - "type": "integer", - "default": 1 - } - }, - { - "name": "manufacturer", - "in": "query", - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", - "schema": { - "type": "string" - } - }, - { - "name": "min-price", - "in": "query", - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "max-price", - "in": "query", - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/context/gateway": { + "post": { + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "appName" + ], + "properties": { + "appName": { + "type": "string" + }, + "data": { + "type": "object" + } + }, + "type": "object" + } } + } + }, + "tags": [ + "Gateway" + ], + "summary": "Call the context gateway", + "description": "Call the context gateway, which is used to manipulate certain aspects of context (e.g. selected payment methods, register customer, etc.).", + "operationId": "contextGateway", + "responses": { + "200": { + "$ref": "#/components/responses/ContextTokenResponse" }, - { - "name": "rating", - "in": "query", - "description": "Filter products with a minimum average rating.", - "schema": { - "type": "integer" - } + "400": { + "description": "App server communication error" }, + "422": { + "description": "Error provided by App Server with message to show customer" + } + }, + "security": [ { - "name": "shipping-free", - "in": "query", - "description": "Filters products that are marked as shipping-free.", - "schema": { - "type": "boolean", - "default": false - } - }, + "ApiKey": [] + } + ], + "parameters": [ { - "name": "properties", + "$ref": "#/components/parameters/swLanguageId" + } + ] + }, + "get": { + "tags": [ + "Gateway" + ], + "summary": "Call the context gateway", + "description": "Call the context gateway, which is used to manipulate certain aspects of context (e.g. selected payment methods, register customer, etc.). Please prefer using the POST version of this endpoint.", + "operationId": "contextGatewayGet", + "parameters": [ + { + "name": "appName", "in": "query", - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "required": true, "schema": { "type": "string" } }, { - "name": "reduce-aggregations", + "name": "data", "in": "query", - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - { - "$ref": "#/components/parameters/noAggregations" + "type": "object" + }, + "style": "deepObject" }, { - "$ref": "#/components/parameters/onlyAggregations" + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProductListingResult" - } - } - } + "$ref": "#/components/responses/ContextTokenResponse" + }, + "400": { + "description": "App server communication error" + }, + "422": { + "description": "Error provided by App Server with message to show customer" } }, "security": [ @@ -24234,50 +24568,31 @@ ] } }, - "/salutation": { + "/media": { "post": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " - ], - "summary": "Fetch salutations", - "description": "Fetches salutations with a criteria obj.", - "operationId": "readSalutation", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } - } + "Content" ], + "summary": "Fetch and resolve Media Entities", + "description": "Fetch one or multiple Media Entities with the corresponding Identifier.", + "operationId": "readMedia", "requestBody": { - "required": false, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "properties": { + "ids": { + "description": "Identifier (UUID) of the media entity to be fetched.", + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } + }, + "type": "object", + "required": [ + "ids" ] } } @@ -24285,86 +24600,74 @@ }, "responses": { "200": { - "$ref": "#/components/responses/SalutationListResponse" + "description": "The loaded MediaCollection containing the requested Media Entities.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Media" + } + } + } + } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ { "ApiKey": [] } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ] }, "get": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Content" ], - "summary": "Fetch salutations", - "description": "Perform a filtered search for salutations.", - "operationId": "readSalutationGet", + "summary": "Fetch and resolve Media Entities", + "description": "Fetch one or multiple Media Entities with the corresponding Identifier.", + "operationId": "readMediaGet", "parameters": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "name": "ids[]", + "in": "query", + "description": "Identifier (UUID) of the media entity to be fetched.", + "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } }, { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaFields" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "$ref": "#/components/parameters/CompressedCriteria" + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "$ref": "#/components/responses/SalutationListResponse" + "description": "The loaded MediaCollection containing the requested Media Entities.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Media" + } + } + } + } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -24384,16 +24687,6 @@ "description": "Perform a filtered search for currencies.", "operationId": "readCurrency", "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, { "name": "sw-include-search-info", "in": "header", @@ -24407,6 +24700,9 @@ ], "default": "1" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { @@ -24443,16 +24739,6 @@ "description": "Perform a filtered search for currencies.", "operationId": "readCurrencyGet", "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, { "$ref": "#/components/parameters/criteriaPage" }, @@ -24490,18 +24776,63 @@ "$ref": "#/components/parameters/criteriaTotalCountMode" }, { - "$ref": "#/components/parameters/criteriaIncludes" + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedNoneFieldsCriteria" + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "responses": { + "200": { + "$ref": "#/components/responses/CurrencyListResponse" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/product-export/{accessKey}/{fileName}": { + "get": { + "tags": [ + "Product" + ], + "summary": "Export product export", + "operationId": "readProductExport", + "parameters": [ + { + "name": "accessKey", + "in": "path", + "description": "Access Key", + "required": true, + "schema": { + "type": "string" + } }, { - "$ref": "#/components/parameters/criteriaExcludes" + "name": "fileName", + "in": "path", + "description": "File Name", + "required": true, + "schema": { + "type": "string" + } }, { - "$ref": "#/components/parameters/CompressedNoneFieldsCriteria" + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "$ref": "#/components/responses/CurrencyListResponse" + "description": "" } }, "security": [ @@ -24511,14 +24842,61 @@ ] } }, - "/search-suggest": { + "/_info/routes": { + "get": { + "summary": "Get API routes", + "operationId": "getRoutes", + "tags": [ + "System Info & Health Check" + ], + "responses": { + "200": { + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "endpoints" + ], + "properties": { + "endpoints": { + "type": "array", + "items": { + "type": "object", + "required": [ + "methods", + "path" + ], + "properties": { + "methods": { + "type": "array", + "items": { + "type": "string" + } + }, + "path": { + "type": "string" + } + } + } + } + } + } + } + } + } + } + } + }, + "/search": { "post": { "tags": [ "Product" ], - "summary": "Search for products (suggest)", - "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", - "operationId": "searchSuggest", + "summary": "Search for products", + "description": "Performs a search for products which can be used to display a product listing.", + "operationId": "searchPage", "parameters": [ { "name": "p", @@ -24530,13 +24908,12 @@ } }, { - "name": "sw-language-id", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", "in": "header", - "description": "Instructs Shopware to return the response in the given language.", + "name": "sw-include-seo-urls", "required": false, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "boolean" } }, { @@ -24552,18 +24929,17 @@ ], "default": "1" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { - "required": true, "content": { "application/json": { "schema": { "allOf": [ { - "required": [ - "search" - ], "properties": { "search": { "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", @@ -24585,7 +24961,7 @@ }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", + "description": "Returns a product listing containing all products and additional fields to display a listing.", "content": { "application/json": { "schema": { @@ -24605,25 +24981,24 @@ "tags": [ "Product" ], - "summary": "Search for products (suggest)", - "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", - "operationId": "searchSuggestGet", + "summary": "Search for products", + "description": "Performs a search for products which can be used to display a product listing.", + "operationId": "searchPageGet", "parameters": [ { - "name": "sw-language-id", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", "in": "header", - "description": "Instructs Shopware to return the response in the given language.", + "name": "sw-include-seo-urls", "required": false, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "boolean" } }, { "name": "search", "in": "query", "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", - "required": true, + "required": false, "schema": { "type": "string" } @@ -24715,72 +25090,205 @@ } }, { - "name": "max-price", - "in": "query", - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } + "name": "max-price", + "in": "query", + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "rating", + "in": "query", + "description": "Filter products with a minimum average rating.", + "schema": { + "type": "integer" + } + }, + { + "name": "shipping-free", + "in": "query", + "description": "Filters products that are marked as shipping-free.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "properties", + "in": "query", + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "reduce-aggregations", + "in": "query", + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + { + "$ref": "#/components/parameters/noAggregations" + }, + { + "$ref": "#/components/parameters/onlyAggregations" + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "responses": { + "200": { + "description": "Returns a product listing containing all products and additional fields to display a listing.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/shipping-cost/product/{productId}": { + "get": { + "tags": [ + "Cart", + "Endpoints supporting Criteria " + ], + "summary": "Calculate shipping costs for a product", + "description": "Calculates shipping costs for a single product using criteria-based shipping method selection.", + "operationId": "readShippingCostByProduct", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "The product identifier.", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" }, { - "name": "rating", - "in": "query", - "description": "Filter products with a minimum average rating.", - "schema": { - "type": "integer" - } + "$ref": "#/components/parameters/criteriaFields" }, { - "name": "shipping-free", - "in": "query", - "description": "Filters products that are marked as shipping-free.", - "schema": { - "type": "boolean", - "default": false - } + "$ref": "#/components/parameters/criteriaGrouping" }, { - "name": "properties", - "in": "query", - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/criteriaTotalCountMode" }, { - "name": "reduce-aggregations", - "in": "query", - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", - "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } + "$ref": "#/components/parameters/criteriaIncludes" }, { - "$ref": "#/components/parameters/noAggregations" + "$ref": "#/components/parameters/criteriaExcludes" }, { - "$ref": "#/components/parameters/onlyAggregations" + "$ref": "#/components/parameters/CompressedCriteria" } ], "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", + "description": "The calculated shipping costs.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "type": "array", + "items": { + "type": "object", + "required": [ + "shippingCost", + "deliveryDate", + "shippingMethod" + ], + "properties": { + "shippingCost": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + } + } + } } } } + }, + "400": { + "$ref": "#/components/responses/400" } }, "security": [ @@ -24790,57 +25298,62 @@ ] } }, - "/handle-payment": { - "post": { + "/shipping-cost/cart": { + "get": { "tags": [ - "Payment & Shipping" + "Cart" ], - "summary": "Initiate a payment for an order", - "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order.", - "operationId": "handlePaymentMethod", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "orderId" - ], - "properties": { - "orderId": { - "description": "Identifier of an order", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "finishUrl": { - "description": "URL to which the client should be redirected after successful payment", - "type": "string" - }, - "errorUrl": { - "description": "URL to which the client should be redirected after erroneous payment", - "type": "string" - } - }, - "type": "object" - } + "summary": "Calculate shipping costs for the cart", + "description": "Calculates shipping costs for the current cart across available shipping methods.", + "operationId": "readShippingCostsByCart", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } - }, + ], "responses": { "200": { - "description": "Redirect to external payment provider", + "description": "The calculated shipping costs.", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "type": "string" + "type": "array", + "items": { + "type": "object", + "required": [ + "shippingCost", + "deliveryDate", + "shippingMethod" + ], + "properties": { + "shippingCost": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + } } - }, - "required": [ - "redirectUrl" - ] + } } } } @@ -24851,57 +25364,28 @@ "ApiKey": [] } ] - }, + } + }, + "/checkout/cart": { "get": { "tags": [ - "Payment & Shipping" + "Cart" ], - "summary": "Initiate a payment for an order", - "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order. Please prefer the POST version of this endpoint.", - "operationId": "handlePaymentMethodGet", + "summary": "Fetch or create a cart", + "description": "Used to fetch the current cart or for creating a new one.", + "operationId": "readCart", "parameters": [ { - "name": "orderId", - "in": "query", - "required": true, - "description": "Identifier of an order", - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "finishUrl", - "in": "query", - "description": "URL to which the client should be redirected after successful payment", - "schema": { - "type": "string" - } - }, - { - "name": "errorUrl", - "in": "query", - "description": "URL to which the client should be redirected after erroneous payment", - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "description": "Redirect to external payment provider", + "description": "Cart", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "type": "string" - } - }, - "required": [ - "redirectUrl" - ] + "$ref": "#/components/schemas/Cart" } } } @@ -24912,69 +25396,68 @@ "ApiKey": [] } ] - } - }, - "/country-state/{countryId}": { - "post": { + }, + "delete": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Cart" ], - "summary": "Fetch the states of a country", - "description": "Perform a filtered search the states for a country", - "operationId": "readCountryState", - "parameters": [ - { - "name": "countryId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "summary": "Delete a cart", + "description": "This route deletes the cart of the customer.", + "operationId": "deleteCart", + "responses": { + "204": { + "description": "Successfully deleted the cart", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } } - }, + } + }, + "security": [ { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } + "ApiKey": [] + } + ] + } + }, + "/checkout/cart/line-item": { + "post": { + "tags": [ + "Cart" + ], + "summary": "Add items to the cart", + "description": "This route adds items to the cart. An item can be a product or promotion for example. They are referenced by the `referencedId`-parameter.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#adding-new-items-to-the-cart)", + "operationId": "addLineItem", + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { - "required": false, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] + "$ref": "#/components/schemas/CartItems" } } } }, "responses": { "200": { - "$ref": "#/components/responses/CountryStateListResponse" + "description": "The updated cart.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Cart" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" } }, "security": [ @@ -24983,86 +25466,39 @@ } ] }, - "get": { + "delete": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Cart" ], - "summary": "Fetch the states of a country", - "description": "Perform a filtered search the states for a country", - "operationId": "readCountryStateGet", + "summary": "Remove items from the cart", + "description": "DEPRECATED: use removeLineItem instead. This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", + "operationId": "removeLineItemDeprecated", + "deprecated": true, "parameters": [ { - "name": "countryId", - "in": "path", + "name": "ids", + "in": "query", + "description": "A list of product identifiers.", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } - }, - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaFields" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "$ref": "#/components/parameters/CompressedCriteria" } ], "responses": { "200": { - "$ref": "#/components/responses/CountryStateListResponse" + "description": "The updated cart.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Cart" + } + } + } } }, "security": [ @@ -25070,132 +25506,77 @@ "ApiKey": [] } ] - } - }, - "/_info/routes": { - "get": { - "summary": "Get API routes", - "operationId": "getRoutes", + }, + "patch": { "tags": [ - "System Info & Health Check" + "Cart" + ], + "summary": "Update items in the cart", + "description": "This route updates items in the cart. A typical example is updating the quantity of an item.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#updating-items-in-the-cart)", + "operationId": "updateLineItem", + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CartItemsUpdate" + } + } + } + }, "responses": { "200": { - "description": "Successful operation", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "endpoints" - ], - "properties": { - "endpoints": { - "type": "array", - "items": { - "type": "object", - "required": [ - "methods", - "path" - ], - "properties": { - "methods": { - "type": "array", - "items": { - "type": "string" - } - }, - "path": { - "type": "string" - } - } - } - } - } + "$ref": "#/components/schemas/Cart" } } } } - } + }, + "security": [ + { + "ApiKey": [] + } + ] } }, - "/contact-form": { + "/checkout/cart/line-item/delete": { "post": { "tags": [ - "Content" + "Cart" ], - "summary": "Submit a contact form message", - "description": "Used for submitting contact forms. Be aware that there can be more required fields, depending on the system settings.", - "operationId": "sendContactMail", + "summary": "Remove items from the cart", + "description": "This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", + "operationId": "removeLineItem", "parameters": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "$ref": "#/components/parameters/swLanguageId" } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "email", - "subject", - "comment" - ], - "properties": { - "salutationId": { - "description": "Identifier of the salutation. Use `/api/salutation` endpoint to fetch possible values.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "description": "Firstname. This field may be required depending on the system settings.", - "type": "string" - }, - "lastName": { - "description": "Lastname. This field may be required depending on the system settings.", - "type": "string" - }, - "email": { - "description": "Email address", - "type": "string" - }, - "phone": { - "description": "Phone. This field may be required depending on the system settings.", - "type": "string" - }, - "subject": { - "description": "The subject of the contact form.", - "type": "string" - }, - "comment": { - "description": "The message of the contact form", - "type": "string" - }, - "navigationId": { - "description": "Identifier of the navigation page. Can be used to override the configuration.\nTake a look at the settings of a category containing a concat form in the administration.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "slotId": { - "description": "Identifier of the cms element", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "cmsPageType": { - "description": "Type of the content management page", - "type": "string" - }, - "entityName": { - "description": "Entity name for slot config", - "type": "string" + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "ids" + ], + "properties": { + "ids": { + "description": "A list of product identifiers.", + "type": "array", + "minItems": 1, + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } }, "type": "object" @@ -25205,7 +25586,14 @@ }, "responses": { "200": { - "description": "Message sent successful." + "description": "The updated cart.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Cart" + } + } + } } }, "security": [ @@ -25215,95 +25603,53 @@ ] } }, - "/document/download/{documentId}/{deepLinkCode}": { + "/checkout/order": { "post": { "tags": [ - "Document" + "Order" ], - "summary": "Download generated document", - "description": "Returns generated document to download.", - "operationId": "download", + "summary": "Create an order from a cart", + "description": "Creates a new order from the current cart and deletes the cart.\n\nIf you are using the [prepared payment flow](https://developer.shopware.com/docs/concepts/commerce/checkout-concept/payments#2.1-prepare-payment-optional), this endpoint also receives additional transaction details. The exact name of the parameters depends on the implementation of the corresponding *payment handler*.", + "operationId": "createOrder", "parameters": [ { - "name": "documentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "deepLinkCode", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "If a document is rendered on the fly the provided language id is added to fallback languages while the order language has priority. It does not change already generated documents.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { - "required": false, + "description": "Contains additional metadata which is stored together with the order. It can also contain payment transaction details.", "content": { "application/json": { "schema": { - "type": "object", "properties": { - "email": { + "customerComment": { + "description": "Adds a comment from the customer to the order.", "type": "string" }, - "zipcode": { + "affiliateCode": { + "description": "The affiliate code can be used to track which referrer the customer came through. An example could be `Price-comparison-company-XY`.", + "type": "string" + }, + "campaignCode": { + "description": "The campaign code is used to track which action the customer came from. An example could be `Summer-Deals`", "type": "string" } }, - "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." + "type": "object" } } } }, "responses": { "200": { - "description": "Success", + "description": "Order", "content": { - "application/pdf": { - "schema": { - "type": "string", - "format": "binary" - } - }, - "text/html": { - "schema": { - "type": "string" - } - }, - "application/xml": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/Order" } } } - }, - "204": { - "description": "DEPRECATED: Returns a no content response when no document is found. Will be changed in v6.8.0.0 and returns a 404 response instead." - }, - "403": { - "description": "Forbidden." - }, - "404": { - "description": "Document not found." - }, - "406": { - "description": "The requested mime type is not supported." } }, "security": [ @@ -25312,100 +25658,94 @@ "ContextToken": [] } ] - }, + } + }, + "/checkout/gateway": { "get": { "tags": [ - "Document" - ], - "summary": "Download generated document", - "description": "Returns generated document to download.", - "operationId": "downloadGet", - "parameters": [ - { - "name": "documentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "deepLinkCode", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "email", - "required": false, - "in": "query", - "schema": { - "type": "string" - }, - "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." - }, - { - "name": "zipcode", - "required": false, - "in": "query", - "schema": { - "type": "string" - }, - "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." - }, - { - "name": "sw-language-id", - "in": "header", - "description": "If a document is rendered on the fly the provided language id is added to fallback languages while the order language has priority. It does not change already generated documents.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } + "Gateway" ], + "summary": "Call the checkout gateway", + "description": "Call the checkout gateway, which is used to manipulate certain aspects of the checkout process (e.g. available payment methods).", + "operationId": "checkoutGateway", "responses": { "200": { - "description": "Success", + "description": "Checkout gateway response", "content": { - "application/pdf": { - "schema": { - "type": "string", - "format": "binary" - } - }, - "text/html": { - "schema": { - "type": "string" - } - }, - "application/xml": { + "application/json": { "schema": { - "type": "string" + "properties": { + "paymentMethods": { + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentMethod" + } + } + }, + "type": "object" + }, + "shippingMethods": { + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingMethod" + } + } + }, + "type": "object" + }, + "errors": { + "type": "array", + "items": { + "properties": { + "code": { + "description": "Error code", + "type": "string" + }, + "detail": { + "description": "Error detail", + "type": "string" + }, + "blocking": { + "description": "If the error is blocking", + "type": "boolean" + } + } + } + } + } } } } - }, - "204": { - "description": "DEPRECATED: Returns a no content response when no document is found. Will be changed in v6.8.0.0 and returns a 404 response instead." - }, - "403": { - "description": "Forbidden." - }, - "404": { - "description": "Document not found." - }, - "406": { - "description": "The requested mime type is not supported." } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" } ] } diff --git a/storeapi.summary.json b/storeapi.summary.json index 43f1758..db49a8b 100644 --- a/storeapi.summary.json +++ b/storeapi.summary.json @@ -61,6 +61,7 @@ "/product", "/product-export/{accessKey}/{fileName}", "/product-listing/{categoryId}", + "/product/purchase-limit", "/product/{productId}", "/product/{productId}/cross-selling", "/product/{productId}/find-variant", @@ -72,6 +73,8 @@ "/search", "/search-suggest", "/seo-url", + "/shipping-cost/cart", + "/shipping-cost/product/{productId}", "/shipping-method", "/sitemap", "/sitemap/{filePath}" @@ -93,6 +96,9 @@ "AppCmsBlock", "AppFlowAction", "AppFlowEvent", + "AppMcpPrompt", + "AppMcpResource", + "AppMcpTool", "AppPaymentMethod", "AppScriptCondition", "AppShippingMethod", @@ -108,6 +114,8 @@ "CartDeliveryPosition", "CartError", "CartItems", + "CartItemsUpdate", + "CartLineItemUpdate", "CartListPrice", "CartPriceQuantity", "CartPriceReference", @@ -198,6 +206,7 @@ "NavigationType", "NewsletterRecipient", "NewsletterRecipientJsonApi", + "NewsletterStatus", "NoneFieldsCriteria", "Notification", "NumberRange", @@ -243,6 +252,7 @@ "ProductMeasurements", "ProductMedia", "ProductPrice", + "ProductPurchaseLimit", "ProductReview", "ProductReviewSummary", "ProductSearchConfig", @@ -270,6 +280,8 @@ "SalesChannelAnalytics", "SalesChannelContext", "SalesChannelDomain", + "SalesChannelTrackingCustomer", + "SalesChannelTrackingOrder", "SalesChannelType", "Salutation", "SalutationJsonApi", From 412ec8234e1c169b80c85223da89f574a438f74a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 22 May 2026 16:19:23 +0200 Subject: [PATCH 04/16] [create-pull-request] automated change (#415) Co-authored-by: shopwareBot --- SwagDigitalSalesRooms-storeapi.json | 115 +++++++++++++++++++++++++--- 1 file changed, 106 insertions(+), 9 deletions(-) diff --git a/SwagDigitalSalesRooms-storeapi.json b/SwagDigitalSalesRooms-storeapi.json index c01dc51..8a983d8 100644 --- a/SwagDigitalSalesRooms-storeapi.json +++ b/SwagDigitalSalesRooms-storeapi.json @@ -18920,6 +18920,16 @@ "default": "application/json" } }, + "swLanguageId": { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, "noAggregations": { "name": "no-aggregations", "in": "query", @@ -19187,6 +19197,9 @@ "schema": { "type": "string" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { @@ -19216,7 +19229,11 @@ "summary": "Fetch presentation structure and flat navigation", "description": "Resolves the presentation structure and navigation by using the attendeeContext information. There will be NO Slot-Data inside call store-api.dsr.presentation-data for that", "operationId": "getPresentationStructure", - "parameters": [], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ], "responses": { "200": { "description": "", @@ -19265,6 +19282,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { @@ -19315,6 +19335,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { @@ -19366,7 +19389,11 @@ "summary": "Get the current presentation state", "description": "Returns the presentation state for all and the client", "operationId": "getClientPresentationState", - "parameters": [], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ], "responses": { "200": { "description": "", @@ -19415,6 +19442,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { @@ -19459,7 +19489,11 @@ "summary": "Update customer default info", "description": "Mark the customer who was created by admin from DSR has already updated the default info when the customer first login", "operationId": "dsrAccountUpdateDefaultInfo", - "parameters": [], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ], "responses": { "200": { "description": "", @@ -19488,7 +19522,11 @@ "summary": "Load customer wishlist product ids", "description": "Load customer wishlist product ids", "operationId": "dsrLoadCustomerWishlistProductIds", - "parameters": [], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ], "responses": { "200": { "description": "", @@ -19573,6 +19611,11 @@ "ApiKey": [], "ContextToken": [] } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ] } }, @@ -19609,6 +19652,11 @@ "ApiKey": [], "ContextToken": [] } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ] } }, @@ -19636,6 +19684,11 @@ "ApiKey": [], "ContextToken": [] } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ] } }, @@ -19647,7 +19700,11 @@ "summary": "Fetch a product listing by criteria", "description": "Fetches a product listing for a given criteria. It also provides filters, sortings and property aggregations, analogous to the /product-listing endpoint.", "operationId": "dsrProductListing", - "parameters": [], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ], "requestBody": { "required": false, "content": { @@ -19741,6 +19798,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { @@ -19780,6 +19840,9 @@ "schema": { "type": "string" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { @@ -19839,6 +19902,9 @@ "schema": { "type": "string" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { @@ -19868,7 +19934,11 @@ "summary": "Get the last seen products for the current attendee", "description": "Returns the the last seen products for the requesting client", "operationId": "getLastSeenProducts", - "parameters": [], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ], "responses": { "200": { "description": "", @@ -19920,6 +19990,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { @@ -20002,6 +20075,9 @@ "disliked" ] } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { @@ -20042,6 +20118,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { @@ -20099,6 +20178,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { @@ -20157,7 +20239,11 @@ "summary": "Update attendee information", "description": "Update attendee information", "operationId": "updateAttendee", - "parameters": [], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ], "requestBody": { "required": true, "content": { @@ -20216,7 +20302,11 @@ "summary": "Add a interaction to log", "description": "Create a interaction log entry in a specific appointment", "operationId": "addInteraction", - "parameters": [], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ], "requestBody": { "required": true, "content": { @@ -20248,7 +20338,11 @@ "summary": "Create appointment request", "description": "Create a appointment request for a specific appointment", "operationId": "createAppointmentRequest", - "parameters": [], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ], "requestBody": { "required": true, "content": { @@ -20311,6 +20405,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { From 99b2c44b3872145b2f8a3352c6e1ea94a1f84f07 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 22 May 2026 16:19:26 +0200 Subject: [PATCH 05/16] [create-pull-request] automated change (#416) Co-authored-by: shopwareBot --- SwagCommercial-storeapi.json | 8317 +++++++++++++++----------- SwagCommercial-storeapi.summary.json | 22 +- 2 files changed, 4932 insertions(+), 3407 deletions(-) diff --git a/SwagCommercial-storeapi.json b/SwagCommercial-storeapi.json index 9c2416b..f8e2467 100644 --- a/SwagCommercial-storeapi.json +++ b/SwagCommercial-storeapi.json @@ -7,7 +7,7 @@ "name": "MIT", "url": "https://github.com/shopware/shopware/blob/trunk/LICENSE" }, - "version": "6.7.9.0" + "version": "6.7.9999999-dev" }, "servers": [ { @@ -742,6 +742,84 @@ }, "type": "object" }, + "AppMcpPrompt": { + "description": "Added since version: 6.7.0.0", + "required": [ + "label" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + }, + "AppMcpResource": { + "description": "Added since version: 6.7.0.0", + "required": [ + "label" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + }, + "AppMcpTool": { + "description": "Added since version: 6.7.0.0", + "required": [ + "label" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + }, "AppPaymentMethod": { "description": "Added since version: 6.4.1.0", "properties": { @@ -873,6 +951,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "customFields": { + "type": "object" + }, "createdAt": { "type": "string", "format": "date-time", @@ -954,9 +1035,6 @@ }, "B2bComponentsApprovalRuleAppScriptCondition": { "description": "Added since version: 6.6.3.0", - "required": [ - "name" - ], "properties": { "id": { "type": "string", @@ -1067,6 +1145,9 @@ "format": "date-time", "readOnly": true }, + "customer": { + "$ref": "#/components/schemas/Customer" + }, "organizations": { "type": "array", "items": { @@ -1237,34 +1318,67 @@ }, "type": "object" }, - "B2bComponentsOrganization": { + "B2bComponentsIndividualPricing": { + "description": "Added since version: 6.7.8.0", "required": [ "id", + "active", + "showStrikeThrough", "name", - "customerId", - "defaultShippingAddressId", - "defaultBillingAddressId" + "target", + "priority", + "applyToAllProducts", + "useValidityRange", + "actionType", + "tiers" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "active": { + "type": "boolean" + }, + "showStrikeThrough": { + "type": "boolean" + }, "name": { "type": "string" }, - "customerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "target": { + "type": "string" }, - "defaultShippingAddressId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "priority": { + "type": "integer", + "format": "int64" }, - "defaultBillingAddressId": { + "applyToAllProducts": { + "type": "boolean" + }, + "productStreamId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "useValidityRange": { + "type": "boolean" + }, + "validFrom": { + "type": "string" + }, + "validUntil": { + "type": "string" + }, + "description": { + "type": "string" + }, + "actionType": { + "type": "string" + }, + "actionAmount": { + "type": "number", + "format": "float" + }, "createdById": { "type": "string", "pattern": "^[0-9a-f]{32}$" @@ -1273,6 +1387,14 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "tagIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, "customFields": { "type": "object" }, @@ -1286,71 +1408,68 @@ "format": "date-time", "readOnly": true }, - "customer": { - "$ref": "#/components/schemas/Customer" + "createdBy": { + "$ref": "#/components/schemas/User" }, - "employees": { - "type": "array", - "items": { - "$ref": "#/components/schemas/B2bEmployee" - } + "updatedBy": { + "$ref": "#/components/schemas/User" }, - "organizationCustomerAddresses": { + "productStream": { + "$ref": "#/components/schemas/ProductStream" + }, + "tiers": { "type": "array", "items": { - "$ref": "#/components/schemas/B2bComponentsOrganizationCustomerAddress" + "$ref": "#/components/schemas/B2bComponentsIndividualPricingTier" } }, - "paymentMethods": { + "companyAssignments": { "type": "array", "items": { - "$ref": "#/components/schemas/PaymentMethod" + "$ref": "#/components/schemas/B2bComponentsIndividualPricingCompanyAssignment" } }, - "shippingMethods": { + "tags": { "type": "array", "items": { - "$ref": "#/components/schemas/ShippingMethod" + "$ref": "#/components/schemas/Tag" } - }, - "defaultShippingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "defaultBillingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "createdBy": { - "$ref": "#/components/schemas/User" - }, - "updatedBy": { - "$ref": "#/components/schemas/User" } }, "type": "object" }, - "B2bComponentsOrganizationCustomerAddress": { + "B2bComponentsIndividualPricingCompanyAssignment": { + "description": "Added since version: 6.7.8.0", "required": [ "id", - "organizationId", - "customerAddressId", - "type" + "individualPricingId", + "customerId", + "scope" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "organizationId": { + "individualPricingId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "customerAddressId": { + "customerId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "type": { + "scope": { "type": "string" }, + "organizationUnitIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, "createdAt": { "type": "string", "format": "date-time", @@ -1361,83 +1480,344 @@ "format": "date-time", "readOnly": true }, - "customerAddress": { - "$ref": "#/components/schemas/CustomerAddress" + "individualPricing": { + "$ref": "#/components/schemas/B2bComponentsIndividualPricing" + }, + "customer": { + "$ref": "#/components/schemas/Customer" + }, + "units": { + "type": "array", + "items": { + "$ref": "#/components/schemas/B2bComponentsOrganization" + } } }, "type": "object" }, - "B2bComponentsPendingOrder": { - "description": "Added since version: 6.6.0.0", + "B2bComponentsIndividualPricingCompanyAssignmentUnit": { + "description": "Added since version: 6.7.8.0", "required": [ - "id", - "billingAddressId", - "customerId", - "employeeId", - "stateId", - "currencyId", - "countryId", - "salesChannelId", - "shippingMethodId", - "paymentMethodId", - "languageId", - "cartPayload" + "assignmentId", + "orgUnitId" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "orderId": { + "assignmentId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "billingAddressId": { + "orgUnitId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "customerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "assignment": { + "$ref": "#/components/schemas/B2bComponentsIndividualPricingCompanyAssignment" }, - "employeeId": { + "orgUnit": { + "$ref": "#/components/schemas/B2bComponentsOrganization" + } + }, + "type": "object" + }, + "B2bComponentsIndividualPricingComputedCache": { + "properties": { + "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "decidedById": { + "createdAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "approvalRuleId": { + "updatedAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "stateId": { + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "B2bComponentsIndividualPricingTag": { + "description": "Added since version: 6.7.8.0", + "required": [ + "individualPricingId", + "tagId" + ], + "properties": { + "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "currencyId": { + "individualPricingId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "countryId": { + "tagId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "salesChannelId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "individualPricing": { + "$ref": "#/components/schemas/B2bComponentsIndividualPricing" }, - "shippingMethodId": { + "tag": { + "$ref": "#/components/schemas/Tag" + } + }, + "type": "object" + }, + "B2bComponentsIndividualPricingTier": { + "description": "Added since version: 6.7.8.0", + "required": [ + "individualPricingId", + "id", + "qtyFrom", + "price" + ], + "properties": { + "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "paymentMethodId": { + "individualPricingId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "languageId": { - "type": "string", + "qtyFrom": { + "type": "integer", + "format": "int64" + }, + "qtyTo": { + "type": "integer", + "format": "int64" + }, + "price": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Price" + } + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "individualPricing": { + "$ref": "#/components/schemas/B2bComponentsIndividualPricing" + } + }, + "type": "object" + }, + "B2bComponentsOrganization": { + "required": [ + "id", + "name", + "customerId", + "defaultShippingAddressId", + "defaultBillingAddressId" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "name": { + "type": "string" + }, + "customerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "defaultShippingAddressId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "defaultBillingAddressId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdById": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "updatedById": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "customer": { + "$ref": "#/components/schemas/Customer" + }, + "employees": { + "type": "array", + "items": { + "$ref": "#/components/schemas/B2bEmployee" + } + }, + "organizationCustomerAddresses": { + "type": "array", + "items": { + "$ref": "#/components/schemas/B2bComponentsOrganizationCustomerAddress" + } + }, + "paymentMethods": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentMethod" + } + }, + "shippingMethods": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingMethod" + } + }, + "defaultShippingAddress": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "defaultBillingAddress": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "createdBy": { + "$ref": "#/components/schemas/User" + }, + "updatedBy": { + "$ref": "#/components/schemas/User" + } + }, + "type": "object" + }, + "B2bComponentsOrganizationCustomerAddress": { + "required": [ + "id", + "organizationId", + "customerAddressId", + "type" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "organizationId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "customerAddressId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "type": { + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "customerAddress": { + "$ref": "#/components/schemas/CustomerAddress" + } + }, + "type": "object" + }, + "B2bComponentsPendingOrder": { + "description": "Added since version: 6.6.0.0", + "required": [ + "id", + "billingAddressId", + "customerId", + "employeeId", + "stateId", + "currencyId", + "countryId", + "salesChannelId", + "shippingMethodId", + "paymentMethodId", + "languageId", + "cartPayload" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "orderId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "billingAddressId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "customerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "employeeId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "decidedById": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "approvalRuleId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "stateId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "salesChannelId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingMethodId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "paymentMethodId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "languageId": { + "type": "string", "pattern": "^[0-9a-f]{32}$" }, "cartPayload": { @@ -2334,32 +2714,156 @@ }, "type": "object" }, - "CategoryJsonApi": { - "description": "Added since version: 6.0.0.0", - "allOf": [ - { - "$ref": "#/components/schemas/resource" + "BundleDiscount": { + "description": "Added since version: 6.7.9.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - { - "required": [ - "id", - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "parentId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "parentVersionId": { - "type": "string", + "versionId": { + "description": "Version identifier of the bundle discount entity.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "type": { + "type": "string", + "enum": [ + "absolute", + "percentage" + ] + }, + "value": { + "type": "number" + }, + "maxValue": { + "type": "number" + }, + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "preventCombination": { + "type": "boolean" + }, + "active": { + "type": "boolean" + }, + "apiAlias": { + "type": "string", + "example": "bundle_discount" + } + }, + "type": "object", + "required": [ + "id", + "type", + "value" + ] + }, + "BundleItem": { + "description": "Added since version: 6.7.9.0", + "required": [ + "productId", + "quantity", + "min", + "required", + "id" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "versionId": { + "description": "Version identifier of the bundle item entity.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "productId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "bundleId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "quantity": { + "type": "integer", + "minimum": 1 + }, + "min": { + "type": "integer", + "minimum": 1 + }, + "max": { + "type": "integer" + }, + "required": { + "type": "boolean" + }, + "position": { + "type": "integer" + }, + "showBundleOnItemPdp": { + "type": "boolean" + }, + "product": { + "type": "object" + }, + "apiAlias": { + "type": "string", + "example": "bundle_item" + } + }, + "type": "object" + }, + "CategoryJsonApi": { + "description": "Added since version: 6.0.0.0", + "allOf": [ + { + "$ref": "#/components/schemas/resource" + }, + { + "required": [ + "id", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "parentId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "parentVersionId": { + "type": "string", "pattern": "^[0-9a-f]{32}$" }, "afterCategoryId": { @@ -4309,6 +4813,11 @@ }, "readOnly": true }, + "requestedGroupId": { + "description": "Unique identity of requested group.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "createdById": { "type": "string", "pattern": "^[0-9a-f]{32}$" @@ -5266,7 +5775,7 @@ "description": "Unique number associated with every document.", "type": "string" }, - "config": { + "customFields": { "type": "object" }, "createdAt": { @@ -5274,8 +5783,9 @@ "format": "date-time", "readOnly": true }, - "customFields": { - "type": "object" + "config": { + "type": "object", + "deprecated": true }, "updatedAt": { "type": "string", @@ -8610,8 +9120,7 @@ "OrderReturnLineItemReason": { "required": [ "id", - "reasonKey", - "content" + "reasonKey" ], "properties": { "id": { @@ -9515,6 +10024,11 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "openGraphMediaId": { + "description": "Media used as Open Graph image for social media sharing.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "productNumber": { "description": "Unique number assigned to individual products. Define rules for automatic assignment of every product creation as per your number range.", "type": "string" @@ -9708,6 +10222,12 @@ "customFields": { "type": "object" }, + "ogTitle": { + "type": "string" + }, + "ogDescription": { + "type": "string" + }, "type": { "description": "The type of the product, e.g., physical or digital.", "type": "string", @@ -9797,14 +10317,9 @@ } }, "type": "object" - } - }, - "type": "object" - }, - "relationships": { - "properties": { - "downloads": { - "description": "Downloadable files associated with the product (e.g., manuals, digital content)", + }, + "bundleItems": { + "description": "Bundle items assigned to this grouped bundle product.", "properties": { "links": { "type": "object", @@ -9812,7 +10327,7 @@ "related": { "type": "string", "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/downloads" + "example": "/product/deb10517653c255364175796ace3553f/bundleItems" } } }, @@ -9823,11 +10338,11 @@ "properties": { "type": { "type": "string", - "example": "product_download" + "example": "bundle_item" }, "id": { "type": "string", - "example": "d07d50a751bc6ddf12bf3af0efee9b45" + "example": "d7706d2e11bc4878ffb242403ea5b274" } } } @@ -9835,8 +10350,8 @@ }, "type": "object" }, - "parent": { - "description": "Unique identity of the product.", + "bundleDiscounts": { + "description": "Discount configurations that belong to this bundle.", "properties": { "links": { "type": "object", @@ -9844,29 +10359,31 @@ "related": { "type": "string", "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/parent" + "example": "/product/deb10517653c255364175796ace3553f/bundleDiscounts" } } }, "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "d0e45878043844ffc41aac437e86b602" + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "bundle_discount" + }, + "id": { + "type": "string", + "example": "a79712cce6d0182645b519f6add10f77" + } } } } }, "type": "object" }, - "children": { - "description": "Product variants that inherit from this parent product", + "bundleSalesChannels": { + "description": "Sales channels in which this bundle is available.", "properties": { "links": { "type": "object", @@ -9874,7 +10391,7 @@ "related": { "type": "string", "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/children" + "example": "/product/deb10517653c255364175796ace3553f/bundleSalesChannels" } } }, @@ -9885,20 +10402,21 @@ "properties": { "type": { "type": "string", - "example": "product" + "example": "sales_channel" }, "id": { "type": "string", - "example": "268184c12df027f536154d099d497b31" + "example": "d4aa52cb00cd89c5e047c6a5c72a0384" } } } } }, - "type": "object" + "type": "object", + "readOnly": true }, - "deliveryTime": { - "description": "Estimated delivery time for the product", + "items": { + "description": "Products referenced as bundle items of this bundle.", "properties": { "links": { "type": "object", @@ -9906,29 +10424,31 @@ "related": { "type": "string", "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/deliveryTime" + "example": "/product/deb10517653c255364175796ace3553f/items" } } }, "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "delivery_time" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "8c888ae25a7bd42057370e31f7e01044" + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product" + }, + "id": { + "type": "string", + "example": "691d502cfd0e0626cd3b058e5682ad1c" + } } } } }, "type": "object" }, - "tax": { - "description": "Tax configuration (rate and calculation rules)", + "belongToBundleItems": { + "description": "Reference to the bundle item definition when this product acts as a bundle item.", "properties": { "links": { "type": "object", @@ -9936,29 +10456,31 @@ "related": { "type": "string", "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/tax" + "example": "/product/deb10517653c255364175796ace3553f/belongToBundleItems" } } }, "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "tax" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "06565e5611f23fdf8cc43e5077b92b54" + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "bundle_item" + }, + "id": { + "type": "string", + "example": "db4ef6a91ceb3a70935c07a3617ea4cd" + } } } } }, "type": "object" }, - "manufacturer": { - "description": "Product manufacturer or brand information", + "bundles": { + "description": "Bundles that include this product as an item.", "properties": { "links": { "type": "object", @@ -9966,29 +10488,220 @@ "related": { "type": "string", "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/manufacturer" + "example": "/product/deb10517653c255364175796ace3553f/bundles" } } }, "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product_manufacturer" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "c2904bca62b22443d6cf5e9d89cab204" - } - } - } - }, - "type": "object" - }, - "unit": { - "description": "Product unit of measure (e.g., piece, liter, kg)", + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product" + }, + "id": { + "type": "string", + "example": "9e21e19f42862a3b26cd7aae135a3f74" + } + } + } + } + }, + "type": "object" + } + }, + "type": "object" + }, + "relationships": { + "properties": { + "downloads": { + "description": "Downloadable files associated with the product (e.g., manuals, digital content)", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/downloads" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product_download" + }, + "id": { + "type": "string", + "example": "d07d50a751bc6ddf12bf3af0efee9b45" + } + } + } + } + }, + "type": "object" + }, + "parent": { + "description": "Unique identity of the product.", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/parent" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "d0e45878043844ffc41aac437e86b602" + } + } + } + }, + "type": "object" + }, + "children": { + "description": "Product variants that inherit from this parent product", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/children" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product" + }, + "id": { + "type": "string", + "example": "268184c12df027f536154d099d497b31" + } + } + } + } + }, + "type": "object" + }, + "deliveryTime": { + "description": "Estimated delivery time for the product", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/deliveryTime" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "delivery_time" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "8c888ae25a7bd42057370e31f7e01044" + } + } + } + }, + "type": "object" + }, + "tax": { + "description": "Tax configuration (rate and calculation rules)", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/tax" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "tax" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "06565e5611f23fdf8cc43e5077b92b54" + } + } + } + }, + "type": "object" + }, + "manufacturer": { + "description": "Product manufacturer or brand information", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/manufacturer" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product_manufacturer" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "c2904bca62b22443d6cf5e9d89cab204" + } + } + } + }, + "type": "object" + }, + "unit": { + "description": "Product unit of measure (e.g., piece, liter, kg)", "properties": { "links": { "type": "object", @@ -10047,6 +10760,36 @@ }, "type": "object" }, + "openGraphMedia": { + "description": "Open Graph image for social media sharing", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/openGraphMedia" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "media" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "bbda52d941a3452369a00f2880f4f358" + } + } + } + }, + "type": "object" + }, "cmsPage": { "description": "Custom CMS page layout for the product detail page", "properties": { @@ -10612,6 +11355,11 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "openGraphMediaId": { + "description": "Media used as Open Graph image for social media sharing.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "productNumber": { "description": "Unique number assigned to individual products. Define rules for automatic assignment of every product creation as per your number range.", "type": "string" @@ -10805,6 +11553,12 @@ "customFields": { "type": "object" }, + "ogTitle": { + "type": "string" + }, + "ogDescription": { + "type": "string" + }, "type": { "description": "The type of the product, e.g., physical or digital.", "type": "string", @@ -10970,21 +11724,214 @@ } }, "type": "object" - } - }, - "type": "object" - }, - "downloads": { - "description": "Downloadable files associated with the product (e.g., manuals, digital content)", - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductDownload" - } - }, - "parent": { - "$ref": "#/components/schemas/Product", - "description": "Unique identity of the product." - }, + }, + "bundleItems": { + "description": "Bundle items assigned to this grouped bundle product.", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/bundleItems" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "bundle_item" + }, + "id": { + "type": "string", + "example": "d7706d2e11bc4878ffb242403ea5b274" + } + } + } + } + }, + "type": "object" + }, + "bundleDiscounts": { + "description": "Discount configurations that belong to this bundle.", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/bundleDiscounts" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "bundle_discount" + }, + "id": { + "type": "string", + "example": "a79712cce6d0182645b519f6add10f77" + } + } + } + } + }, + "type": "object" + }, + "bundleSalesChannels": { + "description": "Sales channels in which this bundle is available.", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/bundleSalesChannels" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "sales_channel" + }, + "id": { + "type": "string", + "example": "d4aa52cb00cd89c5e047c6a5c72a0384" + } + } + } + } + }, + "type": "object", + "readOnly": true + }, + "items": { + "description": "Products referenced as bundle items of this bundle.", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/items" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product" + }, + "id": { + "type": "string", + "example": "691d502cfd0e0626cd3b058e5682ad1c" + } + } + } + } + }, + "type": "object" + }, + "belongToBundleItems": { + "description": "Reference to the bundle item definition when this product acts as a bundle item.", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/belongToBundleItems" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "bundle_item" + }, + "id": { + "type": "string", + "example": "db4ef6a91ceb3a70935c07a3617ea4cd" + } + } + } + } + }, + "type": "object" + }, + "bundles": { + "description": "Bundles that include this product as an item.", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/bundles" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product" + }, + "id": { + "type": "string", + "example": "9e21e19f42862a3b26cd7aae135a3f74" + } + } + } + } + }, + "type": "object" + } + }, + "type": "object" + }, + "downloads": { + "description": "Downloadable files associated with the product (e.g., manuals, digital content)", + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductDownload" + } + }, + "parent": { + "$ref": "#/components/schemas/Product", + "description": "Unique identity of the product." + }, "children": { "description": "Product variants that inherit from this parent product", "type": "array", @@ -11012,6 +11959,10 @@ "$ref": "#/components/schemas/ProductMedia", "description": "Main product image displayed in listings and detail pages" }, + "openGraphMedia": { + "$ref": "#/components/schemas/Media", + "description": "Open Graph image for social media sharing" + }, "cmsPage": { "$ref": "#/components/schemas/CmsPage", "description": "Custom CMS page layout for the product detail page" @@ -13937,6 +14888,46 @@ }, "type": "object" }, + "SalesChannelTrackingCustomer": { + "description": "Added since version: 6.7.9.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "SalesChannelTrackingOrder": { + "description": "Added since version: 6.7.9.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, "SalesChannelType": { "description": "Added since version: 6.0.0.0", "required": [ @@ -13994,6 +14985,11 @@ "customFields": { "type": "object" }, + "position": { + "description": "Numerical value that indicates the order in which the defined salutations must be displayed in the frontend.", + "type": "integer", + "format": "int64" + }, "createdAt": { "type": "string", "format": "date-time", @@ -14038,6 +15034,11 @@ "customFields": { "type": "object" }, + "position": { + "description": "Numerical value that indicates the order in which the defined salutations must be displayed in the frontend.", + "type": "integer", + "format": "int64" + }, "createdAt": { "type": "string", "format": "date-time", @@ -14133,9 +15134,10 @@ "description": "A destination routeName that has been registered somewhere in the app's router. For example: \\\\\"frontend.detail.page\\\\\"", "type": "string", "enum": [ - "frontend.detail.page", "frontend.navigation.page", - "frontend.landing.page" + "frontend.landing.page", + "frontend.bundle.detail.page", + "frontend.detail.page" ] }, "pathInfo": { @@ -14218,9 +15220,10 @@ "description": "A destination routeName that has been registered somewhere in the app's router. For example: \\\\\"frontend.detail.page\\\\\"", "type": "string", "enum": [ - "frontend.detail.page", "frontend.navigation.page", - "frontend.landing.page" + "frontend.landing.page", + "frontend.bundle.detail.page", + "frontend.detail.page" ] }, "pathInfo": { @@ -15390,6 +16393,10 @@ "additionalAddressLine2": { "type": "string" }, + "hash": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "string" + }, "customFields": { "type": "object" }, @@ -16303,38 +17310,76 @@ }, "type": "object" }, - "CartPriceQuantity": { + "EntitySearchResult": { "type": "object", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_quantity" - ] + "entity": { + "type": "string" }, - "isCalculated": { - "type": "boolean" + "total": { + "type": "integer", + "description": "The total number of found entities" }, - "listPrice": { - "$ref": "#/components/schemas/CartListPrice" + "aggregations": { + "type": "array", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", + "items": { + "type": "object" + } }, - "price": { - "type": "number" + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." }, - "quantity": { - "type": "number" + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." + } + } + }, + "SalesChannelContext": { + "type": "object", + "properties": { + "token": { + "description": "Context the user session", + "type": "string" }, - "regulationPrice": { + "currentCustomerGroup": { + "type": "object", + "description": "Customer group of the current user", "properties": { - "price": { - "type": "number", - "format": "float" + "name": { + "type": "string" + }, + "displayGross": { + "type": "boolean" } - }, - "type": "object" + } + }, + "fallbackCustomerGroup": { + "description": "Fallback group if the default customer group is not applicable", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "displayGross": { + "type": "boolean" + } + } + }, + "currency": { + "$ref": "#/components/schemas/Currency" + }, + "salesChannel": { + "$ref": "#/components/schemas/SalesChannel" + }, + "measurementSystem": { + "$ref": "#/components/schemas/ContextMeasurementSystemInfo" }, "taxRules": { "type": "array", + "description": "Currently active tax rules and/or rates", "items": { "type": "object", "properties": { @@ -16348,135 +17393,311 @@ } } }, - "type": { - "type": "string" - } - }, - "required": [ - "apiAlias" - ] - }, - "CrossSellingElement": { - "type": "object", - "properties": { - "crossSelling": { - "$ref": "#/components/schemas/ProductCrossSelling" - }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - }, - "total": { - "type": "integer", - "format": "int32" + "customer": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/Customer" + } + ] }, - "streamId": { - "type": "string", - "format": "uuid" + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod" }, - "apiAlias": { - "type": "string", - "enum": [ - "cross_selling_element" - ] - } - }, - "required": [ - "crossSelling", - "products", - "total", - "apiAlias" - ] - }, - "ProductMeasurements": { - "type": "object", - "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", - "properties": { - "width": { + "shippingLocation": { "type": "object", "properties": { - "unit": { + "apiAlias": { "type": "string", "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" + "cart_delivery_shipping_location" + ] }, - "value": { - "type": "number" + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" } } }, - "height": { + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + }, + "context": { + "description": "Core context with general configuration values and state", "type": "object", "properties": { - "unit": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" + "versionId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "currencyFactor": { + "type": "integer" + }, + "currencyPrecision": { + "type": "integer", + "format": "int32" + }, + "languageIdChain": { + "type": "array", + "items": { + "type": "string" + } + }, + "scope": { + "type": "string" + }, + "source": { + "type": "object", + "required": [ + "salesChannelId", + "type" ], - "default": "mm" + "properties": { + "type": { + "type": "string", + "enum": [ + "sales-channel", + "shop-api" + ] + }, + "salesChannelId": { + "type": "string" + } + } }, - "value": { - "type": "number" + "taxState": { + "type": "string" + }, + "useCache": { + "type": "boolean" } } }, - "length": { + "itemRounding": { "type": "object", + "required": [ + "decimals", + "interval", + "roundForNet", + "apiAlias" + ], "properties": { - "unit": { + "apiAlias": { "type": "string", "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" + "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" + ] }, - "value": { - "type": "number" + "decimals": { + "type": "integer", + "format": "int32" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" } } }, - "weight": { + "totalRounding": { "type": "object", + "required": [ + "decimals", + "interval", + "roundForNet", + "apiAlias" + ], "properties": { - "unit": { + "apiAlias": { "type": "string", "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg" + "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" + ] }, - "value": { - "type": "number" + "decimals": { + "type": "integer", + "format": "int32" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" } } - } - } - }, - "ProductListingCriteria": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" }, - { + "languageInfo": { + "type": "object", + "required": [ + "localeCode", + "name" + ], + "properties": { + "name": { + "type": "string" + }, + "localeCode": { + "type": "string" + } + } + }, + "apiAlias": { + "type": "string", + "enum": [ + "sales_channel_context" + ] + } + }, + "required": [ + "salesChannel", + "apiAlias", + "itemRounding", + "totalRounding", + "languageInfo" + ] + }, + "CartError": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "key": { + "type": "string" + }, + "level": { + "type": "number", + "enum": [ + 0, + 10, + 20 + ], + "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" + }, + "message": { + "type": "string" + }, + "messageKey": { + "type": "string" + } + }, + "required": [ + "key", + "level", + "message", + "messageKey" + ] + }, + "ContextMeasurementSystemInfo": { + "type": "object", + "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", + "properties": { + "system": { + "type": "string", + "enum": [ + "metric", + "imperial" + ], + "default": "metric", + "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." + }, + "units": { + "type": "object", + "description": "Units used in the measurement system.", + "properties": { + "length": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Unit of length." + }, + "weight": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." + } + } + } + } + }, + "CustomerAddressRead": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true + }, + "customerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "updatedAt": { + "oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "oneOf": [ + { + "$ref": "#/components/schemas/CountryState" + }, + { + "type": "null" + } + ] + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" + } + }, + "required": [ + "customerId", + "createdAt", + "updatedAt", + "country", + "salutation" + ] + }, + "ProductListingCriteria": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + }, + { "type": "object", "description": "Additional search parameters for product listings", "properties": { @@ -16567,1330 +17788,920 @@ } ] }, - "ShippingMethodPageRouteResponse": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "deliveryTimeId": { - "type": "string" + "WishlistLoadRouteResponse": { + "type": "object", + "required": [ + "products" + ], + "properties": { + "wishlist": { + "type": "object", + "properties": { + "customerId": { + "type": "string" + }, + "salesChannelId": { + "type": "string" + } + } + }, + "products": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + }, + "Sitemap": { + "type": "object", + "properties": { + "filename": { + "type": "string" + }, + "created": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "filename", + "created" + ] + }, + "CartPriceQuantity": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_quantity" + ] + }, + "isCalculated": { + "type": "boolean" + }, + "listPrice": { + "$ref": "#/components/schemas/CartListPrice" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + } }, - "deliveryTime": { + "type": "object" + }, + "taxRules": { + "type": "array", + "items": { "type": "object", "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, "name": { "type": "string" - }, - "min": { - "type": "integer", - "format": "int32" - }, - "max": { - "type": "integer", - "format": "int32" - }, - "unit": { - "type": "string" } } - }, - "translations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - } - } + } + }, + "type": { + "type": "string" + } + }, + "required": [ + "apiAlias" + ] + }, + "ProductDetailResponse": { + "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", + "properties": { + "product": { + "$ref": "#/components/schemas/Product" + }, + "configurator": { + "type": "array", + "description": "List of property groups with their corresponding options and information on how to display them.", + "items": { + "$ref": "#/components/schemas/PropertyGroup" + } + } + }, + "required": [ + "product" + ] + }, + "NewsletterStatus": { + "type": "string", + "enum": [ + "notSet", + "optIn", + "optOut", + "direct", + "undefined" + ], + "description": "The subscription status. Possible values are: notSet, optIn, optOut, direct, undefined." + }, + "CartDelivery": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" } - }, - "orderDeliveries": { - "type": "array", - "items": { + } + }, + "location": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "state": { + "$ref": "#/components/schemas/CountryState" + } + } + }, + "positions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDeliveryPosition" + } + }, + "shippingCosts": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + } + } + }, + "ReferencePrice": { + "type": "object", + "properties": { + "purchaseUnit": { + "type": "number" + }, + "referenceUnit": { + "type": "number" + }, + "unitName": { + "type": "string" + }, + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_reference" + ] + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/ListPrice" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { + "oneOf": [ + { "type": "object", "properties": { - "orderId": { - "type": "string" - }, - "shippingOrderAddressId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "shippingDateEarliest": { - "type": "string", - "format": "date-time" + "price": { + "type": "number" }, - "shippingDateLatest": { + "apiAlias": { "type": "string", - "format": "date-time" - }, - "stateId": { - "type": "string" + "enum": [ + "cart_regulation_price" + ] } } + }, + { + "type": "null" } - }, - "salesChannelDefaultAssignments": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" - }, - "hreflangDefaultDomainId": { - "type": "string" - } - } + ] + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" } - }, - "salesChannels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" - }, - "hreflangDefaultDomainId": { - "type": "string" - } - } - } - }, - "availabilityRule": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "priority": { - "type": "integer", - "format": "int32" - }, - "invalid": { - "type": "boolean" - } - } - }, - "availabilityRuleId": { - "type": "string" - }, - "prices": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "ruleId": { - "type": "string" - }, - "calculation": { - "type": "integer", - "format": "int32" - }, - "quantityStart": { - "type": "number", - "format": "float" - }, - "quantityEnd": { - "type": "number", - "format": "float" - }, - "price": { - "type": "number", - "format": "float" - }, - "calculationRuleId": { - "type": "string" - } - } - } - }, - "mediaId": { - "type": "string" - }, - "media": { - "type": "object", - "properties": { - "userId": { - "type": "string" - }, - "mimeType": { - "type": "string" - }, - "fileExtension": { - "type": "string" - }, - "fileSize": { - "type": "integer", - "format": "int32" - }, - "title": { - "type": "string" - }, - "metaDataRaw": { - "type": "string" - }, - "mediaTypeRaw": { - "type": "string" - }, - "uploadedAt": { - "type": "string", - "format": "date-time" - }, - "alt": { - "type": "string" - }, - "url": { - "type": "string" - }, - "fileName": { - "type": "string" - }, - "mediaFolderId": { - "type": "string" - }, - "private": { - "type": "boolean" - }, - "thumbnailsRo": { - "type": "string" - } - } - }, - "tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - } - } - } - } - } - } - }, - "ProductDetailResponse": { - "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", - "properties": { - "product": { - "$ref": "#/components/schemas/Product" - }, - "configurator": { - "type": "array", - "description": "List of property groups with their corresponding options and information on how to display them.", - "items": { - "$ref": "#/components/schemas/PropertyGroup" - } + ] } }, "required": [ - "product" + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" ] }, - "CartDeliveryPosition": { + "CartDeliveryInformation": { "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "deliveryDate": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_information" + ] + }, + "freeDelivery": { + "type": "boolean" + }, + "deliveryTime": { "type": "object", "properties": { - "earliest": { - "type": "string", - "format": "date-time" + "name": { + "type": "string" }, - "latest": { + "min": { + "type": "integer" + }, + "max": { + "type": "integer" + }, + "unit": { + "type": "string" + }, + "apiAlias": { "type": "string", - "format": "date-time" + "enum": [ + "cart_delivery_time" + ] } } }, - "identifier": { - "type": "string" + "height": { + "type": "integer" }, - "lineItem": { - "$ref": "#/components/schemas/LineItem" + "length": { + "type": "integer" }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" + "restockTime": { + "type": "integer" + }, + "stock": { + "type": "integer" + }, + "weight": { + "type": "integer" + }, + "width": { + "type": "integer" } - } - }, - "LineItemType": { - "type": "string", - "deprecated": true, - "enum": [ - "product", - "credit", - "custom", - "promotion", - "discount", - "container", - "quantity" + }, + "required": [ + "apiAlias" ] }, - "LineItem": { + "Cart": { "type": "object", "properties": { - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - }, - "cover": { - "$ref": "#/components/schemas/Media" - }, - "dataContextHash": { - "type": "string" - }, - "dataTimestamp": { - "type": "string" - }, - "deliveryInformation": { - "$ref": "#/components/schemas/CartDeliveryInformation" - }, - "description": { - "type": "string" - }, - "good": { - "type": "boolean" - }, - "id": { + "name": { + "description": "Name of the cart - for example `guest-cart`", "type": "string" }, - "label": { + "token": { + "description": "Context token identifying the cart and the user session", "type": "string" }, - "modified": { - "type": "boolean" - }, - "modifiedByApp": { - "type": "boolean" + "price": { + "$ref": "#/components/schemas/CalculatedPrice" }, - "payload": { - "$ref": "#/components/schemas/ProductJsonApi" + "lineItems": { + "description": "All items within the cart", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } }, - "price": { + "errors": { "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "calculated_price" - ] - }, - "calculatedTaxes": { + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "anyOf": [ + { "type": "array", "items": { + "$ref": "#/components/schemas/CartError" + } + }, + { + "type": "object", + "additionalProperties": { "type": "object", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { + "code": { "type": "number" }, - "taxRate": { - "type": "number" + "key": { + "type": "string" }, - "price": { + "level": { "type": "number" + }, + "message": { + "type": "string" + }, + "messageKey": { + "type": "string" } }, "required": [ - "apiAlias", - "tax", - "taxRate", - "price" + "code", + "key", + "level", + "message", + "messageKey" ] } - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] - }, - "quantity": { - "type": "number" - }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] - }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } - }, - { - "type": "null" - } - ] - }, - "totalPrice": { - "type": "number" - }, - "unitPrice": { - "type": "number" - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } } - }, - "required": [ - "apiAlias", - "totalPrice", - "quantity", - "unitPrice" ] }, - "priceDefinition": { - "$ref": "#/components/schemas/CartPriceQuantity" - }, - "quantity": { - "type": "number" - }, - "quantityInformation": { - "type": "object", - "properties": { - "maxPurchase": { - "type": "number" - }, - "minPurchase": { - "type": "number" - }, - "purchaseSteps": { - "type": "number" - } + "deliveries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDelivery" } }, - "referencedId": { - "type": "string" - }, - "removable": { - "type": "boolean" - }, - "stackable": { - "type": "boolean" - }, - "states": { - "deprecated": true, + "transactions": { + "description": "A list of all payment transactions associated with the current cart.", "type": "array", "items": { - "type": "string", - "enum": [ - "is-physical", - "is-download" - ] + "type": "object", + "properties": { + "paymentMethodId": { + "type": "string" + }, + "amount": { + "$ref": "#/components/schemas/CalculatedPrice" + } + } } }, - "type": { - "$ref": "#/components/schemas/OrderLineItem/properties/type" + "modified": { + "type": "boolean" }, - "uniqueIdentifier": { - "type": "string" - } - }, - "required": [ - "id", - "type", - "deliveryInformation", - "payload", - "quantity", - "states" - ] - }, - "CrossSellingElementCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CrossSellingElement" - } - }, - "Sitemap": { - "type": "object", - "properties": { - "filename": { - "type": "string" + "customerComment": { + "description": "A comment that can be added to the cart.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] }, - "created": { + "affiliateCode": { + "description": "An affiliate tracking code", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "campaignCode": { + "description": "A campaign tracking code", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "apiAlias": { "type": "string", - "format": "date-time" + "enum": [ + "cart" + ] } }, "required": [ - "filename", - "created" + "price", + "apiAlias" ] }, - "CartItems": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - } - } - }, - "CookieEntry": { + "AccountNewsletterRecipient": { "type": "object", "properties": { - "cookie": { - "type": "string" - }, - "value": { - "type": "string" - }, - "expiration": { - "type": "integer" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "hidden": { - "type": "boolean" + "status": { + "$ref": "#/components/schemas/NewsletterStatus" }, "apiAlias": { "type": "string", "enum": [ - "cookie_entry" + "account_newsletter_recipient" ] } }, "required": [ - "cookie", - "hidden", + "status", "apiAlias" ] }, - "CookieRouteResponse": { + "CrossSellingElementCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrossSellingElement" + } + }, + "Criteria": { "type": "object", - "description": "Response containing cookie groups and their configuration hash.", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cookie_groups_hash" - ] + "page": { + "description": "Search result page", + "type": "integer" }, - "elements": { + "term": { + "description": "Search term", + "type": "string" + }, + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { "type": "array", - "description": "Collection of cookie groups", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", "items": { - "$ref": "#/components/schemas/CookieGroup" + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] } }, - "hash": { - "type": "string", - "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", - "example": "f86b6a872cb83dbd22d838ceda1aa3d4" + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } }, - "languageId": { + "query": { "type": "string", - "format": "uuid", - "description": "The language ID for which the cookie configuration was generated. Used to store hashes per language.", - "example": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" - } - }, - "required": [ - "elements", - "hash", - "languageId", - "apiAlias" - ], - "example": { - "apiAlias": "cookie_groups_hash", - "elements": [ - { - "isRequired": true, - "description": "Cookies required for this shop to function:", - "name": "Technically required", - "entries": [ + "description": "The query string to search for" + }, + "associations": { + "$ref": "#/components/schemas/Associations" + }, + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ { - "name": "Session", - "hidden": false, - "cookie": "session-", - "apiAlias": "cookie_entry" + "$ref": "#/components/schemas/SimpleFilter" }, { - "name": "Timezone", - "hidden": false, - "cookie": "timezone", - "apiAlias": "cookie_entry" + "$ref": "#/components/schemas/EqualsFilter" }, { - "value": "1", - "expiration": 30, - "name": "Cookie preferences", - "hidden": true, - "cookie": "cookie-preference", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "description": "Cookies used for statistics and shop performance metrics.", - "name": "Statistics", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "Google Analytics", - "hidden": false, - "cookie": "google-analytics-enabled", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "description": "Allows Google to collect personal data for online advertising and marketing.", - "name": "Marketing", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "Google Advertising", - "hidden": false, - "cookie": "google-ads-enabled", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "name": "Comfort features", - "entries": [ + "$ref": "#/components/schemas/MultiNotFilter" + }, { - "value": "1", - "expiration": 30, - "name": "YouTube video", - "hidden": false, - "cookie": "youtube-video", - "apiAlias": "cookie_entry" + "$ref": "#/components/schemas/RangeFilter" } - ], - "apiAlias": "cookie_group" + ] } - ], - "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", - "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" - } - }, - "CartDelivery": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" - } + }, + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" } }, - "location": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "state": { - "$ref": "#/components/schemas/CountryState" - } + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" } }, - "positions": { + "fields": { "type": "array", + "description": "Fields which should be returned in the search result.", "items": { - "$ref": "#/components/schemas/CartDeliveryPosition" + "type": "string", + "description": "Name of a field" } }, - "shippingCosts": { - "$ref": "#/components/schemas/CalculatedPrice" + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" + }, + "excludes": { + "$ref": "#/components/schemas/Excludes" } } }, - "CookieEntryCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CookieEntry" - } - }, - "NavigationRouteResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - }, - "NavigationType": { - "type": "string", - "enum": [ - "main-navigation", - "footer-navigation", - "service-navigation" - ] - }, - "SalesChannelContext": { + "NoneFieldsCriteria": { "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "token": { - "description": "Context the user session", + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", "type": "string" }, - "currentCustomerGroup": { - "type": "object", - "description": "Customer group of the current user", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } - } + "limit": { + "description": "Number of items per result page", + "type": "integer" }, - "fallbackCustomerGroup": { - "description": "Fallback group if the default customer group is not applicable", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] } }, - "currency": { - "$ref": "#/components/schemas/Currency" + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } }, - "salesChannel": { - "$ref": "#/components/schemas/SalesChannel" + "query": { + "type": "string", + "description": "The query string to search for" }, - "measurementSystem": { - "$ref": "#/components/schemas/ContextMeasurementSystemInfo" + "associations": { + "$ref": "#/components/schemas/Associations" }, - "taxRules": { + "post-filter": { "type": "array", - "description": "Currently active tax rules and/or rates", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "name": { - "type": "string" + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } - } + ] } }, - "customer": { - "oneOf": [ + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + }, + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } + }, + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" + }, + "excludes": { + "$ref": "#/components/schemas/Excludes" + } + } + }, + "Associations": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Criteria" + } + }, + "Includes": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "Excludes": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "Aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" + }, + { + "title": "AggregationEntity", + "allOf": [ { - "type": "null" + "$ref": "#/components/schemas/AggregationEntity" }, { - "$ref": "#/components/schemas/Customer" + "$ref": "#/components/schemas/SubAggregations" } ] }, - "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethod" - }, - "shippingLocation": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" + { + "title": "AggregationFilter", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationFilter" }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" + { + "$ref": "#/components/schemas/SubAggregations" } - } - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" + ] }, - "context": { - "description": "Core context with general configuration values and state", - "type": "object", - "properties": { - "versionId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "currencyFactor": { - "type": "integer" - }, - "currencyPrecision": { - "type": "integer", - "format": "int32" - }, - "languageIdChain": { - "type": "array", - "items": { - "type": "string" - } - }, - "scope": { - "type": "string" - }, - "source": { - "type": "object", - "required": [ - "salesChannelId", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "sales-channel", - "shop-api" - ] - }, - "salesChannelId": { - "type": "string" - } - } + { + "title": "AggregationTerms", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationTerms" }, - "taxState": { - "type": "string" + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" }, - "useCache": { - "type": "boolean" + { + "$ref": "#/components/schemas/SubAggregations" } - } + ] }, - "itemRounding": { - "type": "object", - "required": [ - "decimals", - "interval", - "roundForNet", - "apiAlias" - ], - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" - ] + { + "title": "AggregationRange", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationRange" }, - "decimals": { - "type": "integer", - "format": "int32" + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + } + ] + }, + "SubAggregations": { + "type": "object", + "properties": { + "aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" }, - "interval": { - "type": "number", - "format": "float" + { + "$ref": "#/components/schemas/AggregationEntity" }, - "roundForNet": { - "type": "boolean" - } - } - }, - "totalRounding": { - "type": "object", - "required": [ - "decimals", - "interval", - "roundForNet", - "apiAlias" - ], - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" - ] + { + "$ref": "#/components/schemas/AggregationFilter" }, - "decimals": { - "type": "integer", - "format": "int32" + { + "$ref": "#/components/schemas/AggregationTerms" }, - "interval": { - "type": "number", - "format": "float" + { + "$ref": "#/components/schemas/AggregationHistogram" }, - "roundForNet": { - "type": "boolean" + { + "$ref": "#/components/schemas/AggregationRange" } - } + ] + } + } + }, + "TotalCountMode": { + "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", + "type": "string", + "default": "none", + "enum": [ + "none", + "exact", + "next-pages" + ] + }, + "Query": { + "type": "object", + "properties": { + "score": { + "type": "number" }, - "languageInfo": { - "type": "object", - "required": [ - "localeCode", - "name" - ], - "properties": { - "name": { - "type": "string" + "query": { + "oneOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "localeCode": { - "type": "string" + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } - } - }, - "apiAlias": { - "type": "string", - "enum": [ - "sales_channel_context" ] } }, - "required": [ - "salesChannel", - "apiAlias", - "itemRounding", - "totalRounding", - "languageInfo" - ] + "additionalProperties": true }, - "AggregationMetrics": { + "Sort": { "type": "object", "properties": { - "name": { + "field": { "type": "string" }, - "type": { + "order": { "type": "string", "enum": [ - "avg", - "count", - "max", - "min", - "stats", - "sum" + "ASC", + "DESC" ] }, - "field": { + "naturalSorting": { + "type": "boolean" + }, + "type": { "type": "string" } }, "required": [ - "name", - "type", - "field" + "field", + "order" ] }, - "CookieGroupCollection": { + "Filters": { "type": "array", "items": { - "$ref": "#/components/schemas/CookieGroup" - } - }, - "ProductListingFlags": { - "type": "object", - "description": "Additional flags for product listings", - "properties": { - "no-aggregations": { - "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "only-aggregations": { - "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] } }, - "Breadcrumb": { + "SimpleFilter": { "type": "object", "properties": { - "name": { - "type": "string" - }, - "categoryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, "type": { - "$ref": "#/components/schemas/Category/properties/type" - }, - "translated": { - "type": "object", - "additionalProperties": true, - "properties": { - "customFields": { - "type": "object" - }, - "slotConfig": { - "type": "object" - }, - "linkType": { - "$ref": "#/components/schemas/Category/properties/linkType" - }, - "internalLink": { - "type": "string" - }, - "externalLink": { - "type": "string" - }, - "linkNewTab": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "metaTitle": { - "type": "string" - }, - "metaDescription": { - "type": "string" - }, - "keywords": { - "type": "string" - } - } - }, - "path": { - "type": "string" - }, - "seoUrls": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } - }, - "apiAlias": { "type": "string", "enum": [ - "breadcrumb" + "contains", + "equalsAny", + "prefix", + "suffix" ] - } - }, - "required": [ - "name", - "categoryId", - "type", - "translated", - "path", - "apiAlias" - ] - }, - "CartError": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "key": { - "type": "string" - }, - "level": { - "type": "number", - "enum": [ - 0, - 10, - 20 - ], - "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" }, - "message": { + "field": { "type": "string" }, - "messageKey": { + "value": { "type": "string" } }, "required": [ - "key", - "level", - "message", - "messageKey" + "type", + "field", + "value" ] }, - "CartPriceReference": { + "EqualsFilter": { "type": "object", "properties": { - "purchaseUnit": { - "type": "number" - }, - "referenceUnit": { - "type": "number" - }, - "unitName": { - "type": "string" - }, - "price": { - "type": "number" - }, - "apiAlias": { + "type": { "type": "string", "enum": [ - "cart_price_reference" + "equals" ] }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] + "field": { + "type": "string" }, - "regulationPrice": { + "value": { "oneOf": [ { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } + "type": "string" }, { - "type": "null" - } - ] - }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "oneOf": [ + "type": "number" + }, { - "type": "string", - "format": "^[0-9a-f]{32}$" + "type": "boolean" }, { "type": "null" @@ -17899,1857 +18710,2207 @@ } }, "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" + "type", + "field", + "value" ] }, - "AccountNewsletterRecipient": { + "MultiNotFilter": { "type": "object", "properties": { - "status": { + "type": { "type": "string", "enum": [ - "undefined", - "notSet", - "direct", - "optIn", - "optOut" + "multi", + "not" ] }, - "apiAlias": { + "operator": { "type": "string", "enum": [ - "account_newsletter_recipient" + "and", + "or", + "nor", + "nand" ] + }, + "queries": { + "$ref": "#/components/schemas/Filters" } }, "required": [ - "status", - "apiAlias" + "type", + "operator", + "queries" ] }, - "SuccessResponse": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - } - } - }, - "EntitySearchResult": { + "RangeFilter": { "type": "object", "properties": { - "entity": { - "type": "string" - }, - "total": { - "type": "integer", - "description": "The total number of found entities" - }, - "aggregations": { - "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", - "items": { - "type": "object" - } + "type": { + "type": "string", + "enum": [ + "range" + ] }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." + "field": { + "type": "string" }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." + "parameters": { + "type": "object", + "properties": { + "gte": { + "type": "number" + }, + "gt": { + "type": "number" + }, + "lte": { + "type": "number" + }, + "lt": { + "type": "number" + } + } + } + }, + "required": [ + "type", + "field", + "parameters" + ] + }, + "FindProductVariantRouteResponse": { + "type": "object", + "properties": { + "foundCombination": { + "type": "object", + "properties": { + "variantId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "options": { + "type": "array", + "items": { + "type": "string" + } + } + } } } }, - "CalculatedPrice": { + "Price": { "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", + "description": "Price object", "properties": { - "unitPrice": { - "type": "number" - }, - "quantity": { - "type": "number" + "currencyId": { + "description": "Unique identity of the associated currency.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "rawTotal": { + "gross": { + "description": "Gross price for the associated currency.", "type": "number" }, - "totalPrice": { + "net": { + "description": "Net price for the associated currency.", "type": "number" }, - "taxStatus": { - "type": "string", - "enum": [ - "net", - "tax-free" - ] - }, - "calculatedTaxes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } + "linked": { + "description": "Whether gross and net prices are linked through the tax configuration.", + "type": "boolean" }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" + "percentage": { + "description": "Discount percentage relative to the list price for the gross and net amounts. `null` when no list price is set.", + "type": [ + "object", + "null" + ], + "properties": { + "gross": { + "description": "Discount percentage relative to the gross list price.", + "type": "number" }, - { - "type": "null" + "net": { + "description": "Discount percentage relative to the net list price.", + "type": "number" } + }, + "required": [ + "gross", + "net" ] }, "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" + "description": "Reference list price for displaying discounts.", + "type": "object", + "properties": { + "currencyId": { + "description": "Unique identity of the associated currency.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - { - "type": "null" + "gross": { + "description": "Gross list price for the associated currency.", + "type": "number" + }, + "net": { + "description": "Net list price for the associated currency.", + "type": "number" + }, + "linked": { + "description": "Whether gross and net list prices are linked through the tax configuration.", + "type": "boolean" } + }, + "required": [ + "gross", + "net" ] }, - "positionPrice": { - "type": "number" - }, - "netPrice": { - "type": "number" - }, "regulationPrice": { - "oneOf": [ + "description": "Reference price used for legal price disclosures.", + "type": "object", + "properties": { + "currencyId": { + "description": "Unique identity of the associated currency.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "gross": { + "description": "Gross regulation price for the associated currency.", + "type": "number" + }, + "net": { + "description": "Net regulation price for the associated currency.", + "type": "number" + }, + "linked": { + "description": "Whether gross and net regulation prices are linked through the tax configuration.", + "type": "boolean" + } + }, + "required": [ + "gross", + "net" + ] + } + }, + "required": [ + "currencyId", + "gross", + "net" + ] + }, + "NavigationType": { + "type": "string", + "enum": [ + "main-navigation", + "footer-navigation", + "service-navigation" + ] + }, + "OrderRouteResponse": { + "type": "object", + "properties": { + "orders": { + "type": "object", + "allOf": [ { "type": "object", + "required": [ + "elements" + ], "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" + } } } }, { - "type": "null" - } - ] - }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "^[0-9a-f]{32}$" - }, - { - "type": "null" + "$ref": "#/components/schemas/EntitySearchResult" } ] }, - "apiAlias": { - "type": "string", - "enum": [ - "calculated_price" - ] - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } + "paymentChangeable": { + "type": "object", + "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", + "additionalProperties": { + "type": "boolean" } } }, "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "referencePrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitPrice", - "positionPrice", - "netPrice", - "taxRules", - "rawTotal", - "taxStatus" + "orders" ] }, - "CustomerAddressBody": { - "description": "Added since version: 6.0.0.0", - "required": [ - "countryId", - "firstName", - "lastName", - "city", - "street" - ], - "properties": { - "countryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryStateId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "salutationId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "zipcode": { - "type": "string" - }, - "city": { - "type": "string" - }, - "company": { - "type": "string" - }, - "street": { - "type": "string" - }, - "department": { - "type": "string" - }, - "title": { - "type": "string" - }, - "phoneNumber": { - "type": "string" - }, - "additionalAddressLine1": { - "type": "string" - }, - "additionalAddressLine2": { - "type": "string" - }, - "customFields": { - "type": "object" - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "$ref": "#/components/schemas/CountryState" - }, - "salutation": { - "$ref": "#/components/schemas/Salutation" - } - }, - "type": "object" - }, - "ReferencePrice": { - "type": "object", - "properties": { - "purchaseUnit": { - "type": "number" - }, - "referenceUnit": { - "type": "number" - }, - "unitName": { - "type": "string" - }, - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_reference" - ] - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/ListPrice" - }, - { - "type": "null" - } - ] + "ProductListingResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EntitySearchResult" }, - "regulationPrice": { - "oneOf": [ - { + { + "type": "object", + "properties": { + "currentFilters": { "type": "object", + "description": "Contains the state of the filters. These can be used to create listing filters.", "properties": { + "navigationId": { + "type": "string" + }, + "manufacturer": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, "price": { - "type": "number" + "type": "object", + "properties": { + "min": { + "type": "integer", + "default": 0 + }, + "max": { + "type": "integer", + "default": 0 + } + }, + "required": [ + "min", + "max" + ] }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" + "rating": { + "oneOf": [ + { + "type": "integer" + }, + { + "type": "null" + } ] + }, + "shipping-free": { + "type": "boolean", + "default": false + }, + "properties": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "search": { + "type": "string" } + }, + "required": [ + "manufacturer", + "navigationId", + "price", + "properties", + "rating", + "shipping-free" + ] + }, + "availableSortings": { + "type": "array", + "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", + "items": { + "type": "object", + "properties": { + "label": { + "type": "string" + }, + "translated": { + "type": "object", + "properties": { + "label": { + "type": "string" + } + }, + "required": [ + "label" + ] + }, + "key": { + "type": "string" + }, + "priority": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_sorting" + ] + } + }, + "required": [ + "label", + "translated", + "key", + "priority", + "apiAlias" + ] } }, - { - "type": "null" - } - ] - }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "oneOf": [ - { + "sorting": { + "type": "string" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "entity": { "type": "string", - "format": "^[0-9a-f]{32}$" + "enum": [ + "product" + ] }, - { - "type": "null" + "apiAlias": { + "type": "string", + "enum": [ + "product_listing" + ] } + }, + "required": [ + "elements", + "availableSortings", + "currentFilters", + "apiAlias" ] } - }, - "required": [ - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" ] }, - "CustomerAddressRead": { + "ProductMeasurements": { "type": "object", + "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true - }, - "customerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true - }, - "createdAt": { - "type": "string", - "format": "date-time" - }, - "updatedAt": { - "oneOf": [ - { + "width": { + "type": "object", + "properties": { + "unit": { "type": "string", - "format": "date-time" + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" }, - { - "type": "null" + "value": { + "type": "number" } - ] + } }, - "country": { - "$ref": "#/components/schemas/Country" + "height": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" + }, + "value": { + "type": "number" + } + } }, - "countryState": { - "oneOf": [ - { - "$ref": "#/components/schemas/CountryState" + "length": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" }, - { - "type": "null" + "value": { + "type": "number" } - ] + } }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "weight": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg" + }, + "value": { + "type": "number" + } + } } - }, - "required": [ - "customerId", - "createdAt", - "updatedAt", - "country", - "salutation" - ] + } }, - "Criteria": { + "CookieEntryCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CookieEntry" + } + }, + "CrossSellingElement": { "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "term": { - "description": "Search term", - "type": "string" - }, - "limit": { - "description": "Number of items per result page", - "type": "integer" + "crossSelling": { + "$ref": "#/components/schemas/ProductCrossSelling" }, - "filter": { + "products": { "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] + "$ref": "#/components/schemas/Product" } }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" - } + "total": { + "type": "integer", + "format": "int32" }, - "query": { + "streamId": { "type": "string", - "description": "The query string to search for" - }, - "associations": { - "$ref": "#/components/schemas/Associations" - }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" - } - }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } - }, - "fields": { - "type": "array", - "description": "Fields which should be returned in the search result.", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" - }, - "includes": { - "$ref": "#/components/schemas/Includes" + "format": "uuid" }, - "excludes": { - "$ref": "#/components/schemas/Excludes" + "apiAlias": { + "type": "string", + "enum": [ + "cross_selling_element" + ] } - } + }, + "required": [ + "crossSelling", + "products", + "total", + "apiAlias" + ] }, - "NoneFieldsCriteria": { + "CookieEntry": { "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "page": { - "description": "Search result page", - "type": "integer" + "cookie": { + "type": "string" }, - "term": { - "description": "Search term", + "value": { "type": "string" }, - "limit": { - "description": "Number of items per result page", + "expiration": { "type": "integer" }, - "filter": { - "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } + "name": { + "type": "string" }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" - } + "description": { + "type": "string" }, - "query": { - "type": "string", - "description": "The query string to search for" + "hidden": { + "type": "boolean" }, - "associations": { - "$ref": "#/components/schemas/Associations" + "apiAlias": { + "type": "string", + "enum": [ + "cookie_entry" + ] + } + }, + "required": [ + "cookie", + "hidden", + "apiAlias" + ] + }, + "MeasurementUnits": { + "type": "object", + "description": "Configuration of the measurement system", + "properties": { + "system": { + "type": "string", + "enum": [ + "metric", + "imperial" + ], + "default": "metric", + "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] + "units": { + "type": "object", + "description": "Units used in the measurement system.", + "properties": { + "length": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Unit of length." + }, + "weight": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." + } } + } + } + }, + "CartListPrice": { + "type": "object", + "description": "", + "properties": { + "discount": { + "type": "number" }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" - } + "percentage": { + "type": "number" }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } + "price": { + "type": "number" }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } + "apiAlias": { + "type": "string", + "enum": [ + "cart_list_price" + ] + } + }, + "required": [ + "apiAlias" + ] + }, + "CookieGroup": { + "type": "object", + "properties": { + "isRequired": { + "type": "boolean" }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" + "name": { + "type": "string" }, - "includes": { - "$ref": "#/components/schemas/Includes" + "description": { + "type": "string" }, - "excludes": { - "$ref": "#/components/schemas/Excludes" + "cookie": { + "type": "string" + }, + "value": { + "type": "string" + }, + "expiration": { + "type": "integer" + }, + "entries": { + "$ref": "#/components/schemas/CookieEntryCollection" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cookie_group" + ] } - } + }, + "not": { + "allOf": [ + { + "required": [ + "cookie" + ] + }, + { + "required": [ + "entries" + ] + } + ] + }, + "required": [ + "name", + "isRequired", + "apiAlias" + ] }, - "Associations": { + "SuccessResponse": { "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Criteria" + "properties": { + "success": { + "type": "boolean" + } } }, - "Includes": { + "CartItems": { "type": "object", - "additionalProperties": { - "type": "array", + "required": [ + "items" + ], + "properties": { "items": { - "type": "string" + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } } } }, - "Excludes": { + "AggregationMetrics": { "type": "object", - "additionalProperties": { - "type": "array", - "items": { + "properties": { + "name": { "type": "string" - } - } - }, - "Aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" }, - { - "title": "AggregationEntity", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } + "type": { + "type": "string", + "enum": [ + "avg", + "count", + "max", + "min", + "stats", + "sum" ] }, - { - "title": "AggregationFilter", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationTerms", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationHistogram", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationRange", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationRange" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "field": { + "type": "string" } + }, + "required": [ + "name", + "type", + "field" ] }, - "SubAggregations": { + "CartDeliveryPosition": { "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/AggregationHistogram" + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" }, - { - "$ref": "#/components/schemas/AggregationRange" + "latest": { + "type": "string", + "format": "date-time" } - ] + } + }, + "identifier": { + "type": "string" + }, + "lineItem": { + "$ref": "#/components/schemas/LineItem" + }, + "price": { + "$ref": "#/components/schemas/CalculatedPrice" } } }, - "TotalCountMode": { - "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", - "type": "string", - "default": "none", - "enum": [ - "none", - "exact", - "next-pages" - ] - }, - "Query": { - "type": "object", + "CustomerAddressBody": { + "description": "Added since version: 6.0.0.0", + "required": [ + "countryId", + "firstName", + "lastName", + "city", + "street" + ], "properties": { - "score": { - "type": "number" + "countryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "query": { - "oneOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] + "countryStateId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "salutationId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "zipcode": { + "type": "string" + }, + "city": { + "type": "string" + }, + "company": { + "type": "string" + }, + "street": { + "type": "string" + }, + "department": { + "type": "string" + }, + "title": { + "type": "string" + }, + "phoneNumber": { + "type": "string" + }, + "additionalAddressLine1": { + "type": "string" + }, + "additionalAddressLine2": { + "type": "string" + }, + "customFields": { + "type": "object" + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "$ref": "#/components/schemas/CountryState" + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, - "additionalProperties": true + "type": "object" }, - "Sort": { + "ProductPurchaseLimit": { "type": "object", + "description": "Current quantity purchase limits for a product.", + "required": [ + "productId", + "minPurchase", + "purchaseSteps", + "maxPurchase", + "stock", + "apiAlias" + ], "properties": { - "field": { - "type": "string" + "productId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The product ID." }, - "order": { + "minPurchase": { + "type": "integer", + "description": "Minimum quantity a customer can purchase." + }, + "purchaseSteps": { + "type": "integer", + "description": "Step increment for quantity selection." + }, + "maxPurchase": { + "type": "integer", + "description": "Maximum quantity a customer can purchase, reflecting current stock for closeout products." + }, + "stock": { + "type": [ + "integer", + "null" + ], + "description": "Current stock level of the product." + }, + "apiAlias": { "type": "string", "enum": [ - "ASC", - "DESC" + "product_purchase_limit" ] - }, - "naturalSorting": { - "type": "boolean" - }, - "type": { - "type": "string" } - }, - "required": [ - "field", - "order" - ] - }, - "Filters": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] } }, - "SimpleFilter": { + "CookieRouteResponse": { "type": "object", + "description": "Response containing cookie groups and their configuration hash.", "properties": { - "type": { + "apiAlias": { "type": "string", "enum": [ - "contains", - "equalsAny", - "prefix", - "suffix" + "cookie_groups_hash" ] }, - "field": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "required": [ - "type", - "field", - "value" - ] - }, - "EqualsFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "equals" - ] + "elements": { + "type": "array", + "description": "Collection of cookie groups", + "items": { + "$ref": "#/components/schemas/CookieGroup" + } }, - "field": { - "type": "string" + "hash": { + "type": "string", + "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", + "example": "f86b6a872cb83dbd22d838ceda1aa3d4" }, - "value": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "type": "null" - } - ] + "languageId": { + "type": "string", + "format": "uuid", + "description": "The language ID for which the cookie configuration was generated. Used to store hashes per language.", + "example": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" } }, "required": [ - "type", - "field", - "value" - ] + "elements", + "hash", + "languageId", + "apiAlias" + ], + "example": { + "apiAlias": "cookie_groups_hash", + "elements": [ + { + "isRequired": true, + "description": "Cookies required for this shop to function:", + "name": "Technically required", + "entries": [ + { + "name": "Session", + "hidden": false, + "cookie": "session-", + "apiAlias": "cookie_entry" + }, + { + "name": "Timezone", + "hidden": false, + "cookie": "timezone", + "apiAlias": "cookie_entry" + }, + { + "value": "1", + "expiration": 30, + "name": "Cookie preferences", + "hidden": true, + "cookie": "cookie-preference", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "description": "Cookies used for statistics and shop performance metrics.", + "name": "Statistics", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "Google Analytics", + "hidden": false, + "cookie": "google-analytics-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "description": "Allows Google to collect personal data for online advertising and marketing.", + "name": "Marketing", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "Google Advertising", + "hidden": false, + "cookie": "google-ads-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "name": "Comfort features", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "YouTube video", + "hidden": false, + "cookie": "youtube-video", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + } + ], + "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", + "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" + } }, - "MultiNotFilter": { + "CartItemsUpdate": { "type": "object", + "required": [ + "items" + ], "properties": { - "type": { - "type": "string", - "enum": [ - "multi", - "not" - ] - }, - "operator": { - "type": "string", - "enum": [ - "and", - "or", - "nor", - "nand" - ] - }, - "queries": { - "$ref": "#/components/schemas/Filters" + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartLineItemUpdate" + } } - }, - "required": [ - "type", - "operator", - "queries" - ] + } }, - "RangeFilter": { + "CartLineItemUpdate": { "type": "object", + "required": [ + "id" + ], "properties": { + "id": { + "type": "string" + }, "type": { - "type": "string", - "enum": [ - "range" - ] + "$ref": "#/components/schemas/OrderLineItem/properties/type" }, - "field": { + "quantity": { + "type": "integer" + }, + "referencedId": { "type": "string" }, - "parameters": { + "label": { + "type": "string" + }, + "payload": { + "type": "object" + }, + "stackable": { + "type": "boolean" + }, + "removable": { + "type": "boolean" + }, + "coverId": { + "type": "string" + }, + "priceDefinition": { "type": "object", "properties": { - "gte": { - "type": "number" + "type": { + "type": "string" }, - "gt": { + "price": { "type": "number" }, - "lte": { + "percentage": { "type": "number" }, - "lt": { + "quantity": { + "type": "integer" + }, + "isCalculated": { + "type": "boolean" + }, + "listPrice": { "type": "number" + }, + "taxRules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number" + }, + "percentage": { + "type": "number" + } + } + } } } } - }, - "required": [ - "type", - "field", - "parameters" - ] + } }, - "Association": { - "additionalProperties": { - "$ref": "#/components/schemas/Association" + "NavigationRouteResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" } }, - "OrderRouteResponse": { + "CookieGroupCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CookieGroup" + } + }, + "ProductListingFlags": { "type": "object", + "description": "Additional flags for product listings", "properties": { - "orders": { - "type": "object", - "allOf": [ + "no-aggregations": { + "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", + "oneOf": [ { - "type": "object", - "required": [ - "elements" - ], - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order" - } - } - } + "type": "string" }, { - "$ref": "#/components/schemas/EntitySearchResult" + "type": "null" } ] }, - "paymentChangeable": { - "type": "object", - "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", - "additionalProperties": { - "type": "boolean" - } - } - }, - "required": [ - "orders" - ] - }, - "CartDeliveryInformation": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_information" - ] - }, - "freeDelivery": { - "type": "boolean" - }, - "deliveryTime": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer" - }, - "max": { - "type": "integer" - }, - "unit": { - "type": "string" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_time" - ] - } - } - }, - "height": { - "type": "integer" - }, - "length": { - "type": "integer" - }, - "restockTime": { - "type": "integer" - }, - "stock": { - "type": "integer" - }, - "weight": { - "type": "integer" - }, - "width": { - "type": "integer" - } - }, - "required": [ - "apiAlias" - ] - }, - "WishlistLoadRouteResponse": { - "type": "object", - "required": [ - "products" - ], - "properties": { - "wishlist": { - "type": "object", - "properties": { - "customerId": { + "only-aggregations": { + "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", + "oneOf": [ + { "type": "string" }, - "salesChannelId": { - "type": "string" + { + "type": "null" } - } - }, - "products": { - "$ref": "#/components/schemas/ProductListingResult" - } - } - }, - "AggregationEntity": { - "title": "AggregationEntity", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "entity" ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "definition": { - "description": "The entity definition e.g \"product_manufacturer\".", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field", - "definition" - ] - }, - "AggregationFilter": { - "title": "AggregationFilter", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "filter" - ] - }, - "filter": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Filters" - } } - }, - "required": [ - "name", - "type", - "filter" - ] + } }, - "AggregationTerms": { - "title": "AggregationTerms", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "terms" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "limit": { - "description": "The number of terms to return", - "type": "number" - }, - "sort": { - "type": "array", - "description": "Sorting the aggregation result.", - "items": { - "$ref": "#/components/schemas/Sort" + "ShippingMethodPageRouteResponse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "deliveryTimeId": { + "type": "string" + }, + "deliveryTime": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "min": { + "type": "integer", + "format": "int32" + }, + "max": { + "type": "integer", + "format": "int32" + }, + "unit": { + "type": "string" + } + } + }, + "translations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + } + } + } + }, + "orderDeliveries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "orderId": { + "type": "string" + }, + "shippingOrderAddressId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "shippingDateEarliest": { + "type": "string", + "format": "date-time" + }, + "shippingDateLatest": { + "type": "string", + "format": "date-time" + }, + "stateId": { + "type": "string" + } + } + } + }, + "salesChannelDefaultAssignments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } + } + }, + "salesChannels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } + } + }, + "availabilityRule": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "priority": { + "type": "integer", + "format": "int32" + }, + "invalid": { + "type": "boolean" + } + } + }, + "availabilityRuleId": { + "type": "string" + }, + "prices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "ruleId": { + "type": "string" + }, + "calculation": { + "type": "integer", + "format": "int32" + }, + "quantityStart": { + "type": "number", + "format": "float" + }, + "quantityEnd": { + "type": "number", + "format": "float" + }, + "price": { + "type": "number", + "format": "float" + }, + "calculationRuleId": { + "type": "string" + } + } + } + }, + "mediaId": { + "type": "string" + }, + "media": { + "type": "object", + "properties": { + "userId": { + "type": "string" + }, + "mimeType": { + "type": "string" + }, + "fileExtension": { + "type": "string" + }, + "fileSize": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string" + }, + "metaDataRaw": { + "type": "string" + }, + "mediaTypeRaw": { + "type": "string" + }, + "uploadedAt": { + "type": "string", + "format": "date-time" + }, + "alt": { + "type": "string" + }, + "url": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "mediaFolderId": { + "type": "string" + }, + "private": { + "type": "boolean" + }, + "thumbnailsRo": { + "type": "string" + } + } + }, + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + } } } - }, - "required": [ - "name", - "type", - "field" - ] + } }, - "AggregationHistogram": { - "title": "AggregationHistogram", + "CartPriceReference": { "type": "object", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "histogram" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "purchaseUnit": { + "type": "number" }, - "interval": { - "description": "The interval of the histogram", + "referenceUnit": { "type": "number" }, - "format": { - "description": "The format of the histogram", + "unitName": { "type": "string" }, - "timeZone": { - "description": "The timezone of the histogram", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "AggregationRange": { - "title": "AggregationRange", - "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" + "price": { + "type": "number" }, - "type": { - "description": "The type of aggregation", + "apiAlias": { "type": "string", "enum": [ - "range" + "cart_price_reference" ] }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] }, - "ranges": { - "description": "The ranges of the aggregation", - "type": "array", - "items": { - "type": "object", - "anyOf": [ - { - "type": "object", - "title": "From and to", - "properties": { - "from": { - "type": "number", - "description": "The lower bound of the range" - }, - "to": { - "type": "number", - "description": "The upper bound of the range" - } - }, - "required": [ - "from", - "to" - ] - }, - { - "type": "object", - "title": "From only", - "properties": { - "from": { - "type": "string", - "description": "The lower bound of the range" - } - }, - "required": [ - "from" - ] - }, - { - "type": "object", - "title": "To only", - "properties": { - "to": { - "type": "string", - "description": "The upper bound of the range" - } + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" }, - "required": [ - "to" - ] + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } } - ] - } - } - }, - "required": [ - "name", - "type", - "field", - "ranges" - ] - }, - "CartListPrice": { - "type": "object", - "description": "", - "properties": { - "discount": { - "type": "number" - }, - "percentage": { - "type": "number" + }, + { + "type": "null" + } + ] }, - "price": { - "type": "number" + "hasRange": { + "type": "boolean" }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_list_price" + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } ] } }, "required": [ - "apiAlias" + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" ] }, - "Cart": { + "Breadcrumb": { "type": "object", "properties": { "name": { - "description": "Name of the cart - for example `guest-cart`", - "type": "string" - }, - "token": { - "description": "Context token identifying the cart and the user session", "type": "string" }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" + "categoryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "lineItems": { - "description": "All items within the cart", - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } + "type": { + "$ref": "#/components/schemas/Category/properties/type" }, - "errors": { + "translated": { "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "anyOf": [ - { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartError" - } + "additionalProperties": true, + "properties": { + "customFields": { + "type": "object" }, - { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "code": { - "type": "number" - }, - "key": { - "type": "string" - }, - "level": { - "type": "number" - }, - "message": { - "type": "string" - }, - "messageKey": { - "type": "string" - } - }, - "required": [ - "code", - "key", - "level", - "message", - "messageKey" - ] - } + "slotConfig": { + "type": "object" + }, + "linkType": { + "$ref": "#/components/schemas/Category/properties/linkType" + }, + "internalLink": { + "type": "string" + }, + "externalLink": { + "type": "string" + }, + "linkNewTab": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "metaTitle": { + "type": "string" + }, + "metaDescription": { + "type": "string" + }, + "keywords": { + "type": "string" } - ] + } }, - "deliveries": { + "path": { + "type": "string" + }, + "seoUrls": { "type": "array", "items": { - "$ref": "#/components/schemas/CartDelivery" + "$ref": "#/components/schemas/SeoUrl" } }, - "transactions": { - "description": "A list of all payment transactions associated with the current cart.", + "apiAlias": { + "type": "string", + "enum": [ + "breadcrumb" + ] + } + }, + "required": [ + "name", + "categoryId", + "type", + "translated", + "path", + "apiAlias" + ] + }, + "CalculatedPrice": { + "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", + "properties": { + "unitPrice": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "rawTotal": { + "type": "number" + }, + "totalPrice": { + "type": "number" + }, + "taxStatus": { + "type": "string", + "enum": [ + "net", + "tax-free" + ] + }, + "calculatedTaxes": { "type": "array", "items": { "type": "object", "properties": { - "paymentMethodId": { - "type": "string" + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] }, - "amount": { - "$ref": "#/components/schemas/CalculatedPrice" + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" } - } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] } }, - "modified": { - "type": "boolean" - }, - "customerComment": { - "description": "A comment that can be added to the cart.", + "referencePrice": { "oneOf": [ { - "type": "string" + "$ref": "#/components/schemas/CartPriceReference" }, { "type": "null" } ] }, - "affiliateCode": { - "description": "An affiliate tracking code", + "listPrice": { "oneOf": [ { - "type": "string" + "$ref": "#/components/schemas/CartListPrice" }, { "type": "null" } ] }, - "campaignCode": { - "description": "A campaign tracking code", + "positionPrice": { + "type": "number" + }, + "netPrice": { + "type": "number" + }, + "regulationPrice": { "oneOf": [ { - "type": "string" + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } }, { "type": "null" } ] }, - "apiAlias": { - "type": "string", - "enum": [ - "cart" - ] - } - }, - "required": [ - "price", - "apiAlias" - ] - }, - "CookieGroup": { - "type": "object", - "properties": { - "isRequired": { + "hasRange": { "type": "boolean" }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "cookie": { - "type": "string" - }, - "value": { - "type": "string" - }, - "expiration": { - "type": "integer" - }, - "entries": { - "$ref": "#/components/schemas/CookieEntryCollection" + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] }, "apiAlias": { "type": "string", "enum": [ - "cookie_group" + "calculated_price" ] - } - }, - "not": { - "allOf": [ - { - "required": [ - "cookie" - ] - }, - { - "required": [ - "entries" - ] - } - ] - }, - "required": [ - "name", - "isRequired", - "apiAlias" - ] - }, - "MeasurementUnits": { - "type": "object", - "description": "Configuration of the measurement system", - "properties": { - "system": { - "type": "string", - "enum": [ - "metric", - "imperial" - ], - "default": "metric", - "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." }, - "units": { - "type": "object", - "description": "Units used in the measurement system.", - "properties": { - "length": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm", - "description": "Unit of length." - }, - "weight": { - "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg", - "description": "Unit of weight." + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } } } } + }, + "required": [ + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "referencePrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitPrice", + "positionPrice", + "netPrice", + "taxRules", + "rawTotal", + "taxStatus" + ] + }, + "Association": { + "additionalProperties": { + "$ref": "#/components/schemas/Association" } }, - "Price": { + "LineItemType": { + "type": "string", + "deprecated": true, + "enum": [ + "product", + "credit", + "custom", + "promotion", + "discount", + "container", + "quantity" + ] + }, + "LineItem": { "type": "object", - "description": "Price object", "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } }, - "gross": { - "description": "", - "type": "number" + "cover": { + "$ref": "#/components/schemas/Media" }, - "net": { - "description": "", - "type": "number" + "dataContextHash": { + "type": "string" }, - "linked": { - "description": "", + "dataTimestamp": { + "type": "string" + }, + "deliveryInformation": { + "$ref": "#/components/schemas/CartDeliveryInformation" + }, + "description": { + "type": "string" + }, + "good": { "type": "boolean" }, - "listPrice": { - "description": "", + "id": { + "type": "string" + }, + "label": { + "type": "string" + }, + "modified": { + "type": "boolean" + }, + "modifiedByApp": { + "type": "boolean" + }, + "payload": { + "$ref": "#/components/schemas/ProductJsonApi" + }, + "price": { "type": "object", "properties": { - "currencyId": { + "apiAlias": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "enum": [ + "calculated_price" + ] }, - "gross": { - "description": "", + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] + }, + "quantity": { "type": "number" }, - "net": { - "description": "", + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] + }, + "totalPrice": { "type": "number" }, - "linked": { - "description": "", - "type": "boolean" + "unitPrice": { + "type": "number" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } } }, "required": [ - "gross", - "net" + "apiAlias", + "totalPrice", + "quantity", + "unitPrice" ] }, - "regulationPrice": { - "description": "", + "priceDefinition": { + "$ref": "#/components/schemas/CartPriceQuantity" + }, + "quantity": { + "type": "number" + }, + "quantityInformation": { "type": "object", "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "", + "maxPurchase": { "type": "number" }, - "net": { - "description": "", + "minPurchase": { "type": "number" }, - "linked": { - "description": "", - "type": "boolean" + "purchaseSteps": { + "type": "number" } - }, - "required": [ - "gross", - "net" + } + }, + "referencedId": { + "type": "string" + }, + "removable": { + "type": "boolean" + }, + "stackable": { + "type": "boolean" + }, + "states": { + "deprecated": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "is-physical", + "is-download" + ] + } + }, + "type": { + "$ref": "#/components/schemas/OrderLineItem/properties/type" + }, + "uniqueIdentifier": { + "type": "string" + } + }, + "required": [ + "id", + "type" + ] + }, + "ListPrice": { + "type": "object", + "description": "", + "properties": { + "discount": { + "type": "number" + }, + "percentage": { + "type": "number" + }, + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_list_price" ] } }, "required": [ - "currencyId", - "gross", - "net" + "apiAlias" ] }, - "ContextMeasurementSystemInfo": { + "AggregationEntity": { + "title": "AggregationEntity", "type": "object", - "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", "properties": { - "system": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", "type": "string", "enum": [ - "metric", - "imperial" - ], - "default": "metric", - "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." + "entity" + ] }, - "units": { - "type": "object", - "description": "Units used in the measurement system.", - "properties": { - "length": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm", - "description": "Unit of length." - }, - "weight": { - "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg", - "description": "Unit of weight." - } - } + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "definition": { + "description": "The entity definition e.g \"product_manufacturer\".", + "type": "string" } - } + }, + "required": [ + "name", + "type", + "field", + "definition" + ] }, - "FindProductVariantRouteResponse": { + "AggregationFilter": { + "title": "AggregationFilter", "type": "object", "properties": { - "foundCombination": { - "type": "object", - "properties": { - "variantId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "options": { - "type": "array", - "items": { - "type": "string" - } - } + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "filter" + ] + }, + "filter": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Filters" } } - } + }, + "required": [ + "name", + "type", + "filter" + ] }, - "ListPrice": { + "AggregationTerms": { + "title": "AggregationTerms", "type": "object", - "description": "", "properties": { - "discount": { - "type": "number" + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "percentage": { - "type": "number" + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "terms" + ] }, - "price": { + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "limit": { + "description": "The number of terms to return", "type": "number" }, - "apiAlias": { + "sort": { + "type": "array", + "description": "Sorting the aggregation result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "AggregationHistogram": { + "title": "AggregationHistogram", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", "type": "string", "enum": [ - "cart_list_price" + "histogram" ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "interval": { + "description": "The interval of the histogram", + "type": "number" + }, + "format": { + "description": "The format of the histogram", + "type": "string" + }, + "timeZone": { + "description": "The timezone of the histogram", + "type": "string" } }, "required": [ - "apiAlias" + "name", + "type", + "field" ] }, - "ProductListingResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EntitySearchResult" + "AggregationRange": { + "title": "AggregationRange", + "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - { - "type": "object", - "properties": { - "currentFilters": { - "type": "object", - "description": "Contains the state of the filters. These can be used to create listing filters.", - "properties": { - "navigationId": { - "type": "string" - }, - "manufacturer": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "price": { - "type": "object", - "properties": { - "min": { - "type": "integer", - "default": 0 - }, - "max": { - "type": "integer", - "default": 0 - } - }, - "required": [ - "min", - "max" - ] - }, - "rating": { - "oneOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "shipping-free": { - "type": "boolean", - "default": false + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "range" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "ranges": { + "description": "The ranges of the aggregation", + "type": "array", + "items": { + "type": "object", + "anyOf": [ + { + "type": "object", + "title": "From and to", + "properties": { + "from": { + "type": "number", + "description": "The lower bound of the range" + }, + "to": { + "type": "number", + "description": "The upper bound of the range" + } }, + "required": [ + "from", + "to" + ] + }, + { + "type": "object", + "title": "From only", "properties": { - "type": "array", - "items": { + "from": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "description": "The lower bound of the range" } }, - "search": { - "type": "string" - } + "required": [ + "from" + ] }, - "required": [ - "manufacturer", - "navigationId", - "price", - "properties", - "rating", - "shipping-free" - ] - }, - "availableSortings": { - "type": "array", - "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", - "items": { + { "type": "object", + "title": "To only", "properties": { - "label": { - "type": "string" - }, - "translated": { - "type": "object", - "properties": { - "label": { - "type": "string" - } - }, - "required": [ - "label" - ] - }, - "key": { - "type": "string" - }, - "priority": { - "type": "number" - }, - "apiAlias": { + "to": { "type": "string", - "enum": [ - "product_sorting" - ] + "description": "The upper bound of the range" } }, "required": [ - "label", - "translated", - "key", - "priority", - "apiAlias" + "to" ] } - }, - "sorting": { - "type": "string" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - }, - "entity": { - "type": "string", - "enum": [ - "product" - ] - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_listing" - ] - } - }, - "required": [ - "elements", - "availableSortings", - "currentFilters", - "apiAlias" - ] + ] + } } + }, + "required": [ + "name", + "type", + "field", + "ranges" ] }, "SearchByImageSearchTermResponse": { @@ -20059,6 +21220,47 @@ "required": [ "categories" ] + }, + "BundleProduct": { + "type": "object", + "required": [ + "id", + "productNumber" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "name": { + "type": "string" + }, + "productNumber": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "available": { + "type": "boolean" + }, + "bundleItems": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BundleItem" + } + }, + "bundleDiscounts": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BundleDiscount" + } + }, + "apiAlias": { + "type": "string", + "example": "product" + } + } } }, "responses": { @@ -20197,38 +21399,25 @@ "204": { "description": "No Content" }, - "CurrencyListResponse": { - "description": "Entity search result containing currencies.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Currency" - } - } - } - } - }, - "ProductListResponse": { - "description": "Entity search result containing products", + "SeoUrlListResponse": { + "description": "Entity search result containing seo urls.", "content": { "application/json": { "schema": { "allOf": [ { - "required": [ - "elements" - ], "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Product" + "$ref": "#/components/schemas/SeoUrl" } } }, - "type": "object" + "type": "object", + "required": [ + "elements" + ] }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -20238,25 +21427,25 @@ } } }, - "SeoUrlListResponse": { - "description": "Entity search result containing seo urls.", + "ProductListResponse": { + "description": "Entity search result containing products", "content": { "application/json": { "schema": { "allOf": [ { + "required": [ + "elements" + ], "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/SeoUrl" + "$ref": "#/components/schemas/Product" } } }, - "type": "object", - "required": [ - "elements" - ] + "type": "object" }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -20266,33 +21455,21 @@ } } }, - "CategoryListResponse": { - "description": "Entity search result containing categories.", + "CurrencyListResponse": { + "description": "Entity search result containing currencies.", "content": { "application/json": { "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - } - } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "type": "array", + "items": { + "$ref": "#/components/schemas/Currency" + } } } } }, - "LanguageListResponse": { - "description": "Entity search result containing languages.", + "CountryListResponse": { + "description": "Entity search result containing countries.", "content": { "application/json": { "schema": { @@ -20302,13 +21479,10 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Language" + "$ref": "#/components/schemas/Country" } } }, - "required": [ - "elements" - ], "type": "object" }, { @@ -20319,8 +21493,8 @@ } } }, - "CountryStateListResponse": { - "description": "Entity search result containing countries.", + "SalutationListResponse": { + "description": "Entity search result containing salutations.", "content": { "application/json": { "schema": { @@ -20330,60 +21504,36 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/CountryState" + "$ref": "#/components/schemas/Salutation" } } }, "type": "object" }, { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } - }, - "ContextTokenResponse": { - "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", - "headers": { - "sw-context-token": { - "description": "Contains sw-context-token value", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "description": "Define the URL which browser will be redirected to", - "type": "string" + "$ref": "#/components/schemas/EntitySearchResult" } - } + ] } } } }, - "SalutationListResponse": { - "description": "Entity search result containing salutations.", + "CategoryListResponse": { + "description": "Entity search result containing categories.", "content": { "application/json": { "schema": { "allOf": [ { + "type": "object", "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Salutation" + "$ref": "#/components/schemas/Category" } } - }, - "type": "object" + } }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -20393,29 +21543,18 @@ } } }, - "ShippingMethodListResponse": { - "description": "Entity search result containing shipping methods.", + "CountryStateListResponse": { + "description": "Entity search result containing countries.", "content": { "application/json": { "schema": { "allOf": [ { - "required": [ - "elements" - ], "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/ShippingMethod" + "$ref": "#/components/schemas/CountryState" } } }, @@ -20429,8 +21568,8 @@ } } }, - "CountryListResponse": { - "description": "Entity search result containing countries.", + "LanguageListResponse": { + "description": "Entity search result containing languages.", "content": { "application/json": { "schema": { @@ -20440,10 +21579,13 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Country" + "$ref": "#/components/schemas/Language" } } }, + "required": [ + "elements" + ], "type": "object" }, { @@ -20454,6 +21596,30 @@ } } }, + "ContextTokenResponse": { + "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", + "headers": { + "sw-context-token": { + "description": "Contains sw-context-token value", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redirectUrl": { + "description": "Define the URL which browser will be redirected to", + "type": "string" + } + } + } + } + } + }, "OpenApi3": { "description": "Returns information about the store API.", "content": { @@ -20668,6 +21834,42 @@ } } } + }, + "ShippingMethodListResponse": { + "description": "Entity search result containing shipping methods.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "required": [ + "elements" + ], + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingMethod" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } } }, "parameters": { @@ -20691,6 +21893,16 @@ "default": "application/json" } }, + "swLanguageId": { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, "noAggregations": { "name": "no-aggregations", "in": "query", @@ -20928,204 +22140,55 @@ "name": "sw-access-key", "in": "header" }, - "ContextToken": { - "type": "apiKey", - "description": "Identifies an anonymous or identified user session", - "name": "sw-context-token", - "in": "header" - } - } - }, - "security": [ - { - "ApiKey": [] - } - ], - "paths": { - "/permission": { - "get": { - "tags": [ - "B2B Employee Management" - ], - "summary": "Fetch all available permissions", - "description": "This route is used to fetch all available permissions", - "operationId": "readPermissions", - "responses": { - "200": { - "description": "Permission collection", - "content": { - "application/json": { - "schema": { - "type": "object", - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "type": "object", - "properties": { - "permissionName": { - "type": "string" - }, - "permissionDependencies": { - "type": "array", - "items": { - "type": "string" - } - }, - "permissionGroupName": { - "type": "string" - } - } - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - }, - "post": { - "tags": [ - "B2B Employee Management" - ], - "summary": "Add a new permission", - "description": "This route is used to add a new permissions", - "operationId": "addPermission", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "properties": { - "name": { - "description": "Name of the new permission", - "type": "string" - }, - "group": { - "description": "Group of the new permission", - "type": "string" - }, - "dependencies": { - "description": "Optional dependencies for the new permission", - "type": "array", - "items": { - "type": "string" - } - } - }, - "type": "object" - } - } - } - }, - "parameters": [], - "responses": { - "200": { - "description": "Permission collection", - "content": { - "application/json": { - "schema": { - "type": "object", - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "type": "object", - "properties": { - "permissionName": { - "type": "string" - }, - "permissionDependencies": { - "type": "array", - "items": { - "type": "string" - } - }, - "permissionGroupName": { - "type": "string" - } - } - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] + "ContextToken": { + "type": "apiKey", + "description": "Identifies an anonymous or identified user session", + "name": "sw-context-token", + "in": "header" } - }, - "/employee/create": { + } + }, + "security": [ + { + "ApiKey": [] + } + ], + "paths": { + "/role/create": { "post": { "tags": [ "B2B Employee Management" ], - "summary": "Create a single employee and return the employee", - "description": "This route is used to create and return an employee", - "operationId": "createEmployee", - "parameters": [], + "summary": "Create a single role and return the role", + "description": "This route is used to create and return an role", + "operationId": "createRole", + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "properties": { - "firstName": { - "description": "First name of the new employee", - "type": "string" - }, - "lastName": { - "description": "Last name of the new employee", - "type": "string" - }, - "email": { - "description": "Email of the new employee", + "name": { + "description": "Name of the new role", "type": "string" }, - "languageId": { - "description": "Identifier of the [language](#/System%20%26%20Context/readLanguages) to be set for the new employee.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "permissions": { + "description": "Permissions of the new role", + "type": "array", + "items": { + "type": "string" + } }, - "roleId": { - "description": "Id of the role of the new employee", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "isDefaultRole": { + "description": "Ability to set the new role as default", + "type": "boolean" } }, - "required": [ - "firstName", - "lastName", - "email", - "languageId" - ], "type": "object" } } @@ -21133,11 +22196,11 @@ }, "responses": { "200": { - "description": "Employee entity", + "description": "Role entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/B2bEmployee" + "$ref": "#/components/schemas/B2bComponentsRole" } } } @@ -21150,15 +22213,19 @@ ] } }, - "/employee": { + "/role": { "get": { "tags": [ "B2B Employee Management" ], - "summary": "Fetch a list of employees", - "description": "This route is used to load employees", - "operationId": "readEmployees", - "parameters": [], + "summary": "Fetch a list of roles", + "description": "This route is used to load roles", + "operationId": "readRoles", + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ], "requestBody": { "required": false, "content": { @@ -21175,7 +22242,7 @@ }, "responses": { "200": { - "description": "Entity search result containing employees", + "description": "Entity search result containing roles", "content": { "application/json": { "schema": { @@ -21186,7 +22253,7 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/B2bEmployee" + "$ref": "#/components/schemas/B2bComponentsRole" } } }, @@ -21211,10 +22278,14 @@ "tags": [ "B2B Employee Management" ], - "summary": "Fetch a list of employees", - "description": "This route is used to load employees", - "operationId": "readEmployeesPOST", - "parameters": [], + "summary": "Fetch a list of roles", + "description": "This route is used to load roles", + "operationId": "readRolesPOST", + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ], "requestBody": { "required": false, "content": { @@ -21231,7 +22302,7 @@ }, "responses": { "200": { - "description": "Entity search result containing employees", + "description": "Entity search result containing roles", "content": { "application/json": { "schema": { @@ -21242,7 +22313,7 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/B2bEmployee" + "$ref": "#/components/schemas/B2bComponentsRole" } } }, @@ -21264,33 +22335,36 @@ ] } }, - "/employee/{id}": { + "/role/{id}": { "get": { "tags": [ "B2B Employee Management" ], - "summary": "Fetch one employee by id", - "description": "This route is used to fetch one employee by id\n\n**Available Associations:**\n- `role`\n- `language`\n- `organization`", - "operationId": "readB2bEmployee", + "summary": "Fetch one role by id", + "description": "This route is used to fetch one role by id", + "operationId": "readRole", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the employee to be read", + "description": "Identifier of the role to be fetched", "required": true, "schema": { "type": "string", - "format": "uuid" + "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "description": "Employee entity", + "description": "Role entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/B2bEmployee" + "$ref": "#/components/schemas/B2bComponentsRole" } } } @@ -21306,19 +22380,22 @@ "tags": [ "B2B Employee Management" ], - "summary": "Update one employee by id", - "description": "This route is used to update one employee by id", - "operationId": "updateEmployee", + "summary": "Update one role by id", + "description": "This route is used to update one role by id", + "operationId": "updateRole", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the employee to be updated", + "description": "Identifier of the role to be updated", "required": true, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { @@ -21327,21 +22404,20 @@ "application/json": { "schema": { "properties": { - "firstName": { - "description": "New first name of the employee", - "type": "string" - }, - "lastName": { - "description": "New last name of the employee", + "name": { + "description": "New name of the role", "type": "string" }, - "email": { - "description": "New email of the employee", - "type": "string" + "permissions": { + "description": "New permissions of the role", + "type": "array", + "items": { + "type": "string" + } }, - "roleId": { - "description": "New id of the role of the employee", - "type": "string" + "isDefaultRole": { + "description": "Ability to set the role as default", + "type": "boolean" } }, "type": "object" @@ -21351,11 +22427,11 @@ }, "responses": { "200": { - "description": "Employee entity", + "description": "Role entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/B2bEmployee" + "$ref": "#/components/schemas/B2bComponentsRole" } } } @@ -21371,14 +22447,14 @@ "tags": [ "B2B Employee Management" ], - "summary": "Delete one employee by id", - "description": "This route is used to delete one employee by id", - "operationId": "deleteEmployee", + "summary": "Delete one role by id", + "description": "This route is used to delete one role by id", + "operationId": "deleteRole", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the employee to be deleted", + "description": "Identifier of the role to be fetched", "required": true, "schema": { "type": "string", @@ -21398,35 +22474,135 @@ ] } }, - "/employee/reinvite/{id}": { + "/role/default": { "post": { "tags": [ "B2B Employee Management" ], - "summary": "Reinvite employee by id", - "description": "This route is used to reinvite an employee via email by id", - "operationId": "reinviteEmployee", + "summary": "Sets the default role Id for new employees", + "description": "This route is used to update the defaultRoleId for new employees", + "operationId": "updateDefaultRoleId", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "id": { + "description": "Id of the roleId to be set as default", + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "204": { + "description": "No content response" + } + }, + "security": [ + { + "ApiKey": [] + } + ], "parameters": [ { - "name": "id", - "in": "path", - "description": "Identifier of the employee to be reinvited", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/permission": { + "get": { + "tags": [ + "B2B Employee Management" + ], + "summary": "Fetch all available permissions", + "description": "This route is used to fetch all available permissions", + "operationId": "readPermissions", + "responses": { + "200": { + "description": "Permission collection", + "content": { + "application/json": { + "schema": { + "type": "object", + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "type": "object", + "properties": { + "permissionName": { + "type": "string" + }, + "permissionDependencies": { + "type": "array", + "items": { + "type": "string" + } + }, + "permissionGroupName": { + "type": "string" + } + } + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } } } + }, + "security": [ + { + "ApiKey": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + }, + "post": { + "tags": [ + "B2B Employee Management" ], + "summary": "Add a new permission", + "description": "This route is used to add a new permissions", + "operationId": "addPermission", "requestBody": { "required": true, "content": { "application/json": { "schema": { "properties": { - "storefrontUrl": { - "description": "URL of the storefront domain", + "name": { + "description": "Name of the new permission", + "type": "string" + }, + "group": { + "description": "Group of the new permission", "type": "string" + }, + "dependencies": { + "description": "Optional dependencies for the new permission", + "type": "array", + "items": { + "type": "string" + } } }, "type": "object" @@ -21434,13 +22610,48 @@ } } }, + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ], "responses": { "200": { - "description": "Employee entity", + "description": "Permission collection", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/B2bEmployee" + "type": "object", + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "type": "object", + "properties": { + "permissionName": { + "type": "string" + }, + "permissionDependencies": { + "type": "array", + "items": { + "type": "string" + } + }, + "permissionGroupName": { + "type": "string" + } + } + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -21453,37 +22664,54 @@ ] } }, - "/role/create": { + "/employee/create": { "post": { "tags": [ "B2B Employee Management" ], - "summary": "Create a single role and return the role", - "description": "This route is used to create and return an role", - "operationId": "createRole", - "parameters": [], + "summary": "Create a single employee and return the employee", + "description": "This route is used to create and return an employee", + "operationId": "createEmployee", + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "properties": { - "name": { - "description": "Name of the new role", + "firstName": { + "description": "First name of the new employee", "type": "string" }, - "permissions": { - "description": "Permissions of the new role", - "type": "array", - "items": { - "type": "string" - } + "lastName": { + "description": "Last name of the new employee", + "type": "string" }, - "isDefaultRole": { - "description": "Ability to set the new role as default", - "type": "boolean" + "email": { + "description": "Email of the new employee", + "type": "string" + }, + "languageId": { + "description": "Identifier of the [language](#/System%20%26%20Context/readLanguages) to be set for the new employee.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "roleId": { + "description": "Id of the role of the new employee", + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, + "required": [ + "firstName", + "lastName", + "email", + "languageId" + ], "type": "object" } } @@ -21491,11 +22719,11 @@ }, "responses": { "200": { - "description": "Role entity", + "description": "Employee entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/B2bComponentsRole" + "$ref": "#/components/schemas/B2bEmployee" } } } @@ -21508,15 +22736,19 @@ ] } }, - "/role": { + "/employee": { "get": { "tags": [ "B2B Employee Management" ], - "summary": "Fetch a list of roles", - "description": "This route is used to load roles", - "operationId": "readRoles", - "parameters": [], + "summary": "Fetch a list of employees", + "description": "This route is used to load employees", + "operationId": "readEmployees", + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ], "requestBody": { "required": false, "content": { @@ -21533,7 +22765,7 @@ }, "responses": { "200": { - "description": "Entity search result containing roles", + "description": "Entity search result containing employees", "content": { "application/json": { "schema": { @@ -21544,7 +22776,7 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/B2bComponentsRole" + "$ref": "#/components/schemas/B2bEmployee" } } }, @@ -21569,10 +22801,14 @@ "tags": [ "B2B Employee Management" ], - "summary": "Fetch a list of roles", - "description": "This route is used to load roles", - "operationId": "readRolesPOST", - "parameters": [], + "summary": "Fetch a list of employees", + "description": "This route is used to load employees", + "operationId": "readEmployeesPOST", + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ], "requestBody": { "required": false, "content": { @@ -21589,7 +22825,7 @@ }, "responses": { "200": { - "description": "Entity search result containing roles", + "description": "Entity search result containing employees", "content": { "application/json": { "schema": { @@ -21600,7 +22836,7 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/B2bComponentsRole" + "$ref": "#/components/schemas/B2bEmployee" } } }, @@ -21622,33 +22858,36 @@ ] } }, - "/role/{id}": { + "/employee/{id}": { "get": { "tags": [ "B2B Employee Management" ], - "summary": "Fetch one role by id", - "description": "This route is used to fetch one role by id", - "operationId": "readRole", + "summary": "Fetch one employee by id", + "description": "This route is used to fetch one employee by id\n\n**Available Associations:**\n- `role`\n- `language`\n- `organization`", + "operationId": "readB2bEmployee", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the role to be fetched", + "description": "Identifier of the employee to be read", "required": true, "schema": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "uuid" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "description": "Role entity", + "description": "Employee entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/B2bComponentsRole" + "$ref": "#/components/schemas/B2bEmployee" } } } @@ -21664,19 +22903,22 @@ "tags": [ "B2B Employee Management" ], - "summary": "Update one role by id", - "description": "This route is used to update one role by id", - "operationId": "updateRole", + "summary": "Update one employee by id", + "description": "This route is used to update one employee by id", + "operationId": "updateEmployee", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the role to be updated", + "description": "Identifier of the employee to be updated", "required": true, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { @@ -21685,20 +22927,21 @@ "application/json": { "schema": { "properties": { - "name": { - "description": "New name of the role", + "firstName": { + "description": "New first name of the employee", "type": "string" }, - "permissions": { - "description": "New permissions of the role", - "type": "array", - "items": { - "type": "string" - } + "lastName": { + "description": "New last name of the employee", + "type": "string" }, - "isDefaultRole": { - "description": "Ability to set the role as default", - "type": "boolean" + "email": { + "description": "New email of the employee", + "type": "string" + }, + "roleId": { + "description": "New id of the role of the employee", + "type": "string" } }, "type": "object" @@ -21708,11 +22951,11 @@ }, "responses": { "200": { - "description": "Role entity", + "description": "Employee entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/B2bComponentsRole" + "$ref": "#/components/schemas/B2bEmployee" } } } @@ -21728,14 +22971,14 @@ "tags": [ "B2B Employee Management" ], - "summary": "Delete one role by id", - "description": "This route is used to delete one role by id", - "operationId": "deleteRole", + "summary": "Delete one employee by id", + "description": "This route is used to delete one employee by id", + "operationId": "deleteEmployee", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the role to be fetched", + "description": "Identifier of the employee to be deleted", "required": true, "schema": { "type": "string", @@ -21755,22 +22998,37 @@ ] } }, - "/role/default": { + "/employee/reinvite/{id}": { "post": { "tags": [ "B2B Employee Management" ], - "summary": "Sets the default role Id for new employees", - "description": "This route is used to update the defaultRoleId for new employees", - "operationId": "updateDefaultRoleId", + "summary": "Reinvite employee by id", + "description": "This route is used to reinvite an employee via email by id", + "operationId": "reinviteEmployee", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Identifier of the employee to be reinvited", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "properties": { - "id": { - "description": "Id of the roleId to be set as default", + "storefrontUrl": { + "description": "URL of the storefront domain", "type": "string" } }, @@ -21780,8 +23038,15 @@ } }, "responses": { - "204": { - "description": "No content response" + "200": { + "description": "Employee entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/B2bEmployee" + } + } + } } }, "security": [ @@ -21809,6 +23074,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { @@ -21848,6 +23116,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { @@ -21874,10 +23145,14 @@ "tags": [ "B2B Quote Management" ], - "summary": "Request new quote", - "description": "This route is used to request a new quote from the store", - "operationId": "requestQuote", - "parameters": [], + "summary": "Request new quote", + "description": "This route is used to request a new quote from the store", + "operationId": "requestQuote", + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ], "requestBody": { "required": false, "content": { @@ -21921,7 +23196,11 @@ "summary": "Fetch a list of quotes", "description": "This route is used to load quotes", "operationId": "readQuotes", - "parameters": [], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ], "requestBody": { "required": false, "content": { @@ -21989,6 +23268,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { @@ -22042,6 +23324,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { @@ -22090,6 +23375,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { @@ -22138,6 +23426,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { @@ -22190,6 +23481,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { @@ -22255,6 +23549,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { @@ -22281,12 +23578,15 @@ { "name": "id", "in": "path", - "description": "Identifier of the quote to be reinvited", + "description": "Identifier of the quote to send message", "required": true, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { @@ -22317,6 +23617,51 @@ ] } }, + "/quote/{id}/read-message": { + "post": { + "tags": [ + "B2B Quote Management" + ], + "summary": "Mark messages as read in a quote", + "description": "This route is used to mark all messages as read in the specified quote.", + "operationId": "markMessagesAsReadInQuote", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Identifier of the quote whose messages will be marked as read", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "responses": { + "204": { + "description": "No content response" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, "/product/natural-language/search-term": { "post": { "tags": [ @@ -22354,7 +23699,12 @@ } } } - } + }, + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ] } }, "/product/image-upload-search/search-term": { @@ -22394,7 +23744,12 @@ } } } - } + }, + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ] } }, "/pending-orders/request": { @@ -22405,7 +23760,11 @@ "summary": "Request new order approval", "description": "This route is used to request a new order approval", "operationId": "requestOrderApproval", - "parameters": [], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ], "requestBody": { "required": false, "content": { @@ -22459,6 +23818,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { @@ -22508,6 +23870,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { @@ -22563,6 +23928,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { @@ -22611,6 +23979,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { @@ -22659,6 +24030,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { @@ -22724,6 +24098,9 @@ "type": "integer", "default": 10 } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { @@ -22801,6 +24178,9 @@ "type": "integer", "default": 10 } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { @@ -22846,7 +24226,11 @@ "summary": "Create a new approval rule", "description": "This route is used to create a new approval rule", "operationId": "createApprovalRule", - "parameters": [], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ], "requestBody": { "required": true, "content": { @@ -22934,6 +24318,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { @@ -22971,6 +24358,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { @@ -23050,7 +24440,11 @@ "summary": "Create new shopping list", "description": "This route is used to create a new shopping list from the store", "operationId": "createShoppingList", - "parameters": [], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ], "requestBody": { "required": true, "content": { @@ -23193,6 +24587,11 @@ { "ApiKey": [] } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ] } }, @@ -23224,6 +24623,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { @@ -23263,6 +24665,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { @@ -23314,6 +24719,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { @@ -23378,6 +24786,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { @@ -23443,6 +24854,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { @@ -23501,7 +24915,11 @@ "summary": "Delete shopping list line items", "description": "This route is used to delete shopping list line items", "operationId": "removeLineItems", - "parameters": [], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ], "requestBody": { "required": true, "content": { @@ -23565,6 +24983,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { @@ -23606,7 +25027,11 @@ "summary": "Add shopping lists to cart", "description": "This route is used to add shopping lists to cart", "operationId": "addShoppingListsToCart", - "parameters": [], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ], "requestBody": { "required": true, "content": { @@ -23650,7 +25075,11 @@ "summary": "Create new organization unit", "description": "This route is used to create a new organization", "operationId": "createOrganizationUnit", - "parameters": [], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ], "requestBody": { "required": true, "content": { @@ -23665,34 +25094,18 @@ "description": "Identifier (UUID) of the addresses for shipping.", "type": "array", "items": { - "type": "array", - "properties": { - "customerAddressId": { - "type": "string", - "description": "The Identifier (UUID) of the customer address", - "pattern": "^[0-9a-f]{32}$" - } - }, - "required": [ - "customerAddressId" - ] + "type": "string", + "description": "The Identifier (UUID) of the customer address", + "pattern": "^[0-9a-f]{32}$" } }, "billingAddressIds": { "description": "Identifier (UUID) of the addresses for billing.", "type": "array", "items": { - "type": "array", - "properties": { - "customerAddressId": { - "type": "string", - "description": "The Identifier (UUID) of the customer address", - "pattern": "^[0-9a-f]{32}$" - } - }, - "required": [ - "customerAddressId" - ] + "type": "string", + "description": "The Identifier (UUID) of the customer address", + "pattern": "^[0-9a-f]{32}$" } }, "paymentMethodIds": { @@ -23846,6 +25259,11 @@ { "ApiKey": [] } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ] } }, @@ -23867,6 +25285,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { @@ -23904,6 +25325,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { @@ -23920,36 +25344,18 @@ "description": "Identifier (UUID) of the addresses for shipping.", "type": "array", "items": { - "type": "array", - "properties": { - "customerAddressId": { - "type": "string", - "description": "The Identifier (UUID) of the customer address", - "pattern": "^[0-9a-f]{32}$" - } - }, - "required": [ - "customerAddressId", - "id" - ] + "type": "string", + "description": "The Identifier (UUID) of the customer address", + "pattern": "^[0-9a-f]{32}$" } }, "billingAddressIds": { "description": "Identifier (UUID) of the addresses for billing.", "type": "array", "items": { - "type": "array", - "properties": { - "customerAddressId": { - "type": "string", - "description": "The Identifier (UUID) of the customer address", - "pattern": "^[0-9a-f]{32}$" - } - }, - "required": [ - "customerAddressId", - "id" - ] + "type": "string", + "description": "The Identifier (UUID) of the customer address", + "pattern": "^[0-9a-f]{32}$" } }, "paymentMethodIds": { @@ -24442,6 +25848,11 @@ { "ApiKey": [] } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ] }, "get": { @@ -24471,6 +25882,9 @@ "type": "integer", "minimum": 1 } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { @@ -24513,7 +25927,7 @@ "B2B Budget Management" ], "summary": "Load single budget", - "description": "This route is used to load one budget by ID\n\n**Available Associations:**\n- `organizations`\n- `notificationRecipients`\n- `reviewerRole`\n- `currency`", + "description": "This route is used to load one budget by ID\n\n**Available Associations:**\n- `customer`\n- `organizations`\n- `notificationRecipients`\n- `reviewerRole`\n- `currency`", "operationId": "readBudget", "requestBody": { "required": false, @@ -24535,6 +25949,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { @@ -24563,7 +25980,7 @@ "B2B Budget Management" ], "summary": "Load single budget", - "description": "This route is used to load one budget by ID\n\n**Available Associations:**\n- `organizations`\n- `notificationRecipients`\n- `reviewerRole`\n- `currency`", + "description": "This route is used to load one budget by ID\n\n**Available Associations:**\n- `customer`\n- `organizations`\n- `notificationRecipients`\n- `reviewerRole`\n- `currency`", "operationId": "readBudgetGet", "parameters": [ { @@ -24575,6 +25992,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { @@ -24615,6 +26035,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { @@ -24903,6 +26326,11 @@ { "ApiKey": [] } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ] } }, @@ -24971,6 +26399,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { @@ -25110,6 +26541,11 @@ { "ApiKey": [] } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ] }, "post": { @@ -25156,6 +26592,11 @@ { "ApiKey": [] } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ] } }, @@ -25187,6 +26628,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { @@ -25264,6 +26708,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { @@ -25344,6 +26791,64 @@ } ] } + }, + "/store-api/product/{productId}/recommended-bundles": { + "post": { + "tags": [ + "Product Bundles" + ], + "summary": "Fetch bundle recommendations for a product", + "description": "Returns bundle products that include the given product as an item and have show_bundle_on_item_pdp enabled.", + "operationId": "getRecommendedBundles", + "parameters": [ + { + "name": "productId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "type": "object", + "description": "Optional criteria payload." + } + } + } + }, + "responses": { + "200": { + "description": "List of bundle products", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/BundleProduct" + } + } + } + } + } + } + }, + "404": { + "description": "Returned when the product cannot be resolved." + } + } + } } }, "tags": [ diff --git a/SwagCommercial-storeapi.summary.json b/SwagCommercial-storeapi.summary.json index 0e918d4..1de3ab0 100644 --- a/SwagCommercial-storeapi.summary.json +++ b/SwagCommercial-storeapi.summary.json @@ -36,6 +36,7 @@ "/quote/request", "/quote/{id}/configure", "/quote/{id}/decline", + "/quote/{id}/read-message", "/quote/{id}/request-change", "/quote/{id}/send-message", "/quotes", @@ -54,7 +55,8 @@ "/shopping-lists", "/shopping-lists/add-to-cart", "/sso/auth/{providerId}", - "/sso/redirect/{providerId}" + "/sso/redirect/{providerId}", + "/store-api/product/{productId}/recommended-bundles" ], "schemas": [ "AccountNewsletterRecipient", @@ -80,6 +82,9 @@ "AppCmsBlock", "AppFlowAction", "AppFlowEvent", + "AppMcpPrompt", + "AppMcpResource", + "AppMcpTool", "AppPaymentMethod", "AppScriptCondition", "AppShippingMethod", @@ -96,6 +101,12 @@ "B2bComponentsBudgetOrganization", "B2bComponentsEmployeeWishlist", "B2bComponentsEmployeeWishlistProduct", + "B2bComponentsIndividualPricing", + "B2bComponentsIndividualPricingCompanyAssignment", + "B2bComponentsIndividualPricingCompanyAssignmentUnit", + "B2bComponentsIndividualPricingComputedCache", + "B2bComponentsIndividualPricingTag", + "B2bComponentsIndividualPricingTier", "B2bComponentsOrganization", "B2bComponentsOrganizationCustomerAddress", "B2bComponentsPendingOrder", @@ -110,6 +121,9 @@ "B2bOrderEmployee", "B2bPermission", "Breadcrumb", + "BundleDiscount", + "BundleItem", + "BundleProduct", "CalculatedPrice", "Cart", "CartDelivery", @@ -117,6 +131,8 @@ "CartDeliveryPosition", "CartError", "CartItems", + "CartItemsUpdate", + "CartLineItemUpdate", "CartListPrice", "CartPriceQuantity", "CartPriceReference", @@ -209,6 +225,7 @@ "NavigationType", "NewsletterRecipient", "NewsletterRecipientJsonApi", + "NewsletterStatus", "NoneFieldsCriteria", "Notification", "NumberRange", @@ -255,6 +272,7 @@ "ProductMeasurements", "ProductMedia", "ProductPrice", + "ProductPurchaseLimit", "ProductReview", "ProductReviewSummary", "ProductSearchConfig", @@ -291,6 +309,8 @@ "SalesChannelAnalytics", "SalesChannelContext", "SalesChannelDomain", + "SalesChannelTrackingCustomer", + "SalesChannelTrackingOrder", "SalesChannelType", "Salutation", "SalutationJsonApi", From 0f51bde3817a09ee3ddb4e33bcd56f5fb9e33e55 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 22 May 2026 16:19:40 +0200 Subject: [PATCH 06/16] [create-pull-request] automated change (#414) Co-authored-by: shopwareBot --- SwagCustomizedProducts-storeapi.json | 6072 +++++++++--------- SwagCustomizedProducts-storeapi.summary.json | 9 + 2 files changed, 3222 insertions(+), 2859 deletions(-) diff --git a/SwagCustomizedProducts-storeapi.json b/SwagCustomizedProducts-storeapi.json index 0930bde..f2ac4ab 100644 --- a/SwagCustomizedProducts-storeapi.json +++ b/SwagCustomizedProducts-storeapi.json @@ -7,7 +7,7 @@ "name": "MIT", "url": "https://github.com/shopware/shopware/blob/trunk/LICENSE" }, - "version": "6.7.9.0" + "version": "6.7.9999999-dev" }, "servers": [ { @@ -546,6 +546,84 @@ }, "type": "object" }, + "AppMcpPrompt": { + "description": "Added since version: 6.7.0.0", + "required": [ + "label" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + }, + "AppMcpResource": { + "description": "Added since version: 6.7.0.0", + "required": [ + "label" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + }, + "AppMcpTool": { + "description": "Added since version: 6.7.0.0", + "required": [ + "label" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + }, "AppPaymentMethod": { "description": "Added since version: 6.4.1.0", "properties": { @@ -2555,6 +2633,11 @@ }, "readOnly": true }, + "requestedGroupId": { + "description": "Unique identity of requested group.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "createdById": { "type": "string", "pattern": "^[0-9a-f]{32}$" @@ -3373,7 +3456,7 @@ "description": "Unique number associated with every document.", "type": "string" }, - "config": { + "customFields": { "type": "object" }, "createdAt": { @@ -3381,8 +3464,9 @@ "format": "date-time", "readOnly": true }, - "customFields": { - "type": "object" + "config": { + "type": "object", + "deprecated": true }, "updatedAt": { "type": "string", @@ -6962,6 +7046,11 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "openGraphMediaId": { + "description": "Media used as Open Graph image for social media sharing.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "productNumber": { "description": "Unique number assigned to individual products. Define rules for automatic assignment of every product creation as per your number range.", "type": "string" @@ -7155,6 +7244,12 @@ "customFields": { "type": "object" }, + "ogTitle": { + "type": "string" + }, + "ogDescription": { + "type": "string" + }, "type": { "description": "The type of the product, e.g., physical or digital.", "type": "string", @@ -7492,6 +7587,36 @@ }, "type": "object" }, + "openGraphMedia": { + "description": "Open Graph image for social media sharing", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/openGraphMedia" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "media" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "bbda52d941a3452369a00f2880f4f358" + } + } + } + }, + "type": "object" + }, "cmsPage": { "description": "Custom CMS page layout for the product detail page", "properties": { @@ -8057,6 +8182,11 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "openGraphMediaId": { + "description": "Media used as Open Graph image for social media sharing.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "productNumber": { "description": "Unique number assigned to individual products. Define rules for automatic assignment of every product creation as per your number range.", "type": "string" @@ -8250,6 +8380,12 @@ "customFields": { "type": "object" }, + "ogTitle": { + "type": "string" + }, + "ogDescription": { + "type": "string" + }, "type": { "description": "The type of the product, e.g., physical or digital.", "type": "string", @@ -8455,6 +8591,10 @@ "$ref": "#/components/schemas/ProductMedia", "description": "Main product image displayed in listings and detail pages" }, + "openGraphMedia": { + "$ref": "#/components/schemas/Media", + "description": "Open Graph image for social media sharing" + }, "cmsPage": { "$ref": "#/components/schemas/CmsPage", "description": "Custom CMS page layout for the product detail page" @@ -9803,6 +9943,46 @@ }, "type": "object" }, + "SalesChannelTrackingCustomer": { + "description": "Added since version: 6.7.9.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "SalesChannelTrackingOrder": { + "description": "Added since version: 6.7.9.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, "SalesChannelType": { "description": "Added since version: 6.0.0.0", "required": [ @@ -9860,6 +10040,11 @@ "customFields": { "type": "object" }, + "position": { + "description": "Numerical value that indicates the order in which the defined salutations must be displayed in the frontend.", + "type": "integer", + "format": "int64" + }, "createdAt": { "type": "string", "format": "date-time", @@ -9904,6 +10089,11 @@ "customFields": { "type": "object" }, + "position": { + "description": "Numerical value that indicates the order in which the defined salutations must be displayed in the frontend.", + "type": "integer", + "format": "int64" + }, "createdAt": { "type": "string", "format": "date-time", @@ -12674,38 +12864,76 @@ }, "type": "object" }, - "CartPriceQuantity": { + "EntitySearchResult": { "type": "object", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_quantity" - ] + "entity": { + "type": "string" }, - "isCalculated": { - "type": "boolean" + "total": { + "type": "integer", + "description": "The total number of found entities" }, - "listPrice": { - "$ref": "#/components/schemas/CartListPrice" + "aggregations": { + "type": "array", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", + "items": { + "type": "object" + } }, - "price": { - "type": "number" + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." }, - "quantity": { - "type": "number" + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." + } + } + }, + "SalesChannelContext": { + "type": "object", + "properties": { + "token": { + "description": "Context the user session", + "type": "string" }, - "regulationPrice": { + "currentCustomerGroup": { + "type": "object", + "description": "Customer group of the current user", "properties": { - "price": { - "type": "number", - "format": "float" + "name": { + "type": "string" + }, + "displayGross": { + "type": "boolean" } - }, - "type": "object" + } + }, + "fallbackCustomerGroup": { + "description": "Fallback group if the default customer group is not applicable", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "displayGross": { + "type": "boolean" + } + } + }, + "currency": { + "$ref": "#/components/schemas/Currency" + }, + "salesChannel": { + "$ref": "#/components/schemas/SalesChannel" + }, + "measurementSystem": { + "$ref": "#/components/schemas/ContextMeasurementSystemInfo" }, "taxRules": { "type": "array", + "description": "Currently active tax rules and/or rates", "items": { "type": "object", "properties": { @@ -12719,194 +12947,370 @@ } } }, - "type": { - "type": "string" - } - }, - "required": [ - "apiAlias" - ] - }, - "CrossSellingElement": { - "type": "object", - "properties": { - "crossSelling": { - "$ref": "#/components/schemas/ProductCrossSelling" - }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - }, - "total": { - "type": "integer", - "format": "int32" + "customer": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/Customer" + } + ] }, - "streamId": { - "type": "string", - "format": "uuid" + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod" }, - "apiAlias": { - "type": "string", - "enum": [ - "cross_selling_element" - ] - } - }, - "required": [ - "crossSelling", - "products", - "total", - "apiAlias" - ] - }, - "ProductMeasurements": { - "type": "object", - "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", - "properties": { - "width": { + "shippingLocation": { "type": "object", "properties": { - "unit": { + "apiAlias": { "type": "string", "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" + "cart_delivery_shipping_location" + ] }, - "value": { - "type": "number" + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" } } }, - "height": { + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + }, + "context": { + "description": "Core context with general configuration values and state", "type": "object", "properties": { - "unit": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" + "versionId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "currencyFactor": { + "type": "integer" + }, + "currencyPrecision": { + "type": "integer", + "format": "int32" + }, + "languageIdChain": { + "type": "array", + "items": { + "type": "string" + } + }, + "scope": { + "type": "string" + }, + "source": { + "type": "object", + "required": [ + "salesChannelId", + "type" ], - "default": "mm" + "properties": { + "type": { + "type": "string", + "enum": [ + "sales-channel", + "shop-api" + ] + }, + "salesChannelId": { + "type": "string" + } + } }, - "value": { - "type": "number" + "taxState": { + "type": "string" + }, + "useCache": { + "type": "boolean" } } }, - "length": { + "itemRounding": { "type": "object", + "required": [ + "decimals", + "interval", + "roundForNet", + "apiAlias" + ], "properties": { - "unit": { + "apiAlias": { "type": "string", "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" + "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" + ] }, - "value": { - "type": "number" + "decimals": { + "type": "integer", + "format": "int32" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" } } }, - "weight": { + "totalRounding": { "type": "object", + "required": [ + "decimals", + "interval", + "roundForNet", + "apiAlias" + ], "properties": { - "unit": { + "apiAlias": { "type": "string", "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg" + "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" + ] }, - "value": { - "type": "number" + "decimals": { + "type": "integer", + "format": "int32" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" } } - } - } - }, - "ProductListingCriteria": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" }, - { + "languageInfo": { "type": "object", - "description": "Additional search parameters for product listings", + "required": [ + "localeCode", + "name" + ], "properties": { - "order": { - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "type": "string" - }, - "limit": { - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "type": "integer", - "minimum": 0 - }, - "p": { - "description": "Search result page", - "type": "integer", - "default": 1 - }, - "manufacturer": { - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "name": { "type": "string" }, - "min-price": { - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 - }, - "max-price": { - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 - }, - "rating": { - "description": "Filter products with a minimum average rating.", - "type": "integer" - }, - "shipping-free": { - "description": "Filters products that are marked as shipping-free.", - "type": "boolean", - "default": false - }, - "properties": { - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "localeCode": { "type": "string" - }, - "manufacturer-filter": { - "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "price-filter": { - "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "rating-filter": { - "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", - "type": "boolean", + } + } + }, + "apiAlias": { + "type": "string", + "enum": [ + "sales_channel_context" + ] + } + }, + "required": [ + "salesChannel", + "apiAlias", + "itemRounding", + "totalRounding", + "languageInfo" + ] + }, + "CartError": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "key": { + "type": "string" + }, + "level": { + "type": "number", + "enum": [ + 0, + 10, + 20 + ], + "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" + }, + "message": { + "type": "string" + }, + "messageKey": { + "type": "string" + } + }, + "required": [ + "key", + "level", + "message", + "messageKey" + ] + }, + "ContextMeasurementSystemInfo": { + "type": "object", + "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", + "properties": { + "system": { + "type": "string", + "enum": [ + "metric", + "imperial" + ], + "default": "metric", + "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." + }, + "units": { + "type": "object", + "description": "Units used in the measurement system.", + "properties": { + "length": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Unit of length." + }, + "weight": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." + } + } + } + } + }, + "CustomerAddressRead": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true + }, + "customerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "updatedAt": { + "oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "oneOf": [ + { + "$ref": "#/components/schemas/CountryState" + }, + { + "type": "null" + } + ] + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" + } + }, + "required": [ + "customerId", + "createdAt", + "updatedAt", + "country", + "salutation" + ] + }, + "ProductListingCriteria": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + }, + { + "type": "object", + "description": "Additional search parameters for product listings", + "properties": { + "order": { + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "type": "string" + }, + "limit": { + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "type": "integer", + "minimum": 0 + }, + "p": { + "description": "Search result page", + "type": "integer", + "default": 1 + }, + "manufacturer": { + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "type": "string" + }, + "min-price": { + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "max-price": { + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "rating": { + "description": "Filter products with a minimum average rating.", + "type": "integer" + }, + "shipping-free": { + "description": "Filters products that are marked as shipping-free.", + "type": "boolean", + "default": false + }, + "properties": { + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "type": "string" + }, + "manufacturer-filter": { + "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "price-filter": { + "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "rating-filter": { + "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", + "type": "boolean", "default": true }, "shipping-free-filter": { @@ -12938,347 +13342,96 @@ } ] }, - "ShippingMethodPageRouteResponse": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "deliveryTimeId": { - "type": "string" - }, - "deliveryTime": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer", - "format": "int32" - }, - "max": { - "type": "integer", - "format": "int32" - }, - "unit": { - "type": "string" - } - } - }, - "translations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - } - } - } - }, - "orderDeliveries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "orderId": { - "type": "string" - }, - "shippingOrderAddressId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "shippingDateEarliest": { - "type": "string", - "format": "date-time" - }, - "shippingDateLatest": { - "type": "string", - "format": "date-time" - }, - "stateId": { - "type": "string" - } - } - } - }, - "salesChannelDefaultAssignments": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" - }, - "hreflangDefaultDomainId": { - "type": "string" - } - } + "WishlistLoadRouteResponse": { + "type": "object", + "required": [ + "products" + ], + "properties": { + "wishlist": { + "type": "object", + "properties": { + "customerId": { + "type": "string" + }, + "salesChannelId": { + "type": "string" } - }, - "salesChannels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" - }, - "hreflangDefaultDomainId": { - "type": "string" - } - } + } + }, + "products": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + }, + "Sitemap": { + "type": "object", + "properties": { + "filename": { + "type": "string" + }, + "created": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "filename", + "created" + ] + }, + "CartPriceQuantity": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_quantity" + ] + }, + "isCalculated": { + "type": "boolean" + }, + "listPrice": { + "$ref": "#/components/schemas/CartListPrice" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" } }, - "availabilityRule": { + "type": "object" + }, + "taxRules": { + "type": "array", + "items": { "type": "object", "properties": { - "name": { - "type": "string" + "taxRate": { + "type": "number", + "format": "float" }, - "description": { + "name": { "type": "string" - }, - "priority": { - "type": "integer", - "format": "int32" - }, - "invalid": { - "type": "boolean" - } - } - }, - "availabilityRuleId": { - "type": "string" - }, - "prices": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "ruleId": { - "type": "string" - }, - "calculation": { - "type": "integer", - "format": "int32" - }, - "quantityStart": { - "type": "number", - "format": "float" - }, - "quantityEnd": { - "type": "number", - "format": "float" - }, - "price": { - "type": "number", - "format": "float" - }, - "calculationRuleId": { - "type": "string" - } - } - } - }, - "mediaId": { - "type": "string" - }, - "media": { - "type": "object", - "properties": { - "userId": { - "type": "string" - }, - "mimeType": { - "type": "string" - }, - "fileExtension": { - "type": "string" - }, - "fileSize": { - "type": "integer", - "format": "int32" - }, - "title": { - "type": "string" - }, - "metaDataRaw": { - "type": "string" - }, - "mediaTypeRaw": { - "type": "string" - }, - "uploadedAt": { - "type": "string", - "format": "date-time" - }, - "alt": { - "type": "string" - }, - "url": { - "type": "string" - }, - "fileName": { - "type": "string" - }, - "mediaFolderId": { - "type": "string" - }, - "private": { - "type": "boolean" - }, - "thumbnailsRo": { - "type": "string" - } - } - }, - "tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - } } } } + }, + "type": { + "type": "string" } - } + }, + "required": [ + "apiAlias" + ] }, "ProductDetailResponse": { "type": "object", @@ -13299,7 +13452,18 @@ "product" ] }, - "CartDeliveryPosition": { + "NewsletterStatus": { + "type": "string", + "enum": [ + "notSet", + "optIn", + "optOut", + "direct", + "undefined" + ], + "description": "The subscription status. Possible values are: notSet, optIn, optOut, direct, undefined." + }, + "CartDelivery": { "type": "object", "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { @@ -13316,952 +13480,782 @@ } } }, - "identifier": { - "type": "string" + "location": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "state": { + "$ref": "#/components/schemas/CountryState" + } + } }, - "lineItem": { - "$ref": "#/components/schemas/LineItem" + "positions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDeliveryPosition" + } }, - "price": { + "shippingCosts": { "$ref": "#/components/schemas/CalculatedPrice" + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" } } }, - "LineItemType": { - "type": "string", - "deprecated": true, - "enum": [ - "product", - "credit", - "custom", - "promotion", - "discount", - "container", - "quantity" - ] - }, - "LineItem": { + "ReferencePrice": { "type": "object", "properties": { - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - }, - "cover": { - "$ref": "#/components/schemas/Media" - }, - "dataContextHash": { - "type": "string" - }, - "dataTimestamp": { - "type": "string" + "purchaseUnit": { + "type": "number" }, - "deliveryInformation": { - "$ref": "#/components/schemas/CartDeliveryInformation" + "referenceUnit": { + "type": "number" }, - "description": { + "unitName": { "type": "string" }, - "good": { - "type": "boolean" + "price": { + "type": "number" }, - "id": { - "type": "string" + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_reference" + ] }, - "label": { - "type": "string" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/ListPrice" + }, + { + "type": "null" + } + ] }, - "modified": { - "type": "boolean" + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] }, - "modifiedByApp": { + "hasRange": { "type": "boolean" }, - "payload": { - "$ref": "#/components/schemas/ProductJsonApi" - }, - "price": { - "type": "object", - "properties": { - "apiAlias": { + "variantId": { + "oneOf": [ + { "type": "string", - "enum": [ - "calculated_price" - ] + "format": "^[0-9a-f]{32}$" }, - "calculatedTaxes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] - }, - "quantity": { - "type": "number" - }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] - }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } - }, - { - "type": "null" - } - ] - }, - "totalPrice": { - "type": "number" - }, - "unitPrice": { - "type": "number" - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } + { + "type": "null" } - }, - "required": [ - "apiAlias", - "totalPrice", - "quantity", - "unitPrice" + ] + } + }, + "required": [ + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" + ] + }, + "CartDeliveryInformation": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_information" ] }, - "priceDefinition": { - "$ref": "#/components/schemas/CartPriceQuantity" - }, - "quantity": { - "type": "number" + "freeDelivery": { + "type": "boolean" }, - "quantityInformation": { + "deliveryTime": { "type": "object", "properties": { - "maxPurchase": { - "type": "number" + "name": { + "type": "string" }, - "minPurchase": { - "type": "number" + "min": { + "type": "integer" }, - "purchaseSteps": { - "type": "number" + "max": { + "type": "integer" + }, + "unit": { + "type": "string" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_time" + ] } } }, - "referencedId": { - "type": "string" + "height": { + "type": "integer" }, - "removable": { - "type": "boolean" + "length": { + "type": "integer" }, - "stackable": { - "type": "boolean" + "restockTime": { + "type": "integer" }, - "states": { - "deprecated": true, - "type": "array", - "items": { - "type": "string", - "enum": [ - "is-physical", - "is-download" - ] - } + "stock": { + "type": "integer" }, - "type": { - "$ref": "#/components/schemas/OrderLineItem/properties/type" + "weight": { + "type": "integer" }, - "uniqueIdentifier": { - "type": "string" + "width": { + "type": "integer" } }, "required": [ - "id", - "type", - "deliveryInformation", - "payload", - "quantity", - "states" + "apiAlias" ] }, - "CrossSellingElementCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CrossSellingElement" - } - }, - "Sitemap": { + "Cart": { "type": "object", "properties": { - "filename": { + "name": { + "description": "Name of the cart - for example `guest-cart`", "type": "string" }, - "created": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "filename", - "created" - ] - }, - "CartItems": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { + "token": { + "description": "Context token identifying the cart and the user session", + "type": "string" + }, + "price": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "lineItems": { + "description": "All items within the cart", "type": "array", "items": { "$ref": "#/components/schemas/LineItem" } - } - } - }, - "CookieEntry": { - "type": "object", - "properties": { - "cookie": { - "type": "string" - }, - "value": { - "type": "string" }, - "expiration": { - "type": "integer" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "hidden": { - "type": "boolean" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cookie_entry" - ] - } - }, - "required": [ - "cookie", - "hidden", - "apiAlias" - ] - }, - "CookieRouteResponse": { - "type": "object", - "description": "Response containing cookie groups and their configuration hash.", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cookie_groups_hash" + "errors": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartError" + } + }, + { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "code": { + "type": "number" + }, + "key": { + "type": "string" + }, + "level": { + "type": "number" + }, + "message": { + "type": "string" + }, + "messageKey": { + "type": "string" + } + }, + "required": [ + "code", + "key", + "level", + "message", + "messageKey" + ] + } + } ] }, - "elements": { + "deliveries": { "type": "array", - "description": "Collection of cookie groups", "items": { - "$ref": "#/components/schemas/CookieGroup" + "$ref": "#/components/schemas/CartDelivery" } }, - "hash": { - "type": "string", - "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", - "example": "f86b6a872cb83dbd22d838ceda1aa3d4" - }, - "languageId": { - "type": "string", - "format": "uuid", - "description": "The language ID for which the cookie configuration was generated. Used to store hashes per language.", - "example": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" - } - }, - "required": [ - "elements", - "hash", - "languageId", - "apiAlias" - ], - "example": { - "apiAlias": "cookie_groups_hash", - "elements": [ - { - "isRequired": true, - "description": "Cookies required for this shop to function:", - "name": "Technically required", - "entries": [ - { - "name": "Session", - "hidden": false, - "cookie": "session-", - "apiAlias": "cookie_entry" - }, - { - "name": "Timezone", - "hidden": false, - "cookie": "timezone", - "apiAlias": "cookie_entry" + "transactions": { + "description": "A list of all payment transactions associated with the current cart.", + "type": "array", + "items": { + "type": "object", + "properties": { + "paymentMethodId": { + "type": "string" }, - { - "value": "1", - "expiration": 30, - "name": "Cookie preferences", - "hidden": true, - "cookie": "cookie-preference", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "description": "Cookies used for statistics and shop performance metrics.", - "name": "Statistics", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "Google Analytics", - "hidden": false, - "cookie": "google-analytics-enabled", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "description": "Allows Google to collect personal data for online advertising and marketing.", - "name": "Marketing", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "Google Advertising", - "hidden": false, - "cookie": "google-ads-enabled", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "name": "Comfort features", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "YouTube video", - "hidden": false, - "cookie": "youtube-video", - "apiAlias": "cookie_entry" + "amount": { + "$ref": "#/components/schemas/CalculatedPrice" } - ], - "apiAlias": "cookie_group" - } - ], - "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", - "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" - } - }, - "CartDelivery": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" } } }, - "location": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" + "modified": { + "type": "boolean" + }, + "customerComment": { + "description": "A comment that can be added to the cart.", + "oneOf": [ + { + "type": "string" }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" + { + "type": "null" + } + ] + }, + "affiliateCode": { + "description": "An affiliate tracking code", + "oneOf": [ + { + "type": "string" }, - "state": { - "$ref": "#/components/schemas/CountryState" + { + "type": "null" } - } + ] }, - "positions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDeliveryPosition" - } + "campaignCode": { + "description": "A campaign tracking code", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] }, - "shippingCosts": { - "$ref": "#/components/schemas/CalculatedPrice" + "apiAlias": { + "type": "string", + "enum": [ + "cart" + ] + } + }, + "required": [ + "price", + "apiAlias" + ] + }, + "AccountNewsletterRecipient": { + "type": "object", + "properties": { + "status": { + "$ref": "#/components/schemas/NewsletterStatus" }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" + "apiAlias": { + "type": "string", + "enum": [ + "account_newsletter_recipient" + ] } - } + }, + "required": [ + "status", + "apiAlias" + ] }, - "CookieEntryCollection": { + "CrossSellingElementCollection": { "type": "array", "items": { - "$ref": "#/components/schemas/CookieEntry" + "$ref": "#/components/schemas/CrossSellingElement" } }, - "NavigationRouteResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - }, - "NavigationType": { - "type": "string", - "enum": [ - "main-navigation", - "footer-navigation", - "service-navigation" - ] - }, - "SalesChannelContext": { + "Criteria": { "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "token": { - "description": "Context the user session", + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", "type": "string" }, - "currentCustomerGroup": { - "type": "object", - "description": "Customer group of the current user", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } - } + "limit": { + "description": "Number of items per result page", + "type": "integer" }, - "fallbackCustomerGroup": { - "description": "Fallback group if the default customer group is not applicable", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] } }, - "currency": { - "$ref": "#/components/schemas/Currency" + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } }, - "salesChannel": { - "$ref": "#/components/schemas/SalesChannel" + "query": { + "type": "string", + "description": "The query string to search for" }, - "measurementSystem": { - "$ref": "#/components/schemas/ContextMeasurementSystemInfo" + "associations": { + "$ref": "#/components/schemas/Associations" }, - "taxRules": { + "post-filter": { "type": "array", - "description": "Currently active tax rules and/or rates", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "name": { - "type": "string" + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } - } + ] } }, - "customer": { - "oneOf": [ - { - "type": "null" - }, - { - "$ref": "#/components/schemas/Customer" - } - ] + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + } }, - "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethod" + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } }, - "shippingLocation": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" - } + "fields": { + "type": "array", + "description": "Fields which should be returned in the search result.", + "items": { + "type": "string", + "description": "Name of a field" } }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } }, - "context": { - "description": "Core context with general configuration values and state", - "type": "object", - "properties": { - "versionId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "currencyFactor": { - "type": "integer" - }, - "currencyPrecision": { - "type": "integer", - "format": "int32" - }, - "languageIdChain": { - "type": "array", - "items": { - "type": "string" - } - }, - "scope": { - "type": "string" - }, - "source": { - "type": "object", - "required": [ - "salesChannelId", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "sales-channel", - "shop-api" - ] - }, - "salesChannelId": { - "type": "string" - } + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" + }, + "excludes": { + "$ref": "#/components/schemas/Excludes" + } + } + }, + "NoneFieldsCriteria": { + "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", + "properties": { + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", + "type": "string" + }, + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } - }, - "taxState": { - "type": "string" - }, - "useCache": { - "type": "boolean" - } + ] } }, - "itemRounding": { - "type": "object", - "required": [ - "decimals", - "interval", - "roundForNet", - "apiAlias" - ], - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" - ] - }, - "decimals": { - "type": "integer", - "format": "int32" - }, - "interval": { - "type": "number", - "format": "float" - }, - "roundForNet": { - "type": "boolean" - } + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" } }, - "totalRounding": { - "type": "object", - "required": [ - "decimals", - "interval", - "roundForNet", - "apiAlias" - ], - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" - ] - }, - "decimals": { - "type": "integer", - "format": "int32" - }, - "interval": { - "type": "number", - "format": "float" - }, - "roundForNet": { - "type": "boolean" - } + "query": { + "type": "string", + "description": "The query string to search for" + }, + "associations": { + "$ref": "#/components/schemas/Associations" + }, + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] } }, - "languageInfo": { - "type": "object", - "required": [ - "localeCode", - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "localeCode": { - "type": "string" - } + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" } }, - "apiAlias": { - "type": "string", - "enum": [ - "sales_channel_context" - ] + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } + }, + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" + }, + "excludes": { + "$ref": "#/components/schemas/Excludes" } - }, - "required": [ - "salesChannel", - "apiAlias", - "itemRounding", - "totalRounding", - "languageInfo" - ] + } }, - "AggregationMetrics": { + "Associations": { "type": "object", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "avg", - "count", - "max", - "min", - "stats", - "sum" - ] - }, - "field": { + "additionalProperties": { + "$ref": "#/components/schemas/Criteria" + } + }, + "Includes": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { "type": "string" } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "CookieGroupCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CookieGroup" } }, - "ProductListingFlags": { + "Excludes": { "type": "object", - "description": "Additional flags for product listings", - "properties": { - "no-aggregations": { - "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", - "oneOf": [ + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "Aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" + }, + { + "title": "AggregationEntity", + "allOf": [ { - "type": "string" + "$ref": "#/components/schemas/AggregationEntity" }, { - "type": "null" + "$ref": "#/components/schemas/SubAggregations" } ] }, - "only-aggregations": { - "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", - "oneOf": [ + { + "title": "AggregationFilter", + "allOf": [ { - "type": "string" + "$ref": "#/components/schemas/AggregationFilter" }, { - "type": "null" + "$ref": "#/components/schemas/SubAggregations" } ] - } - } - }, - "Breadcrumb": { - "type": "object", - "properties": { - "name": { - "type": "string" }, - "categoryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "type": { - "$ref": "#/components/schemas/Category/properties/type" + { + "title": "AggregationTerms", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] }, - "translated": { - "type": "object", - "additionalProperties": true, - "properties": { - "customFields": { - "type": "object" + { + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" }, - "slotConfig": { - "type": "object" + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationRange", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationRange" }, - "linkType": { - "$ref": "#/components/schemas/Category/properties/linkType" + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + } + ] + }, + "SubAggregations": { + "type": "object", + "properties": { + "aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" }, - "internalLink": { - "type": "string" + { + "$ref": "#/components/schemas/AggregationEntity" }, - "externalLink": { - "type": "string" + { + "$ref": "#/components/schemas/AggregationFilter" }, - "linkNewTab": { - "type": "boolean" + { + "$ref": "#/components/schemas/AggregationTerms" }, - "description": { - "type": "string" + { + "$ref": "#/components/schemas/AggregationHistogram" }, - "metaTitle": { - "type": "string" + { + "$ref": "#/components/schemas/AggregationRange" + } + ] + } + } + }, + "TotalCountMode": { + "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", + "type": "string", + "default": "none", + "enum": [ + "none", + "exact", + "next-pages" + ] + }, + "Query": { + "type": "object", + "properties": { + "score": { + "type": "number" + }, + "query": { + "oneOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "metaDescription": { - "type": "string" + { + "$ref": "#/components/schemas/EqualsFilter" }, - "keywords": { - "type": "string" + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } - } - }, - "path": { + ] + } + }, + "additionalProperties": true + }, + "Sort": { + "type": "object", + "properties": { + "field": { "type": "string" }, - "seoUrls": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } - }, - "apiAlias": { + "order": { "type": "string", "enum": [ - "breadcrumb" + "ASC", + "DESC" ] + }, + "naturalSorting": { + "type": "boolean" + }, + "type": { + "type": "string" } }, "required": [ - "name", - "categoryId", - "type", - "translated", - "path", - "apiAlias" + "field", + "order" ] }, - "CartError": { + "Filters": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "SimpleFilter": { "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "key": { - "type": "string" - }, - "level": { - "type": "number", + "type": { + "type": "string", "enum": [ - 0, - 10, - 20 - ], - "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" + "contains", + "equalsAny", + "prefix", + "suffix" + ] }, - "message": { + "field": { "type": "string" }, - "messageKey": { + "value": { "type": "string" } }, "required": [ - "key", - "level", - "message", - "messageKey" + "type", + "field", + "value" ] }, - "CartPriceReference": { + "EqualsFilter": { "type": "object", "properties": { - "purchaseUnit": { - "type": "number" - }, - "referenceUnit": { - "type": "number" - }, - "unitName": { - "type": "string" - }, - "price": { - "type": "number" - }, - "apiAlias": { + "type": { "type": "string", "enum": [ - "cart_price_reference" + "equals" ] }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] + "field": { + "type": "string" }, - "regulationPrice": { + "value": { "oneOf": [ { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } + "type": "string" }, { - "type": "null" - } - ] - }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "oneOf": [ + "type": "number" + }, { - "type": "string", - "format": "^[0-9a-f]{32}$" + "type": "boolean" }, { "type": "null" @@ -14270,310 +14264,598 @@ } }, "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" + "type", + "field", + "value" ] }, - "AccountNewsletterRecipient": { + "MultiNotFilter": { "type": "object", "properties": { - "status": { + "type": { "type": "string", "enum": [ - "undefined", - "notSet", - "direct", - "optIn", - "optOut" + "multi", + "not" ] }, - "apiAlias": { + "operator": { "type": "string", "enum": [ - "account_newsletter_recipient" + "and", + "or", + "nor", + "nand" ] + }, + "queries": { + "$ref": "#/components/schemas/Filters" } }, "required": [ - "status", - "apiAlias" + "type", + "operator", + "queries" ] }, - "SuccessResponse": { + "RangeFilter": { "type": "object", "properties": { - "success": { - "type": "boolean" - } - } - }, - "EntitySearchResult": { - "type": "object", - "properties": { - "entity": { - "type": "string" + "type": { + "type": "string", + "enum": [ + "range" + ] }, - "total": { - "type": "integer", - "description": "The total number of found entities" + "field": { + "type": "string" }, - "aggregations": { - "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", - "items": { - "type": "object" + "parameters": { + "type": "object", + "properties": { + "gte": { + "type": "number" + }, + "gt": { + "type": "number" + }, + "lte": { + "type": "number" + }, + "lt": { + "type": "number" + } + } + } + }, + "required": [ + "type", + "field", + "parameters" + ] + }, + "FindProductVariantRouteResponse": { + "type": "object", + "properties": { + "foundCombination": { + "type": "object", + "properties": { + "variantId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "options": { + "type": "array", + "items": { + "type": "string" + } + } } - }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." - }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." } } }, - "CalculatedPrice": { + "Price": { "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", + "description": "Price object", "properties": { - "unitPrice": { - "type": "number" - }, - "quantity": { - "type": "number" + "currencyId": { + "description": "Unique identity of the associated currency.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "rawTotal": { + "gross": { + "description": "Gross price for the associated currency.", "type": "number" }, - "totalPrice": { + "net": { + "description": "Net price for the associated currency.", "type": "number" }, - "taxStatus": { - "type": "string", - "enum": [ - "net", - "tax-free" - ] - }, - "calculatedTaxes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } + "linked": { + "description": "Whether gross and net prices are linked through the tax configuration.", + "type": "boolean" }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" + "percentage": { + "description": "Discount percentage relative to the list price for the gross and net amounts. `null` when no list price is set.", + "type": [ + "object", + "null" + ], + "properties": { + "gross": { + "description": "Discount percentage relative to the gross list price.", + "type": "number" }, - { - "type": "null" + "net": { + "description": "Discount percentage relative to the net list price.", + "type": "number" } + }, + "required": [ + "gross", + "net" ] }, "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" + "description": "Reference list price for displaying discounts.", + "type": "object", + "properties": { + "currencyId": { + "description": "Unique identity of the associated currency.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - { - "type": "null" + "gross": { + "description": "Gross list price for the associated currency.", + "type": "number" + }, + "net": { + "description": "Net list price for the associated currency.", + "type": "number" + }, + "linked": { + "description": "Whether gross and net list prices are linked through the tax configuration.", + "type": "boolean" } + }, + "required": [ + "gross", + "net" ] }, - "positionPrice": { - "type": "number" - }, - "netPrice": { - "type": "number" - }, "regulationPrice": { - "oneOf": [ + "description": "Reference price used for legal price disclosures.", + "type": "object", + "properties": { + "currencyId": { + "description": "Unique identity of the associated currency.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "gross": { + "description": "Gross regulation price for the associated currency.", + "type": "number" + }, + "net": { + "description": "Net regulation price for the associated currency.", + "type": "number" + }, + "linked": { + "description": "Whether gross and net regulation prices are linked through the tax configuration.", + "type": "boolean" + } + }, + "required": [ + "gross", + "net" + ] + } + }, + "required": [ + "currencyId", + "gross", + "net" + ] + }, + "NavigationType": { + "type": "string", + "enum": [ + "main-navigation", + "footer-navigation", + "service-navigation" + ] + }, + "OrderRouteResponse": { + "type": "object", + "properties": { + "orders": { + "type": "object", + "allOf": [ { "type": "object", + "required": [ + "elements" + ], "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" + } } } }, { - "type": "null" + "$ref": "#/components/schemas/EntitySearchResult" } ] }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } - ] + "paymentChangeable": { + "type": "object", + "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", + "additionalProperties": { + "type": "boolean" + } + } + }, + "required": [ + "orders" + ] + }, + "ProductListingResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EntitySearchResult" }, - "apiAlias": { - "type": "string", - "enum": [ - "calculated_price" - ] - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" + { + "type": "object", + "properties": { + "currentFilters": { + "type": "object", + "description": "Contains the state of the filters. These can be used to create listing filters.", + "properties": { + "navigationId": { + "type": "string" + }, + "manufacturer": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "price": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "default": 0 + }, + "max": { + "type": "integer", + "default": 0 + } + }, + "required": [ + "min", + "max" + ] + }, + "rating": { + "oneOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "shipping-free": { + "type": "boolean", + "default": false + }, + "properties": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "search": { + "type": "string" + } }, - "name": { - "type": "string" + "required": [ + "manufacturer", + "navigationId", + "price", + "properties", + "rating", + "shipping-free" + ] + }, + "availableSortings": { + "type": "array", + "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", + "items": { + "type": "object", + "properties": { + "label": { + "type": "string" + }, + "translated": { + "type": "object", + "properties": { + "label": { + "type": "string" + } + }, + "required": [ + "label" + ] + }, + "key": { + "type": "string" + }, + "priority": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_sorting" + ] + } + }, + "required": [ + "label", + "translated", + "key", + "priority", + "apiAlias" + ] + } + }, + "sorting": { + "type": "string" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" } + }, + "entity": { + "type": "string", + "enum": [ + "product" + ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_listing" + ] } - } + }, + "required": [ + "elements", + "availableSortings", + "currentFilters", + "apiAlias" + ] } - }, - "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "referencePrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitPrice", - "positionPrice", - "netPrice", - "taxRules", - "rawTotal", - "taxStatus" ] }, - "CustomerAddressBody": { - "description": "Added since version: 6.0.0.0", - "required": [ - "countryId", - "firstName", - "lastName", - "city", - "street" - ], + "ProductMeasurements": { + "type": "object", + "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", "properties": { - "countryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryStateId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "salutationId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" + "width": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" + }, + "value": { + "type": "number" + } + } }, - "zipcode": { - "type": "string" + "height": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" + }, + "value": { + "type": "number" + } + } }, - "city": { - "type": "string" + "length": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" + }, + "value": { + "type": "number" + } + } }, - "company": { - "type": "string" + "weight": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg" + }, + "value": { + "type": "number" + } + } + } + } + }, + "CookieEntryCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CookieEntry" + } + }, + "CrossSellingElement": { + "type": "object", + "properties": { + "crossSelling": { + "$ref": "#/components/schemas/ProductCrossSelling" }, - "street": { - "type": "string" + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } }, - "department": { - "type": "string" + "total": { + "type": "integer", + "format": "int32" }, - "title": { - "type": "string" + "streamId": { + "type": "string", + "format": "uuid" }, - "phoneNumber": { + "apiAlias": { + "type": "string", + "enum": [ + "cross_selling_element" + ] + } + }, + "required": [ + "crossSelling", + "products", + "total", + "apiAlias" + ] + }, + "CookieEntry": { + "type": "object", + "properties": { + "cookie": { "type": "string" }, - "additionalAddressLine1": { + "value": { "type": "string" }, - "additionalAddressLine2": { - "type": "string" + "expiration": { + "type": "integer" }, - "customFields": { - "type": "object" + "name": { + "type": "string" }, - "country": { - "$ref": "#/components/schemas/Country" + "description": { + "type": "string" }, - "countryState": { - "$ref": "#/components/schemas/CountryState" + "hidden": { + "type": "boolean" }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "apiAlias": { + "type": "string", + "enum": [ + "cookie_entry" + ] } }, - "type": "object" + "required": [ + "cookie", + "hidden", + "apiAlias" + ] }, - "ReferencePrice": { + "MeasurementUnits": { "type": "object", + "description": "Configuration of the measurement system", "properties": { - "purchaseUnit": { - "type": "number" + "system": { + "type": "string", + "enum": [ + "metric", + "imperial" + ], + "default": "metric", + "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." }, - "referenceUnit": { + "units": { + "type": "object", + "description": "Units used in the measurement system.", + "properties": { + "length": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Unit of length." + }, + "weight": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." + } + } + } + } + }, + "CartListPrice": { + "type": "object", + "description": "", + "properties": { + "discount": { "type": "number" }, - "unitName": { - "type": "string" + "percentage": { + "type": "number" }, "price": { "type": "number" @@ -14581,1122 +14863,1101 @@ "apiAlias": { "type": "string", "enum": [ - "cart_price_reference" - ] - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/ListPrice" - }, - { - "type": "null" - } - ] - }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } - }, - { - "type": "null" - } - ] - }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } + "cart_list_price" ] } }, "required": [ - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" + "apiAlias" ] }, - "CustomerAddressRead": { + "CookieGroup": { "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true + "isRequired": { + "type": "boolean" }, - "customerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true + "name": { + "type": "string" }, - "createdAt": { - "type": "string", - "format": "date-time" + "description": { + "type": "string" }, - "updatedAt": { - "oneOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "null" - } - ] + "cookie": { + "type": "string" }, - "country": { - "$ref": "#/components/schemas/Country" + "value": { + "type": "string" }, - "countryState": { - "oneOf": [ - { - "$ref": "#/components/schemas/CountryState" - }, - { - "type": "null" - } - ] + "expiration": { + "type": "integer" }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "entries": { + "$ref": "#/components/schemas/CookieEntryCollection" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cookie_group" + ] } }, + "not": { + "allOf": [ + { + "required": [ + "cookie" + ] + }, + { + "required": [ + "entries" + ] + } + ] + }, "required": [ - "customerId", - "createdAt", - "updatedAt", - "country", - "salutation" + "name", + "isRequired", + "apiAlias" ] }, - "Criteria": { + "SuccessResponse": { "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "term": { - "description": "Search term", - "type": "string" - }, - "limit": { - "description": "Number of items per result page", - "type": "integer" - }, - "filter": { - "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "ids": { + "success": { + "type": "boolean" + } + } + }, + "CartItems": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { "type": "array", - "description": "List of ids to search for", "items": { - "type": "string" + "$ref": "#/components/schemas/LineItem" } + } + } + }, + "AggregationMetrics": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - "query": { + "type": { "type": "string", - "description": "The query string to search for" - }, - "associations": { - "$ref": "#/components/schemas/Associations" - }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" - } - }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } - }, - "fields": { - "type": "array", - "description": "Fields which should be returned in the search result.", - "items": { - "type": "string", - "description": "Name of a field" - } + "enum": [ + "avg", + "count", + "max", + "min", + "stats", + "sum" + ] }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" + "field": { + "type": "string" + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "CartDeliveryPosition": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } } }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" + "identifier": { + "type": "string" }, - "includes": { - "$ref": "#/components/schemas/Includes" + "lineItem": { + "$ref": "#/components/schemas/LineItem" }, - "excludes": { - "$ref": "#/components/schemas/Excludes" + "price": { + "$ref": "#/components/schemas/CalculatedPrice" } } }, - "NoneFieldsCriteria": { - "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", + "CustomerAddressBody": { + "description": "Added since version: 6.0.0.0", + "required": [ + "countryId", + "firstName", + "lastName", + "city", + "street" + ], "properties": { - "page": { - "description": "Search result page", - "type": "integer" + "countryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "term": { - "description": "Search term", - "type": "string" + "countryStateId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "limit": { - "description": "Number of items per result page", - "type": "integer" + "salutationId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "filter": { - "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } + "firstName": { + "type": "string" }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" - } + "lastName": { + "type": "string" }, - "query": { - "type": "string", - "description": "The query string to search for" + "zipcode": { + "type": "string" }, - "associations": { - "$ref": "#/components/schemas/Associations" + "city": { + "type": "string" }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" - } - }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } + "company": { + "type": "string" }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } + "street": { + "type": "string" }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" + "department": { + "type": "string" }, - "includes": { - "$ref": "#/components/schemas/Includes" + "title": { + "type": "string" }, - "excludes": { - "$ref": "#/components/schemas/Excludes" - } - } - }, - "Associations": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Criteria" - } - }, - "Includes": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { + "phoneNumber": { "type": "string" - } - } - }, - "Excludes": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { + }, + "additionalAddressLine1": { "type": "string" - } - } - }, - "Aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" }, - { - "title": "AggregationEntity", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "additionalAddressLine2": { + "type": "string" }, - { - "title": "AggregationFilter", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "customFields": { + "type": "object" }, - { - "title": "AggregationTerms", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "country": { + "$ref": "#/components/schemas/Country" }, - { - "title": "AggregationHistogram", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "countryState": { + "$ref": "#/components/schemas/CountryState" }, - { - "title": "AggregationRange", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationRange" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - } - ] - }, - "SubAggregations": { - "type": "object", - "properties": { - "aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/AggregationRange" - } - ] + "salutation": { + "$ref": "#/components/schemas/Salutation" } - } - }, - "TotalCountMode": { - "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", - "type": "string", - "default": "none", - "enum": [ - "none", - "exact", - "next-pages" - ] + }, + "type": "object" }, - "Query": { + "ProductPurchaseLimit": { "type": "object", + "description": "Current quantity purchase limits for a product.", + "required": [ + "productId", + "minPurchase", + "purchaseSteps", + "maxPurchase", + "stock", + "apiAlias" + ], "properties": { - "score": { - "type": "number" + "productId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The product ID." }, - "query": { - "oneOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } + "minPurchase": { + "type": "integer", + "description": "Minimum quantity a customer can purchase." + }, + "purchaseSteps": { + "type": "integer", + "description": "Step increment for quantity selection." + }, + "maxPurchase": { + "type": "integer", + "description": "Maximum quantity a customer can purchase, reflecting current stock for closeout products." + }, + "stock": { + "type": [ + "integer", + "null" + ], + "description": "Current stock level of the product." + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_purchase_limit" ] } - }, - "additionalProperties": true + } }, - "Sort": { + "CookieRouteResponse": { "type": "object", + "description": "Response containing cookie groups and their configuration hash.", "properties": { - "field": { - "type": "string" - }, - "order": { + "apiAlias": { "type": "string", "enum": [ - "ASC", - "DESC" + "cookie_groups_hash" ] }, - "naturalSorting": { - "type": "boolean" + "elements": { + "type": "array", + "description": "Collection of cookie groups", + "items": { + "$ref": "#/components/schemas/CookieGroup" + } }, - "type": { - "type": "string" - } - }, - "required": [ - "field", - "order" - ] - }, - "Filters": { - "type": "array", - "items": { - "anyOf": [ + "hash": { + "type": "string", + "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", + "example": "f86b6a872cb83dbd22d838ceda1aa3d4" + }, + "languageId": { + "type": "string", + "format": "uuid", + "description": "The language ID for which the cookie configuration was generated. Used to store hashes per language.", + "example": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" + } + }, + "required": [ + "elements", + "hash", + "languageId", + "apiAlias" + ], + "example": { + "apiAlias": "cookie_groups_hash", + "elements": [ { - "$ref": "#/components/schemas/SimpleFilter" + "isRequired": true, + "description": "Cookies required for this shop to function:", + "name": "Technically required", + "entries": [ + { + "name": "Session", + "hidden": false, + "cookie": "session-", + "apiAlias": "cookie_entry" + }, + { + "name": "Timezone", + "hidden": false, + "cookie": "timezone", + "apiAlias": "cookie_entry" + }, + { + "value": "1", + "expiration": 30, + "name": "Cookie preferences", + "hidden": true, + "cookie": "cookie-preference", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" }, { - "$ref": "#/components/schemas/EqualsFilter" + "isRequired": false, + "description": "Cookies used for statistics and shop performance metrics.", + "name": "Statistics", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "Google Analytics", + "hidden": false, + "cookie": "google-analytics-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" }, { - "$ref": "#/components/schemas/MultiNotFilter" + "isRequired": false, + "description": "Allows Google to collect personal data for online advertising and marketing.", + "name": "Marketing", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "Google Advertising", + "hidden": false, + "cookie": "google-ads-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" }, { - "$ref": "#/components/schemas/RangeFilter" + "isRequired": false, + "name": "Comfort features", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "YouTube video", + "hidden": false, + "cookie": "youtube-video", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" } - ] + ], + "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", + "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" } }, - "SimpleFilter": { + "CartItemsUpdate": { "type": "object", + "required": [ + "items" + ], "properties": { - "type": { - "type": "string", - "enum": [ - "contains", - "equalsAny", - "prefix", - "suffix" - ] - }, - "field": { - "type": "string" - }, - "value": { - "type": "string" + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartLineItemUpdate" + } } - }, - "required": [ - "type", - "field", - "value" - ] + } }, - "EqualsFilter": { + "CartLineItemUpdate": { "type": "object", + "required": [ + "id" + ], "properties": { + "id": { + "type": "string" + }, "type": { - "type": "string", - "enum": [ - "equals" - ] + "$ref": "#/components/schemas/OrderLineItem/properties/type" }, - "field": { + "quantity": { + "type": "integer" + }, + "referencedId": { "type": "string" }, - "value": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "type", - "field", - "value" - ] - }, - "MultiNotFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "multi", - "not" - ] + "label": { + "type": "string" }, - "operator": { - "type": "string", - "enum": [ - "and", - "or", - "nor", - "nand" - ] + "payload": { + "type": "object" }, - "queries": { - "$ref": "#/components/schemas/Filters" - } - }, - "required": [ - "type", - "operator", - "queries" - ] - }, - "RangeFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "range" - ] + "stackable": { + "type": "boolean" }, - "field": { + "removable": { + "type": "boolean" + }, + "coverId": { "type": "string" }, - "parameters": { + "priceDefinition": { "type": "object", "properties": { - "gte": { - "type": "number" + "type": { + "type": "string" }, - "gt": { + "price": { "type": "number" }, - "lte": { + "percentage": { "type": "number" }, - "lt": { + "quantity": { + "type": "integer" + }, + "isCalculated": { + "type": "boolean" + }, + "listPrice": { "type": "number" + }, + "taxRules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number" + }, + "percentage": { + "type": "number" + } + } + } } } } - }, - "required": [ - "type", - "field", - "parameters" - ] - }, - "Association": { - "additionalProperties": { - "$ref": "#/components/schemas/Association" } }, - "OrderRouteResponse": { - "type": "object", - "properties": { - "orders": { - "type": "object", - "allOf": [ - { - "type": "object", - "required": [ - "elements" - ], - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order" - } - } - } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - }, - "paymentChangeable": { - "type": "object", - "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", - "additionalProperties": { - "type": "boolean" - } - } - }, - "required": [ - "orders" - ] + "NavigationRouteResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + } }, - "CartDeliveryInformation": { + "CookieGroupCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CookieGroup" + } + }, + "ProductListingFlags": { "type": "object", + "description": "Additional flags for product listings", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_information" - ] - }, - "freeDelivery": { - "type": "boolean" - }, - "deliveryTime": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer" - }, - "max": { - "type": "integer" - }, - "unit": { + "no-aggregations": { + "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", + "oneOf": [ + { "type": "string" }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_time" - ] + { + "type": "null" } - } - }, - "height": { - "type": "integer" - }, - "length": { - "type": "integer" - }, - "restockTime": { - "type": "integer" - }, - "stock": { - "type": "integer" - }, - "weight": { - "type": "integer" + ] }, - "width": { - "type": "integer" - } - }, - "required": [ - "apiAlias" - ] - }, - "WishlistLoadRouteResponse": { - "type": "object", - "required": [ - "products" - ], - "properties": { - "wishlist": { - "type": "object", - "properties": { - "customerId": { + "only-aggregations": { + "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", + "oneOf": [ + { "type": "string" }, - "salesChannelId": { - "type": "string" + { + "type": "null" } - } - }, - "products": { - "$ref": "#/components/schemas/ProductListingResult" - } - } - }, - "AggregationEntity": { - "title": "AggregationEntity", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "entity" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "definition": { - "description": "The entity definition e.g \"product_manufacturer\".", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field", - "definition" - ] - }, - "AggregationFilter": { - "title": "AggregationFilter", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "filter" - ] - }, - "filter": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Filters" - } - } - }, - "required": [ - "name", - "type", - "filter" - ] - }, - "AggregationTerms": { - "title": "AggregationTerms", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "terms" ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "limit": { - "description": "The number of terms to return", - "type": "number" - }, - "sort": { - "type": "array", - "description": "Sorting the aggregation result.", - "items": { - "$ref": "#/components/schemas/Sort" - } } - }, - "required": [ - "name", - "type", - "field" - ] + } }, - "AggregationHistogram": { - "title": "AggregationHistogram", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "histogram" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "interval": { - "description": "The interval of the histogram", - "type": "number" - }, - "format": { - "description": "The format of the histogram", - "type": "string" - }, - "timeZone": { - "description": "The timezone of the histogram", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "AggregationRange": { - "title": "AggregationRange", - "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "range" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "ranges": { - "description": "The ranges of the aggregation", - "type": "array", - "items": { + "ShippingMethodPageRouteResponse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "deliveryTimeId": { + "type": "string" + }, + "deliveryTime": { "type": "object", - "anyOf": [ - { - "type": "object", - "title": "From and to", - "properties": { - "from": { - "type": "number", - "description": "The lower bound of the range" - }, - "to": { - "type": "number", - "description": "The upper bound of the range" - } + "properties": { + "name": { + "type": "string" + }, + "min": { + "type": "integer", + "format": "int32" + }, + "max": { + "type": "integer", + "format": "int32" + }, + "unit": { + "type": "string" + } + } + }, + "translations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" }, - "required": [ - "from", - "to" - ] + "name": { + "type": "string" + }, + "description": { + "type": "string" + } + } + } + }, + "orderDeliveries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "orderId": { + "type": "string" + }, + "shippingOrderAddressId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "shippingDateEarliest": { + "type": "string", + "format": "date-time" + }, + "shippingDateLatest": { + "type": "string", + "format": "date-time" + }, + "stateId": { + "type": "string" + } + } + } + }, + "salesChannelDefaultAssignments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } + } + }, + "salesChannels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } + } + }, + "availabilityRule": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "priority": { + "type": "integer", + "format": "int32" + }, + "invalid": { + "type": "boolean" + } + } + }, + "availabilityRuleId": { + "type": "string" + }, + "prices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "ruleId": { + "type": "string" + }, + "calculation": { + "type": "integer", + "format": "int32" + }, + "quantityStart": { + "type": "number", + "format": "float" + }, + "quantityEnd": { + "type": "number", + "format": "float" + }, + "price": { + "type": "number", + "format": "float" + }, + "calculationRuleId": { + "type": "string" + } + } + } + }, + "mediaId": { + "type": "string" + }, + "media": { + "type": "object", + "properties": { + "userId": { + "type": "string" + }, + "mimeType": { + "type": "string" + }, + "fileExtension": { + "type": "string" + }, + "fileSize": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string" }, - { - "type": "object", - "title": "From only", - "properties": { - "from": { - "type": "string", - "description": "The lower bound of the range" - } - }, - "required": [ - "from" - ] + "metaDataRaw": { + "type": "string" }, - { - "type": "object", - "title": "To only", - "properties": { - "to": { - "type": "string", - "description": "The upper bound of the range" - } - }, - "required": [ - "to" - ] + "mediaTypeRaw": { + "type": "string" + }, + "uploadedAt": { + "type": "string", + "format": "date-time" + }, + "alt": { + "type": "string" + }, + "url": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "mediaFolderId": { + "type": "string" + }, + "private": { + "type": "boolean" + }, + "thumbnailsRo": { + "type": "string" } - ] + } + }, + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + } } } - }, - "required": [ - "name", - "type", - "field", - "ranges" - ] + } }, - "CartListPrice": { + "CartPriceReference": { "type": "object", - "description": "", "properties": { - "discount": { + "purchaseUnit": { "type": "number" }, - "percentage": { + "referenceUnit": { "type": "number" }, + "unitName": { + "type": "string" + }, "price": { "type": "number" }, "apiAlias": { "type": "string", "enum": [ - "cart_list_price" + "cart_price_reference" + ] + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } ] } }, "required": [ - "apiAlias" + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" ] }, - "Cart": { + "Breadcrumb": { "type": "object", "properties": { "name": { - "description": "Name of the cart - for example `guest-cart`", "type": "string" }, - "token": { - "description": "Context token identifying the cart and the user session", - "type": "string" + "categoryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" + "type": { + "$ref": "#/components/schemas/Category/properties/type" }, - "lineItems": { - "description": "All items within the cart", + "translated": { + "type": "object", + "additionalProperties": true, + "properties": { + "customFields": { + "type": "object" + }, + "slotConfig": { + "type": "object" + }, + "linkType": { + "$ref": "#/components/schemas/Category/properties/linkType" + }, + "internalLink": { + "type": "string" + }, + "externalLink": { + "type": "string" + }, + "linkNewTab": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "metaTitle": { + "type": "string" + }, + "metaDescription": { + "type": "string" + }, + "keywords": { + "type": "string" + } + } + }, + "path": { + "type": "string" + }, + "seoUrls": { "type": "array", "items": { - "$ref": "#/components/schemas/LineItem" + "$ref": "#/components/schemas/SeoUrl" } }, - "errors": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "anyOf": [ - { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartError" - } - }, - { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "code": { - "type": "number" - }, - "key": { - "type": "string" - }, - "level": { - "type": "number" - }, - "message": { - "type": "string" - }, - "messageKey": { - "type": "string" - } - }, - "required": [ - "code", - "key", - "level", - "message", - "messageKey" - ] - } - } + "apiAlias": { + "type": "string", + "enum": [ + "breadcrumb" ] + } + }, + "required": [ + "name", + "categoryId", + "type", + "translated", + "path", + "apiAlias" + ] + }, + "CalculatedPrice": { + "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", + "properties": { + "unitPrice": { + "type": "number" }, - "deliveries": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDelivery" - } + "quantity": { + "type": "number" }, - "transactions": { - "description": "A list of all payment transactions associated with the current cart.", + "rawTotal": { + "type": "number" + }, + "totalPrice": { + "type": "number" + }, + "taxStatus": { + "type": "string", + "enum": [ + "net", + "tax-free" + ] + }, + "calculatedTaxes": { "type": "array", "items": { "type": "object", "properties": { - "paymentMethodId": { - "type": "string" + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] }, - "amount": { - "$ref": "#/components/schemas/CalculatedPrice" + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" } - } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] } }, - "modified": { - "type": "boolean" + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] }, - "customerComment": { - "description": "A comment that can be added to the cart.", + "listPrice": { "oneOf": [ { - "type": "string" + "$ref": "#/components/schemas/CartListPrice" }, { "type": "null" } ] }, - "affiliateCode": { - "description": "An affiliate tracking code", + "positionPrice": { + "type": "number" + }, + "netPrice": { + "type": "number" + }, + "regulationPrice": { "oneOf": [ { - "type": "string" + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } }, { "type": "null" } ] }, - "campaignCode": { - "description": "A campaign tracking code", + "hasRange": { + "type": "boolean" + }, + "variantId": { "oneOf": [ { - "type": "string" + "type": "string", + "format": "^[0-9a-f]{32}$" }, { "type": "null" @@ -15706,421 +15967,504 @@ "apiAlias": { "type": "string", "enum": [ - "cart" + "calculated_price" ] + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } } }, "required": [ - "price", - "apiAlias" + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "referencePrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitPrice", + "positionPrice", + "netPrice", + "taxRules", + "rawTotal", + "taxStatus" ] }, - "CookieGroup": { + "Association": { + "additionalProperties": { + "$ref": "#/components/schemas/Association" + } + }, + "LineItemType": { + "type": "string", + "deprecated": true, + "enum": [ + "product", + "credit", + "custom", + "promotion", + "discount", + "container", + "quantity" + ] + }, + "LineItem": { "type": "object", "properties": { - "isRequired": { - "type": "boolean" - }, - "name": { - "type": "string" + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } }, - "description": { - "type": "string" + "cover": { + "$ref": "#/components/schemas/Media" }, - "cookie": { + "dataContextHash": { "type": "string" }, - "value": { + "dataTimestamp": { "type": "string" }, - "expiration": { - "type": "integer" + "deliveryInformation": { + "$ref": "#/components/schemas/CartDeliveryInformation" }, - "entries": { - "$ref": "#/components/schemas/CookieEntryCollection" + "description": { + "type": "string" }, - "apiAlias": { - "type": "string", - "enum": [ - "cookie_group" - ] - } - }, - "not": { - "allOf": [ - { - "required": [ - "cookie" - ] - }, - { - "required": [ - "entries" - ] - } - ] - }, - "required": [ - "name", - "isRequired", - "apiAlias" - ] - }, - "MeasurementUnits": { - "type": "object", - "description": "Configuration of the measurement system", - "properties": { - "system": { - "type": "string", - "enum": [ - "metric", - "imperial" - ], - "default": "metric", - "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." + "good": { + "type": "boolean" }, - "units": { - "type": "object", - "description": "Units used in the measurement system.", - "properties": { - "length": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm", - "description": "Unit of length." - }, - "weight": { - "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg", - "description": "Unit of weight." - } - } - } - } - }, - "Price": { - "type": "object", - "description": "Price object", - "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "id": { + "type": "string" }, - "gross": { - "description": "", - "type": "number" + "label": { + "type": "string" }, - "net": { - "description": "", - "type": "number" + "modified": { + "type": "boolean" }, - "linked": { - "description": "", + "modifiedByApp": { "type": "boolean" }, - "listPrice": { - "description": "", + "payload": { + "$ref": "#/components/schemas/ProductJsonApi" + }, + "price": { "type": "object", "properties": { - "currencyId": { + "apiAlias": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "enum": [ + "calculated_price" + ] }, - "gross": { - "description": "", + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] + }, + "quantity": { "type": "number" }, - "net": { - "description": "", + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] + }, + "totalPrice": { "type": "number" }, - "linked": { - "description": "", - "type": "boolean" + "unitPrice": { + "type": "number" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } } }, "required": [ - "gross", - "net" + "apiAlias", + "totalPrice", + "quantity", + "unitPrice" ] }, - "regulationPrice": { - "description": "", + "priceDefinition": { + "$ref": "#/components/schemas/CartPriceQuantity" + }, + "quantity": { + "type": "number" + }, + "quantityInformation": { "type": "object", "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "", + "maxPurchase": { "type": "number" }, - "net": { - "description": "", + "minPurchase": { "type": "number" }, - "linked": { - "description": "", - "type": "boolean" + "purchaseSteps": { + "type": "number" } - }, - "required": [ - "gross", - "net" + } + }, + "referencedId": { + "type": "string" + }, + "removable": { + "type": "boolean" + }, + "stackable": { + "type": "boolean" + }, + "states": { + "deprecated": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "is-physical", + "is-download" + ] + } + }, + "type": { + "$ref": "#/components/schemas/OrderLineItem/properties/type" + }, + "uniqueIdentifier": { + "type": "string" + } + }, + "required": [ + "id", + "type" + ] + }, + "ListPrice": { + "type": "object", + "description": "", + "properties": { + "discount": { + "type": "number" + }, + "percentage": { + "type": "number" + }, + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_list_price" ] } }, "required": [ - "currencyId", - "gross", - "net" + "apiAlias" ] }, - "ContextMeasurementSystemInfo": { + "AggregationEntity": { + "title": "AggregationEntity", "type": "object", - "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", "properties": { - "system": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", "type": "string", "enum": [ - "metric", - "imperial" - ], - "default": "metric", - "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." + "entity" + ] }, - "units": { - "type": "object", - "description": "Units used in the measurement system.", - "properties": { - "length": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm", - "description": "Unit of length." - }, - "weight": { - "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg", - "description": "Unit of weight." - } - } + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "definition": { + "description": "The entity definition e.g \"product_manufacturer\".", + "type": "string" } - } + }, + "required": [ + "name", + "type", + "field", + "definition" + ] }, - "FindProductVariantRouteResponse": { + "AggregationFilter": { + "title": "AggregationFilter", "type": "object", "properties": { - "foundCombination": { - "type": "object", - "properties": { - "variantId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "options": { - "type": "array", - "items": { - "type": "string" - } - } + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "filter" + ] + }, + "filter": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Filters" } } - } + }, + "required": [ + "name", + "type", + "filter" + ] }, - "ListPrice": { + "AggregationTerms": { + "title": "AggregationTerms", "type": "object", - "description": "", "properties": { - "discount": { - "type": "number" + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "percentage": { - "type": "number" + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "terms" + ] }, - "price": { + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "limit": { + "description": "The number of terms to return", "type": "number" }, - "apiAlias": { + "sort": { + "type": "array", + "description": "Sorting the aggregation result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "AggregationHistogram": { + "title": "AggregationHistogram", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", "type": "string", "enum": [ - "cart_list_price" + "histogram" ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "interval": { + "description": "The interval of the histogram", + "type": "number" + }, + "format": { + "description": "The format of the histogram", + "type": "string" + }, + "timeZone": { + "description": "The timezone of the histogram", + "type": "string" } }, "required": [ - "apiAlias" + "name", + "type", + "field" ] }, - "ProductListingResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EntitySearchResult" + "AggregationRange": { + "title": "AggregationRange", + "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - { - "type": "object", - "properties": { - "currentFilters": { - "type": "object", - "description": "Contains the state of the filters. These can be used to create listing filters.", - "properties": { - "navigationId": { - "type": "string" - }, - "manufacturer": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "price": { - "type": "object", - "properties": { - "min": { - "type": "integer", - "default": 0 - }, - "max": { - "type": "integer", - "default": 0 - } + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "range" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "ranges": { + "description": "The ranges of the aggregation", + "type": "array", + "items": { + "type": "object", + "anyOf": [ + { + "type": "object", + "title": "From and to", + "properties": { + "from": { + "type": "number", + "description": "The lower bound of the range" }, - "required": [ - "min", - "max" - ] - }, - "rating": { - "oneOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "shipping-free": { - "type": "boolean", - "default": false + "to": { + "type": "number", + "description": "The upper bound of the range" + } }, + "required": [ + "from", + "to" + ] + }, + { + "type": "object", + "title": "From only", "properties": { - "type": "array", - "items": { + "from": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "description": "The lower bound of the range" } }, - "search": { - "type": "string" - } + "required": [ + "from" + ] }, - "required": [ - "manufacturer", - "navigationId", - "price", - "properties", - "rating", - "shipping-free" - ] - }, - "availableSortings": { - "type": "array", - "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", - "items": { + { "type": "object", - "properties": { - "label": { - "type": "string" - }, - "translated": { - "type": "object", - "properties": { - "label": { - "type": "string" - } - }, - "required": [ - "label" - ] - }, - "key": { - "type": "string" - }, - "priority": { - "type": "number" - }, - "apiAlias": { + "title": "To only", + "properties": { + "to": { "type": "string", - "enum": [ - "product_sorting" - ] + "description": "The upper bound of the range" } }, "required": [ - "label", - "translated", - "key", - "priority", - "apiAlias" + "to" ] } - }, - "sorting": { - "type": "string" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - }, - "entity": { - "type": "string", - "enum": [ - "product" - ] - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_listing" - ] - } - }, - "required": [ - "elements", - "availableSortings", - "currentFilters", - "apiAlias" - ] + ] + } } + }, + "required": [ + "name", + "type", + "field", + "ranges" ] } }, @@ -16260,38 +16604,25 @@ "204": { "description": "No Content" }, - "CurrencyListResponse": { - "description": "Entity search result containing currencies.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Currency" - } - } - } - } - }, - "ProductListResponse": { - "description": "Entity search result containing products", + "SeoUrlListResponse": { + "description": "Entity search result containing seo urls.", "content": { "application/json": { "schema": { "allOf": [ { - "required": [ - "elements" - ], "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Product" + "$ref": "#/components/schemas/SeoUrl" } } }, - "type": "object" + "type": "object", + "required": [ + "elements" + ] }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -16301,25 +16632,25 @@ } } }, - "SeoUrlListResponse": { - "description": "Entity search result containing seo urls.", + "ProductListResponse": { + "description": "Entity search result containing products", "content": { "application/json": { "schema": { "allOf": [ { + "required": [ + "elements" + ], "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/SeoUrl" + "$ref": "#/components/schemas/Product" } } }, - "type": "object", - "required": [ - "elements" - ] + "type": "object" }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -16329,33 +16660,21 @@ } } }, - "CategoryListResponse": { - "description": "Entity search result containing categories.", + "CurrencyListResponse": { + "description": "Entity search result containing currencies.", "content": { "application/json": { "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - } - } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "type": "array", + "items": { + "$ref": "#/components/schemas/Currency" + } } } } }, - "LanguageListResponse": { - "description": "Entity search result containing languages.", + "CountryListResponse": { + "description": "Entity search result containing countries.", "content": { "application/json": { "schema": { @@ -16365,13 +16684,10 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Language" + "$ref": "#/components/schemas/Country" } } }, - "required": [ - "elements" - ], "type": "object" }, { @@ -16382,8 +16698,8 @@ } } }, - "CountryStateListResponse": { - "description": "Entity search result containing countries.", + "SalutationListResponse": { + "description": "Entity search result containing salutations.", "content": { "application/json": { "schema": { @@ -16393,7 +16709,7 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/CountryState" + "$ref": "#/components/schemas/Salutation" } } }, @@ -16407,46 +16723,22 @@ } } }, - "ContextTokenResponse": { - "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", - "headers": { - "sw-context-token": { - "description": "Contains sw-context-token value", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "description": "Define the URL which browser will be redirected to", - "type": "string" - } - } - } - } - } - }, - "SalutationListResponse": { - "description": "Entity search result containing salutations.", + "CategoryListResponse": { + "description": "Entity search result containing categories.", "content": { "application/json": { "schema": { "allOf": [ { + "type": "object", "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Salutation" + "$ref": "#/components/schemas/Category" } } - }, - "type": "object" + } }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -16456,29 +16748,18 @@ } } }, - "ShippingMethodListResponse": { - "description": "Entity search result containing shipping methods.", + "CountryStateListResponse": { + "description": "Entity search result containing countries.", "content": { "application/json": { "schema": { "allOf": [ { - "required": [ - "elements" - ], "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/ShippingMethod" + "$ref": "#/components/schemas/CountryState" } } }, @@ -16492,8 +16773,8 @@ } } }, - "CountryListResponse": { - "description": "Entity search result containing countries.", + "LanguageListResponse": { + "description": "Entity search result containing languages.", "content": { "application/json": { "schema": { @@ -16503,10 +16784,13 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Country" + "$ref": "#/components/schemas/Language" } } }, + "required": [ + "elements" + ], "type": "object" }, { @@ -16517,6 +16801,30 @@ } } }, + "ContextTokenResponse": { + "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", + "headers": { + "sw-context-token": { + "description": "Contains sw-context-token value", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redirectUrl": { + "description": "Define the URL which browser will be redirected to", + "type": "string" + } + } + } + } + } + }, "OpenApi3": { "description": "Returns information about the store API.", "content": { @@ -16731,6 +17039,42 @@ } } } + }, + "ShippingMethodListResponse": { + "description": "Entity search result containing shipping methods.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "required": [ + "elements" + ], + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingMethod" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } } }, "parameters": { @@ -16754,6 +17098,16 @@ "default": "application/json" } }, + "swLanguageId": { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, "noAggregations": { "name": "no-aggregations", "in": "query", diff --git a/SwagCustomizedProducts-storeapi.summary.json b/SwagCustomizedProducts-storeapi.summary.json index 9690699..492dbf4 100644 --- a/SwagCustomizedProducts-storeapi.summary.json +++ b/SwagCustomizedProducts-storeapi.summary.json @@ -16,6 +16,9 @@ "AppCmsBlock", "AppFlowAction", "AppFlowEvent", + "AppMcpPrompt", + "AppMcpResource", + "AppMcpTool", "AppPaymentMethod", "AppScriptCondition", "AppShippingMethod", @@ -30,6 +33,8 @@ "CartDeliveryPosition", "CartError", "CartItems", + "CartItemsUpdate", + "CartLineItemUpdate", "CartListPrice", "CartPriceQuantity", "CartPriceReference", @@ -117,6 +122,7 @@ "NavigationType", "NewsletterRecipient", "NewsletterRecipientJsonApi", + "NewsletterStatus", "NoneFieldsCriteria", "Notification", "NumberRange", @@ -157,6 +163,7 @@ "ProductMeasurements", "ProductMedia", "ProductPrice", + "ProductPurchaseLimit", "ProductReview", "ProductSearchConfig", "ProductSearchConfigField", @@ -182,6 +189,8 @@ "SalesChannelAnalytics", "SalesChannelContext", "SalesChannelDomain", + "SalesChannelTrackingCustomer", + "SalesChannelTrackingOrder", "SalesChannelType", "Salutation", "SalutationJsonApi", From 9c58d7207ad3645c81441fbac9129d9993d70ad4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 29 May 2026 16:30:03 +0200 Subject: [PATCH 07/16] [create-pull-request] automated change (#418) Co-authored-by: shopwareBot --- storeapi.json | 18182 ++++++++++++++++++++++++------------------------ 1 file changed, 9091 insertions(+), 9091 deletions(-) diff --git a/storeapi.json b/storeapi.json index 0e1aada..5d8ee0e 100644 --- a/storeapi.json +++ b/storeapi.json @@ -12044,165 +12044,130 @@ "$ref": "#/components/schemas/Breadcrumb" } }, - "EntitySearchResult": { + "CookieGroupCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CookieGroup" + } + }, + "CalculatedPrice": { "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "entity": { - "type": "string" + "unitPrice": { + "type": "number" }, - "total": { - "type": "integer", - "description": "The total number of found entities" + "quantity": { + "type": "number" }, - "aggregations": { - "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", - "items": { - "type": "object" - } + "rawTotal": { + "type": "number" }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." + "totalPrice": { + "type": "number" }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." - } - } - }, - "SalesChannelContext": { - "type": "object", - "properties": { - "token": { - "description": "Context the user session", - "type": "string" + "taxStatus": { + "type": "string", + "enum": [ + "net", + "tax-free" + ] }, - "currentCustomerGroup": { - "type": "object", - "description": "Customer group of the current user", - "properties": { - "name": { - "type": "string", - "description": "Name of customer group to which the customer belongs within the specific sales channel they are currently interacting with." + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } }, - "displayGross": { - "type": "boolean", - "description": "When `true`, product's gross price is displayed for that customer group who belongs to the specific sales channel they are currently interacting with." - } + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] } }, - "fallbackCustomerGroup": { - "description": "Fallback group if the default customer group is not applicable", - "type": "object", - "properties": { - "name": { - "type": "string" + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" }, - "displayGross": { - "type": "boolean" + { + "type": "null" } - } + ] }, - "currency": { - "$ref": "#/components/schemas/Currency", - "properties": { - "isoCode": { - "description": "Standard international three digit code to represent currency in a given sales channel. For example, USD." - }, - "factor": { - "description": "Currency exchange rate in a specific sales channel the customer is currently interacting with." - }, - "symbol": { - "description": "A currency symbol is a graphical representation used as shorthand for a currency's name, for example US Dollar - $ in a given sales channel." - }, - "shortName": { - "description": "Acronym for international currencies, for example, USD in a given sales channel." - }, - "name": { - "description": "Full name of the currency in a given sales channel. For example, US-Dollar." - }, - "position": { - "description": "The order of the tabs for multiple currencies defined in a given sales channel." - }, - "decimalPrecision": { - "description": "It defines the round off value for currency to the nearest decimal point in a given sales channel. If set to 2, it rounds off to two significant decimal points." + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" }, - "isSystemDefault": { - "description": "Runtime field, cannot be used as part of the criteria." + { + "type": "null" } - } + ] }, - "salesChannel": { - "$ref": "#/components/schemas/SalesChannel", - "properties": { - "typeId": { - "description": "Unique identity of a sales channel's type within a specific sales channel." - }, - "languageId": { - "description": "Unique identity of a sales channel's language within a specific sales channel." - }, - "currencyId": { - "description": "Unique identity of a sales channel's currency within a specific sales channel." - }, - "paymentMethodId": { - "description": "Unique identity of a sales channel's payment method within a specific sales channel." - }, - "shippingMethodId": { - "description": "Unique identity of a sales channel's shipping method within a specific sales channel." - }, - "countryId": { - "description": "Unique identity of a sales channel's country within a specific sales channel." - }, - "navigationCategoryId": { - "description": "Unique identity of a sales channel's navigation category within a specific sales channel." - }, - "navigationCategoryDepth": { - "description": "It determines the number of levels of subcategories in the storefront category menu within a specific sales channel." - }, - "footerCategoryId": { - "description": "Unique identity of a sales channel's footer category within a specific sales channel." - }, - "serviceCategoryId": { - "description": "Unique identity of a sales channel's service category within a specific sales channel." - }, - "name": { - "description": "Name of the sales channel." - }, - "shortName": { - "description": "A short name for sales channel." - }, - "accessKey": { - "description": "Access key to store api." - }, - "active": { - "description": "When `true`, the sales channel is enabled." - }, - "maintenance": { - "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." - }, - "maintenanceIpWhitelist": { - "description": "Array of IP address allowed to access the sales channel." - }, - "mailHeaderFooterId": { - "description": "Unique identity of a sales channel's mail header and footer within a specific sales channel." - }, - "customerGroupId": { - "description": "Unique identity of a sales channel's customer group within a specific sales channel." - }, - "hreflangActive": { - "description": "When `true`, the sales channel pages are available in different languages within a specific sales channel." + "positionPrice": { + "type": "number" + }, + "netPrice": { + "type": "number" + }, + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } }, - "hreflangDefaultDomainId": { - "description": "Unique identity of a sales channel's hreflangDefaultDomain within a specific sales channel." + { + "type": "null" + } + ] + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" }, - "analyticsId": { - "description": "Unique identity of a sales channel's analytics within a specific sales channel." + { + "type": "null" } - } + ] }, - "measurementSystem": { - "$ref": "#/components/schemas/ContextMeasurementSystemInfo" + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] }, "taxRules": { "type": "array", @@ -12218,3432 +12183,2924 @@ "type": "string" } } - }, - "properties": { - "taxRate": { - "description": "Rate of tax within a specific sales channel." - }, - "name": { - "description": "Name defined for a Tax within a specific sales channel." - } } - }, - "customer": { - "oneOf": [ - { - "type": "null" - }, - { - "$ref": "#/components/schemas/Customer" - } + } + }, + "required": [ + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "referencePrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitPrice", + "positionPrice", + "netPrice", + "taxRules", + "rawTotal", + "taxStatus" + ] + }, + "MeasurementUnits": { + "type": "object", + "description": "Configuration of the measurement system", + "properties": { + "system": { + "type": "string", + "enum": [ + "metric", + "imperial" ], + "default": "metric", + "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." + }, + "units": { + "type": "object", + "description": "Units used in the measurement system.", "properties": { - "groupId": { - "description": "Unique identity of a customer's group within a specific sales channel." - }, - "defaultPaymentMethodId": { - "description": "Unique identity of a customer's default payment method within a specific sales channel." - }, - "salesChannelId": { - "description": "Unique identity of sales channel the customer is currently interacting with." + "length": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Unit of length." }, - "languageId": { - "description": "Unique identity of language within a specific sales channel the customer is interacting." + "weight": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." + } + } + } + } + }, + "CartListPrice": { + "type": "object", + "description": "", + "properties": { + "discount": { + "type": "number" + }, + "percentage": { + "type": "number" + }, + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_list_price" + ] + } + }, + "required": [ + "apiAlias" + ] + }, + "CartDeliveryInformation": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_information" + ] + }, + "freeDelivery": { + "type": "boolean" + }, + "deliveryTime": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - "lastPaymentMethodId": { - "description": "Unique identity of customer's last payment method within a specific sales channel." + "min": { + "type": "integer" }, - "defaultBillingAddressId": { - "description": "Unique identity of customer's default billing address within a specific sales channel." + "max": { + "type": "integer" }, - "defaultShippingAddressId": { - "description": "Unique identity of customer's default shipping address within a specific sales channel." + "unit": { + "type": "string" }, - "customerNumber": { - "description": "Name of the customer within a specific sales channel the customer is interacting." + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_time" + ] + } + } + }, + "height": { + "type": "integer" + }, + "length": { + "type": "integer" + }, + "restockTime": { + "type": "integer" + }, + "stock": { + "type": "integer" + }, + "weight": { + "type": "integer" + }, + "width": { + "type": "integer" + } + }, + "required": [ + "apiAlias" + ] + }, + "ProductListingCriteria": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + }, + { + "type": "object", + "description": "Additional search parameters for product listings", + "properties": { + "order": { + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "type": "string" }, - "salutationId": { - "description": "Unique identity of customer's default shipping address within a specific sales channel." + "limit": { + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "type": "integer", + "minimum": 0 }, - "firstName": { - "description": "First name of the customer within a specific sales channel." + "p": { + "description": "Search result page", + "type": "integer", + "default": 1 }, - "lastName": { - "description": "Last name of the customer within a specific sales channel." + "manufacturer": { + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "type": "string" }, - "company": { - "description": "Company name of the customer within a specific sales channel." + "min-price": { + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 }, - "password": { - "description": "Password of the customer within a specific sales channel." + "max-price": { + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 }, - "email": { - "description": "Email of the customer within a specific sales channel." + "rating": { + "description": "Filter products with a minimum average rating.", + "type": "integer" }, - "title": { - "description": "Customer's title or honorifics like Mr, Mrs, etc within a specific sales channel." + "shipping-free": { + "description": "Filters products that are marked as shipping-free.", + "type": "boolean", + "default": false }, - "affiliateCode": { - "description": "An affiliate code is an identification option with which website operators can mark outgoing links within a specific sales channel." + "properties": { + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "type": "string" }, - "campaignCode": { - "description": "A unique identifier for a campaign within a specific sales channel." + "manufacturer-filter": { + "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", + "type": "boolean", + "default": true }, - "active": { - "description": "When `true`, the status of the customer is set active within a specific sales channel." + "price-filter": { + "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", + "type": "boolean", + "default": true }, - "doubleOptInRegistration": { - "description": "When `true`, user subscriptions to an email marketing list is allowed within a specific sales channel." + "rating-filter": { + "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", + "type": "boolean", + "default": true }, - "doubleOptInEmailSentDate": { - "description": "Date and time when the double opt-in email was sent within a specific sales channel." + "shipping-free-filter": { + "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", + "type": "boolean", + "default": true }, - "doubleOptInConfirmDate": { - "description": "Date and time when the double opt-in email was confirmed within a specific sales channel." + "property-filter": { + "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", + "type": "boolean", + "default": true }, - "hash": { - "description": "Password hash for account recovery within a specific sales channel." + "property-whitelist": { + "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", + "type": "string" }, - "guest": { - "description": "Boolean value is `true` for a guest account within a specific sales channel." - }, - "firstLogin": { - "description": "Captures date and time of customer's first login within a specific sales channel." - }, - "lastLogin": { - "description": "Captures date and time of customer's last login within a specific sales channel." - }, - "newsletter": { - "description": "When `true`, then the customer gets subscribe to the newsletter" - }, - "birthday": { - "description": "Captures customer's birthday details within a specific sales channel." - }, - "lastOrderDate": { - "description": "Captures customer's last order date within a specific sales channel." - }, - "orderCount": { - "description": "Captures the number of orders placed by a customer within a specific sales channel." - }, - "legacyEncoder": { - "description": "encapsulates shop credentials when needed to migrate shop system from old instance to new instance" - }, - "legacyPassword": { - "description": "Hashed password of the old shop system" + "reduce-aggregations": { + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + } + } + ], + "properties": { + "filter": { + "properties": { + "type": { + "description": "To filter the results and aggregations with filter types like ==, >=, etc." }, - "autoIncrement": { - "description": "Internal field. " + "field": { + "description": "To filter the results and aggregations by field like an property identifier." }, - "remoteAddress": { - "description": "Anonymous IP address of the customer for last session." + "value": { + "description": "To filter the results and aggregations by value." } } }, - "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethod", + "sort": { "properties": { - "pluginId": { - "description": "Unique identity of payment plugin within a specific sales channel." - }, - "handlerIdentifier": { - "description": "Internal field that contains system identifier details for payment methods like Paypal." - }, - "name": { - "description": "Name of the payment method within a specific sales channel." - }, - "description": { - "description": "A short description about the payment method within a specific sales channel." - }, - "position": { - "description": "The order of the tabs of your defined payment methods in the storefront by entering numerical values like 1,2,3, etc within a specific sales channel." - }, - "active": { - "description": "When `true`, the payment method is available for usage within a specific sales channel." - }, - "availabilityRuleId": { - "description": "Unique identity of the rule for the payment method." + "field": { + "description": "Sort the search results by field like an property identifier." }, - "mediaId": { - "description": "Unique identity of media used in payment method within a specific sales channel." + "order": { + "description": "Sort the search results of orders by ascending or descending." }, - "formattedHandlerIdentifier": { - "description": "Internal field that contains system identifier details for payment methods like Paypal." + "naturalSorting": { + "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." } } }, - "shippingLocation": { - "type": "object", + "post-filter": { "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] + "type": { + "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." }, - "country": { - "$ref": "#/components/schemas/Country" + "field": { + "description": "To filter only the results but not the aggregations by field like an property identifier." }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" + "value": { + "description": "To filter only the results but not the aggregations by value." } } + } + } + }, + "ProductPurchaseLimit": { + "type": "object", + "description": "Current quantity purchase limits for a product.", + "required": [ + "productId", + "minPurchase", + "purchaseSteps", + "maxPurchase", + "stock", + "apiAlias" + ], + "properties": { + "productId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The product ID." }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod", + "minPurchase": { + "type": "integer", + "description": "Minimum quantity a customer can purchase." + }, + "purchaseSteps": { + "type": "integer", + "description": "Step increment for quantity selection." + }, + "maxPurchase": { + "type": "integer", + "description": "Maximum quantity a customer can purchase, reflecting current stock for closeout products." + }, + "stock": { + "type": [ + "integer", + "null" + ], + "description": "Current stock level of the product." + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_purchase_limit" + ] + } + } + }, + "CrossSellingElementCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrossSellingElement" + }, + "properties": { + "total": { + "description": "Number of cross selling elements found." + } + } + }, + "Criteria": { + "type": "object", + "description": "Criteria to query entities.", + "properties": { + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", + "type": "string" + }, + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + }, "properties": { - "name": { - "description": "Name of the shipping method within a specific sales channel." - }, - "active": { - "description": "When `true`, the shipping method is available for usage within a specific sales channel." - }, - "description": { - "description": "A short description about the shipping method within a specific sales channel." - }, - "trackingUrl": { - "description": "URL that allows to track packages for a specific sales channel." - }, - "deliveryTimeId": { - "description": "Unique identity of deliveryTime within a specific sales channel." + "type": { + "description": "To filter the results and aggregations with filter types like ==, >=, etc." }, - "availabilityRuleId": { - "description": "Unique identity of the rule for the payment method." + "field": { + "description": "To filter the results and aggregations by field like an property identifier." }, - "mediaId": { - "description": "Unique identity of media used in shipping method within a specific sales channel." + "value": { + "description": "To filter the results and aggregations by value." } } }, - "context": { - "description": "Core context with general configuration values and state", - "type": "object", + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } + }, + "query": { + "type": "string", + "description": "The query string to search for" + }, + "associations": { + "$ref": "#/components/schemas/Associations" + }, + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + }, "properties": { - "versionId": { - "type": "string", - "description": "Unique identity of context's version in a specific sales channel." - }, - "currencyId": { - "type": "string", - "description": "Unique identity of currency context in a specific sales channel." - }, - "currencyFactor": { - "type": "integer", - "description": "Unique identity of currency factor context in a specific sales channel." - }, - "currencyPrecision": { - "type": "integer", - "format": "int32", - "description": "It defines the round off value of currency to the nearest decimal point. If set to 2, it rounds off to two significant decimal points." - }, - "languageIdChain": { - "type": "array", - "items": { - "type": "string" - } - }, - "scope": { - "type": "string", - "description": "Scope defines if its related to system or user context." - }, - "source": { - "type": "object", - "required": [ - "salesChannelId", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "sales-channel", - "shop-api" - ] - }, - "salesChannelId": { - "type": "string" - } - }, - "description": "When context is related to user in the source, then there is userId." + "type": { + "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." }, - "taxState": { - "type": "string", - "description": "Tax state can either be `gross` or `net`." + "field": { + "description": "To filter only the results but not the aggregations by field like an property identifier." }, - "useCache": { - "type": "boolean", - "description": "When boolean value is `true`, caching is used." + "value": { + "description": "To filter only the results but not the aggregations by value." } } }, - "itemRounding": { - "type": "object", - "required": [ - "decimals", - "interval", - "roundForNet", - "apiAlias" - ], + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + }, "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" - ] - }, - "decimals": { - "type": "integer", - "format": "int32" + "field": { + "description": "Sort the search results by field like an property identifier." }, - "interval": { - "type": "number", - "format": "float" + "order": { + "description": "Sort the search results of orders by ascending or descending." }, - "roundForNet": { - "type": "boolean" + "naturalSorting": { + "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." } } }, - "totalRounding": { - "type": "object", - "required": [ - "decimals", - "interval", - "roundForNet", - "apiAlias" - ], - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" - ] - }, - "decimals": { - "type": "integer", - "format": "int32" - }, - "interval": { - "type": "number", - "format": "float" - }, - "roundForNet": { - "type": "boolean" - } + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" } }, - "languageInfo": { - "type": "object", - "required": [ - "localeCode", - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "localeCode": { - "type": "string" - } + "fields": { + "type": "array", + "description": "Fields which should be returned in the search result.", + "items": { + "type": "string", + "description": "Name of a field" } }, - "apiAlias": { - "type": "string", - "enum": [ - "sales_channel_context" - ] - } - }, - "required": [ - "salesChannel", - "apiAlias", - "itemRounding", - "totalRounding", - "languageInfo" - ] - }, - "CartError": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "key": { - "type": "string" - }, - "level": { - "type": "number", - "enum": [ - 0, - 10, - 20 - ], - "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } }, - "message": { - "type": "string" + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" }, - "messageKey": { - "type": "string" - } - }, - "required": [ - "key", - "level", - "message", - "messageKey" - ] - }, - "ContextMeasurementSystemInfo": { - "type": "object", - "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", - "properties": { - "system": { - "type": "string", - "enum": [ - "metric", - "imperial" - ], - "default": "metric", - "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." + "includes": { + "$ref": "#/components/schemas/Includes" }, - "units": { - "type": "object", - "description": "Units used in the measurement system.", - "properties": { - "length": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm", - "description": "Unit of length." - }, - "weight": { - "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg", - "description": "Unit of weight." - } - } + "excludes": { + "$ref": "#/components/schemas/Excludes" } } }, - "CustomerAddressRead": { + "NoneFieldsCriteria": { "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true + "page": { + "description": "Search result page", + "type": "integer" }, - "customerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true + "term": { + "description": "Search term", + "type": "string" }, - "createdAt": { - "type": "string", - "format": "date-time" + "limit": { + "description": "Number of items per result page", + "type": "integer" }, - "updatedAt": { - "oneOf": [ + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } + }, + "query": { + "type": "string", + "description": "The query string to search for" + }, + "associations": { + "$ref": "#/components/schemas/Associations" + }, + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + }, + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } + }, + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" + }, + "excludes": { + "$ref": "#/components/schemas/Excludes" + } + } + }, + "Associations": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Criteria" + } + }, + "Includes": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "Excludes": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "Aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" + }, + { + "title": "AggregationEntity", + "allOf": [ { - "type": "string", - "format": "date-time" + "$ref": "#/components/schemas/AggregationEntity" }, { - "type": "null" + "$ref": "#/components/schemas/SubAggregations" } ] }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "oneOf": [ + { + "title": "AggregationFilter", + "allOf": [ { - "$ref": "#/components/schemas/CountryState" + "$ref": "#/components/schemas/AggregationFilter" }, { - "type": "null" + "$ref": "#/components/schemas/SubAggregations" } ] }, - "salutation": { - "$ref": "#/components/schemas/Salutation" - } - }, - "required": [ - "customerId", - "createdAt", - "updatedAt", - "country", - "salutation" - ] - }, - "ProductListingCriteria": { - "allOf": [ { - "$ref": "#/components/schemas/Criteria" + "title": "AggregationTerms", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] }, { - "type": "object", - "description": "Additional search parameters for product listings", - "properties": { - "order": { - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "type": "string" - }, - "limit": { - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "type": "integer", - "minimum": 0 - }, - "p": { - "description": "Search result page", - "type": "integer", - "default": 1 - }, - "manufacturer": { - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", - "type": "string" - }, - "min-price": { - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 - }, - "max-price": { - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" }, - "rating": { - "description": "Filter products with a minimum average rating.", - "type": "integer" + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationRange", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationRange" }, - "shipping-free": { - "description": "Filters products that are marked as shipping-free.", - "type": "boolean", - "default": false + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + } + ] + }, + "SubAggregations": { + "type": "object", + "properties": { + "aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" }, - "properties": { - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", - "type": "string" + { + "$ref": "#/components/schemas/AggregationEntity" }, - "manufacturer-filter": { - "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", - "type": "boolean", - "default": true + { + "$ref": "#/components/schemas/AggregationFilter" }, - "price-filter": { - "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", - "type": "boolean", - "default": true + { + "$ref": "#/components/schemas/AggregationTerms" }, - "rating-filter": { - "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", - "type": "boolean", - "default": true + { + "$ref": "#/components/schemas/AggregationHistogram" }, - "shipping-free-filter": { - "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "property-filter": { - "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "property-whitelist": { - "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", - "type": "string" - }, - "reduce-aggregations": { - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] + { + "$ref": "#/components/schemas/AggregationRange" } - } + ] } - ], + } + }, + "TotalCountMode": { + "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", + "type": "string", + "default": "none", + "enum": [ + "none", + "exact", + "next-pages" + ] + }, + "Query": { + "type": "object", "properties": { - "filter": { - "properties": { - "type": { - "description": "To filter the results and aggregations with filter types like ==, >=, etc." - }, - "field": { - "description": "To filter the results and aggregations by field like an property identifier." - }, - "value": { - "description": "To filter the results and aggregations by value." - } - } + "score": { + "type": "number" }, - "sort": { - "properties": { - "field": { - "description": "Sort the search results by field like an property identifier." - }, - "order": { - "description": "Sort the search results of orders by ascending or descending." + "query": { + "oneOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "naturalSorting": { - "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." - } - } - }, - "post-filter": { - "properties": { - "type": { - "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." + { + "$ref": "#/components/schemas/EqualsFilter" }, - "field": { - "description": "To filter only the results but not the aggregations by field like an property identifier." + { + "$ref": "#/components/schemas/MultiNotFilter" }, - "value": { - "description": "To filter only the results but not the aggregations by value." + { + "$ref": "#/components/schemas/RangeFilter" } - } + ] } - } + }, + "additionalProperties": true }, - "WishlistLoadRouteResponse": { + "Sort": { "type": "object", - "required": [ - "products" - ], "properties": { - "wishlist": { - "type": "object", - "properties": { - "customerId": { - "type": "string", - "description": "Unique identity of the customer." - }, - "salesChannelId": { - "type": "string", - "description": "Unique identity of the sales channel." - } - } + "field": { + "type": "string" }, - "products": { - "$ref": "#/components/schemas/ProductListingResult" + "order": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + }, + "naturalSorting": { + "type": "boolean" + }, + "type": { + "type": "string" } + }, + "required": [ + "field", + "order" + ] + }, + "Filters": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] } }, - "Sitemap": { + "SimpleFilter": { "type": "object", "properties": { - "filename": { + "type": { "type": "string", - "description": "Name of the file which holds a list of all URL's." + "enum": [ + "contains", + "equalsAny", + "prefix", + "suffix" + ] }, - "created": { - "type": "string", - "format": "date-time" + "field": { + "type": "string" + }, + "value": { + "type": "string" } }, "required": [ - "filename", - "created" + "type", + "field", + "value" ] }, - "CartPriceQuantity": { + "EqualsFilter": { "type": "object", "properties": { - "apiAlias": { + "type": { "type": "string", "enum": [ - "cart_price_quantity" + "equals" ] }, - "isCalculated": { - "type": "boolean" - }, - "listPrice": { - "$ref": "#/components/schemas/CartListPrice" - }, - "price": { - "type": "number" - }, - "quantity": { - "type": "number" - }, - "regulationPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - } - }, - "type": "object" + "field": { + "type": "string" }, - "taxRules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } + "value": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" } - } - }, - "type": { - "type": "string" + ] } }, "required": [ - "apiAlias" + "type", + "field", + "value" ] }, - "ProductDetailResponse": { + "MultiNotFilter": { "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "product": { - "$ref": "#/components/schemas/Product" - }, - "configurator": { - "type": "array", - "description": "List of property groups with their corresponding options and information on how to display them.", - "items": { - "$ref": "#/components/schemas/PropertyGroup" - } - }, - "id": { - "description": "Unique identity of product detail response." + "type": { + "type": "string", + "enum": [ + "multi", + "not" + ] }, - "available": { - "description": "When boolean value is true, the product is available for purchase." - }, - "isCloseout": { - "description": "Boolean value to check if the product is still buyable when stock value is 0." - }, - "displayGroup": { - "description": "Internal field." - }, - "manufacturerNumber": { - "description": "Unique number of the product manufacturer." - }, - "stock": { - "description": "Quantity of product available." + "operator": { + "type": "string", + "enum": [ + "and", + "or", + "nor", + "nand" + ] }, - "sortedProperties": { - "description": "Properties of the product that are sorted" + "queries": { + "$ref": "#/components/schemas/Filters" } }, "required": [ - "product" + "type", + "operator", + "queries" ] }, - "NewsletterStatus": { - "type": "string", - "enum": [ - "notSet", - "optIn", - "optOut", - "direct", - "undefined" - ], - "description": "The subscription status. Possible values are: notSet, optIn, optOut, direct, undefined." - }, - "CartDelivery": { + "RangeFilter": { "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "deliveryDate": { + "type": { + "type": "string", + "enum": [ + "range" + ] + }, + "field": { + "type": "string" + }, + "parameters": { "type": "object", "properties": { - "earliest": { - "type": "string", - "format": "date-time" + "gte": { + "type": "number" }, - "latest": { - "type": "string", - "format": "date-time" + "gt": { + "type": "number" + }, + "lte": { + "type": "number" + }, + "lt": { + "type": "number" } } - }, - "location": { - "type": "object", + } + }, + "required": [ + "type", + "field", + "parameters" + ] + }, + "CookieEntryCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CookieEntry" + } + }, + "CartItems": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + }, "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" + "id": { + "description": "Unique identity of cart item." }, - "state": { - "$ref": "#/components/schemas/CountryState" + "modified": { + "description": "When boolean value is `true`, the cart is said to be modified." } } - }, - "positions": { + } + } + }, + "Association": { + "additionalProperties": { + "$ref": "#/components/schemas/Association" + } + }, + "CartItemsUpdate": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { "type": "array", "items": { - "$ref": "#/components/schemas/CartDeliveryPosition" + "$ref": "#/components/schemas/CartLineItemUpdate" } - }, - "shippingCosts": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" } } }, - "ReferencePrice": { + "CartLineItemUpdate": { "type": "object", + "required": [ + "id" + ], "properties": { - "purchaseUnit": { - "type": "number" - }, - "referenceUnit": { - "type": "number" - }, - "unitName": { + "id": { "type": "string" }, - "price": { - "type": "number" + "type": { + "$ref": "#/components/schemas/OrderLineItem/properties/type" }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_reference" - ] + "quantity": { + "type": "integer" }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/ListPrice" - }, - { - "type": "null" - } - ] + "referencedId": { + "type": "string" }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } - }, - { - "type": "null" - } - ] + "label": { + "type": "string" }, - "hasRange": { - "type": "boolean" + "payload": { + "type": "object" }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" - ] - }, - "CartDeliveryInformation": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_information" - ] + "stackable": { + "type": "boolean" }, - "freeDelivery": { + "removable": { "type": "boolean" }, - "deliveryTime": { + "coverId": { + "type": "string" + }, + "priceDefinition": { "type": "object", "properties": { - "name": { + "type": { "type": "string" }, - "min": { - "type": "integer" + "price": { + "type": "number" }, - "max": { + "percentage": { + "type": "number" + }, + "quantity": { "type": "integer" }, - "unit": { - "type": "string" + "isCalculated": { + "type": "boolean" }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_time" - ] - } - } - }, - "height": { - "type": "integer" - }, - "length": { - "type": "integer" - }, - "restockTime": { - "type": "integer" - }, - "stock": { - "type": "integer" - }, - "weight": { - "type": "integer" - }, - "width": { - "type": "integer" - } - }, - "required": [ - "apiAlias" - ] - }, - "Cart": { - "type": "object", - "properties": { - "name": { - "description": "Name of the cart - for example `guest-cart`", - "type": "string" - }, - "token": { - "description": "Context token identifying the cart and the user session", - "type": "string" - }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "lineItems": { - "description": "All items within the cart", - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - }, - "errors": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "anyOf": [ - { + "listPrice": { + "type": "number" + }, + "taxRules": { "type": "array", "items": { - "$ref": "#/components/schemas/CartError" - } - }, - { - "type": "object", - "additionalProperties": { "type": "object", "properties": { - "code": { + "taxRate": { "type": "number" }, - "key": { - "type": "string" - }, - "level": { + "percentage": { "type": "number" - }, - "message": { - "type": "string" - }, - "messageKey": { - "type": "string" } - }, - "required": [ - "code", - "key", - "level", - "message", - "messageKey" - ] - } - } - ], - "properties": { - "key": { - "description": "Unique key for every message." - }, - "level": { - "description": "Types of level - Notice, warning and error. " - }, - "message": { - "description": "A persistent error passed from the shopping cart calculation processes to the user end." - } - } - }, - "deliveries": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDelivery" - } - }, - "transactions": { - "description": "A list of all payment transactions associated with the current cart.", - "type": "array", - "items": { - "type": "object", - "properties": { - "paymentMethodId": { - "type": "string" - }, - "amount": { - "$ref": "#/components/schemas/CalculatedPrice" + } } } - }, - "properties": { - "paymentMethodId": { - "description": "Unique identity of payment method." - } } + } + } + }, + "AggregationEntity": { + "title": "AggregationEntity", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "modified": { - "type": "boolean", - "description": "It signifies any changes to cart." - }, - "customerComment": { - "description": "A comment that can be added to the cart.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "affiliateCode": { - "description": "An affiliate tracking code", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "campaignCode": { - "description": "A campaign tracking code", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "apiAlias": { + "type": { + "description": "The type of aggregation", "type": "string", "enum": [ - "cart" + "entity" ] }, - "id": { - "description": "Unique identity of cart." + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "definition": { + "description": "The entity definition e.g \"product_manufacturer\".", + "type": "string" } }, "required": [ - "price", - "apiAlias" + "name", + "type", + "field", + "definition" ] }, - "AccountNewsletterRecipient": { + "AggregationFilter": { + "title": "AggregationFilter", "type": "object", "properties": { - "status": { - "$ref": "#/components/schemas/NewsletterStatus" + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "apiAlias": { + "type": { + "description": "The type of aggregation", "type": "string", "enum": [ - "account_newsletter_recipient" + "filter" ] + }, + "filter": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Filters" + } } }, "required": [ - "status", - "apiAlias" + "name", + "type", + "filter" ] }, - "CrossSellingElementCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CrossSellingElement" - }, - "properties": { - "total": { - "description": "Number of cross selling elements found." - } - } - }, - "Criteria": { + "AggregationTerms": { + "title": "AggregationTerms", "type": "object", - "description": "Criteria to query entities.", "properties": { - "page": { - "description": "Search result page", - "type": "integer" + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "term": { - "description": "Search term", + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "terms" + ] + }, + "field": { + "description": "The field you want to aggregate over.", "type": "string" }, "limit": { - "description": "Number of items per result page", - "type": "integer" + "description": "The number of terms to return", + "type": "number" }, - "filter": { + "sort": { "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - }, - "properties": { - "type": { - "description": "To filter the results and aggregations with filter types like ==, >=, etc." - }, - "field": { - "description": "To filter the results and aggregations by field like an property identifier." - }, - "value": { - "description": "To filter the results and aggregations by value." - } - } - }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" - } - }, - "query": { - "type": "string", - "description": "The query string to search for" - }, - "associations": { - "$ref": "#/components/schemas/Associations" - }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - }, - "properties": { - "type": { - "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." - }, - "field": { - "description": "To filter only the results but not the aggregations by field like an property identifier." - }, - "value": { - "description": "To filter only the results but not the aggregations by value." - } - } - }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", + "description": "Sorting the aggregation result.", "items": { "$ref": "#/components/schemas/Sort" - }, - "properties": { - "field": { - "description": "Sort the search results by field like an property identifier." - }, - "order": { - "description": "Sort the search results of orders by ascending or descending." - }, - "naturalSorting": { - "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." - } - } - }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" } + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "AggregationHistogram": { + "title": "AggregationHistogram", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "fields": { - "type": "array", - "description": "Fields which should be returned in the search result.", - "items": { - "type": "string", - "description": "Name of a field" - } + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "histogram" + ] }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" + "interval": { + "description": "The interval of the histogram", + "type": "number" }, - "includes": { - "$ref": "#/components/schemas/Includes" + "format": { + "description": "The format of the histogram", + "type": "string" }, - "excludes": { - "$ref": "#/components/schemas/Excludes" + "timeZone": { + "description": "The timezone of the histogram", + "type": "string" } - } + }, + "required": [ + "name", + "type", + "field" + ] }, - "NoneFieldsCriteria": { + "AggregationRange": { + "title": "AggregationRange", + "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "term": { - "description": "Search term", + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" }, - "limit": { - "description": "Number of items per result page", - "type": "integer" + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "range" + ] }, - "filter": { + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "ranges": { + "description": "The ranges of the aggregation", "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", "items": { + "type": "object", "anyOf": [ { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" + "type": "object", + "title": "From and to", + "properties": { + "from": { + "type": "number", + "description": "The lower bound of the range" + }, + "to": { + "type": "number", + "description": "The upper bound of the range" + } + }, + "required": [ + "from", + "to" + ] }, { - "$ref": "#/components/schemas/MultiNotFilter" + "type": "object", + "title": "From only", + "properties": { + "from": { + "type": "string", + "description": "The lower bound of the range" + } + }, + "required": [ + "from" + ] }, { - "$ref": "#/components/schemas/RangeFilter" + "type": "object", + "title": "To only", + "properties": { + "to": { + "type": "string", + "description": "The upper bound of the range" + } + }, + "required": [ + "to" + ] } ] } - }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" - } - }, - "query": { + } + }, + "required": [ + "name", + "type", + "field", + "ranges" + ] + }, + "Price": { + "type": "object", + "description": "Price object", + "properties": { + "currencyId": { + "description": "Unique identity of the associated currency.", "type": "string", - "description": "The query string to search for" - }, - "associations": { - "$ref": "#/components/schemas/Associations" + "pattern": "^[0-9a-f]{32}$" }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" - } + "gross": { + "description": "Gross price for the associated currency.", + "type": "number" }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } + "net": { + "description": "Net price for the associated currency.", + "type": "number" }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } + "linked": { + "description": "Whether gross and net prices are linked through the tax configuration.", + "type": "boolean" }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" + "percentage": { + "description": "Discount percentage relative to the list price for the gross and net amounts. `null` when no list price is set.", + "type": [ + "object", + "null" + ], + "properties": { + "gross": { + "description": "Discount percentage relative to the gross list price.", + "type": "number" + }, + "net": { + "description": "Discount percentage relative to the net list price.", + "type": "number" + } + }, + "required": [ + "gross", + "net" + ] }, - "includes": { - "$ref": "#/components/schemas/Includes" + "listPrice": { + "description": "Reference list price for displaying discounts.", + "type": "object", + "properties": { + "currencyId": { + "description": "Unique identity of the associated currency.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "gross": { + "description": "Gross list price for the associated currency.", + "type": "number" + }, + "net": { + "description": "Net list price for the associated currency.", + "type": "number" + }, + "linked": { + "description": "Whether gross and net list prices are linked through the tax configuration.", + "type": "boolean" + } + }, + "required": [ + "gross", + "net" + ] }, - "excludes": { - "$ref": "#/components/schemas/Excludes" + "regulationPrice": { + "description": "Reference price used for legal price disclosures.", + "type": "object", + "properties": { + "currencyId": { + "description": "Unique identity of the associated currency.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "gross": { + "description": "Gross regulation price for the associated currency.", + "type": "number" + }, + "net": { + "description": "Net regulation price for the associated currency.", + "type": "number" + }, + "linked": { + "description": "Whether gross and net regulation prices are linked through the tax configuration.", + "type": "boolean" + } + }, + "required": [ + "gross", + "net" + ] } - } - }, - "Associations": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Criteria" - } + }, + "required": [ + "currencyId", + "gross", + "net" + ] }, - "Includes": { + "AggregationMetrics": { "type": "object", - "additionalProperties": { - "type": "array", - "items": { + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "avg", + "count", + "max", + "min", + "stats", + "sum" + ] + }, + "field": { "type": "string" } - } + }, + "required": [ + "name", + "type", + "field" + ] }, - "Excludes": { + "CartPriceReference": { "type": "object", - "additionalProperties": { - "type": "array", - "items": { + "properties": { + "purchaseUnit": { + "type": "number" + }, + "referenceUnit": { + "type": "number" + }, + "unitName": { "type": "string" - } - } - }, - "Aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" }, - { - "title": "AggregationEntity", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "price": { + "type": "number" }, - { - "title": "AggregationFilter", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_reference" ] }, - { - "title": "AggregationTerms", - "allOf": [ + "listPrice": { + "oneOf": [ { - "$ref": "#/components/schemas/AggregationTerms" + "$ref": "#/components/schemas/CartListPrice" }, { - "$ref": "#/components/schemas/SubAggregations" + "type": "null" } ] }, - { - "title": "AggregationHistogram", - "allOf": [ + "regulationPrice": { + "oneOf": [ { - "$ref": "#/components/schemas/AggregationHistogram" + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } }, { - "$ref": "#/components/schemas/SubAggregations" + "type": "null" } ] }, - { - "title": "AggregationRange", - "allOf": [ + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ { - "$ref": "#/components/schemas/AggregationRange" + "type": "string", + "format": "^[0-9a-f]{32}$" }, { - "$ref": "#/components/schemas/SubAggregations" + "type": "null" } ] } + }, + "required": [ + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" ] }, - "SubAggregations": { - "type": "object", - "properties": { - "aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/AggregationRange" - } - ] - } - } - }, - "TotalCountMode": { - "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", - "type": "string", - "default": "none", - "enum": [ - "none", - "exact", - "next-pages" - ] - }, - "Query": { - "type": "object", + "CustomerAddressBody": { + "description": "Added since version: 6.0.0.0", + "required": [ + "countryId", + "firstName", + "lastName", + "city", + "street" + ], "properties": { - "score": { - "type": "number" + "countryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "query": { - "oneOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "additionalProperties": true - }, - "Sort": { - "type": "object", - "properties": { - "field": { - "type": "string" + "countryStateId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "order": { + "salutationId": { "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "pattern": "^[0-9a-f]{32}$" }, - "naturalSorting": { - "type": "boolean" + "firstName": { + "type": "string" }, - "type": { + "lastName": { "type": "string" - } - }, - "required": [ - "field", - "order" - ] - }, - "Filters": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "SimpleFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "contains", - "equalsAny", - "prefix", - "suffix" - ] }, - "field": { + "zipcode": { "type": "string" }, - "value": { + "city": { + "type": "string" + }, + "company": { + "type": "string" + }, + "street": { + "type": "string" + }, + "department": { + "type": "string" + }, + "title": { + "type": "string" + }, + "phoneNumber": { + "type": "string" + }, + "additionalAddressLine1": { + "type": "string" + }, + "additionalAddressLine2": { "type": "string" + }, + "customFields": { + "type": "object" + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "$ref": "#/components/schemas/CountryState" + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, - "required": [ - "type", - "field", - "value" - ] + "type": "object" }, - "EqualsFilter": { + "CustomerAddressRead": { "type": "object", "properties": { - "type": { + "id": { "type": "string", - "enum": [ - "equals" - ] + "pattern": "^[0-9a-f]{32}$", + "readOnly": true }, - "field": { - "type": "string" + "customerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true }, - "value": { + "createdAt": { + "type": "string", + "format": "date-time" + }, + "updatedAt": { "oneOf": [ { - "type": "string" + "type": "string", + "format": "date-time" }, { - "type": "number" - }, + "type": "null" + } + ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "oneOf": [ { - "type": "boolean" + "$ref": "#/components/schemas/CountryState" }, { "type": "null" } ] + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, "required": [ - "type", - "field", - "value" + "customerId", + "createdAt", + "updatedAt", + "country", + "salutation" ] }, - "MultiNotFilter": { - "type": "object", + "NavigationRouteResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + }, "properties": { - "type": { - "type": "string", - "enum": [ - "multi", - "not" - ] - }, - "operator": { - "type": "string", - "enum": [ - "and", - "or", - "nor", - "nand" - ] - }, - "queries": { - "$ref": "#/components/schemas/Filters" - } - }, - "required": [ - "type", - "operator", - "queries" - ] - }, - "RangeFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "range" - ] - }, - "field": { - "type": "string" - }, - "parameters": { - "type": "object", - "properties": { - "gte": { - "type": "number" - }, - "gt": { - "type": "number" - }, - "lte": { - "type": "number" - }, - "lt": { - "type": "number" - } - } - } - }, - "required": [ - "type", - "field", - "parameters" - ] - }, - "FindProductVariantRouteResponse": { - "type": "object", - "properties": { - "foundCombination": { - "type": "object", - "properties": { - "variantId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of a variant." - }, - "options": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Available product variant options. For example, for variant `Size`, option would be `XS`, `S`, `M`, `L`, `XL`." - } - } + "id": { + "description": "Unique identity of navigation route response." } } }, - "Price": { - "type": "object", - "description": "Price object", - "properties": { - "currencyId": { - "description": "Unique identity of the associated currency.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "Gross price for the associated currency.", - "type": "number" - }, - "net": { - "description": "Net price for the associated currency.", - "type": "number" - }, - "linked": { - "description": "Whether gross and net prices are linked through the tax configuration.", - "type": "boolean" - }, - "percentage": { - "description": "Discount percentage relative to the list price for the gross and net amounts. `null` when no list price is set.", - "type": [ - "object", - "null" - ], - "properties": { - "gross": { - "description": "Discount percentage relative to the gross list price.", - "type": "number" - }, - "net": { - "description": "Discount percentage relative to the net list price.", - "type": "number" - } + "ShippingMethodPageRouteResponse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - "required": [ - "gross", - "net" - ] - }, - "listPrice": { - "description": "Reference list price for displaying discounts.", - "type": "object", - "properties": { - "currencyId": { - "description": "Unique identity of the associated currency.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "Gross list price for the associated currency.", - "type": "number" - }, - "net": { - "description": "Net list price for the associated currency.", - "type": "number" - }, - "linked": { - "description": "Whether gross and net list prices are linked through the tax configuration.", - "type": "boolean" + "active": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "deliveryTimeId": { + "type": "string" + }, + "deliveryTime": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "min": { + "type": "integer", + "format": "int32" + }, + "max": { + "type": "integer", + "format": "int32" + }, + "unit": { + "type": "string" + } } }, - "required": [ - "gross", - "net" - ] - }, - "regulationPrice": { - "description": "Reference price used for legal price disclosures.", - "type": "object", - "properties": { - "currencyId": { - "description": "Unique identity of the associated currency.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "Gross regulation price for the associated currency.", - "type": "number" - }, - "net": { - "description": "Net regulation price for the associated currency.", - "type": "number" - }, - "linked": { - "description": "Whether gross and net regulation prices are linked through the tax configuration.", - "type": "boolean" + "translations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + } + } } }, - "required": [ - "gross", - "net" - ] - } - }, - "required": [ - "currencyId", - "gross", - "net" - ] - }, - "NavigationType": { - "type": "string", - "enum": [ - "main-navigation", - "footer-navigation", - "service-navigation" - ] - }, - "OrderRouteResponse": { - "type": "object", - "properties": { - "orders": { - "type": "object", - "allOf": [ - { + "orderDeliveries": { + "type": "array", + "items": { "type": "object", - "required": [ - "elements" - ], "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order" - } + "orderId": { + "type": "string" + }, + "shippingOrderAddressId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "shippingDateEarliest": { + "type": "string", + "format": "date-time" + }, + "shippingDateLatest": { + "type": "string", + "format": "date-time" + }, + "stateId": { + "type": "string" } } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" } - ] - }, - "paymentChangeable": { - "type": "object", - "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", - "additionalProperties": { - "type": "boolean" - } - } - }, - "required": [ - "orders" - ] - }, - "ProductListingResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EntitySearchResult" - }, - { - "type": "object", - "properties": { - "currentFilters": { + }, + "salesChannelDefaultAssignments": { + "type": "array", + "items": { "type": "object", - "description": "Contains the state of the filters. These can be used to create listing filters.", "properties": { - "navigationId": { + "typeId": { "type": "string" }, - "manufacturer": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "languageId": { + "type": "string" }, - "price": { - "type": "object", - "properties": { - "min": { - "type": "integer", - "default": 0 - }, - "max": { - "type": "integer", - "default": 0 - } - }, - "required": [ - "min", - "max" - ] + "currencyId": { + "type": "string" }, - "rating": { - "oneOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ] + "paymentMethodId": { + "type": "string" }, - "shipping-free": { - "type": "boolean", - "default": false + "shippingMethodId": { + "type": "string" }, - "properties": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "countryId": { + "type": "string" }, - "search": { + "navigationCategoryId": { "type": "string" - } - }, - "required": [ - "manufacturer", - "navigationId", - "price", - "properties", - "rating", - "shipping-free" - ] - }, - "availableSortings": { - "type": "array", - "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", - "items": { - "type": "object", - "properties": { - "label": { - "type": "string" - }, - "translated": { - "type": "object", - "properties": { - "label": { - "type": "string" - } - }, - "required": [ - "label" - ] - }, - "key": { - "type": "string" - }, - "priority": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_sorting" - ] - } }, - "required": [ - "label", - "translated", - "key", - "priority", - "apiAlias" - ] - } - }, - "sorting": { - "type": "string" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } } - }, - "entity": { - "type": "string", - "enum": [ - "product" - ] - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_listing" - ] } }, - "required": [ - "elements", - "availableSortings", - "currentFilters", - "apiAlias" - ] - } - ] - }, - "ProductMeasurements": { - "type": "object", - "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", - "properties": { - "width": { - "type": "object", - "properties": { - "unit": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" - }, - "value": { - "type": "number" - } - } - }, - "height": { - "type": "object", - "properties": { - "unit": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" - }, - "value": { - "type": "number" - } - } - }, - "length": { - "type": "object", - "properties": { - "unit": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" - }, - "value": { - "type": "number" + "salesChannels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } } - } - }, - "weight": { - "type": "object", - "properties": { - "unit": { - "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg" - }, - "value": { - "type": "number" + }, + "availabilityRule": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "priority": { + "type": "integer", + "format": "int32" + }, + "invalid": { + "type": "boolean" + } + } + }, + "availabilityRuleId": { + "type": "string" + }, + "prices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "ruleId": { + "type": "string" + }, + "calculation": { + "type": "integer", + "format": "int32" + }, + "quantityStart": { + "type": "number", + "format": "float" + }, + "quantityEnd": { + "type": "number", + "format": "float" + }, + "price": { + "type": "number", + "format": "float" + }, + "calculationRuleId": { + "type": "string" + } + } + } + }, + "mediaId": { + "type": "string" + }, + "media": { + "type": "object", + "properties": { + "userId": { + "type": "string" + }, + "mimeType": { + "type": "string" + }, + "fileExtension": { + "type": "string" + }, + "fileSize": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string" + }, + "metaDataRaw": { + "type": "string" + }, + "mediaTypeRaw": { + "type": "string" + }, + "uploadedAt": { + "type": "string", + "format": "date-time" + }, + "alt": { + "type": "string" + }, + "url": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "mediaFolderId": { + "type": "string" + }, + "private": { + "type": "boolean" + }, + "thumbnailsRo": { + "type": "string" + } + } + }, + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } } } } - } - }, - "CookieEntryCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CookieEntry" - } - }, - "CrossSellingElement": { - "type": "object", + }, "properties": { - "crossSelling": { - "$ref": "#/components/schemas/ProductCrossSelling" + "name": { + "description": "Name of the shipping method." }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } + "active": { + "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." }, - "total": { - "type": "integer", - "format": "int32" + "description": { + "description": "The order of the tabs of your defined shipping methods in the storefront by entering numerical values like 1,2,3, etc." }, - "streamId": { - "type": "string", - "format": "uuid" + "deliveryTimeId": { + "description": "Unique identity of the delivery time." }, - "apiAlias": { - "type": "string", - "enum": [ - "cross_selling_element" - ] - } - }, - "required": [ - "crossSelling", - "products", - "total", - "apiAlias" - ] - }, - "CookieEntry": { - "type": "object", - "properties": { - "cookie": { - "type": "string" - }, - "value": { - "type": "string" - }, - "expiration": { - "type": "integer" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "hidden": { - "type": "boolean" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cookie_entry" - ] - } - }, - "required": [ - "cookie", - "hidden", - "apiAlias" - ] - }, - "MeasurementUnits": { - "type": "object", - "description": "Configuration of the measurement system", - "properties": { - "system": { - "type": "string", - "enum": [ - "metric", - "imperial" - ], - "default": "metric", - "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." - }, - "units": { - "type": "object", - "description": "Units used in the measurement system.", + "deliveryTime": { "properties": { - "length": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm", - "description": "Unit of length." + "name": { + "description": "Name given to delivery time." }, - "weight": { - "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg", - "description": "Unit of weight." + "min": { + "description": "Minimum delivery time taken." + }, + "max": { + "description": "Maximum delivery time taken." + }, + "unit": { + "description": "Unit in which the delivery time is defined. For example, days or hours." } } - } - } - }, - "CartListPrice": { - "type": "object", - "description": "", - "properties": { - "discount": { - "type": "number" - }, - "percentage": { - "type": "number" - }, - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_list_price" - ] - } - }, - "required": [ - "apiAlias" - ] - }, - "CookieGroup": { - "type": "object", - "properties": { - "isRequired": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "cookie": { - "type": "string" - }, - "value": { - "type": "string" - }, - "expiration": { - "type": "integer" - }, - "entries": { - "$ref": "#/components/schemas/CookieEntryCollection" }, - "apiAlias": { - "type": "string", - "enum": [ - "cookie_group" - ] - } - }, - "not": { - "allOf": [ - { - "required": [ - "cookie" - ] - }, - { - "required": [ - "entries" - ] - } - ] - }, - "required": [ - "name", - "isRequired", - "apiAlias" - ] - }, - "SuccessResponse": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - } - } - }, - "CartItems": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - }, + "translations": { "properties": { - "id": { - "description": "Unique identity of cart item." + "shippingMethodId": { + "description": "Unique identity of shipping method." }, - "modified": { - "description": "When boolean value is `true`, the cart is said to be modified." + "name": { + "description": "Name of the shipping method." + }, + "description": { + "description": "A short description of the shipping method." } } - } - } - }, - "AggregationMetrics": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "avg", - "count", - "max", - "min", - "stats", - "sum" - ] }, - "field": { - "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "CartDeliveryPosition": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "deliveryDate": { - "type": "object", + "orderDeliveries": { "properties": { - "earliest": { - "type": "string", - "format": "date-time" + "orderId": { + "description": "Unique identity of order." }, - "latest": { - "type": "string", - "format": "date-time" + "shippingOrderAddressId": { + "description": "Unique identity of shipping order address." + }, + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "shippingDateEarliest": { + "description": "Date and time of earliest delivery of products." + }, + "shippingDateLatest": { + "description": "Date and time of latest delivery of products." + }, + "stateId": { + "description": "Unique identity of state." } } }, - "identifier": { - "type": "string" - }, - "lineItem": { - "$ref": "#/components/schemas/LineItem" - }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" - } - } - }, - "CustomerAddressBody": { - "description": "Added since version: 6.0.0.0", - "required": [ - "countryId", - "firstName", - "lastName", - "city", - "street" - ], - "properties": { - "countryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryStateId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "salesChannelDefaultAssignments": { + "properties": { + "stateId": { + "description": "Unique identity of state." + }, + "languageId": { + "description": "Unique identity of language." + }, + "currencyId": { + "description": "Unique identity of currency." + }, + "paymentMethodId": { + "description": "Unique identity of payment method." + }, + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "countryId": { + "description": "Unique identity of country." + }, + "navigationCategoryId": { + "description": "Unique identity of navigation category." + }, + "navigationCategoryDepth": { + "description": "It determines the number of levels of subcategories in the storefront category menu." + }, + "footerCategoryId": { + "description": "Unique identity of footer category." + }, + "serviceCategoryId": { + "description": "Unique identity of service category." + }, + "name": { + "description": "Name of the sales channel." + }, + "shortName": { + "description": "A short name for sales channel." + }, + "accessKey": { + "description": "Access key to store api." + }, + "active": { + "description": "When boolean value is `true`, the shipping methods are available for selection in the sales channel's storefront." + }, + "maintenance": { + "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." + }, + "maintenanceIpWhitelist": { + "description": "Array of IP address allowed to access the sales channel." + }, + "mailHeaderFooterId": { + "description": "Unique identity of mail header and footer." + }, + "customerGroupId": { + "description": "Unique identity of customer group." + }, + "hreflangActive": { + "description": "When boolean value is `true`, the sales channel pages are available in different languages." + }, + "hreflangDefaultDomainId": { + "description": "Unique identity of hreflangDefaultDomain." + } + } }, - "salutationId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "salesChannels": { + "properties": { + "stateId": { + "description": "Unique identity of state." + }, + "languageId": { + "description": "Unique identity of language." + }, + "currencyId": { + "description": "Unique identity of currency." + }, + "paymentMethodId": { + "description": "Unique identity of payment method." + }, + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "countryId": { + "description": "Unique identity of country." + }, + "navigationCategoryId": { + "description": "Unique identity of navigation category." + }, + "navigationCategoryDepth": { + "description": "It determines the number of levels of subcategories in the storefront category menu." + }, + "footerCategoryId": { + "description": "Unique identity of footer category." + }, + "serviceCategoryId": { + "description": "Unique identity of service category." + }, + "name": { + "description": "Name of the sales channel." + }, + "shortName": { + "description": "A short name for sales channel." + }, + "accessKey": { + "description": "Access key to store api." + }, + "active": { + "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." + }, + "maintenance": { + "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." + }, + "maintenanceIpWhitelist": { + "description": "Array of IP address allowed to access the sales channel." + }, + "mailHeaderFooterId": { + "description": "Unique identity of mail header and footer." + }, + "customerGroupId": { + "description": "Unique identity of customer group." + }, + "hreflangActive": { + "description": "When boolean value is `true``, the sales channel pages are available in different languages." + }, + "hreflangDefaultDomainId": { + "description": "Unique identity of hreflangDefaultDomain." + } + } }, - "firstName": { - "type": "string" + "availabilityRule": { + "properties": { + "name": { + "description": "Unique name for the rule." + }, + "description": { + "description": "A short description about the rule." + }, + "priority": { + "description": "A numerical value to prioritize one of the rules from the list." + }, + "invalid": { + "description": "When the boolean value is `true`, the rule is no more available for usage." + } + } }, - "lastName": { - "type": "string" + "availabilityRuleId": { + "description": "Unique identity of availability rule." }, - "zipcode": { - "type": "string" + "prices": { + "properties": { + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "currencyId": { + "description": "Unique identity of currency." + }, + "ruleId": { + "description": "Unique identity of rule." + }, + "calculation": { + "description": "Shipping price calculated based on quantity, price, weight or volume of items." + }, + "quantityStart": { + "description": "Starting range of quantity of an item." + }, + "quantityEnd": { + "description": "Ending range of quantity of an item." + }, + "price": { + "description": "Shipping method price after applied rules." + }, + "calculationRuleId": { + "description": "Unique identity of calculation rule." + } + } }, - "city": { - "type": "string" + "mediaId": { + "description": "Unique identity of media." }, - "company": { - "type": "string" + "media": { + "properties": { + "userId": { + "description": "Unique identity of user." + }, + "mimeType": { + "description": "A string sent along with a file indicating the type of the file. For example: image/jpeg." + }, + "fileExtension": { + "description": "Type of file indication. For example: jpeg, png." + }, + "fileSize": { + "description": "Size of the file media file uploaded." + }, + "title": { + "description": "Title name give to the media." + }, + "metaDataRaw": { + "description": "Details of the media file uploaded." + }, + "alt": { + "description": "Alternate text for media." + }, + "url": { + "description": "Runtime field, cannot be used as part of the criteria." + }, + "fileName": { + "description": "Name of the media file uploaded." + }, + "mediaFolderId": { + "description": "Unique identity of media folder." + }, + "private": { + "description": "Boolean value is `true` to keep the media display private." + } + } }, - "street": { - "type": "string" + "tags": { + "properties": { + "name": { + "description": "Name of the tag." + } + } + } + } + }, + "ProductDetailResponse": { + "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", + "properties": { + "product": { + "$ref": "#/components/schemas/Product" }, - "department": { - "type": "string" - }, - "title": { - "type": "string" + "configurator": { + "type": "array", + "description": "List of property groups with their corresponding options and information on how to display them.", + "items": { + "$ref": "#/components/schemas/PropertyGroup" + } }, - "phoneNumber": { - "type": "string" + "id": { + "description": "Unique identity of product detail response." }, - "additionalAddressLine1": { - "type": "string" + "available": { + "description": "When boolean value is true, the product is available for purchase." }, - "additionalAddressLine2": { - "type": "string" + "isCloseout": { + "description": "Boolean value to check if the product is still buyable when stock value is 0." }, - "customFields": { - "type": "object" + "displayGroup": { + "description": "Internal field." }, - "country": { - "$ref": "#/components/schemas/Country" + "manufacturerNumber": { + "description": "Unique number of the product manufacturer." }, - "countryState": { - "$ref": "#/components/schemas/CountryState" + "stock": { + "description": "Quantity of product available." }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "sortedProperties": { + "description": "Properties of the product that are sorted" } }, - "type": "object" + "required": [ + "product" + ] }, - "ProductPurchaseLimit": { + "AccountNewsletterRecipient": { "type": "object", - "description": "Current quantity purchase limits for a product.", + "properties": { + "status": { + "$ref": "#/components/schemas/NewsletterStatus" + }, + "apiAlias": { + "type": "string", + "enum": [ + "account_newsletter_recipient" + ] + } + }, "required": [ - "productId", - "minPurchase", - "purchaseSteps", - "maxPurchase", - "stock", + "status", "apiAlias" - ], + ] + }, + "ReferencePrice": { + "type": "object", "properties": { - "productId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The product ID." - }, - "minPurchase": { - "type": "integer", - "description": "Minimum quantity a customer can purchase." + "purchaseUnit": { + "type": "number" }, - "purchaseSteps": { - "type": "integer", - "description": "Step increment for quantity selection." + "referenceUnit": { + "type": "number" }, - "maxPurchase": { - "type": "integer", - "description": "Maximum quantity a customer can purchase, reflecting current stock for closeout products." + "unitName": { + "type": "string" }, - "stock": { - "type": [ - "integer", - "null" - ], - "description": "Current stock level of the product." + "price": { + "type": "number" }, "apiAlias": { "type": "string", "enum": [ - "product_purchase_limit" + "cart_price_reference" + ] + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/ListPrice" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } ] } - } + }, + "required": [ + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" + ] }, - "CookieRouteResponse": { + "CookieEntry": { "type": "object", - "description": "Response containing cookie groups and their configuration hash.", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cookie_groups_hash" - ] + "cookie": { + "type": "string" }, - "elements": { - "type": "array", - "description": "Collection of cookie groups", - "items": { - "$ref": "#/components/schemas/CookieGroup" - } + "value": { + "type": "string" }, - "hash": { - "type": "string", - "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", - "example": "f86b6a872cb83dbd22d838ceda1aa3d4" + "expiration": { + "type": "integer" }, - "languageId": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "apiAlias": { "type": "string", - "format": "uuid", - "description": "The language ID for which the cookie configuration was generated. Used to store hashes per language.", - "example": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" + "enum": [ + "cookie_entry" + ] } }, "required": [ - "elements", - "hash", - "languageId", + "cookie", + "hidden", "apiAlias" - ], - "example": { - "apiAlias": "cookie_groups_hash", - "elements": [ - { - "isRequired": true, - "description": "Cookies required for this shop to function:", - "name": "Technically required", - "entries": [ - { - "name": "Session", - "hidden": false, - "cookie": "session-", - "apiAlias": "cookie_entry" - }, - { - "name": "Timezone", - "hidden": false, - "cookie": "timezone", - "apiAlias": "cookie_entry" + ] + }, + "FindProductVariantRouteResponse": { + "type": "object", + "properties": { + "foundCombination": { + "type": "object", + "properties": { + "variantId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of a variant." + }, + "options": { + "type": "array", + "items": { + "type": "string" }, - { - "value": "1", - "expiration": 30, - "name": "Cookie preferences", - "hidden": true, - "cookie": "cookie-preference", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "description": "Cookies used for statistics and shop performance metrics.", - "name": "Statistics", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "Google Analytics", - "hidden": false, - "cookie": "google-analytics-enabled", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "description": "Allows Google to collect personal data for online advertising and marketing.", - "name": "Marketing", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "Google Advertising", - "hidden": false, - "cookie": "google-ads-enabled", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "name": "Comfort features", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "YouTube video", - "hidden": false, - "cookie": "youtube-video", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - } - ], - "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", - "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" - } - }, - "CartItemsUpdate": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartLineItemUpdate" + "description": "Available product variant options. For example, for variant `Size`, option would be `XS`, `S`, `M`, `L`, `XL`." + } } } } }, - "CartLineItemUpdate": { + "SalesChannelContext": { "type": "object", - "required": [ - "id" - ], "properties": { - "id": { - "type": "string" - }, - "type": { - "$ref": "#/components/schemas/OrderLineItem/properties/type" - }, - "quantity": { - "type": "integer" - }, - "referencedId": { - "type": "string" - }, - "label": { + "token": { + "description": "Context the user session", "type": "string" }, - "payload": { - "type": "object" - }, - "stackable": { - "type": "boolean" - }, - "removable": { - "type": "boolean" - }, - "coverId": { - "type": "string" + "currentCustomerGroup": { + "type": "object", + "description": "Customer group of the current user", + "properties": { + "name": { + "type": "string", + "description": "Name of customer group to which the customer belongs within the specific sales channel they are currently interacting with." + }, + "displayGross": { + "type": "boolean", + "description": "When `true`, product's gross price is displayed for that customer group who belongs to the specific sales channel they are currently interacting with." + } + } }, - "priceDefinition": { + "fallbackCustomerGroup": { + "description": "Fallback group if the default customer group is not applicable", "type": "object", "properties": { - "type": { + "name": { "type": "string" }, - "price": { - "type": "number" + "displayGross": { + "type": "boolean" + } + } + }, + "currency": { + "$ref": "#/components/schemas/Currency", + "properties": { + "isoCode": { + "description": "Standard international three digit code to represent currency in a given sales channel. For example, USD." }, - "percentage": { - "type": "number" + "factor": { + "description": "Currency exchange rate in a specific sales channel the customer is currently interacting with." }, - "quantity": { - "type": "integer" + "symbol": { + "description": "A currency symbol is a graphical representation used as shorthand for a currency's name, for example US Dollar - $ in a given sales channel." }, - "isCalculated": { - "type": "boolean" + "shortName": { + "description": "Acronym for international currencies, for example, USD in a given sales channel." }, - "listPrice": { - "type": "number" + "name": { + "description": "Full name of the currency in a given sales channel. For example, US-Dollar." }, - "taxRules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number" - }, - "percentage": { - "type": "number" - } - } - } + "position": { + "description": "The order of the tabs for multiple currencies defined in a given sales channel." + }, + "decimalPrecision": { + "description": "It defines the round off value for currency to the nearest decimal point in a given sales channel. If set to 2, it rounds off to two significant decimal points." + }, + "isSystemDefault": { + "description": "Runtime field, cannot be used as part of the criteria." } } - } - } - }, - "NavigationRouteResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - }, - "properties": { - "id": { - "description": "Unique identity of navigation route response." - } - } - }, - "CookieGroupCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CookieGroup" - } - }, - "ProductListingFlags": { - "type": "object", - "description": "Additional flags for product listings", - "properties": { - "no-aggregations": { - "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", - "oneOf": [ - { - "type": "string" + }, + "salesChannel": { + "$ref": "#/components/schemas/SalesChannel", + "properties": { + "typeId": { + "description": "Unique identity of a sales channel's type within a specific sales channel." }, - { - "type": "null" + "languageId": { + "description": "Unique identity of a sales channel's language within a specific sales channel." + }, + "currencyId": { + "description": "Unique identity of a sales channel's currency within a specific sales channel." + }, + "paymentMethodId": { + "description": "Unique identity of a sales channel's payment method within a specific sales channel." + }, + "shippingMethodId": { + "description": "Unique identity of a sales channel's shipping method within a specific sales channel." + }, + "countryId": { + "description": "Unique identity of a sales channel's country within a specific sales channel." + }, + "navigationCategoryId": { + "description": "Unique identity of a sales channel's navigation category within a specific sales channel." + }, + "navigationCategoryDepth": { + "description": "It determines the number of levels of subcategories in the storefront category menu within a specific sales channel." + }, + "footerCategoryId": { + "description": "Unique identity of a sales channel's footer category within a specific sales channel." + }, + "serviceCategoryId": { + "description": "Unique identity of a sales channel's service category within a specific sales channel." + }, + "name": { + "description": "Name of the sales channel." + }, + "shortName": { + "description": "A short name for sales channel." + }, + "accessKey": { + "description": "Access key to store api." + }, + "active": { + "description": "When `true`, the sales channel is enabled." + }, + "maintenance": { + "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." + }, + "maintenanceIpWhitelist": { + "description": "Array of IP address allowed to access the sales channel." + }, + "mailHeaderFooterId": { + "description": "Unique identity of a sales channel's mail header and footer within a specific sales channel." + }, + "customerGroupId": { + "description": "Unique identity of a sales channel's customer group within a specific sales channel." + }, + "hreflangActive": { + "description": "When `true`, the sales channel pages are available in different languages within a specific sales channel." + }, + "hreflangDefaultDomainId": { + "description": "Unique identity of a sales channel's hreflangDefaultDomain within a specific sales channel." + }, + "analyticsId": { + "description": "Unique identity of a sales channel's analytics within a specific sales channel." } - ] + } }, - "only-aggregations": { - "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - } - }, - "ShippingMethodPageRouteResponse": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "deliveryTimeId": { - "type": "string" - }, - "deliveryTime": { + "measurementSystem": { + "$ref": "#/components/schemas/ContextMeasurementSystemInfo" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { "type": "object", "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer", - "format": "int32" - }, - "max": { - "type": "integer", - "format": "int32" + "taxRate": { + "type": "number", + "format": "float" }, - "unit": { + "name": { "type": "string" } } }, - "translations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - } - } - } - }, - "orderDeliveries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "orderId": { - "type": "string" - }, - "shippingOrderAddressId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "shippingDateEarliest": { - "type": "string", - "format": "date-time" - }, - "shippingDateLatest": { - "type": "string", - "format": "date-time" - }, - "stateId": { - "type": "string" - } - } - } - }, - "salesChannelDefaultAssignments": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" - }, - "hreflangDefaultDomainId": { - "type": "string" - } - } + "properties": { + "taxRate": { + "description": "Rate of tax within a specific sales channel." + }, + "name": { + "description": "Name defined for a Tax within a specific sales channel." } - }, - "salesChannels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" - }, - "hreflangDefaultDomainId": { - "type": "string" - } - } + } + }, + "customer": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/Customer" } - }, - "availabilityRule": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "priority": { - "type": "integer", - "format": "int32" - }, - "invalid": { - "type": "boolean" - } - } - }, - "availabilityRuleId": { - "type": "string" - }, - "prices": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "ruleId": { - "type": "string" - }, - "calculation": { - "type": "integer", - "format": "int32" - }, - "quantityStart": { - "type": "number", - "format": "float" - }, - "quantityEnd": { - "type": "number", - "format": "float" - }, - "price": { - "type": "number", - "format": "float" - }, - "calculationRuleId": { - "type": "string" - } - } - } - }, - "mediaId": { - "type": "string" - }, - "media": { - "type": "object", - "properties": { - "userId": { - "type": "string" - }, - "mimeType": { - "type": "string" - }, - "fileExtension": { - "type": "string" - }, - "fileSize": { - "type": "integer", - "format": "int32" - }, - "title": { - "type": "string" - }, - "metaDataRaw": { - "type": "string" - }, - "mediaTypeRaw": { - "type": "string" - }, - "uploadedAt": { - "type": "string", - "format": "date-time" - }, - "alt": { - "type": "string" - }, - "url": { - "type": "string" - }, - "fileName": { - "type": "string" - }, - "mediaFolderId": { - "type": "string" - }, - "private": { - "type": "boolean" - }, - "thumbnailsRo": { - "type": "string" - } - } - }, - "tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - } - } - } - } - } - }, - "properties": { - "name": { - "description": "Name of the shipping method." - }, - "active": { - "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." - }, - "description": { - "description": "The order of the tabs of your defined shipping methods in the storefront by entering numerical values like 1,2,3, etc." - }, - "deliveryTimeId": { - "description": "Unique identity of the delivery time." - }, - "deliveryTime": { + ], "properties": { - "name": { - "description": "Name given to delivery time." + "groupId": { + "description": "Unique identity of a customer's group within a specific sales channel." }, - "min": { - "description": "Minimum delivery time taken." + "defaultPaymentMethodId": { + "description": "Unique identity of a customer's default payment method within a specific sales channel." }, - "max": { - "description": "Maximum delivery time taken." + "salesChannelId": { + "description": "Unique identity of sales channel the customer is currently interacting with." }, - "unit": { - "description": "Unit in which the delivery time is defined. For example, days or hours." - } - } - }, - "translations": { - "properties": { - "shippingMethodId": { - "description": "Unique identity of shipping method." + "languageId": { + "description": "Unique identity of language within a specific sales channel the customer is interacting." }, - "name": { - "description": "Name of the shipping method." + "lastPaymentMethodId": { + "description": "Unique identity of customer's last payment method within a specific sales channel." }, - "description": { - "description": "A short description of the shipping method." - } - } - }, - "orderDeliveries": { - "properties": { - "orderId": { - "description": "Unique identity of order." + "defaultBillingAddressId": { + "description": "Unique identity of customer's default billing address within a specific sales channel." }, - "shippingOrderAddressId": { - "description": "Unique identity of shipping order address." + "defaultShippingAddressId": { + "description": "Unique identity of customer's default shipping address within a specific sales channel." }, - "shippingMethodId": { - "description": "Unique identity of shipping method." + "customerNumber": { + "description": "Name of the customer within a specific sales channel the customer is interacting." }, - "shippingDateEarliest": { - "description": "Date and time of earliest delivery of products." + "salutationId": { + "description": "Unique identity of customer's default shipping address within a specific sales channel." }, - "shippingDateLatest": { - "description": "Date and time of latest delivery of products." + "firstName": { + "description": "First name of the customer within a specific sales channel." }, - "stateId": { - "description": "Unique identity of state." - } - } - }, - "salesChannelDefaultAssignments": { - "properties": { - "stateId": { - "description": "Unique identity of state." + "lastName": { + "description": "Last name of the customer within a specific sales channel." }, - "languageId": { - "description": "Unique identity of language." + "company": { + "description": "Company name of the customer within a specific sales channel." }, - "currencyId": { - "description": "Unique identity of currency." + "password": { + "description": "Password of the customer within a specific sales channel." }, - "paymentMethodId": { - "description": "Unique identity of payment method." + "email": { + "description": "Email of the customer within a specific sales channel." }, - "shippingMethodId": { - "description": "Unique identity of shipping method." + "title": { + "description": "Customer's title or honorifics like Mr, Mrs, etc within a specific sales channel." }, - "countryId": { - "description": "Unique identity of country." + "affiliateCode": { + "description": "An affiliate code is an identification option with which website operators can mark outgoing links within a specific sales channel." }, - "navigationCategoryId": { - "description": "Unique identity of navigation category." + "campaignCode": { + "description": "A unique identifier for a campaign within a specific sales channel." }, - "navigationCategoryDepth": { - "description": "It determines the number of levels of subcategories in the storefront category menu." + "active": { + "description": "When `true`, the status of the customer is set active within a specific sales channel." }, - "footerCategoryId": { - "description": "Unique identity of footer category." + "doubleOptInRegistration": { + "description": "When `true`, user subscriptions to an email marketing list is allowed within a specific sales channel." }, - "serviceCategoryId": { - "description": "Unique identity of service category." + "doubleOptInEmailSentDate": { + "description": "Date and time when the double opt-in email was sent within a specific sales channel." }, - "name": { - "description": "Name of the sales channel." + "doubleOptInConfirmDate": { + "description": "Date and time when the double opt-in email was confirmed within a specific sales channel." }, - "shortName": { - "description": "A short name for sales channel." + "hash": { + "description": "Password hash for account recovery within a specific sales channel." }, - "accessKey": { - "description": "Access key to store api." + "guest": { + "description": "Boolean value is `true` for a guest account within a specific sales channel." }, - "active": { - "description": "When boolean value is `true`, the shipping methods are available for selection in the sales channel's storefront." + "firstLogin": { + "description": "Captures date and time of customer's first login within a specific sales channel." }, - "maintenance": { - "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." + "lastLogin": { + "description": "Captures date and time of customer's last login within a specific sales channel." }, - "maintenanceIpWhitelist": { - "description": "Array of IP address allowed to access the sales channel." + "newsletter": { + "description": "When `true`, then the customer gets subscribe to the newsletter" }, - "mailHeaderFooterId": { - "description": "Unique identity of mail header and footer." + "birthday": { + "description": "Captures customer's birthday details within a specific sales channel." }, - "customerGroupId": { - "description": "Unique identity of customer group." + "lastOrderDate": { + "description": "Captures customer's last order date within a specific sales channel." }, - "hreflangActive": { - "description": "When boolean value is `true`, the sales channel pages are available in different languages." + "orderCount": { + "description": "Captures the number of orders placed by a customer within a specific sales channel." }, - "hreflangDefaultDomainId": { - "description": "Unique identity of hreflangDefaultDomain." + "legacyEncoder": { + "description": "encapsulates shop credentials when needed to migrate shop system from old instance to new instance" + }, + "legacyPassword": { + "description": "Hashed password of the old shop system" + }, + "autoIncrement": { + "description": "Internal field. " + }, + "remoteAddress": { + "description": "Anonymous IP address of the customer for last session." } } }, - "salesChannels": { + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod", "properties": { - "stateId": { - "description": "Unique identity of state." - }, - "languageId": { - "description": "Unique identity of language." - }, - "currencyId": { - "description": "Unique identity of currency." - }, - "paymentMethodId": { - "description": "Unique identity of payment method." - }, - "shippingMethodId": { - "description": "Unique identity of shipping method." - }, - "countryId": { - "description": "Unique identity of country." - }, - "navigationCategoryId": { - "description": "Unique identity of navigation category." - }, - "navigationCategoryDepth": { - "description": "It determines the number of levels of subcategories in the storefront category menu." - }, - "footerCategoryId": { - "description": "Unique identity of footer category." + "pluginId": { + "description": "Unique identity of payment plugin within a specific sales channel." }, - "serviceCategoryId": { - "description": "Unique identity of service category." + "handlerIdentifier": { + "description": "Internal field that contains system identifier details for payment methods like Paypal." }, "name": { - "description": "Name of the sales channel." + "description": "Name of the payment method within a specific sales channel." }, - "shortName": { - "description": "A short name for sales channel." + "description": { + "description": "A short description about the payment method within a specific sales channel." }, - "accessKey": { - "description": "Access key to store api." + "position": { + "description": "The order of the tabs of your defined payment methods in the storefront by entering numerical values like 1,2,3, etc within a specific sales channel." }, "active": { - "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." - }, - "maintenance": { - "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." - }, - "maintenanceIpWhitelist": { - "description": "Array of IP address allowed to access the sales channel." - }, - "mailHeaderFooterId": { - "description": "Unique identity of mail header and footer." + "description": "When `true`, the payment method is available for usage within a specific sales channel." }, - "customerGroupId": { - "description": "Unique identity of customer group." + "availabilityRuleId": { + "description": "Unique identity of the rule for the payment method." }, - "hreflangActive": { - "description": "When boolean value is `true``, the sales channel pages are available in different languages." + "mediaId": { + "description": "Unique identity of media used in payment method within a specific sales channel." }, - "hreflangDefaultDomainId": { - "description": "Unique identity of hreflangDefaultDomain." + "formattedHandlerIdentifier": { + "description": "Internal field that contains system identifier details for payment methods like Paypal." } } }, - "availabilityRule": { + "shippingLocation": { + "type": "object", "properties": { - "name": { - "description": "Unique name for the rule." - }, - "description": { - "description": "A short description about the rule." + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] }, - "priority": { - "description": "A numerical value to prioritize one of the rules from the list." + "country": { + "$ref": "#/components/schemas/Country" }, - "invalid": { - "description": "When the boolean value is `true`, the rule is no more available for usage." + "address": { + "$ref": "#/components/schemas/CustomerAddress" } } }, - "availabilityRuleId": { - "description": "Unique identity of availability rule." - }, - "prices": { + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod", "properties": { - "shippingMethodId": { - "description": "Unique identity of shipping method." - }, - "currencyId": { - "description": "Unique identity of currency." + "name": { + "description": "Name of the shipping method within a specific sales channel." }, - "ruleId": { - "description": "Unique identity of rule." + "active": { + "description": "When `true`, the shipping method is available for usage within a specific sales channel." }, - "calculation": { - "description": "Shipping price calculated based on quantity, price, weight or volume of items." + "description": { + "description": "A short description about the shipping method within a specific sales channel." }, - "quantityStart": { - "description": "Starting range of quantity of an item." + "trackingUrl": { + "description": "URL that allows to track packages for a specific sales channel." }, - "quantityEnd": { - "description": "Ending range of quantity of an item." + "deliveryTimeId": { + "description": "Unique identity of deliveryTime within a specific sales channel." }, - "price": { - "description": "Shipping method price after applied rules." + "availabilityRuleId": { + "description": "Unique identity of the rule for the payment method." }, - "calculationRuleId": { - "description": "Unique identity of calculation rule." + "mediaId": { + "description": "Unique identity of media used in shipping method within a specific sales channel." } } }, - "mediaId": { - "description": "Unique identity of media." - }, - "media": { + "context": { + "description": "Core context with general configuration values and state", + "type": "object", "properties": { - "userId": { - "description": "Unique identity of user." - }, - "mimeType": { - "description": "A string sent along with a file indicating the type of the file. For example: image/jpeg." - }, - "fileExtension": { - "description": "Type of file indication. For example: jpeg, png." + "versionId": { + "type": "string", + "description": "Unique identity of context's version in a specific sales channel." }, - "fileSize": { - "description": "Size of the file media file uploaded." + "currencyId": { + "type": "string", + "description": "Unique identity of currency context in a specific sales channel." }, - "title": { - "description": "Title name give to the media." + "currencyFactor": { + "type": "integer", + "description": "Unique identity of currency factor context in a specific sales channel." }, - "metaDataRaw": { - "description": "Details of the media file uploaded." + "currencyPrecision": { + "type": "integer", + "format": "int32", + "description": "It defines the round off value of currency to the nearest decimal point. If set to 2, it rounds off to two significant decimal points." }, - "alt": { - "description": "Alternate text for media." + "languageIdChain": { + "type": "array", + "items": { + "type": "string" + } }, - "url": { - "description": "Runtime field, cannot be used as part of the criteria." + "scope": { + "type": "string", + "description": "Scope defines if its related to system or user context." }, - "fileName": { - "description": "Name of the media file uploaded." + "source": { + "type": "object", + "required": [ + "salesChannelId", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "sales-channel", + "shop-api" + ] + }, + "salesChannelId": { + "type": "string" + } + }, + "description": "When context is related to user in the source, then there is userId." }, - "mediaFolderId": { - "description": "Unique identity of media folder." + "taxState": { + "type": "string", + "description": "Tax state can either be `gross` or `net`." }, - "private": { - "description": "Boolean value is `true` to keep the media display private." + "useCache": { + "type": "boolean", + "description": "When boolean value is `true`, caching is used." } } }, - "tags": { + "itemRounding": { + "type": "object", + "required": [ + "decimals", + "interval", + "roundForNet", + "apiAlias" + ], "properties": { - "name": { - "description": "Name of the tag." + "apiAlias": { + "type": "string", + "enum": [ + "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" + ] + }, + "decimals": { + "type": "integer", + "format": "int32" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" } } - } - } - }, - "CartPriceReference": { - "type": "object", - "properties": { - "purchaseUnit": { - "type": "number" - }, - "referenceUnit": { - "type": "number" - }, - "unitName": { - "type": "string" - }, - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_reference" - ] }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" + "totalRounding": { + "type": "object", + "required": [ + "decimals", + "interval", + "roundForNet", + "apiAlias" + ], + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" + ] }, - { - "type": "null" - } - ] - }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } + "decimals": { + "type": "integer", + "format": "int32" }, - { - "type": "null" + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" } - ] - }, - "hasRange": { - "type": "boolean" + } }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "^[0-9a-f]{32}$" + "languageInfo": { + "type": "object", + "required": [ + "localeCode", + "name" + ], + "properties": { + "name": { + "type": "string" }, - { - "type": "null" + "localeCode": { + "type": "string" } + } + }, + "apiAlias": { + "type": "string", + "enum": [ + "sales_channel_context" ] } }, "required": [ + "salesChannel", "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" + "itemRounding", + "totalRounding", + "languageInfo" + ] + }, + "NavigationType": { + "type": "string", + "enum": [ + "main-navigation", + "footer-navigation", + "service-navigation" ] }, + "WishlistLoadRouteResponse": { + "type": "object", + "required": [ + "products" + ], + "properties": { + "wishlist": { + "type": "object", + "properties": { + "customerId": { + "type": "string", + "description": "Unique identity of the customer." + }, + "salesChannelId": { + "type": "string", + "description": "Unique identity of the sales channel." + } + } + }, + "products": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + }, "Breadcrumb": { "type": "object", "properties": { @@ -15718,194 +15175,64 @@ "apiAlias" ] }, - "CalculatedPrice": { + "ProductListingFlags": { "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", + "description": "Additional flags for product listings", "properties": { - "unitPrice": { - "type": "number" - }, - "quantity": { - "type": "number" - }, - "rawTotal": { - "type": "number" - }, - "totalPrice": { - "type": "number" - }, - "taxStatus": { - "type": "string", - "enum": [ - "net", - "tax-free" - ] - }, - "calculatedTaxes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } - }, - "referencePrice": { + "no-aggregations": { + "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", "oneOf": [ { - "$ref": "#/components/schemas/CartPriceReference" + "type": "string" }, { "type": "null" } ] }, - "listPrice": { + "only-aggregations": { + "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", "oneOf": [ { - "$ref": "#/components/schemas/CartListPrice" + "type": "string" }, { "type": "null" } ] + } + } + }, + "LineItemType": { + "type": "string", + "deprecated": true, + "enum": [ + "product", + "credit", + "custom", + "promotion", + "discount", + "container", + "quantity" + ] + }, + "LineItem": { + "type": "object", + "properties": { + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } }, - "positionPrice": { - "type": "number" - }, - "netPrice": { - "type": "number" + "cover": { + "$ref": "#/components/schemas/Media" }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } - }, - { - "type": "null" - } - ] + "dataContextHash": { + "type": "string" }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } - ] - }, - "apiAlias": { - "type": "string", - "enum": [ - "calculated_price" - ] - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } - } - }, - "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "referencePrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitPrice", - "positionPrice", - "netPrice", - "taxRules", - "rawTotal", - "taxStatus" - ] - }, - "Association": { - "additionalProperties": { - "$ref": "#/components/schemas/Association" - } - }, - "LineItemType": { - "type": "string", - "deprecated": true, - "enum": [ - "product", - "credit", - "custom", - "promotion", - "discount", - "container", - "quantity" - ] - }, - "LineItem": { - "type": "object", - "properties": { - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - }, - "cover": { - "$ref": "#/components/schemas/Media" - }, - "dataContextHash": { - "type": "string" - }, - "dataTimestamp": { - "type": "string" + "dataTimestamp": { + "type": "string" }, "deliveryInformation": { "$ref": "#/components/schemas/CartDeliveryInformation" @@ -16105,2317 +15432,2331 @@ "type" ] }, - "ListPrice": { + "CartPriceQuantity": { "type": "object", - "description": "", "properties": { - "discount": { - "type": "number" - }, - "percentage": { - "type": "number" - }, - "price": { - "type": "number" - }, "apiAlias": { "type": "string", "enum": [ - "cart_list_price" + "cart_price_quantity" ] - } - }, - "required": [ - "apiAlias" - ] - }, - "AggregationEntity": { - "title": "AggregationEntity", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "entity" - ] + "isCalculated": { + "type": "boolean" }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "listPrice": { + "$ref": "#/components/schemas/CartListPrice" }, - "definition": { - "description": "The entity definition e.g \"product_manufacturer\".", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field", - "definition" - ] - }, - "AggregationFilter": { - "title": "AggregationFilter", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" + "price": { + "type": "number" }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "filter" - ] + "quantity": { + "type": "number" }, - "filter": { + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + } + }, + "type": "object" + }, + "taxRules": { "type": "array", "items": { - "$ref": "#/components/schemas/Filters" + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } } + }, + "type": { + "type": "string" } }, "required": [ - "name", - "type", - "filter" + "apiAlias" ] }, - "AggregationTerms": { - "title": "AggregationTerms", + "NewsletterStatus": { + "type": "string", + "enum": [ + "notSet", + "optIn", + "optOut", + "direct", + "undefined" + ], + "description": "The subscription status. Possible values are: notSet, optIn, optOut, direct, undefined." + }, + "OrderRouteResponse": { "type": "object", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "terms" + "orders": { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "elements" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" + } + } + } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } ] }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "limit": { - "description": "The number of terms to return", - "type": "number" - }, - "sort": { - "type": "array", - "description": "Sorting the aggregation result.", - "items": { - "$ref": "#/components/schemas/Sort" + "paymentChangeable": { + "type": "object", + "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", + "additionalProperties": { + "type": "boolean" } } }, "required": [ - "name", - "type", - "field" + "orders" ] }, - "AggregationHistogram": { - "title": "AggregationHistogram", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "histogram" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "interval": { - "description": "The interval of the histogram", - "type": "number" - }, - "format": { - "description": "The format of the histogram", - "type": "string" - }, - "timeZone": { - "description": "The timezone of the histogram", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "AggregationRange": { - "title": "AggregationRange", - "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "range" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "ProductListingResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EntitySearchResult" }, - "ranges": { - "description": "The ranges of the aggregation", - "type": "array", - "items": { - "type": "object", - "anyOf": [ - { - "type": "object", - "title": "From and to", - "properties": { - "from": { - "type": "number", - "description": "The lower bound of the range" - }, - "to": { - "type": "number", - "description": "The upper bound of the range" + { + "type": "object", + "properties": { + "currentFilters": { + "type": "object", + "description": "Contains the state of the filters. These can be used to create listing filters.", + "properties": { + "navigationId": { + "type": "string" + }, + "manufacturer": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, - "required": [ - "from", - "to" - ] - }, - { - "type": "object", - "title": "From only", + "price": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "default": 0 + }, + "max": { + "type": "integer", + "default": 0 + } + }, + "required": [ + "min", + "max" + ] + }, + "rating": { + "oneOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "shipping-free": { + "type": "boolean", + "default": false + }, "properties": { - "from": { + "type": "array", + "items": { "type": "string", - "description": "The lower bound of the range" + "pattern": "^[0-9a-f]{32}$" } }, - "required": [ - "from" - ] + "search": { + "type": "string" + } }, - { + "required": [ + "manufacturer", + "navigationId", + "price", + "properties", + "rating", + "shipping-free" + ] + }, + "availableSortings": { + "type": "array", + "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", + "items": { "type": "object", - "title": "To only", "properties": { - "to": { + "label": { + "type": "string" + }, + "translated": { + "type": "object", + "properties": { + "label": { + "type": "string" + } + }, + "required": [ + "label" + ] + }, + "key": { + "type": "string" + }, + "priority": { + "type": "number" + }, + "apiAlias": { "type": "string", - "description": "The upper bound of the range" + "enum": [ + "product_sorting" + ] } }, "required": [ - "to" + "label", + "translated", + "key", + "priority", + "apiAlias" ] } - ] - } + }, + "sorting": { + "type": "string" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "entity": { + "type": "string", + "enum": [ + "product" + ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_listing" + ] + } + }, + "required": [ + "elements", + "availableSortings", + "currentFilters", + "apiAlias" + ] } - }, - "required": [ - "name", - "type", - "field", - "ranges" ] }, - "AccountNewsletterRecipientResult": { - "properties": { - "status": { - "description": "Status indicates if the customer has subscribed to the news letter or not." - } - } - }, - "OrderProductWarehouse": { - "properties": { - "id": { - "description": "Unique identity of order's product warehouse." - } - } - }, - "OrderReturn": { + "CookieRouteResponse": { + "type": "object", + "description": "Response containing cookie groups and their configuration hash.", "properties": { - "id": { - "description": "Unique identity of order return." + "apiAlias": { + "type": "string", + "enum": [ + "cookie_groups_hash" + ] }, - "versionId": { - "description": "Unique identity of order return's version." + "elements": { + "type": "array", + "description": "Collection of cookie groups", + "items": { + "$ref": "#/components/schemas/CookieGroup" + } }, - "orderId": { - "description": "Unique identity of order." + "hash": { + "type": "string", + "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", + "example": "f86b6a872cb83dbd22d838ceda1aa3d4" }, - "orderVersionId": { - "description": "Unique identity of order return version." + "languageId": { + "type": "string", + "format": "uuid", + "description": "The language ID for which the cookie configuration was generated. Used to store hashes per language.", + "example": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" + } + }, + "required": [ + "elements", + "hash", + "languageId", + "apiAlias" + ], + "example": { + "apiAlias": "cookie_groups_hash", + "elements": [ + { + "isRequired": true, + "description": "Cookies required for this shop to function:", + "name": "Technically required", + "entries": [ + { + "name": "Session", + "hidden": false, + "cookie": "session-", + "apiAlias": "cookie_entry" + }, + { + "name": "Timezone", + "hidden": false, + "cookie": "timezone", + "apiAlias": "cookie_entry" + }, + { + "value": "1", + "expiration": 30, + "name": "Cookie preferences", + "hidden": true, + "cookie": "cookie-preference", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "description": "Cookies used for statistics and shop performance metrics.", + "name": "Statistics", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "Google Analytics", + "hidden": false, + "cookie": "google-analytics-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "description": "Allows Google to collect personal data for online advertising and marketing.", + "name": "Marketing", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "Google Advertising", + "hidden": false, + "cookie": "google-ads-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "name": "Comfort features", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "YouTube video", + "hidden": false, + "cookie": "youtube-video", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + } + ], + "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", + "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" + } + }, + "Cart": { + "type": "object", + "properties": { + "name": { + "description": "Name of the cart - for example `guest-cart`", + "type": "string" + }, + "token": { + "description": "Context token identifying the cart and the user session", + "type": "string" }, "price": { - "properties": { - "netPrice": { - "description": "Net price of the product." - }, - "totalPrice": { - "description": "Gross price of the product." - }, - "calculatedTaxes": { - "description": "Contains calculated tax on order delivery price." - }, - "taxRules": { - "description": "Pricing based on multiple taxes." - }, - "positionPrice": { - "description": "Price of each line item in the cart multiplied by its quantity excluding charges like shipping cost, rules, taxes etc." - }, - "rawTotal": { - "description": "The total value before rounding off." - }, - "taxStatus": { - "description": "TaxStatus takes `Free`, `Net` or `Gross` as values." - } + "$ref": "#/components/schemas/CalculatedPrice" + }, + "lineItems": { + "description": "All items within the cart", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" } }, - "shippingCosts": { - "properties": { - "unitPrice": { - "description": "Shipping cost of product per item (where, quantity=1)." - }, - "totalPrice": { - "description": "Shipping cost of product based on quantity." - }, - "quantity": { - "description": "Number of items of each product." - }, - "calculatedTaxes": { - "description": "Contains calculated taxes based on shipping costs/methods." - }, - "taxRules": { - "description": "Pricing based on multiple taxes." - }, - "referencePrice": { - "description": "Original cost price of the product." + "errors": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartError" + } }, - "listPrice": { - "properties": { - "price": { - "description": "Price of each line item." - }, - "discount": { - "description": "Absolute discount on each line item." + { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "code": { + "type": "number" + }, + "key": { + "type": "string" + }, + "level": { + "type": "number" + }, + "message": { + "type": "string" + }, + "messageKey": { + "type": "string" + } }, - "percentage": { - "description": "Discount in percentage." - } + "required": [ + "code", + "key", + "level", + "message", + "messageKey" + ] } + } + ], + "properties": { + "key": { + "description": "Unique key for every message." }, - "regulationPrice": { - "properties": { - "price": { - "description": "Contains cheapest price from last 30 days as per EU law." - } - } + "level": { + "description": "Types of level - Notice, warning and error. " + }, + "message": { + "description": "A persistent error passed from the shopping cart calculation processes to the user end." } } }, - "stateId": { - "description": "Unique identity of state." + "deliveries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDelivery" + } }, - "returnNumber": { - "description": "Reference number for returning order." + "transactions": { + "description": "A list of all payment transactions associated with the current cart.", + "type": "array", + "items": { + "type": "object", + "properties": { + "paymentMethodId": { + "type": "string" + }, + "amount": { + "$ref": "#/components/schemas/CalculatedPrice" + } + } + }, + "properties": { + "paymentMethodId": { + "description": "Unique identity of payment method." + } + } }, - "requestedAt": { - "description": "Date and time when the order return was requested." + "modified": { + "type": "boolean", + "description": "It signifies any changes to cart." }, - "amountTotal": { - "description": "Gross price of the order." - }, - "amountNet": { - "description": "Net price of the order." - } - } - }, - "OrderReturnLineItem": { - "properties": { - "id": { - "description": "Unique identity of order return line item." - }, - "versionId": { - "description": "Unique identity of order return line item's version." - }, - "orderReturnId": { - "description": "Unique identity of order return." - }, - "orderReturnVersionId": { - "description": "Unique identity of order return version." - }, - "orderLineItemId": { - "description": "Unique identity of order line item." - }, - "orderLineItemVersionId": { - "description": "Unique identity of order line items's version." - }, - "reasonId": { - "description": "Unique identity of reason for return." - }, - "quantity": { - "description": "Number of line items returned." + "customerComment": { + "description": "A comment that can be added to the cart.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] }, - "refundAmount": { - "description": "Amount to be refunded." + "affiliateCode": { + "description": "An affiliate tracking code", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] }, - "restockQuantity": { - "description": "Update of stock quantity after the return of certain line items are initiated." + "campaignCode": { + "description": "A campaign tracking code", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] }, - "customFields": { - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + "apiAlias": { + "type": "string", + "enum": [ + "cart" + ] }, - "stateId": { - "description": "Unique identity of state." - } - } - }, - "OrderReturnLineItemReason": { - "properties": { "id": { - "description": "Unique identity for reason of return." - }, - "reasonKey": { - "description": "Unique key associated with reason for the order return. " - }, - "content": { - "description": "Description of the reason of return." - }, - "translated": { - "description": "Contains the translations of all translated fields." + "description": "Unique identity of cart." } - } + }, + "required": [ + "price", + "apiAlias" + ] }, - "OrderWarehouseGroup": { + "Sitemap": { + "type": "object", "properties": { - "id": { - "description": "Unique identity of order warehouse group." + "filename": { + "type": "string", + "description": "Name of the file which holds a list of all URL's." + }, + "created": { + "type": "string", + "format": "date-time" } - } + }, + "required": [ + "filename", + "created" + ] }, - "ProductReviewSummary": { + "CrossSellingElement": { + "type": "object", "properties": { - "id": { - "description": "Unique identity of products's review summary." - }, - "productId": { - "description": "Unique identity of products." + "crossSelling": { + "$ref": "#/components/schemas/ProductCrossSelling" }, - "salesChannelId": { - "description": "Unique identity of sales channel." + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } }, - "summary": { - "description": "Unique identity of products's review summary." + "total": { + "type": "integer", + "format": "int32" }, - "visible": { - "description": "When boolean value is `true`, the review is displayed to the customer." + "streamId": { + "type": "string", + "format": "uuid" }, - "translated": { - "description": "Contains the translations of all translated fields." + "apiAlias": { + "type": "string", + "enum": [ + "cross_selling_element" + ] } - } + }, + "required": [ + "crossSelling", + "products", + "total", + "apiAlias" + ] }, - "ProductWarehouse": { + "ProductMeasurements": { + "type": "object", + "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", "properties": { - "id": { - "description": "Unique identity of warehouse of product." + "width": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" + }, + "value": { + "type": "number" + } + } + }, + "height": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" + }, + "value": { + "type": "number" + } + } + }, + "length": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" + }, + "value": { + "type": "number" + } + } + }, + "weight": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg" + }, + "value": { + "type": "number" + } + } } } }, - "Subscription": { + "CartError": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "id": { - "description": "Unique identity of subscription." + "key": { + "type": "string" }, - "convertedOrder": { - "description": "An array loaded with persistent information related to cart data." + "level": { + "type": "number", + "enum": [ + 0, + 10, + 20 + ], + "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" }, - "subscriptionNumber": { - "description": "Unique number associated with subscription." - }, - "nextSchedule": { - "description": "Date and time of next scheduled subscription for example: `yyyy-mm-dd hh:mm:ss` - `2023-08-15 15:25:32`." - }, - "salesChannelId": { - "description": "Unique identity of sales channel." - }, - "subscriptionPlanId": { - "description": "Unique identity of subscription plan." - }, - "subscriptionPlanName": { - "description": "Unique name for subscription plan." - }, - "subscriptionIntervalId": { - "description": "Unique identity for subscription interval." - }, - "subscriptionIntervalName": { - "description": "Unique name for subscription interval." - }, - "dateInterval": { - "description": "Relative interval data. For example, `every 3 days`, `every 2 months`, etc." - }, - "cronInterval": { - "description": "Absolute interval data. For example, `only on January`, `only on Mondays`, etc." - }, - "billingAddressId": { - "description": "Unique identity of billing address." - }, - "shippingAddressId": { - "description": "Unique identity of shipping address." - }, - "shippingMethodId": { - "description": "Unique identity of shipping method." - }, - "paymentMethodId": { - "description": "Unique identity of payment method." - }, - "currencyId": { - "description": "Unique identity of currency." - }, - "languageId": { - "description": "Unique identity of language." - }, - "customFields": { - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - } - } - }, - "SubscriptionAddress": { - "properties": { - "id": { - "description": "Unique identity of subscription address." - }, - "countryId": { - "description": "Unique identity of country." - }, - "subscriptionId": { - "description": "Unique identity of subscription." - }, - "countryStateId": { - "description": "Unique identity of state of the country." - }, - "salutationId": { - "description": "Unique identity of salutation." - }, - "firstName": { - "description": "First name of the subscribed customer." - }, - "lastName": { - "description": "Last name of the subscribed customer." - }, - "street": { - "description": "Street address" - }, - "zipcode": { - "description": "Zip code of the country." - }, - "company": { - "description": "Name of the company." - }, - "department": { - "description": "Name of the department." - }, - "title": { - "description": "Title name given to customer's order address." - }, - "vatId": { - "description": "Unique identity of VAT." - }, - "phoneNumber": { - "description": "Phone number of the customer." - }, - "additionalAddressLine1": { - "description": "Additional address input if necessary." - }, - "additionalAddressLine2": { - "description": "Additional address input if necessary." - }, - "customFields": { - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + "message": { + "type": "string" }, - "email": { - "description": "Last name of the subscribed customer. " + "messageKey": { + "type": "string" } - } + }, + "required": [ + "key", + "level", + "message", + "messageKey" + ] }, - "SubscriptionCustomer": { + "ContextMeasurementSystemInfo": { + "type": "object", + "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", "properties": { - "id": { - "description": "Unique identity of subscription customer." - }, - "customerId": { - "description": "Unique identity of the customer." - }, - "salutationId": { - "description": "Unique identity of salutation." - }, - "firstName": { - "description": "Email address of the subscribed customer." - }, - "lastName": { - "description": "Last name of the subscribed customer. " - }, - "company": { - "description": "Name of the customer's company." - }, - "title": { - "description": "Title name given to customer's order address." - }, - "customerNumber": { - "description": "Unique number for subscribed customer." - }, - "vatId": { - "description": "Unique identity of VAT." + "system": { + "type": "string", + "enum": [ + "metric", + "imperial" + ], + "default": "metric", + "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." }, - "customFields": { - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + "units": { + "type": "object", + "description": "Units used in the measurement system.", + "properties": { + "length": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Unit of length." + }, + "weight": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." + } + } } } }, - "SubscriptionInterval": { + "CartDeliveryPosition": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "id": { - "description": "Unique identity of subscription interval." - }, - "name": { - "description": "Name of the subscription interval." - }, - "active": { - "description": "When `true`, the defined subscription interval is available for selection in storefront." - }, - "dateInterval": { - "description": "Relative interval data. For example, `every 3 days`, `every 2 months`, etc." + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } }, - "cronInterval": { - "description": "Absolute interval data. For example, `only on January`, `only on Mondays`, etc." + "identifier": { + "type": "string" }, - "availabilityRuleId": { - "description": "Unique identity of rule." + "lineItem": { + "$ref": "#/components/schemas/LineItem" }, - "translated": { - "description": "Contains the translations of all translated fields." + "price": { + "$ref": "#/components/schemas/CalculatedPrice" } } }, - "SubscriptionPlan": { + "CookieGroup": { + "type": "object", "properties": { - "id": { - "description": "Unique identity of subscription plan." + "isRequired": { + "type": "boolean" }, "name": { - "description": "Name of the subscription plan." + "type": "string" }, "description": { - "description": "A short description about the subscription plan." + "type": "string" }, - "active": { - "description": "When `true`, the subscription plan is available for selection in storefront." + "cookie": { + "type": "string" }, - "activeStorefrontLabel": { - "description": "When boolean value id `true`, the label overrides the plan name." + "value": { + "type": "string" }, - "availabilityRuleId": { - "description": "Unique identity of rule." + "expiration": { + "type": "integer" }, - "label": { - "description": "Label that can overwrite the active plan name. " + "entries": { + "$ref": "#/components/schemas/CookieEntryCollection" }, - "translated": { - "description": "Contains the translations of all translated fields." + "apiAlias": { + "type": "string", + "enum": [ + "cookie_group" + ] } - } + }, + "not": { + "allOf": [ + { + "required": [ + "cookie" + ] + }, + { + "required": [ + "entries" + ] + } + ] + }, + "required": [ + "name", + "isRequired", + "apiAlias" + ] }, - "SubscriptionPlanIntervalMapping": { + "ListPrice": { + "type": "object", + "description": "", "properties": { - "id": { - "description": "Unique identity of subscription plan interval mapping." + "discount": { + "type": "number" }, - "subscriptionIntervalId": { - "description": "Unique identity of subscription interval." + "percentage": { + "type": "number" }, - "subscriptionPlanId": { - "description": "Unique identity of subscription plan." + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_list_price" + ] } - } + }, + "required": [ + "apiAlias" + ] }, - "SubscriptionPlanProductMapping": { + "CartDelivery": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "id": { - "description": "Unique identity of subscription plan for product mapping." + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } }, - "productId": { - "description": "Unique identity of product." + "location": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "state": { + "$ref": "#/components/schemas/CountryState" + } + } }, - "productVersionId": { - "description": "Unique identity of product's version." + "positions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDeliveryPosition" + } }, - "subscriptionPlanId": { - "description": "Unique identity of subscription plan." + "shippingCosts": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" } } }, - "SubscriptionTagMapping": { + "EntitySearchResult": { + "type": "object", "properties": { - "id": { - "description": "Unique identity of subscription tag." + "entity": { + "type": "string" }, - "subscriptionId": { - "description": "Unique identity of subscription." + "total": { + "type": "integer", + "description": "The total number of found entities" }, - "tagId": { - "description": "Unique identity of subscription tag." + "aggregations": { + "type": "array", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", + "items": { + "type": "object" + } + }, + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." + }, + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." } } }, - "SwagDelayAction": { + "SuccessResponse": { + "type": "object", "properties": { - "id": { - "description": "Unique identity of swag delay action for flow builder" - }, - "orderId": { - "description": "Unique identity of order." - }, - "customerId": { - "description": "Unique identity of customer." + "success": { + "type": "boolean" } } }, - "Warehouse": { + "AccountNewsletterRecipientResult": { "properties": { - "id": { - "description": "Unique identity of warehouse." + "status": { + "description": "Status indicates if the customer has subscribed to the news letter or not." } } }, - "WarehouseGroup": { + "OrderProductWarehouse": { "properties": { "id": { - "description": "Unique identity of warehouse group." + "description": "Unique identity of order's product warehouse." } } }, - "CustomPrice": { + "OrderReturn": { "properties": { "id": { - "description": "Unique identity of the custom price." - }, - "productId": { - "description": "Unique identity of the product." + "description": "Unique identity of order return." }, - "productVersionId": { - "description": "Unique identity of the product's version." + "versionId": { + "description": "Unique identity of order return's version." }, - "customerId": { - "description": "Unique identity of the customer." + "orderId": { + "description": "Unique identity of order." }, - "customerGroupId": { - "description": "Unique identity of the customer's group." + "orderVersionId": { + "description": "Unique identity of order return version." }, "price": { - "description": "Detailed information of price." + "properties": { + "netPrice": { + "description": "Net price of the product." + }, + "totalPrice": { + "description": "Gross price of the product." + }, + "calculatedTaxes": { + "description": "Contains calculated tax on order delivery price." + }, + "taxRules": { + "description": "Pricing based on multiple taxes." + }, + "positionPrice": { + "description": "Price of each line item in the cart multiplied by its quantity excluding charges like shipping cost, rules, taxes etc." + }, + "rawTotal": { + "description": "The total value before rounding off." + }, + "taxStatus": { + "description": "TaxStatus takes `Free`, `Net` or `Gross` as values." + } + } + }, + "shippingCosts": { + "properties": { + "unitPrice": { + "description": "Shipping cost of product per item (where, quantity=1)." + }, + "totalPrice": { + "description": "Shipping cost of product based on quantity." + }, + "quantity": { + "description": "Number of items of each product." + }, + "calculatedTaxes": { + "description": "Contains calculated taxes based on shipping costs/methods." + }, + "taxRules": { + "description": "Pricing based on multiple taxes." + }, + "referencePrice": { + "description": "Original cost price of the product." + }, + "listPrice": { + "properties": { + "price": { + "description": "Price of each line item." + }, + "discount": { + "description": "Absolute discount on each line item." + }, + "percentage": { + "description": "Discount in percentage." + } + } + }, + "regulationPrice": { + "properties": { + "price": { + "description": "Contains cheapest price from last 30 days as per EU law." + } + } + } + } + }, + "stateId": { + "description": "Unique identity of state." + }, + "returnNumber": { + "description": "Reference number for returning order." + }, + "requestedAt": { + "description": "Date and time when the order return was requested." + }, + "amountTotal": { + "description": "Gross price of the order." + }, + "amountNet": { + "description": "Net price of the order." } } }, - "CustomerSpecificFeatures": { + "OrderReturnLineItem": { "properties": { "id": { - "description": "Unique identity of the customer specific features." + "description": "Unique identity of order return line item." }, - "customerId": { - "description": "Unique identity of the customer." + "versionId": { + "description": "Unique identity of order return line item's version." + }, + "orderReturnId": { + "description": "Unique identity of order return." + }, + "orderReturnVersionId": { + "description": "Unique identity of order return version." + }, + "orderLineItemId": { + "description": "Unique identity of order line item." + }, + "orderLineItemVersionId": { + "description": "Unique identity of order line items's version." + }, + "reasonId": { + "description": "Unique identity of reason for return." + }, + "quantity": { + "description": "Number of line items returned." + }, + "refundAmount": { + "description": "Amount to be refunded." + }, + "restockQuantity": { + "description": "Update of stock quantity after the return of certain line items are initiated." + }, + "customFields": { + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "stateId": { + "description": "Unique identity of state." } } }, - "MediaAiTag": { + "OrderReturnLineItemReason": { "properties": { "id": { - "description": "Unique identity of the AI media tag." + "description": "Unique identity for reason of return." }, - "tag": { - "description": "Tag that indicates if the media is made by AI or not." + "reasonKey": { + "description": "Unique key associated with reason for the order return. " + }, + "content": { + "description": "Description of the reason of return." }, "translated": { "description": "Contains the translations of all translated fields." } } - } - }, - "responses": { - "404": { - "description": "Not Found", - "content": { - "application/vnd.api+json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "404", - "title": "Not Found", - "description": "Resource with given parameter was not found." - } - ] - } - }, - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "404", - "title": "Not Found", - "description": "Resource with given parameter was not found." - } - ] - } + }, + "OrderWarehouseGroup": { + "properties": { + "id": { + "description": "Unique identity of order warehouse group." } } }, - "403": { - "description": "Forbidden", - "content": { - "application/vnd.api+json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "403", - "title": "Forbidden", - "description": "This operation is restricted to logged in users." - } - ] - } + "ProductReviewSummary": { + "properties": { + "id": { + "description": "Unique identity of products's review summary." }, - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "403", - "title": "Forbidden", - "description": "This operation is restricted to logged in users." - } - ] - } + "productId": { + "description": "Unique identity of products." + }, + "salesChannelId": { + "description": "Unique identity of sales channel." + }, + "summary": { + "description": "Unique identity of products's review summary." + }, + "visible": { + "description": "When boolean value is `true`, the review is displayed to the customer." + }, + "translated": { + "description": "Contains the translations of all translated fields." } } }, - "401": { - "description": "Unauthorized", - "content": { - "application/vnd.api+json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "401", - "title": "Unauthorized", - "description": "Authorization information is missing or invalid." - } - ] - } - }, - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "401", - "title": "Unauthorized", - "description": "Authorization information is missing or invalid." - } - ] - } + "ProductWarehouse": { + "properties": { + "id": { + "description": "Unique identity of warehouse of product." } } }, - "400": { - "description": "Bad Request", - "content": { - "application/vnd.api+json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "400", - "title": "Bad Request", - "description": "Bad parameters for this endpoint. See documentation for the correct ones." - } - ] - } + "Subscription": { + "properties": { + "id": { + "description": "Unique identity of subscription." }, - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "400", - "title": "Bad Request", - "description": "Bad parameters for this endpoint. See documentation for the correct ones." - } - ] - } + "convertedOrder": { + "description": "An array loaded with persistent information related to cart data." + }, + "subscriptionNumber": { + "description": "Unique number associated with subscription." + }, + "nextSchedule": { + "description": "Date and time of next scheduled subscription for example: `yyyy-mm-dd hh:mm:ss` - `2023-08-15 15:25:32`." + }, + "salesChannelId": { + "description": "Unique identity of sales channel." + }, + "subscriptionPlanId": { + "description": "Unique identity of subscription plan." + }, + "subscriptionPlanName": { + "description": "Unique name for subscription plan." + }, + "subscriptionIntervalId": { + "description": "Unique identity for subscription interval." + }, + "subscriptionIntervalName": { + "description": "Unique name for subscription interval." + }, + "dateInterval": { + "description": "Relative interval data. For example, `every 3 days`, `every 2 months`, etc." + }, + "cronInterval": { + "description": "Absolute interval data. For example, `only on January`, `only on Mondays`, etc." + }, + "billingAddressId": { + "description": "Unique identity of billing address." + }, + "shippingAddressId": { + "description": "Unique identity of shipping address." + }, + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "paymentMethodId": { + "description": "Unique identity of payment method." + }, + "currencyId": { + "description": "Unique identity of currency." + }, + "languageId": { + "description": "Unique identity of language." + }, + "customFields": { + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." } } }, - "204": { - "description": "No Content" - }, - "SeoUrlListResponse": { - "description": "Entity search result containing seo urls.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } - } - }, - "type": "object", - "required": [ - "elements" - ] - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } - }, - "ProductListResponse": { - "description": "Entity search result containing products", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "required": [ - "elements" - ], - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } + "SubscriptionAddress": { + "properties": { + "id": { + "description": "Unique identity of subscription address." + }, + "countryId": { + "description": "Unique identity of country." + }, + "subscriptionId": { + "description": "Unique identity of subscription." + }, + "countryStateId": { + "description": "Unique identity of state of the country." + }, + "salutationId": { + "description": "Unique identity of salutation." + }, + "firstName": { + "description": "First name of the subscribed customer." + }, + "lastName": { + "description": "Last name of the subscribed customer." + }, + "street": { + "description": "Street address" + }, + "zipcode": { + "description": "Zip code of the country." + }, + "company": { + "description": "Name of the company." + }, + "department": { + "description": "Name of the department." + }, + "title": { + "description": "Title name given to customer's order address." + }, + "vatId": { + "description": "Unique identity of VAT." + }, + "phoneNumber": { + "description": "Phone number of the customer." + }, + "additionalAddressLine1": { + "description": "Additional address input if necessary." + }, + "additionalAddressLine2": { + "description": "Additional address input if necessary." + }, + "customFields": { + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "email": { + "description": "Last name of the subscribed customer. " } } }, - "CurrencyListResponse": { - "description": "Entity search result containing currencies.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Currency" - } - } + "SubscriptionCustomer": { + "properties": { + "id": { + "description": "Unique identity of subscription customer." + }, + "customerId": { + "description": "Unique identity of the customer." + }, + "salutationId": { + "description": "Unique identity of salutation." + }, + "firstName": { + "description": "Email address of the subscribed customer." + }, + "lastName": { + "description": "Last name of the subscribed customer. " + }, + "company": { + "description": "Name of the customer's company." + }, + "title": { + "description": "Title name given to customer's order address." + }, + "customerNumber": { + "description": "Unique number for subscribed customer." + }, + "vatId": { + "description": "Unique identity of VAT." + }, + "customFields": { + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." } } }, - "CountryListResponse": { - "description": "Entity search result containing countries.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Country" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } + "SubscriptionInterval": { + "properties": { + "id": { + "description": "Unique identity of subscription interval." + }, + "name": { + "description": "Name of the subscription interval." + }, + "active": { + "description": "When `true`, the defined subscription interval is available for selection in storefront." + }, + "dateInterval": { + "description": "Relative interval data. For example, `every 3 days`, `every 2 months`, etc." + }, + "cronInterval": { + "description": "Absolute interval data. For example, `only on January`, `only on Mondays`, etc." + }, + "availabilityRuleId": { + "description": "Unique identity of rule." + }, + "translated": { + "description": "Contains the translations of all translated fields." } } }, - "SalutationListResponse": { - "description": "Entity search result containing salutations.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Salutation" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } + "SubscriptionPlan": { + "properties": { + "id": { + "description": "Unique identity of subscription plan." + }, + "name": { + "description": "Name of the subscription plan." + }, + "description": { + "description": "A short description about the subscription plan." + }, + "active": { + "description": "When `true`, the subscription plan is available for selection in storefront." + }, + "activeStorefrontLabel": { + "description": "When boolean value id `true`, the label overrides the plan name." + }, + "availabilityRuleId": { + "description": "Unique identity of rule." + }, + "label": { + "description": "Label that can overwrite the active plan name. " + }, + "translated": { + "description": "Contains the translations of all translated fields." } } }, - "CategoryListResponse": { - "description": "Entity search result containing categories.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - } - } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } - }, - "CountryStateListResponse": { - "description": "Entity search result containing countries.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CountryState" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } - }, - "LanguageListResponse": { - "description": "Entity search result containing languages.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Language" - } - } - }, - "required": [ - "elements" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } - }, - "ContextTokenResponse": { - "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", - "headers": { - "sw-context-token": { - "description": "Contains sw-context-token value", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "description": "Define the URL which browser will be redirected to", - "type": "string" - } - } - } - } - } - }, - "OpenApi3": { - "description": "Returns information about the store API.", - "content": { - "application/json": { - "schema": { - "properties": { - "openapi": { - "type": "string" - }, - "info": { - "type": "object", - "properties": { - "title": { - "type": "string" - }, - "summary": { - "type": "string" - }, - "description": { - "type": "string" - }, - "termsOfService": { - "type": "string", - "format": "uri" - }, - "contact": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "url": { - "type": "string", - "format": "uri" - }, - "email": { - "type": "string", - "format": "email" - } - } - }, - "license": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "identifier": { - "type": "string" - }, - "url": { - "type": "string", - "format": "uri" - } - }, - "required": [ - "name" - ] - }, - "version": { - "type": "string" - } - }, - "required": [ - "title", - "version" - ] - }, - "jsonSchemaDialect": { - "type": "string" - }, - "webhooks": { - "type": "object" - }, - "servers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "url": { - "type": "string" - } - }, - "required": [ - "url" - ] - } - }, - "components": { - "type": "object", - "properties": { - "schemas": { - "type": "object" - }, - "responses": { - "type": "object" - }, - "parameters": { - "type": "object" - }, - "examples": { - "type": "object" - }, - "requestBodies": { - "type": "object" - }, - "headers": { - "type": "object" - }, - "securitySchemes": { - "type": "object" - }, - "links": { - "type": "object" - }, - "callbacks": { - "type": "object" - }, - "pathItems": { - "type": "object" - } - } - }, - "security": { - "type": "array", - "items": { - "type": "object" - } - }, - "paths": { - "type": "object" - }, - "tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "externalDocs": { - "type": "object", - "properties": { - "description": { - "type": "string" - }, - "url": { - "type": "string", - "format": "uri" - } - }, - "required": [ - "url" - ] - } - }, - "required": [ - "name" - ] - } - }, - "externalDocs": { - "type": "object", - "properties": { - "description": { - "type": "string" - }, - "url": { - "type": "string", - "format": "uri" - } - }, - "required": [ - "url" - ] - } - }, - "type": "object", - "required": [ - "openapi", - "info" - ] - } - } - } - }, - "PaymentMethodListResponse": { - "description": "", - "content": { - "application/json": { - "schema": { - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PaymentMethod" - } - } - }, - "type": "object" - } - } - } - }, - "ShippingMethodListResponse": { - "description": "Entity search result containing shipping methods.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "required": [ - "elements" - ], - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } - } - }, - "parameters": { - "contentType": { - "name": "Content-Type", - "in": "header", - "description": "Content type of the request", - "required": true, - "schema": { - "type": "string", - "default": "application/json" - } - }, - "accept": { - "name": "Accept", - "in": "header", - "description": "Accepted response content types", - "required": true, - "schema": { - "type": "string", - "default": "application/json" - } - }, - "swLanguageId": { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "noAggregations": { - "name": "no-aggregations", - "in": "query", - "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", - "required": false, - "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "onlyAggregations": { - "name": "only-aggregations", - "in": "query", - "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", - "required": false, - "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "criteriaPage": { - "name": "page", - "in": "query", - "description": "Search result page", - "schema": { - "type": "integer" - } - }, - "criteriaLimit": { - "name": "limit", - "in": "query", - "description": "Number of items per result page", - "schema": { - "type": "integer" - } - }, - "criteriaTerm": { - "name": "term", - "in": "query", - "description": "Search term", - "schema": { - "type": "string" - } - }, - "criteriaFilter": { - "name": "filter[]", - "in": "query", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "schema": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - } - }, - "criteriaIds": { - "name": "ids[]", - "in": "query", - "description": "List of ids to search for", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "criteriaQuery": { - "name": "query", - "in": "query", - "description": "The query string to search for", - "schema": { - "type": "string" - } - }, - "criteriaAssociations": { - "name": "associations", - "in": "query", - "description": "", - "schema": { - "$ref": "#/components/schemas/Associations" - }, - "style": "deepObject", - "explode": true - }, - "criteriaPostFilter": { - "name": "post-filter[]", - "in": "query", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "schema": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - } - }, - "criteriaSort": { - "name": "sort[]", - "in": "query", - "description": "Sorting in the search result.", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Sort" - } - } - }, - "criteriaAggregations": { - "name": "aggregations[]", - "in": "query", - "description": "", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } - } - }, - "criteriaFields": { - "name": "fields[]", - "in": "query", - "description": "Fields which should be returned in the search result.", - "schema": { - "type": "array", - "items": { - "type": "string", - "description": "Name of a field" - } - } - }, - "criteriaGrouping": { - "name": "grouping[]", - "in": "query", - "description": "Perform groupings over certain fields", - "schema": { - "type": "array", - "items": { - "type": "string", - "description": "Name of a field" - } - } - }, - "criteriaTotalCountMode": { - "name": "total-count-mode", - "in": "query", - "description": "", - "schema": { - "$ref": "#/components/schemas/TotalCountMode" - } - }, - "criteriaIncludes": { - "name": "includes", - "in": "query", - "description": "Specify the fields that should be returned for the given entities. Object key needs to be the entity name, and the list of fields needs to be the value. Fields will not be included, if they are also specified in the excludes. Note that the include fields will only be stripped on the API-Level, consider using the `fields` parameter for performance reasons.", - "schema": { - "$ref": "#/components/schemas/Includes" - }, - "style": "deepObject", - "explode": true - }, - "criteriaExcludes": { - "name": "excludes", - "in": "query", - "description": "Specify the fields that should be excluded from the response for the given entities. Object key needs to be the entity name, and the list of fields needs to be the value. Note that the exclude fields will only be stripped on the API-Level, consider using the `fields` parameter for performance reasons.", - "schema": { - "$ref": "#/components/schemas/Excludes" - }, - "style": "deepObject", - "explode": true - }, - "CompressedCriteria": { - "name": "_criteria", - "in": "query", - "description": "Compressed and encoded criteria object. Format: base64url(gzip(json_encode(criteria))). This parameter allows passing complex criteria as a single encoded string instead of multiple query parameters. The criteria object should be JSON-encoded, then gzipped, and finally base64url-encoded. The criteria object structure is defined in the Criteria schema (see #/components/schemas/Criteria).", - "required": false, - "schema": { - "type": "string", - "format": "base64url", - "example": "H4sIAAAAAAAAA6tWykpNzFGyqlbKz8lPTSxRslJKSi0pzSsFAGcQr7sHAAAA" - } - }, - "CompressedNoneFieldsCriteria": { - "name": "_criteria", - "in": "query", - "description": "Compressed and encoded criteria object. Format: base64url(gzip(json_encode(criteria))). This parameter allows passing complex criteria as a single encoded string instead of multiple query parameters. The criteria object should be JSON-encoded, then gzipped, and finally base64url-encoded. The criteria object structure is defined in the NoneFieldsCriteria schema (see #/components/schemas/NoneFieldsCriteria).", - "required": false, - "schema": { - "type": "string", - "format": "base64url", - "example": "H4sIAAAAAAAAA6tWykpNzFGyqlbKz8lPTSxRslJKSi0pzSsFAGcQr7sHAAAA" - } - } - }, - "securitySchemes": { - "ApiKey": { - "type": "apiKey", - "description": "Identifies the sales channel you want to access the API through", - "name": "sw-access-key", - "in": "header" - }, - "ContextToken": { - "type": "apiKey", - "description": "Identifies an anonymous or identified user session", - "name": "sw-context-token", - "in": "header" - } - } - }, - "security": [ - { - "ApiKey": [] - } - ], - "paths": { - "/revocation-request-form": { - "post": { - "tags": [ - "Content" - ], - "summary": "Submit a revocation request form message", - "description": "Used for submitting revocation request forms. Be aware that there can be more required fields, depending on the system settings.", - "operationId": "sendRevocationRequestMail", - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "email", - "contractNumber" - ], - "properties": { - "firstName": { - "description": "First name. This field may be required depending on the system settings.", - "type": "string" - }, - "lastName": { - "description": "Last name. This field may be required depending on the system settings.", - "type": "string" - }, - "email": { - "description": "Email address.", - "type": "string" - }, - "contractNumber": { - "description": "The number of the contract.", - "type": "string" - }, - "comment": { - "description": "The message of the revocation request form.", - "type": "string" - }, - "navigationId": { - "description": "Identifier of the navigation page. Can be used to override the configuration.\nTake a look at the settings of a category containing a revocation form in the administration.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "slotId": { - "description": "Identifier of the cms element.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "cmsPageType": { - "description": "Type of the content management page.", - "type": "string" - }, - "entityName": { - "description": "Entity name for slot config.", - "type": "string" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Message sent successfully." - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/landing-page/{landingPageId}": { - "post": { - "tags": [ - "Content", - "Endpoints supporting Criteria " - ], - "summary": "Fetch a landing page with the resolved CMS page", - "description": "Loads a landing page by its identifier and resolves the CMS page.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `cmsPage` - CMS page layout for the landing page\n- `seoUrls` - SEO-friendly URLs for the landing page across different sales channels", - "operationId": "readLandingPage", - "parameters": [ - { - "name": "landingPageId", - "in": "path", - "description": "Identifier of the landing page.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } + "SubscriptionPlanIntervalMapping": { + "properties": { + "id": { + "description": "Unique identity of subscription plan interval mapping." }, - { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - }, - { - "allOf": [ - { - "properties": { - "slots": { - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/ProductListingCriteria" - } - ] - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "The loaded landing page with cms page", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/LandingPage" - } - } - } + "subscriptionIntervalId": { + "description": "Unique identity of subscription interval." }, - "404": { - "$ref": "#/components/responses/404" - } - }, - "security": [ - { - "ApiKey": [] + "subscriptionPlanId": { + "description": "Unique identity of subscription plan." } - ] + } }, - "get": { - "tags": [ - "Content", - "Endpoints supporting Criteria " - ], - "summary": "Fetch a landing page with the resolved CMS page", - "description": "Loads a landing page by its identifier and resolves the CMS page.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `cmsPage` - CMS page layout for the landing page\n- `seoUrls` - SEO-friendly URLs for the landing page across different sales channels", - "operationId": "readLandingPageGet", - "parameters": [ - { - "name": "landingPageId", - "in": "path", - "description": "Identifier of the landing page.", - "required": true, - "schema": { - "type": "string" - } + "SubscriptionPlanProductMapping": { + "properties": { + "id": { + "description": "Unique identity of subscription plan for product mapping." }, - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } + "productId": { + "description": "Unique identity of product." }, - { - "$ref": "#/components/parameters/criteriaPage" + "productVersionId": { + "description": "Unique identity of product's version." }, - { - "name": "limit", - "in": "query", - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "schema": { - "type": "integer", - "minimum": 0 - } + "subscriptionPlanId": { + "description": "Unique identity of subscription plan." + } + } + }, + "SubscriptionTagMapping": { + "properties": { + "id": { + "description": "Unique identity of subscription tag." }, - { - "$ref": "#/components/parameters/criteriaTerm" + "subscriptionId": { + "description": "Unique identity of subscription." }, - { - "$ref": "#/components/parameters/criteriaFilter" + "tagId": { + "description": "Unique identity of subscription tag." + } + } + }, + "SwagDelayAction": { + "properties": { + "id": { + "description": "Unique identity of swag delay action for flow builder" }, - { - "$ref": "#/components/parameters/criteriaIds" + "orderId": { + "description": "Unique identity of order." }, - { - "$ref": "#/components/parameters/criteriaQuery" + "customerId": { + "description": "Unique identity of customer." + } + } + }, + "Warehouse": { + "properties": { + "id": { + "description": "Unique identity of warehouse." + } + } + }, + "WarehouseGroup": { + "properties": { + "id": { + "description": "Unique identity of warehouse group." + } + } + }, + "CustomPrice": { + "properties": { + "id": { + "description": "Unique identity of the custom price." }, - { - "$ref": "#/components/parameters/criteriaAssociations" + "productId": { + "description": "Unique identity of the product." }, - { - "$ref": "#/components/parameters/criteriaPostFilter" + "productVersionId": { + "description": "Unique identity of the product's version." }, - { - "$ref": "#/components/parameters/criteriaSort" + "customerId": { + "description": "Unique identity of the customer." }, - { - "$ref": "#/components/parameters/criteriaAggregations" + "customerGroupId": { + "description": "Unique identity of the customer's group." }, - { - "$ref": "#/components/parameters/criteriaFields" + "price": { + "description": "Detailed information of price." + } + } + }, + "CustomerSpecificFeatures": { + "properties": { + "id": { + "description": "Unique identity of the customer specific features." }, - { - "$ref": "#/components/parameters/criteriaGrouping" + "customerId": { + "description": "Unique identity of the customer." + } + } + }, + "MediaAiTag": { + "properties": { + "id": { + "description": "Unique identity of the AI media tag." }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" + "tag": { + "description": "Tag that indicates if the media is made by AI or not." }, - { - "$ref": "#/components/parameters/criteriaIncludes" + "translated": { + "description": "Contains the translations of all translated fields." + } + } + } + }, + "responses": { + "404": { + "description": "Not Found", + "content": { + "application/vnd.api+json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "404", + "title": "Not Found", + "description": "Resource with given parameter was not found." + } + ] + } }, - { - "$ref": "#/components/parameters/criteriaExcludes" + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "404", + "title": "Not Found", + "description": "Resource with given parameter was not found." + } + ] + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/vnd.api+json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "403", + "title": "Forbidden", + "description": "This operation is restricted to logged in users." + } + ] + } }, - { - "name": "order", - "in": "query", - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "403", + "title": "Forbidden", + "description": "This operation is restricted to logged in users." + } + ] + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/vnd.api+json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "401", + "title": "Unauthorized", + "description": "Authorization information is missing or invalid." + } + ] + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "401", + "title": "Unauthorized", + "description": "Authorization information is missing or invalid." + } + ] + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/vnd.api+json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "400", + "title": "Bad Request", + "description": "Bad parameters for this endpoint. See documentation for the correct ones." + } + ] } }, - { - "name": "p", - "in": "query", - "description": "Search result page", + "application/json": { "schema": { - "type": "integer", - "default": 1 + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "400", + "title": "Bad Request", + "description": "Bad parameters for this endpoint. See documentation for the correct ones." + } + ] } - }, - { - "name": "manufacturer", - "in": "query", - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + } + } + }, + "204": { + "description": "No Content" + }, + "CurrencyListResponse": { + "description": "Entity search result containing currencies.", + "content": { + "application/json": { "schema": { - "type": "string" + "type": "array", + "items": { + "$ref": "#/components/schemas/Currency" + } } - }, - { - "name": "min-price", - "in": "query", - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + } + } + }, + "SalutationListResponse": { + "description": "Entity search result containing salutations.", + "content": { + "application/json": { "schema": { - "type": "integer", - "minimum": 0, - "default": 0 + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Salutation" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } - }, - { - "name": "max-price", - "in": "query", - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + } + } + }, + "ContextTokenResponse": { + "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", + "headers": { + "sw-context-token": { + "description": "Contains sw-context-token value", "schema": { - "type": "integer", - "minimum": 0, - "default": 0 + "type": "string" } - }, - { - "name": "rating", - "in": "query", - "description": "Filter products with a minimum average rating.", + } + }, + "content": { + "application/json": { "schema": { - "type": "integer" + "type": "object", + "properties": { + "redirectUrl": { + "description": "Define the URL which browser will be redirected to", + "type": "string" + } + } } - }, - { - "name": "shipping-free", - "in": "query", - "description": "Filters products that are marked as shipping-free.", + } + } + }, + "ShippingMethodListResponse": { + "description": "Entity search result containing shipping methods.", + "content": { + "application/json": { "schema": { - "type": "boolean", - "default": false + "allOf": [ + { + "required": [ + "elements" + ], + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingMethod" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } - }, - { - "name": "properties", - "in": "query", - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + } + } + }, + "OpenApi3": { + "description": "Returns information about the store API.", + "content": { + "application/json": { "schema": { - "type": "string" + "properties": { + "openapi": { + "type": "string" + }, + "info": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "description": { + "type": "string" + }, + "termsOfService": { + "type": "string", + "format": "uri" + }, + "contact": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "email": { + "type": "string", + "format": "email" + } + } + }, + "license": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "identifier": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "name" + ] + }, + "version": { + "type": "string" + } + }, + "required": [ + "title", + "version" + ] + }, + "jsonSchemaDialect": { + "type": "string" + }, + "webhooks": { + "type": "object" + }, + "servers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + } + }, + "required": [ + "url" + ] + } + }, + "components": { + "type": "object", + "properties": { + "schemas": { + "type": "object" + }, + "responses": { + "type": "object" + }, + "parameters": { + "type": "object" + }, + "examples": { + "type": "object" + }, + "requestBodies": { + "type": "object" + }, + "headers": { + "type": "object" + }, + "securitySchemes": { + "type": "object" + }, + "links": { + "type": "object" + }, + "callbacks": { + "type": "object" + }, + "pathItems": { + "type": "object" + } + } + }, + "security": { + "type": "array", + "items": { + "type": "object" + } + }, + "paths": { + "type": "object" + }, + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "externalDocs": { + "type": "object", + "properties": { + "description": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "url" + ] + } + }, + "required": [ + "name" + ] + } + }, + "externalDocs": { + "type": "object", + "properties": { + "description": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "url" + ] + } + }, + "type": "object", + "required": [ + "openapi", + "info" + ] } - }, - { - "name": "reduce-aggregations", - "in": "query", - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + } + } + }, + "CountryStateListResponse": { + "description": "Entity search result containing countries.", + "content": { + "application/json": { "schema": { - "oneOf": [ + "allOf": [ { - "type": "string" + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CountryState" + } + } + }, + "type": "object" }, { - "type": "null" + "$ref": "#/components/schemas/EntitySearchResult" } ] } - }, - { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "responses": { - "200": { - "description": "The loaded landing page with cms page", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/LandingPage" - } - } - } - }, - "404": { - "$ref": "#/components/responses/404" - } - }, - "security": [ - { - "ApiKey": [] } - ] - } - }, - "/shipping-method": { - "post": { - "tags": [ - "Payment & Shipping", - "Endpoints supporting Criteria " - ], - "summary": "Fetch shipping methods", - "description": "Perform a filtered search for shipping methods.\n\n**Available Associations:**\n- `prices` - Shipping method price configurations (based on current cart and context)\n- `deliveryTime` - Delivery time information (min/max days, unit)\n- `media` - Media/images associated with the shipping method (loaded by default)\n- `availabilityRule` - Availability rule determining when this method is available\n- `tax` - Tax configuration for the shipping method\n\n**Example with associations:**\n```json\n{\n \"associations\": {\n \"prices\": {},\n \"deliveryTime\": {}\n }\n}\n```\n\nNote: The `prices` association is essential for accessing shipping cost configurations.", - "operationId": "readShippingMethod", - "parameters": [ - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } - }, - { - "name": "onlyAvailable", - "in": "query", - "description": "List only available shipping methods. This filters shipping methods methods which can not be used in the actual context because of their availability rule.", + } + }, + "PaymentMethodListResponse": { + "description": "", + "content": { + "application/json": { "schema": { - "type": "boolean" - } - }, - { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentMethod" } - ] - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "required": [ - "elements" - ], - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" + } + }, + "type": "object" + } + } + } + }, + "SeoUrlListResponse": { + "description": "Entity search result containing seo urls.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" + } } + }, + "type": "object", + "required": [ + "elements" ] + }, + { + "$ref": "#/components/schemas/EntitySearchResult" } - } + ] } } - }, - "security": [ - { - "ApiKey": [] + } + }, + "CategoryListResponse": { + "description": "Entity search result containing categories.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + } + } + } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } } - ] + } }, - "get": { - "tags": [ - "Payment & Shipping", - "Endpoints supporting Criteria " - ], - "summary": "Fetch shipping methods", - "description": "Perform a filtered search for shipping methods.\n\n**Available Associations:**\n- `prices` - Shipping method price configurations (graduated prices, quantity-based pricing)\n- `deliveryTime` - Delivery time information (min/max days, unit)\n- `media` - Media/images associated with the shipping method (loaded by default)\n- `availabilityRule` - Availability rule determining when this method is available\n- `tax` - Tax configuration for the shipping method\n\nNote: The `prices` association is essential for accessing shipping cost configurations.", - "operationId": "readShippingMethodGet", - "parameters": [ - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaFields" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "$ref": "#/components/parameters/CompressedCriteria" - }, - { - "$ref": "#/components/parameters/swLanguageId" + "LanguageListResponse": { + "description": "Entity search result containing languages.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + } + } + }, + "required": [ + "elements" + ], + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } } - ], - "responses": { - "200": { - "$ref": "#/components/responses/ShippingMethodListResponse" + } + }, + "ProductListResponse": { + "description": "Entity search result containing products", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "required": [ + "elements" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } } - }, - "security": [ - { - "ApiKey": [] + } + }, + "CountryListResponse": { + "description": "Entity search result containing countries.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Country" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } } - ] + } } }, - "/handle-payment": { - "post": { - "tags": [ - "Payment & Shipping" - ], - "summary": "Initiate a payment for an order", - "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order.", - "operationId": "handlePaymentMethod", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "orderId" - ], - "properties": { - "orderId": { - "description": "Identifier of an order", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "finishUrl": { - "description": "URL to which the client should be redirected after successful payment", - "type": "string" - }, - "errorUrl": { - "description": "URL to which the client should be redirected after erroneous payment", - "type": "string" - } - }, - "type": "object" - } + "parameters": { + "contentType": { + "name": "Content-Type", + "in": "header", + "description": "Content type of the request", + "required": true, + "schema": { + "type": "string", + "default": "application/json" + } + }, + "accept": { + "name": "Accept", + "in": "header", + "description": "Accepted response content types", + "required": true, + "schema": { + "type": "string", + "default": "application/json" + } + }, + "swLanguageId": { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "noAggregations": { + "name": "no-aggregations", + "in": "query", + "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", + "required": false, + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "onlyAggregations": { + "name": "only-aggregations", + "in": "query", + "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", + "required": false, + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" } + ] + } + }, + "criteriaPage": { + "name": "page", + "in": "query", + "description": "Search result page", + "schema": { + "type": "integer" + } + }, + "criteriaLimit": { + "name": "limit", + "in": "query", + "description": "Number of items per result page", + "schema": { + "type": "integer" + } + }, + "criteriaTerm": { + "name": "term", + "in": "query", + "description": "Search term", + "schema": { + "type": "string" + } + }, + "criteriaFilter": { + "name": "filter[]", + "in": "query", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "schema": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + } + }, + "criteriaIds": { + "name": "ids[]", + "in": "query", + "description": "List of ids to search for", + "schema": { + "type": "array", + "items": { + "type": "string" } + } + }, + "criteriaQuery": { + "name": "query", + "in": "query", + "description": "The query string to search for", + "schema": { + "type": "string" + } + }, + "criteriaAssociations": { + "name": "associations", + "in": "query", + "description": "", + "schema": { + "$ref": "#/components/schemas/Associations" }, - "responses": { - "200": { - "description": "Redirect to external payment provider", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "type": "string" - } - }, - "required": [ - "redirectUrl" - ] - } + "style": "deepObject", + "explode": true + }, + "criteriaPostFilter": { + "name": "post-filter[]", + "in": "query", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "schema": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } - } + ] } - }, - "security": [ - { - "ApiKey": [] + } + }, + "criteriaSort": { + "name": "sort[]", + "in": "query", + "description": "Sorting in the search result.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Sort" } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" + } + }, + "criteriaAggregations": { + "name": "aggregations[]", + "in": "query", + "description": "", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" } - ] + } }, - "get": { - "tags": [ - "Payment & Shipping" - ], - "summary": "Initiate a payment for an order", - "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order. Please prefer the POST version of this endpoint.", - "operationId": "handlePaymentMethodGet", - "parameters": [ - { - "name": "orderId", - "in": "query", - "required": true, - "description": "Identifier of an order", - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "finishUrl", - "in": "query", - "description": "URL to which the client should be redirected after successful payment", - "schema": { - "type": "string" - } - }, - { - "name": "errorUrl", - "in": "query", - "description": "URL to which the client should be redirected after erroneous payment", - "schema": { - "type": "string" - } - }, - { - "$ref": "#/components/parameters/swLanguageId" + "criteriaFields": { + "name": "fields[]", + "in": "query", + "description": "Fields which should be returned in the search result.", + "schema": { + "type": "array", + "items": { + "type": "string", + "description": "Name of a field" } - ], - "responses": { - "200": { - "description": "Redirect to external payment provider", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "type": "string" - } - }, - "required": [ - "redirectUrl" - ] - } - } - } + } + }, + "criteriaGrouping": { + "name": "grouping[]", + "in": "query", + "description": "Perform groupings over certain fields", + "schema": { + "type": "array", + "items": { + "type": "string", + "description": "Name of a field" } + } + }, + "criteriaTotalCountMode": { + "name": "total-count-mode", + "in": "query", + "description": "", + "schema": { + "$ref": "#/components/schemas/TotalCountMode" + } + }, + "criteriaIncludes": { + "name": "includes", + "in": "query", + "description": "Specify the fields that should be returned for the given entities. Object key needs to be the entity name, and the list of fields needs to be the value. Fields will not be included, if they are also specified in the excludes. Note that the include fields will only be stripped on the API-Level, consider using the `fields` parameter for performance reasons.", + "schema": { + "$ref": "#/components/schemas/Includes" }, - "security": [ - { - "ApiKey": [] - } - ] + "style": "deepObject", + "explode": true + }, + "criteriaExcludes": { + "name": "excludes", + "in": "query", + "description": "Specify the fields that should be excluded from the response for the given entities. Object key needs to be the entity name, and the list of fields needs to be the value. Note that the exclude fields will only be stripped on the API-Level, consider using the `fields` parameter for performance reasons.", + "schema": { + "$ref": "#/components/schemas/Excludes" + }, + "style": "deepObject", + "explode": true + }, + "CompressedCriteria": { + "name": "_criteria", + "in": "query", + "description": "Compressed and encoded criteria object. Format: base64url(gzip(json_encode(criteria))). This parameter allows passing complex criteria as a single encoded string instead of multiple query parameters. The criteria object should be JSON-encoded, then gzipped, and finally base64url-encoded. The criteria object structure is defined in the Criteria schema (see #/components/schemas/Criteria).", + "required": false, + "schema": { + "type": "string", + "format": "base64url", + "example": "H4sIAAAAAAAAA6tWykpNzFGyqlbKz8lPTSxRslJKSi0pzSsFAGcQr7sHAAAA" + } + }, + "CompressedNoneFieldsCriteria": { + "name": "_criteria", + "in": "query", + "description": "Compressed and encoded criteria object. Format: base64url(gzip(json_encode(criteria))). This parameter allows passing complex criteria as a single encoded string instead of multiple query parameters. The criteria object should be JSON-encoded, then gzipped, and finally base64url-encoded. The criteria object structure is defined in the NoneFieldsCriteria schema (see #/components/schemas/NoneFieldsCriteria).", + "required": false, + "schema": { + "type": "string", + "format": "base64url", + "example": "H4sIAAAAAAAAA6tWykpNzFGyqlbKz8lPTSxRslJKSi0pzSsFAGcQr7sHAAAA" + } } }, + "securitySchemes": { + "ApiKey": { + "type": "apiKey", + "description": "Identifies the sales channel you want to access the API through", + "name": "sw-access-key", + "in": "header" + }, + "ContextToken": { + "type": "apiKey", + "description": "Identifies an anonymous or identified user session", + "name": "sw-context-token", + "in": "header" + } + } + }, + "security": [ + { + "ApiKey": [] + } + ], + "paths": { "/search-suggest": { "post": { "tags": [ @@ -18589,207 +17930,74 @@ "in": "query", "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", "schema": { - "type": "string" - } - }, - { - "name": "min-price", - "in": "query", - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "max-price", - "in": "query", - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "rating", - "in": "query", - "description": "Filter products with a minimum average rating.", - "schema": { - "type": "integer" - } - }, - { - "name": "shipping-free", - "in": "query", - "description": "Filters products that are marked as shipping-free.", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "name": "properties", - "in": "query", - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", - "schema": { - "type": "string" - } - }, - { - "name": "reduce-aggregations", - "in": "query", - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", - "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - { - "$ref": "#/components/parameters/noAggregations" - }, - { - "$ref": "#/components/parameters/onlyAggregations" - }, - { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "responses": { - "200": { - "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProductListingResult" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/country": { - "post": { - "tags": [ - "System & Context", - "Endpoints supporting Criteria " - ], - "summary": "Fetch countries", - "description": "Perform a filtered search for countries\n\n**Available Associations:**\n- `states` - States/provinces/regions within the country", - "operationId": "readCountry", - "parameters": [ - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } - }, - { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } - } - } - }, - "responses": { - "200": { - "$ref": "#/components/responses/CountryListResponse" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - }, - "get": { - "tags": [ - "System & Context", - "Endpoints supporting Criteria " - ], - "summary": "Fetch countries", - "description": "Perform a filtered search for countries\n\n**Available Associations:**\n- `states` - States/provinces/regions within the country", - "operationId": "readCountryGet", - "parameters": [ - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" + "type": "string" + } }, { - "$ref": "#/components/parameters/criteriaSort" + "name": "min-price", + "in": "query", + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } }, { - "$ref": "#/components/parameters/criteriaAggregations" + "name": "max-price", + "in": "query", + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } }, { - "$ref": "#/components/parameters/criteriaFields" + "name": "rating", + "in": "query", + "description": "Filter products with a minimum average rating.", + "schema": { + "type": "integer" + } }, { - "$ref": "#/components/parameters/criteriaGrouping" + "name": "shipping-free", + "in": "query", + "description": "Filters products that are marked as shipping-free.", + "schema": { + "type": "boolean", + "default": false + } }, { - "$ref": "#/components/parameters/criteriaTotalCountMode" + "name": "properties", + "in": "query", + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "schema": { + "type": "string" + } }, { - "$ref": "#/components/parameters/criteriaIncludes" + "name": "reduce-aggregations", + "in": "query", + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } }, { - "$ref": "#/components/parameters/criteriaExcludes" + "$ref": "#/components/parameters/noAggregations" }, { - "$ref": "#/components/parameters/CompressedCriteria" + "$ref": "#/components/parameters/onlyAggregations" }, { "$ref": "#/components/parameters/swLanguageId" @@ -18797,7 +18005,14 @@ ], "responses": { "200": { - "$ref": "#/components/responses/CountryListResponse" + "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + } } }, "security": [ @@ -18936,110 +18151,380 @@ } } } - }, + }, + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "required": [ + "success", + "status" + ], + "properties": { + "success": { + "description": "Indicates whether the subscribe request was successful.", + "type": "boolean" + }, + "status": { + "$ref": "#/components/schemas/NewsletterStatus" + } + }, + "type": "object" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + } + }, + "security": [ + { + "ApiKey": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/newsletter/unsubscribe": { + "post": { + "tags": [ + "Newsletter" + ], + "summary": "Remove a newsletter subscription", + "description": "Removes a newsletter recipient from the mailing lists.", + "operationId": "unsubscribeToNewsletter", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "email" + ], + "properties": { + "email": { + "description": "Email address that should be removed from the mailing lists.", + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Unsubscribing was successful.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + } + }, + "security": [ + { + "ApiKey": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/country-state/{countryId}": { + "post": { + "tags": [ + "System & Context", + "Endpoints supporting Criteria " + ], + "summary": "Fetch the states of a country", + "description": "Perform a filtered search the states for a country", + "operationId": "readCountryState", + "parameters": [ + { + "name": "countryId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } + } + } + }, + "responses": { + "200": { + "$ref": "#/components/responses/CountryStateListResponse" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + }, + "get": { + "tags": [ + "System & Context", + "Endpoints supporting Criteria " + ], + "summary": "Fetch the states of a country", + "description": "Perform a filtered search the states for a country", + "operationId": "readCountryStateGet", + "parameters": [ + { + "name": "countryId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], "responses": { "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "required": [ - "success", - "status" - ], - "properties": { - "success": { - "description": "Indicates whether the subscribe request was successful.", - "type": "boolean" - }, - "status": { - "$ref": "#/components/schemas/NewsletterStatus" - } - }, - "type": "object" - } - } - } - }, - "400": { - "$ref": "#/components/responses/400" + "$ref": "#/components/responses/CountryStateListResponse" } }, "security": [ { "ApiKey": [] } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } ] } }, - "/newsletter/unsubscribe": { + "/salutation": { "post": { "tags": [ - "Newsletter" + "System & Context", + "Endpoints supporting Criteria " + ], + "summary": "Fetch salutations", + "description": "Fetches salutations with a criteria obj.", + "operationId": "readSalutation", + "parameters": [ + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } ], - "summary": "Remove a newsletter subscription", - "description": "Removes a newsletter recipient from the mailing lists.", - "operationId": "unsubscribeToNewsletter", "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "required": [ - "email" - ], - "properties": { - "email": { - "description": "Email address that should be removed from the mailing lists.", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Unsubscribing was successful.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } - }, - "400": { - "$ref": "#/components/responses/400" + "$ref": "#/components/responses/SalutationListResponse" } }, "security": [ { "ApiKey": [] } + ] + }, + "get": { + "tags": [ + "System & Context", + "Endpoints supporting Criteria " ], + "summary": "Fetch salutations", + "description": "Perform a filtered search for salutations.", + "operationId": "readSalutationGet", "parameters": [ + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" + }, { "$ref": "#/components/parameters/swLanguageId" } + ], + "responses": { + "200": { + "$ref": "#/components/responses/SalutationListResponse" + } + }, + "security": [ + { + "ApiKey": [] + } ] } }, - "/category": { + "/shipping-method": { "post": { "tags": [ - "Category", + "Payment & Shipping", "Endpoints supporting Criteria " ], - "summary": "Fetch a list of categories", - "description": "Perform a filtered search for categories.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", - "operationId": "readCategoryList", + "summary": "Fetch shipping methods", + "description": "Perform a filtered search for shipping methods.\n\n**Available Associations:**\n- `prices` - Shipping method price configurations (based on current cart and context)\n- `deliveryTime` - Delivery time information (min/max days, unit)\n- `media` - Media/images associated with the shipping method (loaded by default)\n- `availabilityRule` - Availability rule determining when this method is available\n- `tax` - Tax configuration for the shipping method\n\n**Example with associations:**\n```json\n{\n \"associations\": {\n \"prices\": {},\n \"deliveryTime\": {}\n }\n}\n```\n\nNote: The `prices` association is essential for accessing shipping cost configurations.", + "operationId": "readShippingMethod", "parameters": [ { "name": "sw-include-search-info", @@ -19055,6 +18540,14 @@ "default": "1" } }, + { + "name": "onlyAvailable", + "in": "query", + "description": "List only available shipping methods. This filters shipping methods methods which can not be used in the actual context because of their availability rule.", + "schema": { + "type": "boolean" + } + }, { "$ref": "#/components/parameters/swLanguageId" } @@ -19075,7 +18568,40 @@ }, "responses": { "200": { - "$ref": "#/components/responses/CategoryListResponse" + "description": "", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "required": [ + "elements" + ], + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingMethod" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } } }, "security": [ @@ -19086,12 +18612,12 @@ }, "get": { "tags": [ - "Category", + "Payment & Shipping", "Endpoints supporting Criteria " ], - "summary": "Fetch a list of categories", - "description": "Perform a filtered search for categories.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", - "operationId": "readCategoryListGet", + "summary": "Fetch shipping methods", + "description": "Perform a filtered search for shipping methods.\n\n**Available Associations:**\n- `prices` - Shipping method price configurations (graduated prices, quantity-based pricing)\n- `deliveryTime` - Delivery time information (min/max days, unit)\n- `media` - Media/images associated with the shipping method (loaded by default)\n- `availabilityRule` - Availability rule determining when this method is available\n- `tax` - Tax configuration for the shipping method\n\nNote: The `prices` association is essential for accessing shipping cost configurations.", + "operationId": "readShippingMethodGet", "parameters": [ { "$ref": "#/components/parameters/criteriaPage" @@ -19147,7 +18673,7 @@ ], "responses": { "200": { - "$ref": "#/components/responses/CategoryListResponse" + "$ref": "#/components/responses/ShippingMethodListResponse" } }, "security": [ @@ -19157,25 +18683,16 @@ ] } }, - "/category/{navigationId}": { + "/language": { "post": { "tags": [ - "Category", + "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch a single category", - "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", - "operationId": "readCategory", + "summary": "Fetch languages", + "description": "Perform a filtered search for languages.\n\n**Available Associations:**\n- `locale` - Locale defining regional settings (date, time, number formats)\n- `translationCode` - Locale used for translating content\n- `children` - Child languages inheriting from this parent language", + "operationId": "readLanguages", "parameters": [ - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, - "schema": { - "type": "boolean" - } - }, { "name": "sw-include-search-info", "in": "header", @@ -19190,35 +18707,18 @@ "default": "1" } }, - { - "name": "navigationId", - "in": "path", - "description": "Identifier of the category to be fetched", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "slots", - "in": "query", - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", - "schema": { - "type": "string" - } - }, { "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { + "required": false, "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/ProductListingCriteria" + "$ref": "#/components/schemas/Criteria" } ] } @@ -19227,14 +18727,7 @@ }, "responses": { "200": { - "description": "The loaded category with cms page", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Category" - } - } - } + "$ref": "#/components/responses/LanguageListResponse" } }, "security": [ @@ -19245,51 +18738,18 @@ }, "get": { "tags": [ - "Category", + "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch a single category", - "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", - "operationId": "readCategoryGet", + "summary": "Fetch languages", + "description": "Perform a filtered search for languages.\n\n**Available Associations:**\n- `locale` - Locale defining regional settings (date, time, number formats)\n- `translationCode` - Locale used for translating content\n- `children` - Child languages inheriting from this parent language", + "operationId": "readLanguagesGet", "parameters": [ - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "navigationId", - "in": "path", - "description": "Identifier of the category to be fetched", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "slots", - "in": "query", - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", - "schema": { - "type": "string" - } - }, { "$ref": "#/components/parameters/criteriaPage" }, { - "name": "limit", - "in": "query", - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "schema": { - "type": "integer", - "minimum": 0 - } + "$ref": "#/components/parameters/criteriaLimit" }, { "$ref": "#/components/parameters/criteriaTerm" @@ -19331,136 +18791,207 @@ "$ref": "#/components/parameters/criteriaExcludes" }, { - "name": "order", - "in": "query", - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "$ref": "#/components/parameters/CompressedCriteria" + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "responses": { + "200": { + "$ref": "#/components/responses/LanguageListResponse" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/product/{productId}/cross-selling": { + "post": { + "tags": [ + "Product" + ], + "summary": "Fetch cross-selling groups of a product", + "description": "This route is used to load the cross sellings for a product. A product has several cross selling definitions in which several products are linked. The route returns the cross sellings together with the linked products", + "operationId": "readProductCrossSellings", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Product ID", + "required": true, "schema": { "type": "string" } }, { - "name": "p", - "in": "query", - "description": "Search result page", + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, "schema": { - "type": "integer", - "default": 1 + "type": "boolean" } }, { - "name": "manufacturer", - "in": "query", - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "$ref": "#/components/parameters/swLanguageId" + } + ], + "responses": { + "200": { + "description": "Found cross sellings", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrossSellingElementCollection" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + }, + "get": { + "tags": [ + "Product" + ], + "summary": "Fetch cross-selling groups of a product", + "description": "This route is used to load the cross sellings for a product. A product has several cross selling definitions in which several products are linked. The route returns the cross sellings together with the linked products", + "operationId": "readProductCrossSellingsGet", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Product ID", + "required": true, "schema": { "type": "string" } }, { - "name": "min-price", - "in": "query", - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, "schema": { - "type": "integer", - "minimum": 0, - "default": 0 + "type": "boolean" } }, { - "name": "max-price", - "in": "query", - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "$ref": "#/components/parameters/swLanguageId" + } + ], + "responses": { + "200": { + "description": "Found cross sellings", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrossSellingElementCollection" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/product/{productId}": { + "post": { + "tags": [ + "Product" + ], + "summary": "Fetch a single product", + "description": "This route is used to load a single product with the corresponding details. In addition to loading the data, the best variant of the product is determined when a parent id is passed.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", + "operationId": "readProductDetail", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Product ID", + "required": true, "schema": { - "type": "integer", - "minimum": 0, - "default": 0 + "type": "string", + "pattern": "^[0-9a-f]{32}$'" } }, { - "name": "rating", - "in": "query", - "description": "Filter products with a minimum average rating.", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "in": "header", + "name": "sw-include-seo-urls", + "required": false, "schema": { - "type": "integer" + "type": "boolean" } }, { - "name": "shipping-free", - "in": "query", - "description": "Filters products that are marked as shipping-free.", + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, "schema": { - "type": "boolean", - "default": false + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" } }, { - "name": "properties", + "description": "Instructs Shopware to skip loading the configurator data", "in": "query", - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "name": "skipConfigurator", + "required": false, "schema": { - "type": "string" + "type": "boolean" } }, { - "name": "reduce-aggregations", + "description": "Instructs Shopware to skip loading the CMS page data", "in": "query", - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "name": "skipCmsPage", + "required": false, "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] + "type": "boolean" } }, { "$ref": "#/components/parameters/swLanguageId" } ], - "responses": { - "200": { - "description": "The loaded category with cms page", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Category" - } + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/NoneFieldsCriteria" + } + ] } } } }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/sitemap": { - "get": { - "tags": [ - "Sitemap & Routes" - ], - "summary": "Fetch sitemaps", - "description": "Fetches a list of compressed sitemap files, which are often used by search engines.", - "operationId": "readSitemap", - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } - ], "responses": { "200": { - "description": "Returns a list of available sitemaps.", + "description": "Product information along with variant groups and options", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Sitemap" - } + "$ref": "#/components/schemas/ProductDetailResponse" } } } @@ -19471,45 +19002,108 @@ "ApiKey": [] } ] - } - }, - "/sitemap/{filePath}": { + }, "get": { "tags": [ - "Sitemap & Routes" + "Product" ], - "summary": "Download sitemap file", - "description": "Downloads the sitemap file from the configured sitemap storage.", - "operationId": "getSitemapFile", + "summary": "Fetch a single product", + "description": "This route is used to load a single product with the corresponding details. In addition to loading the data, the best variant of the product is determined when a parent id is passed.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", + "operationId": "readProductDetailGet", "parameters": [ { - "name": "filePath", + "name": "productId", "in": "path", - "description": "The path to the sitemap file", + "description": "Product ID", "required": true, "schema": { "type": "string", - "pattern": ".*\\.(xml|gz)$" + "pattern": "^[0-9a-f]{32}$'" + } + }, + { + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "in": "header", + "name": "sw-include-seo-urls", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Instructs Shopware to skip loading the configurator data", + "in": "query", + "name": "skipConfigurator", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Instructs Shopware to skip loading the CMS page data", + "in": "query", + "name": "skipCmsPage", + "required": false, + "schema": { + "type": "boolean" } }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedNoneFieldsCriteria" + }, { "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "description": "Returns the blob to download.", + "description": "Product information along with variant groups and options", "content": { - "application/xml": { - "schema": { - "type": "string", - "format": "binary" - } - }, - "application/gzip": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/ProductDetailResponse" } } } @@ -19522,15 +19116,15 @@ ] } }, - "/seo-url": { + "/product": { "post": { "tags": [ - "Sitemap & Routes", + "Product", "Endpoints supporting Criteria " ], - "summary": "Fetch SEO routes", - "description": "Perform a filtered search for seo urls.", - "operationId": "readSeoUrl", + "summary": "Fetch a list of products", + "description": "List products that match the given criteria. For performance reasons a limit should always be set.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", + "operationId": "readProduct", "parameters": [ { "name": "sw-include-search-info", @@ -19566,10 +19160,7 @@ }, "responses": { "200": { - "$ref": "#/components/responses/SeoUrlListResponse" - }, - "404": { - "$ref": "#/components/responses/404" + "$ref": "#/components/responses/ProductListResponse" } }, "security": [ @@ -19580,12 +19171,12 @@ }, "get": { "tags": [ - "Sitemap & Routes", + "Product", "Endpoints supporting Criteria " ], - "summary": "Fetch SEO routes", - "description": "Perform a filtered search for seo urls.", - "operationId": "readSeoUrlGet", + "summary": "Fetch a list of products", + "description": "List products that match the given criteria. For performance reasons a limit should always be set.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", + "operationId": "readProductGet", "parameters": [ { "$ref": "#/components/parameters/criteriaPage" @@ -19641,10 +19232,7 @@ ], "responses": { "200": { - "$ref": "#/components/responses/SeoUrlListResponse" - }, - "404": { - "$ref": "#/components/responses/404" + "$ref": "#/components/responses/ProductListResponse" } }, "security": [ @@ -19654,23 +19242,23 @@ ] } }, - "/navigation/{activeId}/{rootId}": { + "/product/{productId}/reviews": { "post": { "tags": [ - "Category", + "Product", "Endpoints supporting Criteria " ], - "summary": "Fetch a navigation menu", - "description": "This endpoint returns categories that can be used as a page navigation. You can either return them as a tree or as a flat list. You can also control the depth of the tree.\n\n Instead of passing uuids, you can also use one of the following aliases for the activeId and rootId parameters to get the respective navigations of your sales channel.\n\n * main-navigation\n * service-navigation\n * footer-navigation", - "operationId": "readNavigation", + "summary": "Fetch product reviews", + "description": "Perform a filtered search for product reviews.", + "operationId": "readProductReviews", "parameters": [ { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, + "name": "productId", + "in": "path", + "description": "Identifier of the product.", + "required": true, "schema": { - "type": "boolean" + "type": "string" } }, { @@ -19687,69 +19275,18 @@ "default": "1" } }, - { - "name": "activeId", - "in": "path", - "description": "Identifier of the active category in the navigation tree (if not used, just set to the same as rootId).", - "required": true, - "schema": { - "oneOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "$ref": "#/components/schemas/NavigationType" - } - ] - } - }, - { - "name": "rootId", - "in": "path", - "description": "Identifier of the root category for your desired navigation tree. You can use it to fetch sub-trees of your navigation tree.", - "required": true, - "schema": { - "oneOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "$ref": "#/components/schemas/NavigationType" - } - ] - } - }, { "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/NoneFieldsCriteria" - }, + "allOf": [ { - "properties": { - "depth": { - "description": "Determines the depth of fetched navigation levels.", - "type": "integer", - "format": "int32" - }, - "buildTree": { - "description": "Return the categories as a tree or as a flat list.", - "type": "array", - "items": { - "type": "object" - } - } - }, - "type": "object" + "$ref": "#/components/schemas/Criteria" } ] } @@ -19758,11 +19295,26 @@ }, "responses": { "200": { - "description": "All available navigations", + "description": "Entity search result containing product reviews", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NavigationRouteResponse" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductReview" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -19776,80 +19328,22 @@ }, "get": { "tags": [ - "Category", + "Product", "Endpoints supporting Criteria " ], - "summary": "Fetch a navigation menu", - "description": "This endpoint returns categories that can be used as a page navigation. You can either return them as a tree or as a flat list. You can also control the depth of the tree.\n\n Instead of passing uuids, you can also use one of the following aliases for the activeId and rootId parameters to get the respective navigations of your sales channel.\n\n * main-navigation\n * service-navigation\n * footer-navigation", - "operationId": "readNavigationGet", + "summary": "Fetch product reviews", + "description": "Perform a filtered search for product reviews.", + "operationId": "readProductReviewsGet", "parameters": [ { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "activeId", - "in": "path", - "description": "Identifier of the active category in the navigation tree (if not used, just set to the same as rootId).", - "required": true, - "schema": { - "oneOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "$ref": "#/components/schemas/NavigationType" - } - ] - } - }, - { - "name": "rootId", + "name": "productId", "in": "path", - "description": "Identifier of the root category for your desired navigation tree. You can use it to fetch sub-trees of your navigation tree.", + "description": "Identifier of the product.", "required": true, "schema": { - "oneOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "$ref": "#/components/schemas/NavigationType" - } - ] - } - }, - { - "name": "depth", - "in": "query", - "description": "Determines the depth of fetched navigation levels.", - "required": false, - "schema": { - "type": "integer", - "format": "int32" + "type": "string" } }, - { - "name": "buildTree", - "in": "query", - "description": "Return the categories as a tree or as a flat list.", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "object" - } - }, - "style": "deepObject", - "explode": true - }, { "$ref": "#/components/parameters/criteriaPage" }, @@ -19880,6 +19374,9 @@ { "$ref": "#/components/parameters/criteriaAggregations" }, + { + "$ref": "#/components/parameters/criteriaFields" + }, { "$ref": "#/components/parameters/criteriaGrouping" }, @@ -19890,22 +19387,238 @@ "$ref": "#/components/parameters/criteriaIncludes" }, { - "$ref": "#/components/parameters/criteriaExcludes" - }, + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "responses": { + "200": { + "description": "Entity search result containing product reviews", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductReview" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/product/{productId}/review": { + "post": { + "tags": [ + "Product" + ], + "summary": "Save a product review", + "description": "Saves a review for a product. Reviews have to be activated in the settings.", + "operationId": "saveProductReview", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Identifier of the product which is reviewed.", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "required": [ + "title", + "content", + "points" + ], + "properties": { + "name": { + "description": "The name of the review author. If not set, the first name of the customer is chosen.", + "type": "string" + }, + "email": { + "description": "The email address of the review author. If not set, the email of the customer is chosen.", + "type": "string" + }, + "title": { + "description": "The title of the review.", + "type": "string" + }, + "content": { + "description": "The content of review.", + "type": "string" + }, + "points": { + "description": "The review rating for the product.", + "type": "number", + "format": "double" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Success response indicating the review was saved successfully." + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/product/purchase-limit": { + "get": { + "tags": [ + "Product" + ], + "summary": "Fetch current purchase quantity limits for products", + "description": "Returns the current min/max/step purchase constraints for the given products, reflecting live stock or configured limitations. Intended for use on PDP to show actual values on product pages.", + "operationId": "readProductsPurchaseLimit", + "parameters": [ + { + "name": "ids[]", + "in": "query", + "description": "List of product IDs to fetch quantity limits for.", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "responses": { + "200": { + "description": "Current quantity limits for the requested products", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductPurchaseLimit" + } + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/product/{productId}/find-variant": { + "post": { + "tags": [ + "Product" + ], + "summary": "Search for a matching variant by product options.", + "description": "Performs a search for product variants and returns the best matching variant.", + "operationId": "searchProductVariantIds", + "parameters": [ { - "$ref": "#/components/parameters/CompressedNoneFieldsCriteria" + "name": "productId", + "in": "path", + "description": "Product ID", + "required": true, + "schema": { + "type": "string" + } }, { "$ref": "#/components/parameters/swLanguageId" } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "required": [ + "options" + ], + "properties": { + "options": { + "oneOf": [ + { + "description": "The options parameter for the variant to find.", + "type": "array", + "items": { + "type": "string" + } + }, + { + "description": "The options parameter as a map of groupId => optionId.", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + ] + }, + "switchedGroup": { + "description": "The id of the option group that has been switched.", + "type": "string" + } + }, + "type": "object" + } + } + } + }, "responses": { "200": { - "description": "All available navigations", + "description": "Returns an FoundCombination struct containing the ids matching the search.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NavigationRouteResponse" + "$ref": "#/components/schemas/FindProductVariantRouteResponse" } } } @@ -19916,24 +19629,43 @@ "ApiKey": [] } ] - } - }, - "/customer-group-registration/config/{customerGroupId}": { + }, "get": { "tags": [ - "Login & Registration" + "Product" ], - "summary": "Fetch registration settings for customer group", - "operationId": "getCustomerGroupRegistrationInfo", + "summary": "Search for a matching variant by product options.", + "description": "Performs a search for product variants and returns the best matching variant.", + "operationId": "searchProductVariantIdsGet", "parameters": [ { - "name": "customerGroupId", + "name": "productId", "in": "path", - "description": "Customer group id", + "description": "Product ID", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" + } + }, + { + "name": "options[]", + "in": "query", + "description": "The options parameter for the variant to find. Array of option IDs.", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "switchedGroup", + "in": "query", + "description": "The id of the option group that has been switched.", + "required": false, + "schema": { + "type": "string" } }, { @@ -19942,11 +19674,11 @@ ], "responses": { "200": { - "description": "Returns the customer group including registration settings.", + "description": "Returns an FoundCombination struct containing the ids matching the search.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerGroup" + "$ref": "#/components/schemas/FindProductVariantRouteResponse" } } } @@ -19959,15 +19691,15 @@ ] } }, - "/language": { + "/currency": { "post": { "tags": [ "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch languages", - "description": "Perform a filtered search for languages.\n\n**Available Associations:**\n- `locale` - Locale defining regional settings (date, time, number formats)\n- `translationCode` - Locale used for translating content\n- `children` - Child languages inheriting from this parent language", - "operationId": "readLanguages", + "summary": "Fetch currencies", + "description": "Perform a filtered search for currencies.", + "operationId": "readCurrency", "parameters": [ { "name": "sw-include-search-info", @@ -19994,7 +19726,7 @@ "schema": { "allOf": [ { - "$ref": "#/components/schemas/Criteria" + "$ref": "#/components/schemas/NoneFieldsCriteria" } ] } @@ -20003,7 +19735,7 @@ }, "responses": { "200": { - "$ref": "#/components/responses/LanguageListResponse" + "$ref": "#/components/responses/CurrencyListResponse" } }, "security": [ @@ -20017,9 +19749,9 @@ "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch languages", - "description": "Perform a filtered search for languages.\n\n**Available Associations:**\n- `locale` - Locale defining regional settings (date, time, number formats)\n- `translationCode` - Locale used for translating content\n- `children` - Child languages inheriting from this parent language", - "operationId": "readLanguagesGet", + "summary": "Fetch currencies", + "description": "Perform a filtered search for currencies.", + "operationId": "readCurrencyGet", "parameters": [ { "$ref": "#/components/parameters/criteriaPage" @@ -20051,9 +19783,6 @@ { "$ref": "#/components/parameters/criteriaAggregations" }, - { - "$ref": "#/components/parameters/criteriaFields" - }, { "$ref": "#/components/parameters/criteriaGrouping" }, @@ -20067,7 +19796,7 @@ "$ref": "#/components/parameters/criteriaExcludes" }, { - "$ref": "#/components/parameters/CompressedCriteria" + "$ref": "#/components/parameters/CompressedNoneFieldsCriteria" }, { "$ref": "#/components/parameters/swLanguageId" @@ -20075,7 +19804,7 @@ ], "responses": { "200": { - "$ref": "#/components/responses/LanguageListResponse" + "$ref": "#/components/responses/CurrencyListResponse" } }, "security": [ @@ -20085,49 +19814,67 @@ ] } }, - "/account/newsletter-recipient": { - "post": { + "/product-export/{accessKey}/{fileName}": { + "get": { "tags": [ - "Profile", - "Newsletter", - "Endpoints supporting Criteria" + "Product" ], - "summary": "Fetch newsletter recipients", - "description": "Perform a filtered search for newsletter recipients.", - "operationId": "readNewsletterRecipient", - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } + "summary": "Export product export", + "operationId": "readProductExport", + "parameters": [ + { + "name": "accessKey", + "in": "path", + "description": "Access Key", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "fileName", + "in": "path", + "description": "File Name", + "required": true, + "schema": { + "type": "string" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } - }, + ], "responses": { "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AccountNewsletterRecipient" - } - } - } + "description": "" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } + ] + } + }, + "/navigation/{activeId}/{rootId}": { + "post": { + "tags": [ + "Category", + "Endpoints supporting Criteria " ], + "summary": "Fetch a navigation menu", + "description": "This endpoint returns categories that can be used as a page navigation. You can either return them as a tree or as a flat list. You can also control the depth of the tree.\n\n Instead of passing uuids, you can also use one of the following aliases for the activeId and rootId parameters to get the respective navigations of your sales channel.\n\n * main-navigation\n * service-navigation\n * footer-navigation", + "operationId": "readNavigation", "parameters": [ + { + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, + "schema": { + "type": "boolean" + } + }, { "name": "sw-include-search-info", "in": "header", @@ -20142,106 +19889,69 @@ "default": "1" } }, + { + "name": "activeId", + "in": "path", + "description": "Identifier of the active category in the navigation tree (if not used, just set to the same as rootId).", + "required": true, + "schema": { + "oneOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "$ref": "#/components/schemas/NavigationType" + } + ] + } + }, + { + "name": "rootId", + "in": "path", + "description": "Identifier of the root category for your desired navigation tree. You can use it to fetch sub-trees of your navigation tree.", + "required": true, + "schema": { + "oneOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "$ref": "#/components/schemas/NavigationType" + } + ] + } + }, { "$ref": "#/components/parameters/swLanguageId" } - ] - } - }, - "/account/change-profile": { - "post": { - "tags": [ - "Profile" ], - "summary": "Change the customer's information", - "description": "Make changes to a customer's account, like changing their name, salutation or title.", - "operationId": "changeProfile", "requestBody": { "required": true, "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "firstName", - "lastName" - ], - "properties": { - "salutationId": { - "description": "Id of the salutation for the customer account. Fetch options using `salutation` endpoint.", - "type": "string" - }, - "title": { - "description": "(Academic) title of the customer", - "type": "string" - }, - "firstName": { - "description": "Customer first name. Value will be reused for shipping and billing address if not provided explicitly.", - "type": "string" - }, - "lastName": { - "description": "Customer last name. Value will be reused for shipping and billing address if not provided explicitly.", - "type": "string" - }, - "birthdayDay": { - "description": "Birthday day", - "type": "integer" - }, - "birthdayMonth": { - "description": "Birthday month", - "type": "integer" - }, - "birthdayYear": { - "description": "Birthday year", - "type": "integer" - } - }, - "oneOf": [ + "allOf": [ { - "properties": { - "accountType": { - "description": "Type of the customer account. Default value is 'private'.", - "type": "string", - "enum": [ - "private" - ], - "default": "private" - }, - "company": { - "type": "null" - }, - "vatIds": { - "type": "null" - } - } + "$ref": "#/components/schemas/NoneFieldsCriteria" }, { - "required": [ - "accountType", - "company", - "vatIds" - ], "properties": { - "accountType": { - "description": "Type of the customer account. Can be `private` or `business`.", - "type": "string", - "enum": [ - "business" - ] - }, - "company": { - "description": "Company of the customer. Only required when `accountType` is `business`.", - "type": "string" + "depth": { + "description": "Determines the depth of fetched navigation levels.", + "type": "integer", + "format": "int32" }, - "vatIds": { - "description": "VAT IDs of the customer's company. Only valid when `accountType` is `business`.", + "buildTree": { + "description": "Return the categories as a tree or as a flat list.", "type": "array", "items": { - "type": "string" - }, - "minItems": 1 + "type": "object" + } } - } + }, + "type": "object" } ] } @@ -20250,11 +19960,11 @@ }, "responses": { "200": { - "description": "Returns a success response indicating a successful update", + "description": "All available navigations", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/NavigationRouteResponse" } } } @@ -20262,113 +19972,142 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" + "ApiKey": [] } ] - } - }, - "/account/change-email": { - "post": { + }, + "get": { "tags": [ - "Profile" + "Category", + "Endpoints supporting Criteria " ], - "summary": "Change the customer's email address", - "description": "Changes a customer's email address to a new email address, using their current password as a validation.", - "operationId": "changeEmail", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "email", - "emailConfirmation", - "password" - ], - "properties": { - "email": { - "description": "New email address. Has to be unique amongst all customers", - "type": "string" - }, - "emailConfirmation": { - "description": "Confirmation of the new email address.", - "type": "string" - }, - "password": { - "description": "Customer's current password", - "type": "string" - } + "summary": "Fetch a navigation menu", + "description": "This endpoint returns categories that can be used as a page navigation. You can either return them as a tree or as a flat list. You can also control the depth of the tree.\n\n Instead of passing uuids, you can also use one of the following aliases for the activeId and rootId parameters to get the respective navigations of your sales channel.\n\n * main-navigation\n * service-navigation\n * footer-navigation", + "operationId": "readNavigationGet", + "parameters": [ + { + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "activeId", + "in": "path", + "description": "Identifier of the active category in the navigation tree (if not used, just set to the same as rootId).", + "required": true, + "schema": { + "oneOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "type": "object" - } + { + "$ref": "#/components/schemas/NavigationType" + } + ] } - } - }, - "responses": { - "200": { - "description": "Returns a success response indicating a successful update", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" + }, + { + "name": "rootId", + "in": "path", + "description": "Identifier of the root category for your desired navigation tree. You can use it to fetch sub-trees of your navigation tree.", + "required": true, + "schema": { + "oneOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "$ref": "#/components/schemas/NavigationType" } - } + ] } - } - }, - "security": [ + }, + { + "name": "depth", + "in": "query", + "description": "Determines the depth of fetched navigation levels.", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "buildTree", + "in": "query", + "description": "Return the categories as a tree or as a flat list.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "object" + } + }, + "style": "deepObject", + "explode": true + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, { - "ApiKey": [], - "ContextToken": [] - } - ], - "parameters": [ + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedNoneFieldsCriteria" + }, { "$ref": "#/components/parameters/swLanguageId" } - ] - } - }, - "/account/change-language": { - "post": { - "tags": [ - "Profile" ], - "summary": "Change the customer's language.", - "description": "Changes the language of the logged in customer", - "operationId": "changeLanguage", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "languageId" - ], - "properties": { - "language": { - "description": "New languageId", - "type": "string" - } - }, - "type": "object" - } - } - } - }, "responses": { "200": { - "description": "Returns a success response indicating a successful update", + "description": "All available navigations", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/NavigationRouteResponse" } } } @@ -20376,46 +20115,39 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" + "ApiKey": [] } ] } }, - "/account/change-password": { + "/handle-payment": { "post": { "tags": [ - "Profile" + "Payment & Shipping" ], - "summary": "Change the customer's password", - "description": "Changes a customer's password using their current password as a validation.", - "operationId": "changePassword", + "summary": "Initiate a payment for an order", + "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order.", + "operationId": "handlePaymentMethod", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "password", - "newPassword", - "newPasswordConfirm" + "orderId" ], "properties": { - "password": { - "description": "Current password of the customer", - "type": "string" + "orderId": { + "description": "Identifier of an order", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "newPassword": { - "description": "New Password for the customer", + "finishUrl": { + "description": "URL to which the client should be redirected after successful payment", "type": "string" }, - "newPasswordConfirm": { - "description": "Confirmation of the new password", + "errorUrl": { + "description": "URL to which the client should be redirected after erroneous payment", "type": "string" } }, @@ -20426,11 +20158,19 @@ }, "responses": { "200": { - "description": "Returns a success response indicating a successful update.", + "description": "Redirect to external payment provider", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "type": "object", + "properties": { + "redirectUrl": { + "type": "string" + } + }, + "required": [ + "redirectUrl" + ] } } } @@ -20438,8 +20178,7 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ], "parameters": [ @@ -20447,42 +20186,60 @@ "$ref": "#/components/parameters/swLanguageId" } ] - } - }, - "/account/convert-guest": { - "post": { + }, + "get": { "tags": [ - "Profile" + "Payment & Shipping" ], - "summary": "Convert a guest customer to a registered customer", - "description": "Takes a password to convert a guest customer to a registered customer. The customer can then log in with the provided password in the future.", - "operationId": "convertGuest", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "password" - ], - "properties": { - "password": { - "description": "New Password for the customer", - "type": "string" - } - }, - "type": "object" - } + "summary": "Initiate a payment for an order", + "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order. Please prefer the POST version of this endpoint.", + "operationId": "handlePaymentMethodGet", + "parameters": [ + { + "name": "orderId", + "in": "query", + "required": true, + "description": "Identifier of an order", + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "finishUrl", + "in": "query", + "description": "URL to which the client should be redirected after successful payment", + "schema": { + "type": "string" + } + }, + { + "name": "errorUrl", + "in": "query", + "description": "URL to which the client should be redirected after erroneous payment", + "schema": { + "type": "string" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } - }, + ], "responses": { "200": { - "description": "Returns a success response indicating a successful update.", + "description": "Redirect to external payment provider", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "type": "object", + "properties": { + "redirectUrl": { + "type": "string" + } + }, + "required": [ + "redirectUrl" + ] } } } @@ -20490,73 +20247,40 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" + "ApiKey": [] } ] } }, - "/account/customer-recovery-is-expired": { - "post": { + "/customer-group-registration/config/{customerGroupId}": { + "get": { "tags": [ - "Profile" + "Login & Registration" ], - "summary": "Checks if the customer recovery entry for a given hash is expired.", - "description": "This can be used to validate a provided hash has a valid and not expired customer recovery hash.", - "operationId": "getCustomerRecoveryIsExpired", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "hash" - ], - "properties": { - "hash": { - "description": "Parameter from the link in the confirmation mail sent in Step 1", - "type": "string" - } - }, - "type": "object" - } + "summary": "Fetch registration settings for customer group", + "operationId": "getCustomerGroupRegistrationInfo", + "parameters": [ + { + "name": "customerGroupId", + "in": "path", + "description": "Customer group id", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } - } - }, - "responses": { - "200": { - "description": "Returns a CustomerRecoveryIsExpiredResponse that indicates if the hash is expired or not.", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "isExpired": { - "type": "boolean" - } - }, - "required": [ - "isExpired" - ] - } - }, - "apiAlias": { - "enum": [ - "array_struct" - ], - "type": "string" - } - } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "responses": { + "200": { + "description": "Returns the customer group including registration settings.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomerGroup" } } } @@ -20566,31 +20290,69 @@ { "ApiKey": [] } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } ] } }, - "/account/customer": { + "/landing-page/{landingPageId}": { "post": { "tags": [ - "Profile", + "Content", "Endpoints supporting Criteria " ], - "summary": "Get information about current customer", - "description": "Returns information about the current customer.\n\n**Available Associations:**\n- `group` - Customer group determining pricing and permissions\n- `language` - Preferred language for customer communication\n- `lastPaymentMethod` - Last used payment method by the customer\n- `defaultBillingAddress` - Default billing address for the customer\n- `activeBillingAddress` - Currently active billing address in the session\n- `defaultShippingAddress` - Default shipping address for the customer\n- `activeShippingAddress` - Currently active shipping address in the session\n- `salutation` - Customer salutation (e.g., Mr., Mrs., Ms.)\n- `addresses` - All addresses saved for the customer\n- `tags` - Tags assigned to the customer for organization and segmentation", - "operationId": "readCustomer", + "summary": "Fetch a landing page with the resolved CMS page", + "description": "Loads a landing page by its identifier and resolves the CMS page.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `cmsPage` - CMS page layout for the landing page\n- `seoUrls` - SEO-friendly URLs for the landing page across different sales channels", + "operationId": "readLandingPage", + "parameters": [ + { + "name": "landingPageId", + "in": "path", + "description": "Identifier of the landing page.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], "requestBody": { - "required": false, "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/NoneFieldsCriteria" + "$ref": "#/components/schemas/Criteria" + }, + { + "allOf": [ + { + "properties": { + "slots": { + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/ProductListingCriteria" + } + ] } ] } @@ -20599,23 +20361,43 @@ }, "responses": { "200": { - "description": "Returns the logged in customer, also for guest sessions. Check for the value of `guest` field to see whether the customer is a guest.", + "description": "The loaded landing page with cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Customer" + "$ref": "#/components/schemas/LandingPage" } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } + ] + }, + "get": { + "tags": [ + "Content", + "Endpoints supporting Criteria " ], + "summary": "Fetch a landing page with the resolved CMS page", + "description": "Loads a landing page by its identifier and resolves the CMS page.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `cmsPage` - CMS page layout for the landing page\n- `seoUrls` - SEO-friendly URLs for the landing page across different sales channels", + "operationId": "readLandingPageGet", "parameters": [ + { + "name": "landingPageId", + "in": "path", + "description": "Identifier of the landing page.", + "required": true, + "schema": { + "type": "string" + } + }, { "name": "sw-include-search-info", "in": "header", @@ -20631,139 +20413,195 @@ } }, { - "$ref": "#/components/parameters/swLanguageId" - } - ] - }, - "delete": { - "tags": [ - "Profile" - ], - "summary": "Delete the customer's profile", - "description": "Deletes a customer profile along with their addresses, wishlists and associated data. Created orders and their payment/shipping information (addresses) and reviews are not deleted.", - "operationId": "deleteCustomer", - "responses": { - "204": { - "description": "Returns a no content response indicating a successful removal of the customer profile" - } - }, - "security": [ + "$ref": "#/components/parameters/criteriaPage" + }, { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/account/address/{addressId}": { - "delete": { - "tags": [ - "Address" - ], - "summary": "Delete an address of a customer", - "description": "Delete an address of customer.\n\n Only addresses which are not set as default addresses for shipping or billing can be deleted. You can check the current default addresses of your customer using the profile information endpoint and change them using the default address endpoint.\n\n **A customer must have at least one address (which can be used for shipping and billing).**\n\n An automatic fallback is not applied.", - "operationId": "deleteCustomerAddress", - "parameters": [ + "name": "limit", + "in": "query", + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "schema": { + "type": "integer", + "minimum": 0 + } + }, { - "name": "addressId", - "in": "path", - "description": "ID of the address to be deleted.", - "required": true, + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "name": "order", + "in": "query", + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", "schema": { "type": "string" } - } - ], - "responses": { - "204": { - "description": "No Content response, when the address has been deleted" }, - "400": { - "description": "Response containing a list of errors, most likely due to the address being in use" - } - }, - "security": [ { - "ApiKey": [], - "ContextToken": [] - } - ] - }, - "patch": { - "tags": [ - "Address" - ], - "summary": "Modify an address of a customer", - "description": "Modifies an existing address of a customer.", - "operationId": "updateCustomerAddress", - "parameters": [ + "name": "p", + "in": "query", + "description": "Search result page", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "manufacturer", + "in": "query", + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "min-price", + "in": "query", + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "max-price", + "in": "query", + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "rating", + "in": "query", + "description": "Filter products with a minimum average rating.", + "schema": { + "type": "integer" + } + }, + { + "name": "shipping-free", + "in": "query", + "description": "Filters products that are marked as shipping-free.", + "schema": { + "type": "boolean", + "default": false + } + }, { - "name": "addressId", - "in": "path", - "description": "Address ID", - "required": true, + "name": "properties", + "in": "query", + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", "schema": { "type": "string" } }, + { + "name": "reduce-aggregations", + "in": "query", + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, { "$ref": "#/components/parameters/swLanguageId" } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomerAddressBody" - } - } - } - }, "responses": { "200": { - "description": "", + "description": "The loaded landing page with cms page", "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/CustomerAddress" - }, - { - "$ref": "#/components/schemas/CustomerAddressRead" - } - ] + "$ref": "#/components/schemas/LandingPage" } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/list-address": { + "/order/state/cancel": { "post": { "tags": [ - "Address", - "Endpoints supporting Criteria " + "Order" + ], + "summary": "Cancel an order", + "description": "Cancels an order. The order state will be set to 'cancelled'.", + "operationId": "cancelOrder", + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ], - "summary": "Fetch addresses of a customer", - "description": "Lists all addresses of the current customer and allows filtering them based on a criteria.", - "operationId": "listAddress", "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "properties": { + "orderId": { + "description": "The identifier of the order to be canceled.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" } + }, + "type": "object", + "required": [ + "orderId" ] } } @@ -20771,29 +20609,11 @@ }, "responses": { "200": { - "description": "", + "description": "Returns the state of the state machine\n\n example: More information about the state machine can be found in the corresponding guide: [Using the state machine](https://developer.shopware.com/docs/guides/plugins/plugins/checkout/order/using-the-state-machine)", "content": { "application/json": { "schema": { - "allOf": [ - { - "type": "object", - "required": [ - "elements" - ], - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CustomerAddress" - } - } - } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/StateMachineState" } } } @@ -20804,7 +20624,18 @@ "ApiKey": [], "ContextToken": [] } + ] + } + }, + "/order": { + "post": { + "tags": [ + "Order", + "Endpoints supporting Criteria " ], + "summary": "Fetch a list of orders", + "description": "List orders of a customer.\n\n**Available Associations:**\n- `stateMachineState` - Current order state (e.g., open, in_progress, completed, cancelled)\n- `primaryOrderDelivery` - Primary delivery information for the order\n- `primaryOrderTransaction` - Primary payment transaction for the order\n- `orderCustomer` - Customer information associated with the order\n- `currency` - Currency used for the order\n- `language` - Language used when placing the order\n- `addresses` - All addresses associated with the order (billing and shipping)\n- `billingAddress` - Billing address for the order\n- `deliveries` - Delivery information including shipping address and tracking\n- `lineItems` - Order line items (products, discounts, fees)\n- `transactions` - Payment transactions for the order\n- `documents` - Generated documents (invoices, delivery notes, credit notes)\n- `tags` - Tags assigned to the order for organization and filtering", + "operationId": "readOrder", "parameters": [ { "name": "sw-include-search-info", @@ -20823,115 +20654,91 @@ { "$ref": "#/components/parameters/swLanguageId" } - ] - } - }, - "/account/login": { - "post": { - "tags": [ - "Login & Registration" - ], - "summary": "Log in a customer", - "description": "Logs in customers given their credentials.", - "operationId": "loginCustomer", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "username", - "password" - ], - "properties": { - "username": { - "description": "Email", - "type": "string" - }, - "password": { - "description": "Password", - "type": "string" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "401": { - "description": "If credentials are incorrect an error is returned", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } - ] - } - }, - "/account/login/imitate-customer": { - "post": { - "tags": [ - "Login & Registration" ], - "summary": "Imitate the log in as a customer", - "description": "Imitate the log in as a customer given a generated token.", - "operationId": "imitateCustomerLogin", "requestBody": { "required": true, "content": { "application/json": { "schema": { - "required": [ - "token", - "customerId", - "userId" - ], - "properties": { - "token": { - "description": "Generated customer impersonation token", - "type": "string" - }, - "customerId": { - "description": "ID of the customer", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/NoneFieldsCriteria" }, - "userId": { - "description": "ID of the user who generated the token", - "type": "string" + { + "properties": { + "checkPromotion": { + "description": "Check if the payment method of the order is still changeable.", + "type": "boolean" + }, + "filter": { + "type": "array", + "description": "Pass the deepLinkCode criteria filter to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "equals" + ] + }, + "field": { + "type": "string", + "enum": [ + "deepLinkCode" + ] + }, + "value": { + "type": "string" + } + }, + "required": [ + "type", + "field", + "value" + ] + } + ] + } + }, + "email": { + "description": "The email address of the customer. Pass this value to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", + "type": "string", + "format": "email" + }, + "zipcode": { + "description": "The zip/postal code of the billing address of the customer. Pass this value to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", + "type": "string" + }, + "login": { + "description": "If set and when handling a guest order, a context token will be returned in the response header with a logged-in session.", + "type": "boolean" + } + }, + "type": "object" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "400": { - "description": "If the token is incorrect an error is returned", + "description": "An array of orders and an indicator if the payment of the order can be changed.", + "headers": { + "sw-context-token": { + "description": "Contains sw-context-token value, if login parameter is set to true and a guest order was found and the correct credentials were provided.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/failure" + "$ref": "#/components/schemas/OrderRouteResponse" } } } @@ -20939,70 +20746,44 @@ }, "security": [ { - "ApiKey": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" + "ApiKey": [], + "ContextToken": [] } ] } }, - "/account/logout": { + "/order/payment": { "post": { "tags": [ - "Login & Registration" - ], - "summary": "Log out a customer", - "description": "Logs out a customer.", - "operationId": "logoutCustomer", - "responses": { - "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "403": { - "$ref": "#/components/responses/403" - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } + "Order" ], + "summary": "Update the payment method of an order", + "description": "Changes the payment method of a specific order. You can use the /order route to find out if the payment method of an order can be changed - take a look at the `paymentChangeable`- array in the response.", + "operationId": "orderSetPayment", "parameters": [ { "$ref": "#/components/parameters/swLanguageId" } - ] - } - }, - "/account/register-confirm": { - "post": { - "tags": [ - "Login & Registration" ], - "summary": "Confirm a customer registration", - "description": "Confirms a customer registration when double opt-in is activated.\n\nLearn more about double opt-in registration in our guide \"Register a customer\".", - "operationId": "registerConfirm", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "hash", - "em" + "paymentMethodId", + "orderId" ], "properties": { - "hash": { - "description": "Hash from the email received", - "type": "string" + "paymentMethodId": { + "description": "The identifier of the paymentMethod to be set", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "em": { - "description": "Email hash from the email received", - "type": "string" + "orderId": { + "description": "The identifier of the order.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, "type": "object" @@ -21012,181 +20793,127 @@ }, "responses": { "200": { - "description": "Returns the logged in customer. The customer is automatically logged in with the `sw-context-token` header provided, which can be reused for subsequent requests." - }, - "404": { - "description": "No hash provided" - }, - "412": { - "description": "The customer has already been confirmed" + "description": "Successfully updated the payment method of the order.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } } }, "security": [ { - "ApiKey": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" + "ApiKey": [], + "ContextToken": [] } ] } }, - "/account/register": { - "post": { + "/order/download/{orderId}/{downloadId}": { + "get": { "tags": [ - "Login & Registration" + "Order" ], - "summary": "Register a customer", - "description": "Registers a customer. Used both for normal customers and guest customers.See the Guide \"Register a customer\" for more information on customer registration.", - "operationId": "register", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "properties": { - "email": { - "description": "Email of the customer. Has to be unique, unless `guest` is `true`", - "type": "string" - }, - "password": { - "description": "Password for the customer. Required, unless `guest` is `true`", - "type": "string" - }, - "salutationId": { - "description": "Id of the salutation for the customer account. Fetch options using `salutation` endpoint.", - "type": "string" - }, - "firstName": { - "description": "Customer first name. Value will be reused for shipping and billing address if not provided explicitly.", - "type": "string" - }, - "lastName": { - "description": "Customer last name. Value will be reused for shipping and billing address if not provided explicitly.", - "type": "string" - }, - "acceptedDataProtection": { - "description": "Flag indicating accepted data protection", - "type": "boolean" - }, - "storefrontUrl": { - "description": "URL of the storefront for that registration. Used in confirmation emails. Has to be one of the configured domains of the sales channel.", - "type": "string" - }, - "requestedGroupId": { - "description": "Optional customer group registration request. The customer is created in the current sales channel group and this field stores the requested target group. The group must be available for registration in the current sales channel.", - "type": "string" - }, - "billingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "shippingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "guest": { - "description": "If set, will create a guest customer. Guest customers can re-use an email address and don't need a password.", - "type": "boolean", - "default": false - }, - "birthdayDay": { - "description": "Birthday day", - "type": "integer" - }, - "birthdayMonth": { - "description": "Birthday month", - "type": "integer" - }, - "birthdayYear": { - "description": "Birthday year", - "type": "integer" - }, - "title": { - "description": "(Academic) title of the customer", - "type": "string" - }, - "affiliateCode": { - "description": "Field can be used to store an affiliate tracking code", - "type": "string" - }, - "campaignCode": { - "description": "Field can be used to store a campaign tracking code", - "type": "string" - } - }, - "required": [ - "email", - "password", - "firstName", - "lastName", - "acceptedDataProtection", - "storefrontUrl", - "billingAddress" - ], - "oneOf": [ - { - "properties": { - "accountType": { - "description": "Type of the customer account. Default value is 'private'.", - "type": "string", - "enum": [ - "private" - ], - "default": "private" - }, - "company": { - "type": "null" - }, - "vatIds": { - "type": "null" - } - } - }, - { - "required": [ - "accountType", - "company", - "vatIds" - ], - "properties": { - "accountType": { - "description": "Type of the customer account. Can be `private` or `business`.", - "type": "string", - "enum": [ - "business" - ] - }, - "company": { - "description": "Company of the customer. Only required when `accountType` is `business`.", - "type": "string" - }, - "vatIds": { - "description": "VAT IDs of the customer's company. Only valid when `accountType` is `business`.", - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - } - } - } - ], - "type": "object" + "summary": "Download a purchased file", + "description": "Download a file included in the given order and with the given id. Access must be granted.", + "operationId": "orderDownloadFile", + "parameters": [ + { + "name": "orderId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "downloadId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "responses": { + "200": { + "description": "An arbitrary binary file.", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } } } } }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/_info/openapi3.json": { + "get": { + "tags": [ + "System Info & Health Check" + ], + "summary": "Get OpenAPI Specification", + "description": "Get information about the store API in OpenAPI format.", + "operationId": "api-info", + "parameters": [ + { + "name": "type", + "in": "query", + "description": "Type of the api", + "schema": { + "type": "string", + "enum": [ + "jsonapi", + "json" + ] + } + } + ], "responses": { "200": { - "description": "Success", + "$ref": "#/components/responses/OpenApi3" + } + } + } + }, + "/cookie-groups": { + "get": { + "tags": [ + "Experimental", + "Cookies" + ], + "summary": "Fetch all cookie groups", + "description": "Fetch all cookie groups available in the system with configuration hash. Experimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", + "operationId": "readCookieGroups", + "responses": { + "200": { + "description": "Successful response with a collection of cookie groups and their configuration hash.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Customer" + "$ref": "#/components/schemas/CookieRouteResponse" } } } + }, + "400": { + "$ref": "#/components/responses/400" } }, "security": [ @@ -21201,106 +20928,161 @@ ] } }, - "/account/recovery-password-confirm": { + "/seo-url": { "post": { "tags": [ - "Profile" + "Sitemap & Routes", + "Endpoints supporting Criteria " + ], + "summary": "Fetch SEO routes", + "description": "Perform a filtered search for seo urls.", + "operationId": "readSeoUrl", + "parameters": [ + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } ], - "summary": "Reset a password with recovery credentials", - "description": "This operation is Step 2 of the password reset flow. It is required to conduct Step 1 \"Send a password recovery mail\" in order to obtain the required credentials for this step.Resets a customer's password using credentials from a password recovery mail as a validation.", - "operationId": "recoveryPassword", "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "required": [ - "hash", - "newPassword", - "newPasswordConfirm" - ], - "properties": { - "hash": { - "description": "Parameter from the link in the confirmation mail sent in Step 1", - "type": "string" - }, - "newPassword": { - "description": "New password for the customer", - "type": "string" - }, - "newPasswordConfirm": { - "description": "Confirmation of the new password", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Returns a success response indicating a successful update.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } + "$ref": "#/components/responses/SeoUrlListResponse" + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ { "ApiKey": [] } + ] + }, + "get": { + "tags": [ + "Sitemap & Routes", + "Endpoints supporting Criteria " ], + "summary": "Fetch SEO routes", + "description": "Perform a filtered search for seo urls.", + "operationId": "readSeoUrlGet", "parameters": [ + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" + }, { "$ref": "#/components/parameters/swLanguageId" } + ], + "responses": { + "200": { + "$ref": "#/components/responses/SeoUrlListResponse" + }, + "404": { + "$ref": "#/components/responses/404" + } + }, + "security": [ + { + "ApiKey": [] + } ] } }, - "/account/recovery-password": { - "post": { + "/sitemap": { + "get": { "tags": [ - "Profile" + "Sitemap & Routes" ], - "summary": "Send a password recovery mail", - "description": "This operation is Step 1 of the password reset flow. Make sure to implement Step 2 \"Reset password with recovery credentials\" in order to allow for the complete flow in your application. Sends a recovery mail containing a link with credentials that allows a customer to reset their password.", - "operationId": "sendRecoveryMail", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "email", - "storefrontUrl" - ], - "properties": { - "email": { - "description": "E-Mail address to identify the customer", - "type": "string" - }, - "storefrontUrl": { - "description": "URL of the storefront to use for the generated reset link. It has to be a domain that is configured in the sales channel domain settings.", - "type": "string" - } - }, - "type": "object" - } - } + "summary": "Fetch sitemaps", + "description": "Fetches a list of compressed sitemap files, which are often used by search engines.", + "operationId": "readSitemap", + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" } - }, + ], "responses": { "200": { - "description": "If email corresponds to an existing customer, a mail will be sent out to that customer containing a link assembled using the following schema:\n\nReturns a success indicating a successful initialisation of the reset flow.", + "description": "Returns a list of available sitemaps.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/Sitemap" + } } } } @@ -21310,30 +21092,26 @@ { "ApiKey": [] } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } ] } }, - "/account/address/default-shipping/{addressId}": { - "patch": { + "/sitemap/{filePath}": { + "get": { "tags": [ - "Address" + "Sitemap & Routes" ], - "summary": "Change a customer's default shipping address", - "description": "Updates the default (preselected) shipping addresses of a customer.", - "operationId": "defaultShippingAddress", + "summary": "Download sitemap file", + "description": "Downloads the sitemap file from the configured sitemap storage.", + "operationId": "getSitemapFile", "parameters": [ { - "name": "addressId", + "name": "filePath", "in": "path", - "description": "Address ID", + "description": "The path to the sitemap file", "required": true, "schema": { - "type": "string" + "type": "string", + "pattern": ".*\\.(xml|gz)$" } }, { @@ -21342,218 +21120,276 @@ ], "responses": { "200": { - "description": "" + "description": "Returns the blob to download.", + "content": { + "application/xml": { + "schema": { + "type": "string", + "format": "binary" + } + }, + "application/gzip": { + "schema": { + "type": "string", + "format": "binary" + } + } + } } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/address/default-billing/{addressId}": { - "patch": { + "/shipping-cost/product/{productId}": { + "get": { "tags": [ - "Address" + "Cart", + "Endpoints supporting Criteria " ], - "summary": "Change a customer's default billing address", - "description": "Updates the default (preselected) billing addresses of a customer.", - "operationId": "defaultBillingAddress", + "summary": "Calculate shipping costs for a product", + "description": "Calculates shipping costs for a single product using criteria-based shipping method selection.", + "operationId": "readShippingCostByProduct", "parameters": [ { - "name": "addressId", + "name": "productId", "in": "path", - "description": "Address ID", + "description": "The product identifier.", "required": true, "schema": { - "type": "string" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "responses": { - "200": { - "description": "" - } - }, - "security": [ + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, { - "ApiKey": [], - "ContextToken": [] + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" } - ] - } - }, - "/account/address": { - "post": { - "tags": [ - "Address" ], - "summary": "Create a new address for a customer", - "description": "Creates a new address for a customer.", - "operationId": "createCustomerAddress", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomerAddressBody" - } - } - } - }, "responses": { "200": { - "description": "", + "description": "The calculated shipping costs.", "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/CustomerAddress" - }, - { - "$ref": "#/components/schemas/CustomerAddressRead" + "type": "array", + "items": { + "type": "object", + "required": [ + "shippingCost", + "deliveryDate", + "shippingMethod" + ], + "properties": { + "shippingCost": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + } } - ] + } } } } + }, + "400": { + "$ref": "#/components/responses/400" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" + "ApiKey": [] } ] } }, - "/salutation": { - "post": { + "/shipping-cost/cart": { + "get": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Cart" ], - "summary": "Fetch salutations", - "description": "Fetches salutations with a criteria obj.", - "operationId": "readSalutation", + "summary": "Calculate shipping costs for the cart", + "description": "Calculates shipping costs for the current cart across available shipping methods.", + "operationId": "readShippingCostsByCart", "parameters": [ { - "name": "sw-include-search-info", + "name": "sw-language-id", "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "description": "Instructs Shopware to return the response in the given language.", "required": false, "schema": { "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" + "pattern": "^[0-9a-f]{32}$" } - }, - { - "$ref": "#/components/parameters/swLanguageId" } ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "responses": { + "200": { + "description": "The calculated shipping costs.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "required": [ + "shippingCost", + "deliveryDate", + "shippingMethod" + ], + "properties": { + "shippingCost": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + } + } } - ] + } } } } }, - "responses": { - "200": { - "$ref": "#/components/responses/SalutationListResponse" - } - }, "security": [ { "ApiKey": [] } ] - }, + } + }, + "/checkout/cart": { "get": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Cart" ], - "summary": "Fetch salutations", - "description": "Perform a filtered search for salutations.", - "operationId": "readSalutationGet", + "summary": "Fetch or create a cart", + "description": "Used to fetch the current cart or for creating a new one.", + "operationId": "readCart", "parameters": [ - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaFields" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "$ref": "#/components/parameters/CompressedCriteria" - }, { "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "$ref": "#/components/responses/SalutationListResponse" + "description": "Cart", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Cart" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + }, + "delete": { + "tags": [ + "Cart" + ], + "summary": "Delete a cart", + "description": "This route deletes the cart of the customer.", + "operationId": "deleteCart", + "responses": { + "204": { + "description": "Successfully deleted the cart", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } } }, "security": [ @@ -21563,225 +21399,174 @@ ] } }, - "/document/download/{documentId}/{deepLinkCode}": { + "/checkout/cart/line-item": { "post": { "tags": [ - "Document" + "Cart" ], - "summary": "Download generated document", - "description": "Returns generated document to download.", - "operationId": "download", + "summary": "Add items to the cart", + "description": "This route adds items to the cart. An item can be a product or promotion for example. They are referenced by the `referencedId`-parameter.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#adding-new-items-to-the-cart)", + "operationId": "addLineItem", "parameters": [ - { - "name": "documentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "deepLinkCode", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, { "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { - "required": false, "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "email": { - "type": "string" - }, - "zipcode": { - "type": "string" - } - }, - "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." + "$ref": "#/components/schemas/CartItems" } } } }, "responses": { "200": { - "description": "Success", + "description": "The updated cart.", "content": { - "application/pdf": { - "schema": { - "type": "string", - "format": "binary" - } - }, - "text/html": { - "schema": { - "type": "string" - } - }, - "application/xml": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/Cart" } } } }, - "204": { - "description": "DEPRECATED: Returns a no content response when no document is found. Will be changed in v6.8.0.0 and returns a 404 response instead." - }, - "403": { - "description": "Forbidden." - }, - "404": { - "description": "Document not found." - }, - "406": { - "description": "The requested mime type is not supported." + "400": { + "$ref": "#/components/responses/400" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] }, - "get": { + "delete": { "tags": [ - "Document" + "Cart" ], - "summary": "Download generated document", - "description": "Returns generated document to download.", - "operationId": "downloadGet", + "summary": "Remove items from the cart", + "description": "DEPRECATED: use removeLineItem instead. This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", + "operationId": "removeLineItemDeprecated", + "deprecated": true, "parameters": [ { - "name": "documentId", - "in": "path", + "name": "ids", + "in": "query", + "description": "A list of product identifiers.", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } - }, - { - "name": "deepLinkCode", - "required": true, - "in": "path", - "schema": { - "type": "string" + } + ], + "responses": { + "200": { + "description": "The updated cart.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Cart" + } + } } - }, - { - "name": "email", - "required": false, - "in": "query", - "schema": { - "type": "string" - }, - "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." - }, + } + }, + "security": [ { - "name": "zipcode", - "required": false, - "in": "query", - "schema": { - "type": "string" - }, - "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." - }, + "ApiKey": [] + } + ] + }, + "patch": { + "tags": [ + "Cart" + ], + "summary": "Update items in the cart", + "description": "This route updates items in the cart. A typical example is updating the quantity of an item.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#updating-items-in-the-cart)", + "operationId": "updateLineItem", + "parameters": [ { "$ref": "#/components/parameters/swLanguageId" } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CartItemsUpdate" + } + } + } + }, "responses": { "200": { - "description": "Success", + "description": "The updated cart.", "content": { - "application/pdf": { - "schema": { - "type": "string", - "format": "binary" - } - }, - "text/html": { - "schema": { - "type": "string" - } - }, - "application/xml": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/Cart" } } } - }, - "204": { - "description": "DEPRECATED: Returns a no content response when no document is found. Will be changed in v6.8.0.0 and returns a 404 response instead." - }, - "403": { - "description": "Forbidden." - }, - "404": { - "description": "Document not found." - }, - "406": { - "description": "The requested mime type is not supported." } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/product/{productId}/cross-selling": { + "/checkout/cart/line-item/delete": { "post": { "tags": [ - "Product" + "Cart" ], - "summary": "Fetch cross-selling groups of a product", - "description": "This route is used to load the cross sellings for a product. A product has several cross selling definitions in which several products are linked. The route returns the cross sellings together with the linked products", - "operationId": "readProductCrossSellings", + "summary": "Remove items from the cart", + "description": "This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", + "operationId": "removeLineItem", "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Product ID", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, - "schema": { - "type": "boolean" - } - }, { "$ref": "#/components/parameters/swLanguageId" } ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "ids" + ], + "properties": { + "ids": { + "description": "A list of product identifiers.", + "type": "array", + "minItems": 1, + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + }, + "type": "object" + } + } + } + }, "responses": { "200": { - "description": "Found cross sellings", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CrossSellingElementCollection" + "$ref": "#/components/schemas/Cart" } } } @@ -21792,44 +21577,138 @@ "ApiKey": [] } ] - }, - "get": { + } + }, + "/checkout/order": { + "post": { "tags": [ - "Product" + "Order" ], - "summary": "Fetch cross-selling groups of a product", - "description": "This route is used to load the cross sellings for a product. A product has several cross selling definitions in which several products are linked. The route returns the cross sellings together with the linked products", - "operationId": "readProductCrossSellingsGet", + "summary": "Create an order from a cart", + "description": "Creates a new order from the current cart and deletes the cart.\n\nIf you are using the [prepared payment flow](https://developer.shopware.com/docs/concepts/commerce/checkout-concept/payments#2.1-prepare-payment-optional), this endpoint also receives additional transaction details. The exact name of the parameters depends on the implementation of the corresponding *payment handler*.", + "operationId": "createOrder", "parameters": [ { - "name": "productId", - "in": "path", - "description": "Product ID", - "required": true, - "schema": { - "type": "string" + "$ref": "#/components/parameters/swLanguageId" + } + ], + "requestBody": { + "description": "Contains additional metadata which is stored together with the order. It can also contain payment transaction details.", + "content": { + "application/json": { + "schema": { + "properties": { + "customerComment": { + "description": "Adds a comment from the customer to the order.", + "type": "string" + }, + "affiliateCode": { + "description": "The affiliate code can be used to track which referrer the customer came through. An example could be `Price-comparison-company-XY`.", + "type": "string" + }, + "campaignCode": { + "description": "The campaign code is used to track which action the customer came from. An example could be `Summer-Deals`", + "type": "string" + } + }, + "type": "object" + } } - }, - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, - "schema": { - "type": "boolean" + } + }, + "responses": { + "200": { + "description": "Order", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Order" + } + } } - }, + } + }, + "security": [ { - "$ref": "#/components/parameters/swLanguageId" + "ApiKey": [], + "ContextToken": [] } + ] + } + }, + "/checkout/gateway": { + "get": { + "tags": [ + "Gateway" ], + "summary": "Call the checkout gateway", + "description": "Call the checkout gateway, which is used to manipulate certain aspects of the checkout process (e.g. available payment methods).", + "operationId": "checkoutGateway", "responses": { "200": { - "description": "Found cross sellings", + "description": "Checkout gateway response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CrossSellingElementCollection" + "properties": { + "paymentMethods": { + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentMethod" + } + } + }, + "type": "object" + }, + "shippingMethods": { + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingMethod" + } + } + }, + "type": "object" + }, + "errors": { + "type": "array", + "items": { + "properties": { + "code": { + "description": "Error code", + "type": "string" + }, + "detail": { + "description": "Error detail", + "type": "string" + }, + "blocking": { + "description": "If the error is blocking", + "type": "boolean" + } + } + } + } + } } } } @@ -21839,97 +21718,74 @@ { "ApiKey": [] } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ] } }, - "/product/{productId}": { - "post": { + "/breadcrumb/{id}": { + "get": { "tags": [ - "Product" + "Experimental", + "Breadcrumb" ], - "summary": "Fetch a single product", - "description": "This route is used to load a single product with the corresponding details. In addition to loading the data, the best variant of the product is determined when a parent id is passed.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", - "operationId": "readProductDetail", + "summary": "Fetch a breadcrumb", + "description": "Perform search to get category or product breadcrumb. \n\nExperimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", + "operationId": "readBreadcrumb", "parameters": [ { - "name": "productId", + "name": "id", "in": "path", - "description": "Product ID", + "description": "UUID for product or category", "required": true, "schema": { "type": "string", - "pattern": "^[0-9a-f]{32}$'" - } - }, - { - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "in": "header", - "name": "sw-include-seo-urls", - "required": false, - "schema": { - "type": "boolean" + "pattern": "^[0-9a-f]{32}$" } }, { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "name": "type", + "in": "query", + "description": "Type: category or product (optional - default: product)", "required": false, "schema": { "type": "string", "enum": [ - "0", - "1" - ], - "default": "1" - } - }, - { - "description": "Instructs Shopware to skip loading the configurator data", - "in": "query", - "name": "skipConfigurator", - "required": false, - "schema": { - "type": "boolean" + "product", + "category" + ] } }, { - "description": "Instructs Shopware to skip loading the CMS page data", + "name": "referrerCategoryId", "in": "query", - "name": "skipCmsPage", + "description": "UUID for referrer category only used for product breadcrumb", "required": false, "schema": { - "type": "boolean" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, { "$ref": "#/components/parameters/swLanguageId" } ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/NoneFieldsCriteria" - } - ] - } - } - } - }, "responses": { "200": { - "description": "Product information along with variant groups and options", + "description": "Search result containing SeoUrl\\'s to be used as breadcrumb.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductDetailResponse" + "$ref": "#/components/schemas/BreadcrumbCollection" } } } + }, + "400": { + "$ref": "#/components/responses/400" } }, "security": [ @@ -21937,111 +21793,125 @@ "ApiKey": [] } ] - }, + } + }, + "/_info/routes": { "get": { + "summary": "Get API routes", + "operationId": "getRoutes", "tags": [ - "Product" + "System Info & Health Check" ], - "summary": "Fetch a single product", - "description": "This route is used to load a single product with the corresponding details. In addition to loading the data, the best variant of the product is determined when a parent id is passed.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", - "operationId": "readProductDetailGet", - "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Product ID", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$'" - } - }, - { - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "in": "header", - "name": "sw-include-seo-urls", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Instructs Shopware to skip loading the configurator data", - "in": "query", - "name": "skipConfigurator", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Instructs Shopware to skip loading the CMS page data", - "in": "query", - "name": "skipCmsPage", - "required": false, - "schema": { - "type": "boolean" + "responses": { + "200": { + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "endpoints" + ], + "properties": { + "endpoints": { + "type": "array", + "items": { + "type": "object", + "required": [ + "methods", + "path" + ], + "properties": { + "methods": { + "type": "array", + "items": { + "type": "string" + } + }, + "path": { + "type": "string" + } + } + } + } + } + } + } } - }, - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "$ref": "#/components/parameters/CompressedNoneFieldsCriteria" - }, + } + } + } + }, + "/revocation-request-form": { + "post": { + "tags": [ + "Content" + ], + "summary": "Submit a revocation request form message", + "description": "Used for submitting revocation request forms. Be aware that there can be more required fields, depending on the system settings.", + "operationId": "sendRevocationRequestMail", + "parameters": [ { "$ref": "#/components/parameters/swLanguageId" } - ], + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "email", + "contractNumber" + ], + "properties": { + "firstName": { + "description": "First name. This field may be required depending on the system settings.", + "type": "string" + }, + "lastName": { + "description": "Last name. This field may be required depending on the system settings.", + "type": "string" + }, + "email": { + "description": "Email address.", + "type": "string" + }, + "contractNumber": { + "description": "The number of the contract.", + "type": "string" + }, + "comment": { + "description": "The message of the revocation request form.", + "type": "string" + }, + "navigationId": { + "description": "Identifier of the navigation page. Can be used to override the configuration.\nTake a look at the settings of a category containing a revocation form in the administration.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "slotId": { + "description": "Identifier of the cms element.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "cmsPageType": { + "description": "Type of the content management page.", + "type": "string" + }, + "entityName": { + "description": "Entity name for slot config.", + "type": "string" + } + }, + "type": "object" + } + } + } + }, "responses": { "200": { - "description": "Product information along with variant groups and options", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProductDetailResponse" - } - } - } + "description": "Message sent successfully." } }, "security": [ @@ -22051,15 +21921,15 @@ ] } }, - "/product": { + "/country": { "post": { "tags": [ - "Product", + "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch a list of products", - "description": "List products that match the given criteria. For performance reasons a limit should always be set.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", - "operationId": "readProduct", + "summary": "Fetch countries", + "description": "Perform a filtered search for countries\n\n**Available Associations:**\n- `states` - States/provinces/regions within the country", + "operationId": "readCountry", "parameters": [ { "name": "sw-include-search-info", @@ -22095,7 +21965,7 @@ }, "responses": { "200": { - "$ref": "#/components/responses/ProductListResponse" + "$ref": "#/components/responses/CountryListResponse" } }, "security": [ @@ -22106,12 +21976,12 @@ }, "get": { "tags": [ - "Product", + "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch a list of products", - "description": "List products that match the given criteria. For performance reasons a limit should always be set.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", - "operationId": "readProductGet", + "summary": "Fetch countries", + "description": "Perform a filtered search for countries\n\n**Available Associations:**\n- `states` - States/provinces/regions within the country", + "operationId": "readCountryGet", "parameters": [ { "$ref": "#/components/parameters/criteriaPage" @@ -22167,7 +22037,7 @@ ], "responses": { "200": { - "$ref": "#/components/responses/ProductListResponse" + "$ref": "#/components/responses/CountryListResponse" } }, "security": [ @@ -22177,43 +22047,16 @@ ] } }, - "/product/{productId}/reviews": { + "/account/newsletter-recipient": { "post": { "tags": [ - "Product", - "Endpoints supporting Criteria " - ], - "summary": "Fetch product reviews", - "description": "Perform a filtered search for product reviews.", - "operationId": "readProductReviews", - "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Identifier of the product.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } - }, - { - "$ref": "#/components/parameters/swLanguageId" - } + "Profile", + "Newsletter", + "Endpoints supporting Criteria" ], + "summary": "Fetch newsletter recipients", + "description": "Perform a filtered search for newsletter recipients.", + "operationId": "readNewsletterRecipient", "requestBody": { "required": false, "content": { @@ -22230,26 +22073,11 @@ }, "responses": { "200": { - "description": "Entity search result containing product reviews", + "description": "", "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductReview" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/AccountNewsletterRecipient" } } } @@ -22257,102 +22085,138 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } - ] - }, - "get": { - "tags": [ - "Product", - "Endpoints supporting Criteria " ], - "summary": "Fetch product reviews", - "description": "Perform a filtered search for product reviews.", - "operationId": "readProductReviewsGet", "parameters": [ { - "name": "productId", - "in": "path", - "description": "Identifier of the product.", - "required": true, + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, "schema": { - "type": "string" + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" } }, - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaFields" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "$ref": "#/components/parameters/CompressedCriteria" - }, { "$ref": "#/components/parameters/swLanguageId" } - ], + ] + } + }, + "/account/change-profile": { + "post": { + "tags": [ + "Profile" + ], + "summary": "Change the customer's information", + "description": "Make changes to a customer's account, like changing their name, salutation or title.", + "operationId": "changeProfile", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "firstName", + "lastName" + ], + "properties": { + "salutationId": { + "description": "Id of the salutation for the customer account. Fetch options using `salutation` endpoint.", + "type": "string" + }, + "title": { + "description": "(Academic) title of the customer", + "type": "string" + }, + "firstName": { + "description": "Customer first name. Value will be reused for shipping and billing address if not provided explicitly.", + "type": "string" + }, + "lastName": { + "description": "Customer last name. Value will be reused for shipping and billing address if not provided explicitly.", + "type": "string" + }, + "birthdayDay": { + "description": "Birthday day", + "type": "integer" + }, + "birthdayMonth": { + "description": "Birthday month", + "type": "integer" + }, + "birthdayYear": { + "description": "Birthday year", + "type": "integer" + } + }, + "oneOf": [ + { + "properties": { + "accountType": { + "description": "Type of the customer account. Default value is 'private'.", + "type": "string", + "enum": [ + "private" + ], + "default": "private" + }, + "company": { + "type": "null" + }, + "vatIds": { + "type": "null" + } + } + }, + { + "required": [ + "accountType", + "company", + "vatIds" + ], + "properties": { + "accountType": { + "description": "Type of the customer account. Can be `private` or `business`.", + "type": "string", + "enum": [ + "business" + ] + }, + "company": { + "description": "Company of the customer. Only required when `accountType` is `business`.", + "type": "string" + }, + "vatIds": { + "description": "VAT IDs of the customer's company. Only valid when `accountType` is `business`.", + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + } + } + } + ] + } + } + } + }, "responses": { "200": { - "description": "Entity search result containing product reviews", + "description": "Returns a success response indicating a successful update", "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductReview" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -22360,64 +22224,47 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } - ] - } - }, - "/product/{productId}/review": { - "post": { - "tags": [ - "Product" ], - "summary": "Save a product review", - "description": "Saves a review for a product. Reviews have to be activated in the settings.", - "operationId": "saveProductReview", "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Identifier of the product which is reviewed.", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, { "$ref": "#/components/parameters/swLanguageId" } + ] + } + }, + "/account/change-email": { + "post": { + "tags": [ + "Profile" ], + "summary": "Change the customer's email address", + "description": "Changes a customer's email address to a new email address, using their current password as a validation.", + "operationId": "changeEmail", "requestBody": { + "required": true, "content": { "application/json": { "schema": { "required": [ - "title", - "content", - "points" + "email", + "emailConfirmation", + "password" ], "properties": { - "name": { - "description": "The name of the review author. If not set, the first name of the customer is chosen.", - "type": "string" - }, "email": { - "description": "The email address of the review author. If not set, the email of the customer is chosen.", + "description": "New email address. Has to be unique amongst all customers", "type": "string" }, - "title": { - "description": "The title of the review.", + "emailConfirmation": { + "description": "Confirmation of the new email address.", "type": "string" }, - "content": { - "description": "The content of review.", + "password": { + "description": "Customer's current password", "type": "string" - }, - "points": { - "description": "The review rating for the product.", - "type": "number", - "format": "double" } }, "type": "object" @@ -22427,7 +22274,14 @@ }, "responses": { "200": { - "description": "Success response indicating the review was saved successfully." + "description": "Returns a success response indicating a successful update", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } } }, "security": [ @@ -22435,110 +22289,33 @@ "ApiKey": [], "ContextToken": [] } - ] - } - }, - "/product/purchase-limit": { - "get": { - "tags": [ - "Product" ], - "summary": "Fetch current purchase quantity limits for products", - "description": "Returns the current min/max/step purchase constraints for the given products, reflecting live stock or configured limitations. Intended for use on PDP to show actual values on product pages.", - "operationId": "readProductsPurchaseLimit", "parameters": [ - { - "name": "ids[]", - "in": "query", - "description": "List of product IDs to fetch quantity limits for.", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - }, { "$ref": "#/components/parameters/swLanguageId" } - ], - "responses": { - "200": { - "description": "Current quantity limits for the requested products", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductPurchaseLimit" - } - } - } - } - }, - "400": { - "$ref": "#/components/responses/400" - } - }, - "security": [ - { - "ApiKey": [] - } ] } }, - "/product/{productId}/find-variant": { + "/account/change-language": { "post": { "tags": [ - "Product" - ], - "summary": "Search for a matching variant by product options.", - "description": "Performs a search for product variants and returns the best matching variant.", - "operationId": "searchProductVariantIds", - "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Product ID", - "required": true, - "schema": { - "type": "string" - } - }, - { - "$ref": "#/components/parameters/swLanguageId" - } + "Profile" ], + "summary": "Change the customer's language.", + "description": "Changes the language of the logged in customer", + "operationId": "changeLanguage", "requestBody": { + "required": true, "content": { "application/json": { "schema": { "required": [ - "options" + "languageId" ], "properties": { - "options": { - "oneOf": [ - { - "description": "The options parameter for the variant to find.", - "type": "array", - "items": { - "type": "string" - } - }, - { - "description": "The options parameter as a map of groupId => optionId.", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - ] - }, - "switchedGroup": { - "description": "The id of the option group that has been switched.", + "language": { + "description": "New languageId", "type": "string" } }, @@ -22549,11 +22326,11 @@ }, "responses": { "200": { - "description": "Returns an FoundCombination struct containing the ids matching the search.", + "description": "Returns a success response indicating a successful update", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/FindProductVariantRouteResponse" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -22561,59 +22338,61 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } - ] - }, - "get": { - "tags": [ - "Product" ], - "summary": "Search for a matching variant by product options.", - "description": "Performs a search for product variants and returns the best matching variant.", - "operationId": "searchProductVariantIdsGet", "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Product ID", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "options[]", - "in": "query", - "description": "The options parameter for the variant to find. Array of option IDs.", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "switchedGroup", - "in": "query", - "description": "The id of the option group that has been switched.", - "required": false, - "schema": { - "type": "string" - } - }, { "$ref": "#/components/parameters/swLanguageId" } + ] + } + }, + "/account/change-password": { + "post": { + "tags": [ + "Profile" ], + "summary": "Change the customer's password", + "description": "Changes a customer's password using their current password as a validation.", + "operationId": "changePassword", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "password", + "newPassword", + "newPasswordConfirm" + ], + "properties": { + "password": { + "description": "Current password of the customer", + "type": "string" + }, + "newPassword": { + "description": "New Password for the customer", + "type": "string" + }, + "newPasswordConfirm": { + "description": "Confirmation of the new password", + "type": "string" + } + }, + "type": "object" + } + } + } + }, "responses": { "200": { - "description": "Returns an FoundCombination struct containing the ids matching the search.", + "description": "Returns a success response indicating a successful update.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/FindProductVariantRouteResponse" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -22621,169 +22400,160 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" } ] } }, - "/script/{hook}": { - "get": { + "/account/convert-guest": { + "post": { "tags": [ - "API", - "Script", - "App" + "Profile" ], - "summary": "Access point for different api logics which are provided by apps over script hooks", - "operationId": "getScriptStoreApiRoute", - "parameters": [ - { - "name": "hook", - "in": "path", - "description": "Dynamic hook which used to build the hook name", - "required": true, - "schema": { - "type": "string" + "summary": "Convert a guest customer to a registered customer", + "description": "Takes a password to convert a guest customer to a registered customer. The customer can then log in with the provided password in the future.", + "operationId": "convertGuest", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "password" + ], + "properties": { + "password": { + "description": "New Password for the customer", + "type": "string" + } + }, + "type": "object" + } } - }, - { - "$ref": "#/components/parameters/swLanguageId" } - ], + }, "responses": { "200": { - "description": "Returns different structures of results based on the called script.", + "description": "Returns a success response indicating a successful update.", "content": { "application/json": { "schema": { - "oneOf": [ - { - "type": "object", - "additionalProperties": true - }, - { - "type": "null" - } - ] - } - }, - "application/vnd.api+json": { - "schema": { - "oneOf": [ - { - "type": "object", - "additionalProperties": true - }, - { - "type": "null" - } - ] + "$ref": "#/components/schemas/SuccessResponse" } } } - }, - "204": { - "description": "No data by default" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } - ] - }, - "post": { - "tags": [ - "API", - "Script", - "App" ], - "summary": "Access point for different api logics which are provided by apps over script hooks", - "operationId": "postScriptStoreApiRoute", "parameters": [ - { - "name": "hook", - "in": "path", - "description": "Dynamic hook which used to build the hook name", - "required": true, - "schema": { - "type": "string" - } - }, { "$ref": "#/components/parameters/swLanguageId" } + ] + } + }, + "/account/customer-recovery-is-expired": { + "post": { + "tags": [ + "Profile" ], + "summary": "Checks if the customer recovery entry for a given hash is expired.", + "description": "This can be used to validate a provided hash has a valid and not expired customer recovery hash.", + "operationId": "getCustomerRecoveryIsExpired", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "hash" + ], + "properties": { + "hash": { + "description": "Parameter from the link in the confirmation mail sent in Step 1", + "type": "string" + } + }, + "type": "object" + } + } + } + }, "responses": { "200": { - "description": "Returns different structures of results based on the called script.", + "description": "Returns a CustomerRecoveryIsExpiredResponse that indicates if the hash is expired or not.", "content": { "application/json": { "schema": { - "oneOf": [ - { - "type": "object", - "additionalProperties": true - }, - { - "type": "null" - } - ] - } - }, - "application/vnd.api+json": { - "schema": { - "oneOf": [ - { - "type": "object", - "additionalProperties": true + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "isExpired": { + "type": "boolean" + } + }, + "required": [ + "isExpired" + ] + } }, - { - "type": "null" + "apiAlias": { + "enum": [ + "array_struct" + ], + "type": "string" } - ] + } } } } - }, - "204": { - "description": "No data by default" } }, "security": [ { "ApiKey": [] } - ] - } - }, - "/order/state/cancel": { - "post": { - "tags": [ - "Order" ], - "summary": "Cancel an order", - "description": "Cancels an order. The order state will be set to 'cancelled'.", - "operationId": "cancelOrder", "parameters": [ { "$ref": "#/components/parameters/swLanguageId" } + ] + } + }, + "/account/customer": { + "post": { + "tags": [ + "Profile", + "Endpoints supporting Criteria " ], + "summary": "Get information about current customer", + "description": "Returns information about the current customer.\n\n**Available Associations:**\n- `group` - Customer group determining pricing and permissions\n- `language` - Preferred language for customer communication\n- `lastPaymentMethod` - Last used payment method by the customer\n- `defaultBillingAddress` - Default billing address for the customer\n- `activeBillingAddress` - Currently active billing address in the session\n- `defaultShippingAddress` - Default shipping address for the customer\n- `activeShippingAddress` - Currently active shipping address in the session\n- `salutation` - Customer salutation (e.g., Mr., Mrs., Ms.)\n- `addresses` - All addresses saved for the customer\n- `tags` - Tags assigned to the customer for organization and segmentation", + "operationId": "readCustomer", "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "properties": { - "orderId": { - "description": "The identifier of the order to be canceled.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "allOf": [ + { + "$ref": "#/components/schemas/NoneFieldsCriteria" } - }, - "type": "object", - "required": [ - "orderId" ] } } @@ -22791,11 +22561,11 @@ }, "responses": { "200": { - "description": "Returns the state of the state machine\n\n example: More information about the state machine can be found in the corresponding guide: [Using the state machine](https://developer.shopware.com/docs/guides/plugins/plugins/checkout/order/using-the-state-machine)", + "description": "Returns the logged in customer, also for guest sessions. Check for the value of `guest` field to see whether the customer is a guest.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/StateMachineState" + "$ref": "#/components/schemas/Customer" } } } @@ -22806,18 +22576,7 @@ "ApiKey": [], "ContextToken": [] } - ] - } - }, - "/order": { - "post": { - "tags": [ - "Order", - "Endpoints supporting Criteria " ], - "summary": "Fetch a list of orders", - "description": "List orders of a customer.\n\n**Available Associations:**\n- `stateMachineState` - Current order state (e.g., open, in_progress, completed, cancelled)\n- `primaryOrderDelivery` - Primary delivery information for the order\n- `primaryOrderTransaction` - Primary payment transaction for the order\n- `orderCustomer` - Customer information associated with the order\n- `currency` - Currency used for the order\n- `language` - Language used when placing the order\n- `addresses` - All addresses associated with the order (billing and shipping)\n- `billingAddress` - Billing address for the order\n- `deliveries` - Delivery information including shipping address and tracking\n- `lineItems` - Order line items (products, discounts, fees)\n- `transactions` - Payment transactions for the order\n- `documents` - Generated documents (invoices, delivery notes, credit notes)\n- `tags` - Tags assigned to the order for organization and filtering", - "operationId": "readOrder", "parameters": [ { "name": "sw-include-search-info", @@ -22836,94 +22595,18 @@ { "$ref": "#/components/parameters/swLanguageId" } + ] + }, + "delete": { + "tags": [ + "Profile" ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/NoneFieldsCriteria" - }, - { - "properties": { - "checkPromotion": { - "description": "Check if the payment method of the order is still changeable.", - "type": "boolean" - }, - "filter": { - "type": "array", - "description": "Pass the deepLinkCode criteria filter to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", - "items": { - "allOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "equals" - ] - }, - "field": { - "type": "string", - "enum": [ - "deepLinkCode" - ] - }, - "value": { - "type": "string" - } - }, - "required": [ - "type", - "field", - "value" - ] - } - ] - } - }, - "email": { - "description": "The email address of the customer. Pass this value to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", - "type": "string", - "format": "email" - }, - "zipcode": { - "description": "The zip/postal code of the billing address of the customer. Pass this value to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", - "type": "string" - }, - "login": { - "description": "If set and when handling a guest order, a context token will be returned in the response header with a logged-in session.", - "type": "boolean" - } - }, - "type": "object" - } - ] - } - } - } - }, + "summary": "Delete the customer's profile", + "description": "Deletes a customer profile along with their addresses, wishlists and associated data. Created orders and their payment/shipping information (addresses) and reviews are not deleted.", + "operationId": "deleteCustomer", "responses": { - "200": { - "description": "An array of orders and an indicator if the payment of the order can be changed.", - "headers": { - "sw-context-token": { - "description": "Contains sw-context-token value, if login parameter is set to true and a guest order was found and the correct credentials were provided.", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/OrderRouteResponse" - } - } - } + "204": { + "description": "Returns a no content response indicating a successful removal of the customer profile" } }, "security": [ @@ -22934,52 +22617,84 @@ ] } }, - "/order/payment": { - "post": { + "/account/address/{addressId}": { + "delete": { "tags": [ - "Order" + "Address" ], - "summary": "Update the payment method of an order", - "description": "Changes the payment method of a specific order. You can use the /order route to find out if the payment method of an order can be changed - take a look at the `paymentChangeable`- array in the response.", - "operationId": "orderSetPayment", + "summary": "Delete an address of a customer", + "description": "Delete an address of customer.\n\n Only addresses which are not set as default addresses for shipping or billing can be deleted. You can check the current default addresses of your customer using the profile information endpoint and change them using the default address endpoint.\n\n **A customer must have at least one address (which can be used for shipping and billing).**\n\n An automatic fallback is not applied.", + "operationId": "deleteCustomerAddress", + "parameters": [ + { + "name": "addressId", + "in": "path", + "description": "ID of the address to be deleted.", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No Content response, when the address has been deleted" + }, + "400": { + "description": "Response containing a list of errors, most likely due to the address being in use" + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + }, + "patch": { + "tags": [ + "Address" + ], + "summary": "Modify an address of a customer", + "description": "Modifies an existing address of a customer.", + "operationId": "updateCustomerAddress", "parameters": [ + { + "name": "addressId", + "in": "path", + "description": "Address ID", + "required": true, + "schema": { + "type": "string" + } + }, { "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { - "required": true, "content": { "application/json": { "schema": { - "required": [ - "paymentMethodId", - "orderId" - ], - "properties": { - "paymentMethodId": { - "description": "The identifier of the paymentMethod to be set", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "orderId": { - "description": "The identifier of the order.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "type": "object" + "$ref": "#/components/schemas/CustomerAddressBody" } } } }, "responses": { "200": { - "description": "Successfully updated the payment method of the order.", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "allOf": [ + { + "$ref": "#/components/schemas/CustomerAddress" + }, + { + "$ref": "#/components/schemas/CustomerAddressRead" + } + ] } } } @@ -22993,45 +22708,54 @@ ] } }, - "/order/download/{orderId}/{downloadId}": { - "get": { + "/account/list-address": { + "post": { "tags": [ - "Order" + "Address", + "Endpoints supporting Criteria " ], - "summary": "Download a purchased file", - "description": "Download a file included in the given order and with the given id. Access must be granted.", - "operationId": "orderDownloadFile", - "parameters": [ - { - "name": "orderId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "downloadId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "summary": "Fetch addresses of a customer", + "description": "Lists all addresses of the current customer and allows filtering them based on a criteria.", + "operationId": "listAddress", + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } } - }, - { - "$ref": "#/components/parameters/swLanguageId" } - ], + }, "responses": { "200": { - "description": "An arbitrary binary file.", + "description": "", "content": { - "application/octet-stream": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "allOf": [ + { + "type": "object", + "required": [ + "elements" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomerAddress" + } + } + } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -23042,28 +22766,8 @@ "ApiKey": [], "ContextToken": [] } - ] - } - }, - "/country-state/{countryId}": { - "post": { - "tags": [ - "System & Context", - "Endpoints supporting Criteria " ], - "summary": "Fetch the states of a country", - "description": "Perform a filtered search the states for a country", - "operationId": "readCountryState", "parameters": [ - { - "name": "countryId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, { "name": "sw-include-search-info", "in": "header", @@ -23081,468 +22785,517 @@ { "$ref": "#/components/parameters/swLanguageId" } + ] + } + }, + "/account/login": { + "post": { + "tags": [ + "Login & Registration" ], + "summary": "Log in a customer", + "description": "Logs in customers given their credentials.", + "operationId": "loginCustomer", "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "username", + "password" + ], + "properties": { + "username": { + "description": "Email", + "type": "string" + }, + "password": { + "description": "Password", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "$ref": "#/components/responses/CountryStateListResponse" + "$ref": "#/components/responses/ContextTokenResponse" + }, + "401": { + "description": "If credentials are incorrect an error is returned", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + } + } + } } }, "security": [ { "ApiKey": [] } - ] - }, - "get": { - "tags": [ - "System & Context", - "Endpoints supporting Criteria " ], - "summary": "Fetch the states of a country", - "description": "Perform a filtered search the states for a country", - "operationId": "readCountryStateGet", "parameters": [ { - "name": "countryId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/account/login/imitate-customer": { + "post": { + "tags": [ + "Login & Registration" + ], + "summary": "Imitate the log in as a customer", + "description": "Imitate the log in as a customer given a generated token.", + "operationId": "imitateCustomerLogin", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "token", + "customerId", + "userId" + ], + "properties": { + "token": { + "description": "Generated customer impersonation token", + "type": "string" + }, + "customerId": { + "description": "ID of the customer", + "type": "string" + }, + "userId": { + "description": "ID of the user who generated the token", + "type": "string" + } + }, + "type": "object" + } } + } + }, + "responses": { + "200": { + "$ref": "#/components/responses/ContextTokenResponse" }, + "400": { + "description": "If the token is incorrect an error is returned", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + } + } + } + } + }, + "security": [ { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaFields" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "$ref": "#/components/parameters/CompressedCriteria" - }, + "ApiKey": [] + } + ], + "parameters": [ { "$ref": "#/components/parameters/swLanguageId" } + ] + } + }, + "/account/logout": { + "post": { + "tags": [ + "Login & Registration" ], + "summary": "Log out a customer", + "description": "Logs out a customer.", + "operationId": "logoutCustomer", "responses": { "200": { - "$ref": "#/components/responses/CountryStateListResponse" + "$ref": "#/components/responses/ContextTokenResponse" + }, + "403": { + "$ref": "#/components/responses/403" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" } ] } }, - "/breadcrumb/{id}": { - "get": { + "/account/register-confirm": { + "post": { "tags": [ - "Experimental", - "Breadcrumb" + "Login & Registration" ], - "summary": "Fetch a breadcrumb", - "description": "Perform search to get category or product breadcrumb. \n\nExperimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", - "operationId": "readBreadcrumb", - "parameters": [ - { - "name": "id", - "in": "path", - "description": "UUID for product or category", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "summary": "Confirm a customer registration", + "description": "Confirms a customer registration when double opt-in is activated.\n\nLearn more about double opt-in registration in our guide \"Register a customer\".", + "operationId": "registerConfirm", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "hash", + "em" + ], + "properties": { + "hash": { + "description": "Hash from the email received", + "type": "string" + }, + "em": { + "description": "Email hash from the email received", + "type": "string" + } + }, + "type": "object" + } } + } + }, + "responses": { + "200": { + "description": "Returns the logged in customer. The customer is automatically logged in with the `sw-context-token` header provided, which can be reused for subsequent requests." }, - { - "name": "type", - "in": "query", - "description": "Type: category or product (optional - default: product)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "product", - "category" - ] - } + "404": { + "description": "No hash provided" }, + "412": { + "description": "The customer has already been confirmed" + } + }, + "security": [ { - "name": "referrerCategoryId", - "in": "query", - "description": "UUID for referrer category only used for product breadcrumb", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, + "ApiKey": [] + } + ], + "parameters": [ { "$ref": "#/components/parameters/swLanguageId" } + ] + } + }, + "/account/register": { + "post": { + "tags": [ + "Login & Registration" ], + "summary": "Register a customer", + "description": "Registers a customer. Used both for normal customers and guest customers.See the Guide \"Register a customer\" for more information on customer registration.", + "operationId": "register", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "email": { + "description": "Email of the customer. Has to be unique, unless `guest` is `true`", + "type": "string" + }, + "password": { + "description": "Password for the customer. Required, unless `guest` is `true`", + "type": "string" + }, + "salutationId": { + "description": "Id of the salutation for the customer account. Fetch options using `salutation` endpoint.", + "type": "string" + }, + "firstName": { + "description": "Customer first name. Value will be reused for shipping and billing address if not provided explicitly.", + "type": "string" + }, + "lastName": { + "description": "Customer last name. Value will be reused for shipping and billing address if not provided explicitly.", + "type": "string" + }, + "acceptedDataProtection": { + "description": "Flag indicating accepted data protection", + "type": "boolean" + }, + "storefrontUrl": { + "description": "URL of the storefront for that registration. Used in confirmation emails. Has to be one of the configured domains of the sales channel.", + "type": "string" + }, + "requestedGroupId": { + "description": "Optional customer group registration request. The customer is created in the current sales channel group and this field stores the requested target group. The group must be available for registration in the current sales channel.", + "type": "string" + }, + "billingAddress": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "shippingAddress": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "guest": { + "description": "If set, will create a guest customer. Guest customers can re-use an email address and don't need a password.", + "type": "boolean", + "default": false + }, + "birthdayDay": { + "description": "Birthday day", + "type": "integer" + }, + "birthdayMonth": { + "description": "Birthday month", + "type": "integer" + }, + "birthdayYear": { + "description": "Birthday year", + "type": "integer" + }, + "title": { + "description": "(Academic) title of the customer", + "type": "string" + }, + "affiliateCode": { + "description": "Field can be used to store an affiliate tracking code", + "type": "string" + }, + "campaignCode": { + "description": "Field can be used to store a campaign tracking code", + "type": "string" + } + }, + "required": [ + "email", + "password", + "firstName", + "lastName", + "acceptedDataProtection", + "storefrontUrl", + "billingAddress" + ], + "oneOf": [ + { + "properties": { + "accountType": { + "description": "Type of the customer account. Default value is 'private'.", + "type": "string", + "enum": [ + "private" + ], + "default": "private" + }, + "company": { + "type": "null" + }, + "vatIds": { + "type": "null" + } + } + }, + { + "required": [ + "accountType", + "company", + "vatIds" + ], + "properties": { + "accountType": { + "description": "Type of the customer account. Can be `private` or `business`.", + "type": "string", + "enum": [ + "business" + ] + }, + "company": { + "description": "Company of the customer. Only required when `accountType` is `business`.", + "type": "string" + }, + "vatIds": { + "description": "VAT IDs of the customer's company. Only valid when `accountType` is `business`.", + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + } + } + } + ], + "type": "object" + } + } + } + }, "responses": { "200": { - "description": "Search result containing SeoUrl\\'s to be used as breadcrumb.", + "description": "Success", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BreadcrumbCollection" + "$ref": "#/components/schemas/Customer" } } } - }, - "400": { - "$ref": "#/components/responses/400" } }, "security": [ { "ApiKey": [] } - ] - } - }, - "/cms/{id}": { - "post": { - "tags": [ - "Content" ], - "summary": "Fetch and resolve a CMS page", - "description": "Loads a content management page by its identifier and resolve the slot data. This could be media files, product listing and so on.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `sections` - Content sections within the CMS page (layout blocks containing slots)\n- `previewMedia` - Preview image for the CMS page in admin panel and page selection\n- `landingPages` - Landing pages using this CMS layout", - "operationId": "readCms", "parameters": [ - { - "name": "id", - "in": "path", - "description": "Identifier of the CMS page to be resolved", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } - }, { "$ref": "#/components/parameters/swLanguageId" } + ] + } + }, + "/account/recovery-password-confirm": { + "post": { + "tags": [ + "Profile" ], + "summary": "Reset a password with recovery credentials", + "description": "This operation is Step 2 of the password reset flow. It is required to conduct Step 1 \"Send a password recovery mail\" in order to obtain the required credentials for this step.Resets a customer's password using credentials from a password recovery mail as a validation.", + "operationId": "recoveryPassword", "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "slots": { - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", - "type": "string" - } - }, - "type": "object" + "required": [ + "hash", + "newPassword", + "newPasswordConfirm" + ], + "properties": { + "hash": { + "description": "Parameter from the link in the confirmation mail sent in Step 1", + "type": "string" + }, + "newPassword": { + "description": "New password for the customer", + "type": "string" }, - { - "$ref": "#/components/schemas/ProductListingCriteria" + "newPasswordConfirm": { + "description": "Confirmation of the new password", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "The loaded cms page", + "description": "Returns a success response indicating a successful update.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CmsPage" + "$ref": "#/components/schemas/SuccessResponse" } } } - }, - "404": { - "$ref": "#/components/responses/404" } }, "security": [ { "ApiKey": [] } - ] - }, - "get": { - "tags": [ - "Content" ], - "summary": "Fetch and resolve a CMS page", - "description": "Loads a content management page by its identifier and resolve the slot data. This could be media files, product listing and so on.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `sections` - Content sections within the CMS page (layout blocks containing slots)\n- `previewMedia` - Preview image for the CMS page in admin panel and page selection\n- `landingPages` - Landing pages using this CMS layout", - "operationId": "readCmsGet", "parameters": [ - { - "name": "id", - "in": "path", - "description": "Identifier of the CMS page to be resolved", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "slots", - "in": "query", - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", - "schema": { - "type": "string" - } - }, - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "name": "limit", - "in": "query", - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "schema": { - "type": "integer", - "minimum": 0 - } - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaFields" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "name": "order", - "in": "query", - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "schema": { - "type": "string" - } - }, - { - "name": "p", - "in": "query", - "description": "Search result page", - "schema": { - "type": "integer", - "default": 1 - } - }, - { - "name": "manufacturer", - "in": "query", - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", - "schema": { - "type": "string" - } - }, - { - "name": "min-price", - "in": "query", - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "max-price", - "in": "query", - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "rating", - "in": "query", - "description": "Filter products with a minimum average rating.", - "schema": { - "type": "integer" - } - }, - { - "name": "shipping-free", - "in": "query", - "description": "Filters products that are marked as shipping-free.", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "name": "properties", - "in": "query", - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", - "schema": { - "type": "string" - } - }, - { - "name": "reduce-aggregations", - "in": "query", - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", - "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, { "$ref": "#/components/parameters/swLanguageId" } + ] + } + }, + "/account/recovery-password": { + "post": { + "tags": [ + "Profile" ], + "summary": "Send a password recovery mail", + "description": "This operation is Step 1 of the password reset flow. Make sure to implement Step 2 \"Reset password with recovery credentials\" in order to allow for the complete flow in your application. Sends a recovery mail containing a link with credentials that allows a customer to reset their password.", + "operationId": "sendRecoveryMail", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "email", + "storefrontUrl" + ], + "properties": { + "email": { + "description": "E-Mail address to identify the customer", + "type": "string" + }, + "storefrontUrl": { + "description": "URL of the storefront to use for the generated reset link. It has to be a domain that is configured in the sales channel domain settings.", + "type": "string" + } + }, + "type": "object" + } + } + } + }, "responses": { "200": { - "description": "The loaded cms page", + "description": "If email corresponds to an existing customer, a mail will be sent out to that customer containing a link assembled using the following schema:\n\nReturns a success indicating a successful initialisation of the reset flow.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CmsPage" + "$ref": "#/components/schemas/SuccessResponse" } } } - }, - "404": { - "$ref": "#/components/responses/404" } }, "security": [ { "ApiKey": [] } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ] } }, - "/customer/wishlist/add/{productId}": { - "post": { + "/account/address/default-shipping/{addressId}": { + "patch": { "tags": [ - "Wishlist" + "Address" ], - "summary": "Add a product to a wishlist", - "description": "Adds a product to a customers wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "addProductOnWishlist", + "summary": "Change a customer's default shipping address", + "description": "Updates the default (preselected) shipping addresses of a customer.", + "operationId": "defaultShippingAddress", "parameters": [ { - "name": "productId", + "name": "addressId", "in": "path", - "description": "Identifier of the product to be added.", + "description": "Address ID", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } }, { @@ -23551,14 +23304,7 @@ ], "responses": { "200": { - "description": "Returns a success response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } + "description": "" } }, "security": [ @@ -23569,58 +23315,31 @@ ] } }, - "/customer/wishlist": { - "post": { + "/account/address/default-billing/{addressId}": { + "patch": { "tags": [ - "Wishlist", - "Endpoints supporting Criteria " + "Address" ], - "summary": "Fetch a wishlist", - "description": "Fetch a customer's wishlist. Products on the wishlist can be filtered using a criteria object.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "readCustomerWishlist", + "summary": "Change a customer's default billing address", + "description": "Updates the default (preselected) billing addresses of a customer.", + "operationId": "defaultBillingAddress", "parameters": [ { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, + "name": "addressId", + "in": "path", + "description": "Address ID", + "required": true, "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" + "type": "string" } }, { "$ref": "#/components/parameters/swLanguageId" } ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } - } - } - }, "responses": { "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/WishlistLoadRouteResponse" - } - } - } + "description": "" } }, "security": [ @@ -23631,42 +23350,37 @@ ] } }, - "/customer/wishlist/merge": { + "/account/address": { "post": { "tags": [ - "Wishlist" + "Address" ], - "summary": "Create a wishlist for a customer", - "description": "Create a new wishlist for a logged in customer or extend the existing wishlist given a set of products.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * A customer can only have a single wishlist.\n * The wishlist feature has to be activated.", - "operationId": "mergeProductOnWishlist", + "summary": "Create a new address for a customer", + "description": "Creates a new address for a customer.", + "operationId": "createCustomerAddress", "requestBody": { - "required": true, "content": { "application/json": { "schema": { - "properties": { - "productIds": { - "description": "List product id", - "type": "array", - "items": { - "description": "product id", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - }, - "type": "object" + "$ref": "#/components/schemas/CustomerAddressBody" } } } }, "responses": { "200": { - "description": "Returns a success response.", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "allOf": [ + { + "$ref": "#/components/schemas/CustomerAddress" + }, + { + "$ref": "#/components/schemas/CustomerAddressRead" + } + ] } } } @@ -23685,70 +23399,85 @@ ] } }, - "/customer/wishlist/delete/{productId}": { - "delete": { + "/script/{hook}": { + "get": { "tags": [ - "Wishlist" + "API", + "Script", + "App" ], - "summary": "Remove a product from a wishlist", - "description": "Removes a product from a customer's wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "deleteProductOnWishlist", + "summary": "Access point for different api logics which are provided by apps over script hooks", + "operationId": "getScriptStoreApiRoute", "parameters": [ { - "name": "productId", + "name": "hook", "in": "path", - "description": "The identifier of the product to be removed from the wishlist.", + "description": "Dynamic hook which used to build the hook name", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "description": "Returns a success response indicating a successful removal.", + "description": "Returns different structures of results based on the called script.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "oneOf": [ + { + "type": "object", + "additionalProperties": true + }, + { + "type": "null" + } + ] } - } - } - }, - "404": { - "description": "The removal of the product failed. Probably because the product could not be found on the wishlist.", - "content": { - "application/json": { + }, + "application/vnd.api+json": { "schema": { - "$ref": "#/components/schemas/failure" + "oneOf": [ + { + "type": "object", + "additionalProperties": true + }, + { + "type": "null" + } + ] } } } + }, + "204": { + "description": "No data by default" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] - } - }, - "/app-system/{name}/generate-token": { + }, "post": { "tags": [ - "App system" + "API", + "Script", + "App" ], - "summary": "Generate JWT token for app system backend", - "description": "Generate JWT token for authenticated communication with the app server", - "operationId": "generateJWTAppSystemAppServer", + "summary": "Access point for different api logics which are provided by apps over script hooks", + "operationId": "postScriptStoreApiRoute", "parameters": [ { + "name": "hook", "in": "path", - "name": "name", + "description": "Dynamic hook which used to build the hook name", "required": true, - "description": "Name of the app", "schema": { "type": "string" } @@ -23757,117 +23486,155 @@ "$ref": "#/components/parameters/swLanguageId" } ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "type": "object" - } - } - } - }, "responses": { "200": { - "description": "", + "description": "Returns different structures of results based on the called script.", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "token": { - "type": "string" + "oneOf": [ + { + "type": "object", + "additionalProperties": true }, - "expires": { - "type": "string", - "format": "date-time" + { + "type": "null" + } + ] + } + }, + "application/vnd.api+json": { + "schema": { + "oneOf": [ + { + "type": "object", + "additionalProperties": true }, - "shopId": { - "type": "string" + { + "type": "null" } + ] + } + } + } + }, + "204": { + "description": "No data by default" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/contact-form": { + "post": { + "tags": [ + "Content" + ], + "summary": "Submit a contact form message", + "description": "Used for submitting contact forms. Be aware that there can be more required fields, depending on the system settings.", + "operationId": "sendContactMail", + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "email", + "subject", + "comment" + ], + "properties": { + "salutationId": { + "description": "Identifier of the salutation. Use `/api/salutation` endpoint to fetch possible values.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "firstName": { + "description": "Firstname. This field may be required depending on the system settings.", + "type": "string" + }, + "lastName": { + "description": "Lastname. This field may be required depending on the system settings.", + "type": "string" + }, + "email": { + "description": "Email address", + "type": "string" + }, + "phone": { + "description": "Phone. This field may be required depending on the system settings.", + "type": "string" + }, + "subject": { + "description": "The subject of the contact form.", + "type": "string" + }, + "comment": { + "description": "The message of the contact form", + "type": "string" + }, + "navigationId": { + "description": "Identifier of the navigation page. Can be used to override the configuration.\nTake a look at the settings of a category containing a concat form in the administration.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "slotId": { + "description": "Identifier of the cms element", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "cmsPageType": { + "description": "Type of the content management page", + "type": "string" + }, + "entityName": { + "description": "Entity name for slot config", + "type": "string" } - } + }, + "type": "object" } } } }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/cookie-groups": { - "get": { - "tags": [ - "Experimental", - "Cookies" - ], - "summary": "Fetch all cookie groups", - "description": "Fetch all cookie groups available in the system with configuration hash. Experimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", - "operationId": "readCookieGroups", "responses": { "200": { - "description": "Successful response with a collection of cookie groups and their configuration hash.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CookieRouteResponse" - } - } - } - }, - "400": { - "$ref": "#/components/responses/400" + "description": "Message sent successful." } }, "security": [ { "ApiKey": [] } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } ] } }, - "/product-listing/{categoryId}": { + "/cms/{id}": { "post": { "tags": [ - "Product" + "Content" ], - "summary": "Fetch a product listing by category", - "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", - "operationId": "readProductListing", + "summary": "Fetch and resolve a CMS page", + "description": "Loads a content management page by its identifier and resolve the slot data. This could be media files, product listing and so on.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `sections` - Content sections within the CMS page (layout blocks containing slots)\n- `previewMedia` - Preview image for the CMS page in admin panel and page selection\n- `landingPages` - Landing pages using this CMS layout", + "operationId": "readCms", "parameters": [ { - "name": "categoryId", + "name": "id", "in": "path", - "description": "Identifier of a category.", + "description": "Identifier of the CMS page to be resolved", "required": true, "schema": { - "type": "string" - } - }, - { - "name": "p", - "in": "query", - "description": "The page number to fetch.", - "required": false, - "schema": { - "type": "integer" - } - }, - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Determines if the response must contain a SeoUrl entity for a product entity", - "required": false, - "schema": { - "type": "boolean" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, { @@ -23894,10 +23661,16 @@ "schema": { "allOf": [ { - "$ref": "#/components/schemas/ProductListingCriteria" + "properties": { + "slots": { + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", + "type": "string" + } + }, + "type": "object" }, { - "$ref": "#/components/schemas/ProductListingFlags" + "$ref": "#/components/schemas/ProductListingCriteria" } ] } @@ -23906,14 +23679,17 @@ }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", + "description": "The loaded cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "$ref": "#/components/schemas/CmsPage" } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -23924,28 +23700,28 @@ }, "get": { "tags": [ - "Product" + "Content" ], - "summary": "Fetch a product listing by category", - "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", - "operationId": "readProductListingGet", + "summary": "Fetch and resolve a CMS page", + "description": "Loads a content management page by its identifier and resolve the slot data. This could be media files, product listing and so on.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `sections` - Content sections within the CMS page (layout blocks containing slots)\n- `previewMedia` - Preview image for the CMS page in admin panel and page selection\n- `landingPages` - Landing pages using this CMS layout", + "operationId": "readCmsGet", "parameters": [ { - "name": "categoryId", + "name": "id", "in": "path", - "description": "Identifier of a category.", + "description": "Identifier of the CMS page to be resolved", "required": true, "schema": { - "type": "string" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Determines if the response must contain a SeoUrl entity for a product entity", - "required": false, + "name": "slots", + "in": "query", + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", "schema": { - "type": "boolean" + "type": "string" } }, { @@ -24084,26 +23860,23 @@ ] } }, - { - "$ref": "#/components/parameters/noAggregations" - }, - { - "$ref": "#/components/parameters/onlyAggregations" - }, { "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", + "description": "The loaded cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "$ref": "#/components/schemas/CmsPage" } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -24113,44 +23886,151 @@ ] } }, - "/_info/openapi3.json": { + "/media": { + "post": { + "tags": [ + "Content" + ], + "summary": "Fetch and resolve Media Entities", + "description": "Fetch one or multiple Media Entities with the corresponding Identifier.", + "operationId": "readMedia", + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "ids": { + "description": "Identifier (UUID) of the media entity to be fetched.", + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + }, + "type": "object", + "required": [ + "ids" + ] + } + } + } + }, + "responses": { + "200": { + "description": "The loaded MediaCollection containing the requested Media Entities.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Media" + } + } + } + } + }, + "404": { + "$ref": "#/components/responses/404" + } + }, + "security": [ + { + "ApiKey": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + }, "get": { "tags": [ - "System Info & Health Check" + "Content" ], - "summary": "Get OpenAPI Specification", - "description": "Get information about the store API in OpenAPI format.", - "operationId": "api-info", + "summary": "Fetch and resolve Media Entities", + "description": "Fetch one or multiple Media Entities with the corresponding Identifier.", + "operationId": "readMediaGet", "parameters": [ { - "name": "type", + "name": "ids[]", "in": "query", - "description": "Type of the api", + "description": "Identifier (UUID) of the media entity to be fetched.", + "required": true, "schema": { - "type": "string", - "enum": [ - "jsonapi", - "json" - ] + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "responses": { + "200": { + "description": "The loaded MediaCollection containing the requested Media Entities.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Media" + } + } + } } + }, + "404": { + "$ref": "#/components/responses/404" } - ], - "responses": { - "200": { - "$ref": "#/components/responses/OpenApi3" + }, + "security": [ + { + "ApiKey": [] } - } + ] } }, - "/payment-method": { + "/product-listing/{categoryId}": { "post": { "tags": [ - "Payment Method", - "Endpoints supporting Criteria " + "Product" ], - "summary": "Loads all available payment methods", - "operationId": "readPaymentMethod", + "summary": "Fetch a product listing by category", + "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", + "operationId": "readProductListing", "parameters": [ + { + "name": "categoryId", + "in": "path", + "description": "Identifier of a category.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "p", + "in": "query", + "description": "The page number to fetch.", + "required": false, + "schema": { + "type": "integer" + } + }, + { + "name": "sw-include-seo-urls", + "in": "header", + "description": "Determines if the response must contain a SeoUrl entity for a product entity", + "required": false, + "schema": { + "type": "boolean" + } + }, { "name": "sw-include-search-info", "in": "header", @@ -24170,22 +24050,15 @@ } ], "requestBody": { - "required": true, "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/Criteria" + "$ref": "#/components/schemas/ProductListingCriteria" }, { - "properties": { - "onlyAvailable": { - "description": "List only available", - "type": "boolean" - } - }, - "type": "object" + "$ref": "#/components/schemas/ProductListingFlags" } ] } @@ -24194,7 +24067,14 @@ }, "responses": { "200": { - "$ref": "#/components/responses/PaymentMethodListResponse" + "description": "Returns a product listing containing all products and additional fields to display a listing.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + } } }, "security": [ @@ -24205,17 +24085,41 @@ }, "get": { "tags": [ - "Payment Method", - "Endpoints supporting Criteria " + "Product" ], - "summary": "Loads all available payment methods", - "operationId": "readPaymentMethodGet", + "summary": "Fetch a product listing by category", + "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", + "operationId": "readProductListingGet", "parameters": [ + { + "name": "categoryId", + "in": "path", + "description": "Identifier of a category.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "sw-include-seo-urls", + "in": "header", + "description": "Determines if the response must contain a SeoUrl entity for a product entity", + "required": false, + "schema": { + "type": "boolean" + } + }, { "$ref": "#/components/parameters/criteriaPage" }, { - "$ref": "#/components/parameters/criteriaLimit" + "name": "limit", + "in": "query", + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "schema": { + "type": "integer", + "minimum": 0 + } }, { "$ref": "#/components/parameters/criteriaTerm" @@ -24257,128 +24161,107 @@ "$ref": "#/components/parameters/criteriaExcludes" }, { - "$ref": "#/components/parameters/CompressedCriteria" + "name": "order", + "in": "query", + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "schema": { + "type": "string" + } }, { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/PaymentMethodListResponse" - } - }, - "security": [ + "name": "p", + "in": "query", + "description": "Search result page", + "schema": { + "type": "integer", + "default": 1 + } + }, { - "ApiKey": [] - } - ] - } - }, - "/contact-form": { - "post": { - "tags": [ - "Content" - ], - "summary": "Submit a contact form message", - "description": "Used for submitting contact forms. Be aware that there can be more required fields, depending on the system settings.", - "operationId": "sendContactMail", - "parameters": [ + "name": "manufacturer", + "in": "query", + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "email", - "subject", - "comment" - ], - "properties": { - "salutationId": { - "description": "Identifier of the salutation. Use `/api/salutation` endpoint to fetch possible values.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "description": "Firstname. This field may be required depending on the system settings.", - "type": "string" - }, - "lastName": { - "description": "Lastname. This field may be required depending on the system settings.", - "type": "string" - }, - "email": { - "description": "Email address", - "type": "string" - }, - "phone": { - "description": "Phone. This field may be required depending on the system settings.", - "type": "string" - }, - "subject": { - "description": "The subject of the contact form.", - "type": "string" - }, - "comment": { - "description": "The message of the contact form", - "type": "string" - }, - "navigationId": { - "description": "Identifier of the navigation page. Can be used to override the configuration.\nTake a look at the settings of a category containing a concat form in the administration.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "slotId": { - "description": "Identifier of the cms element", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "cmsPageType": { - "description": "Type of the content management page", - "type": "string" - }, - "entityName": { - "description": "Entity name for slot config", - "type": "string" - } + "name": "min-price", + "in": "query", + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "max-price", + "in": "query", + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "rating", + "in": "query", + "description": "Filter products with a minimum average rating.", + "schema": { + "type": "integer" + } + }, + { + "name": "shipping-free", + "in": "query", + "description": "Filters products that are marked as shipping-free.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "properties", + "in": "query", + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "reduce-aggregations", + "in": "query", + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "schema": { + "oneOf": [ + { + "type": "string" }, - "type": "object" - } + { + "type": "null" + } + ] } - } - }, - "responses": { - "200": { - "description": "Message sent successful." - } - }, - "security": [ + }, { - "ApiKey": [] + "$ref": "#/components/parameters/noAggregations" + }, + { + "$ref": "#/components/parameters/onlyAggregations" + }, + { + "$ref": "#/components/parameters/swLanguageId" } - ] - } - }, - "/context": { - "get": { - "tags": [ - "System & Context" ], - "summary": "Fetch the current context", - "description": "Fetches the current context. This includes for example the `customerGroup`, `currency`, `taxRules` and many more.", - "operationId": "readContext", "responses": { "200": { - "description": "Returns the current context.", + "description": "Returns a product listing containing all products and additional fields to display a listing.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SalesChannelContext" + "$ref": "#/components/schemas/ProductListingResult" } } } @@ -24388,67 +24271,36 @@ { "ApiKey": [] } + ] + } + }, + "/app-system/{name}/generate-token": { + "post": { + "tags": [ + "App system" ], + "summary": "Generate JWT token for app system backend", + "description": "Generate JWT token for authenticated communication with the app server", + "operationId": "generateJWTAppSystemAppServer", "parameters": [ + { + "in": "path", + "name": "name", + "required": true, + "description": "Name of the app", + "schema": { + "type": "string" + } + }, { "$ref": "#/components/parameters/swLanguageId" } - ] - }, - "patch": { - "tags": [ - "System & Context" ], - "summary": "Modify the current context", - "description": "Used for switching the context. A typical example would be changing the language or changing the currency.", - "operationId": "updateContext", "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "properties": { - "currencyId": { - "description": "Currency", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "languageId": { - "description": "Language", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "billingAddressId": { - "description": "Billing Address", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shippingAddressId": { - "description": "Shipping Address", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "paymentMethodId": { - "description": "Payment Method", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shippingMethodId": { - "description": "Shipping Method", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryId": { - "description": "Country", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryStateId": { - "description": "Country State", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, "type": "object" } } @@ -24456,169 +24308,185 @@ }, "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "token": { + "type": "string" + }, + "expires": { + "type": "string", + "format": "date-time" + }, + "shopId": { + "type": "string" + } + } + } + } + } } }, "security": [ { "ApiKey": [] } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } ] } }, - "/context/gateway": { + "/customer/wishlist/add/{productId}": { "post": { - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "appName" - ], - "properties": { - "appName": { - "type": "string" - }, - "data": { - "type": "object" - } - }, - "type": "object" - } + "tags": [ + "Wishlist" + ], + "summary": "Add a product to a wishlist", + "description": "Adds a product to a customers wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "addProductOnWishlist", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Identifier of the product to be added.", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } - }, - "tags": [ - "Gateway" ], - "summary": "Call the context gateway", - "description": "Call the context gateway, which is used to manipulate certain aspects of context (e.g. selected payment methods, register customer, etc.).", - "operationId": "contextGateway", "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "400": { - "description": "App server communication error" - }, - "422": { - "description": "Error provided by App Server with message to show customer" + "description": "Returns a success response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } } }, "security": [ { - "ApiKey": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" + "ApiKey": [], + "ContextToken": [] } ] - }, - "get": { + } + }, + "/customer/wishlist": { + "post": { "tags": [ - "Gateway" + "Wishlist", + "Endpoints supporting Criteria " ], - "summary": "Call the context gateway", - "description": "Call the context gateway, which is used to manipulate certain aspects of context (e.g. selected payment methods, register customer, etc.). Please prefer using the POST version of this endpoint.", - "operationId": "contextGatewayGet", + "summary": "Fetch a wishlist", + "description": "Fetch a customer's wishlist. Products on the wishlist can be filtered using a criteria object.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "readCustomerWishlist", "parameters": [ { - "name": "appName", - "in": "query", - "required": true, + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, "schema": { - "type": "string" + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" } }, - { - "name": "data", - "in": "query", - "schema": { - "type": "object" - }, - "style": "deepObject" - }, { "$ref": "#/components/parameters/swLanguageId" } - ], + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } + } + } + }, "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "400": { - "description": "App server communication error" - }, - "422": { - "description": "Error provided by App Server with message to show customer" + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WishlistLoadRouteResponse" + } + } + } } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/media": { + "/customer/wishlist/merge": { "post": { "tags": [ - "Content" + "Wishlist" ], - "summary": "Fetch and resolve Media Entities", - "description": "Fetch one or multiple Media Entities with the corresponding Identifier.", - "operationId": "readMedia", + "summary": "Create a wishlist for a customer", + "description": "Create a new wishlist for a logged in customer or extend the existing wishlist given a set of products.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * A customer can only have a single wishlist.\n * The wishlist feature has to be activated.", + "operationId": "mergeProductOnWishlist", "requestBody": { + "required": true, "content": { "application/json": { "schema": { "properties": { - "ids": { - "description": "Identifier (UUID) of the media entity to be fetched.", + "productIds": { + "description": "List product id", "type": "array", "items": { + "description": "product id", "type": "string", "pattern": "^[0-9a-f]{32}$" } } }, - "type": "object", - "required": [ - "ids" - ] + "type": "object" } } } }, "responses": { "200": { - "description": "The loaded MediaCollection containing the requested Media Entities.", + "description": "Returns a success response.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Media" - } + "$ref": "#/components/schemas/SuccessResponse" } } } - }, - "404": { - "$ref": "#/components/responses/404" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ], "parameters": [ @@ -24626,66 +24494,67 @@ "$ref": "#/components/parameters/swLanguageId" } ] - }, - "get": { + } + }, + "/customer/wishlist/delete/{productId}": { + "delete": { "tags": [ - "Content" + "Wishlist" ], - "summary": "Fetch and resolve Media Entities", - "description": "Fetch one or multiple Media Entities with the corresponding Identifier.", - "operationId": "readMediaGet", + "summary": "Remove a product from a wishlist", + "description": "Removes a product from a customer's wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "deleteProductOnWishlist", "parameters": [ { - "name": "ids[]", - "in": "query", - "description": "Identifier (UUID) of the media entity to be fetched.", + "name": "productId", + "in": "path", + "description": "The identifier of the product to be removed from the wishlist.", "required": true, "schema": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "type": "string", + "pattern": "^[0-9a-f]{32}$" } - }, - { - "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "description": "The loaded MediaCollection containing the requested Media Entities.", + "description": "Returns a success response indicating a successful removal.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Media" - } + "$ref": "#/components/schemas/SuccessResponse" } } } }, "404": { - "$ref": "#/components/responses/404" + "description": "The removal of the product failed. Probably because the product could not be found on the wishlist.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + } + } + } } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/currency": { + "/category": { "post": { "tags": [ - "System & Context", + "Category", "Endpoints supporting Criteria " ], - "summary": "Fetch currencies", - "description": "Perform a filtered search for currencies.", - "operationId": "readCurrency", + "summary": "Fetch a list of categories", + "description": "Perform a filtered search for categories.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", + "operationId": "readCategoryList", "parameters": [ { "name": "sw-include-search-info", @@ -24712,7 +24581,7 @@ "schema": { "allOf": [ { - "$ref": "#/components/schemas/NoneFieldsCriteria" + "$ref": "#/components/schemas/Criteria" } ] } @@ -24721,7 +24590,7 @@ }, "responses": { "200": { - "$ref": "#/components/responses/CurrencyListResponse" + "$ref": "#/components/responses/CategoryListResponse" } }, "security": [ @@ -24732,12 +24601,12 @@ }, "get": { "tags": [ - "System & Context", + "Category", "Endpoints supporting Criteria " ], - "summary": "Fetch currencies", - "description": "Perform a filtered search for currencies.", - "operationId": "readCurrencyGet", + "summary": "Fetch a list of categories", + "description": "Perform a filtered search for categories.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", + "operationId": "readCategoryListGet", "parameters": [ { "$ref": "#/components/parameters/criteriaPage" @@ -24769,6 +24638,9 @@ { "$ref": "#/components/parameters/criteriaAggregations" }, + { + "$ref": "#/components/parameters/criteriaFields" + }, { "$ref": "#/components/parameters/criteriaGrouping" }, @@ -24782,7 +24654,7 @@ "$ref": "#/components/parameters/criteriaExcludes" }, { - "$ref": "#/components/parameters/CompressedNoneFieldsCriteria" + "$ref": "#/components/parameters/CompressedCriteria" }, { "$ref": "#/components/parameters/swLanguageId" @@ -24790,7 +24662,7 @@ ], "responses": { "200": { - "$ref": "#/components/responses/CurrencyListResponse" + "$ref": "#/components/responses/CategoryListResponse" } }, "security": [ @@ -24800,134 +24672,55 @@ ] } }, - "/product-export/{accessKey}/{fileName}": { - "get": { + "/category/{navigationId}": { + "post": { "tags": [ - "Product" + "Category", + "Endpoints supporting Criteria " ], - "summary": "Export product export", - "operationId": "readProductExport", + "summary": "Fetch a single category", + "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", + "operationId": "readCategory", "parameters": [ { - "name": "accessKey", - "in": "path", - "description": "Access Key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "fileName", - "in": "path", - "description": "File Name", - "required": true, + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, "schema": { - "type": "string" + "type": "boolean" } }, { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "responses": { - "200": { - "description": "" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/_info/routes": { - "get": { - "summary": "Get API routes", - "operationId": "getRoutes", - "tags": [ - "System Info & Health Check" - ], - "responses": { - "200": { - "description": "Successful operation", - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "endpoints" - ], - "properties": { - "endpoints": { - "type": "array", - "items": { - "type": "object", - "required": [ - "methods", - "path" - ], - "properties": { - "methods": { - "type": "array", - "items": { - "type": "string" - } - }, - "path": { - "type": "string" - } - } - } - } - } - } - } - } - } - } - } - }, - "/search": { - "post": { - "tags": [ - "Product" - ], - "summary": "Search for products", - "description": "Performs a search for products which can be used to display a product listing.", - "operationId": "searchPage", - "parameters": [ - { - "name": "p", - "in": "query", - "description": "The page number to fetch.", + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", "required": false, "schema": { - "type": "integer" + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" } }, { - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "in": "header", - "name": "sw-include-seo-urls", - "required": false, + "name": "navigationId", + "in": "path", + "description": "Identifier of the category to be fetched", + "required": true, "schema": { - "type": "boolean" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, + "name": "slots", + "in": "query", + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" + "type": "string" } }, { @@ -24939,20 +24732,8 @@ "application/json": { "schema": { "allOf": [ - { - "properties": { - "search": { - "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", - "type": "string" - } - }, - "type": "object" - }, { "$ref": "#/components/schemas/ProductListingCriteria" - }, - { - "$ref": "#/components/schemas/ProductListingFlags" } ] } @@ -24961,11 +24742,11 @@ }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", + "description": "The loaded category with cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "$ref": "#/components/schemas/Category" } } } @@ -24979,26 +24760,36 @@ }, "get": { "tags": [ - "Product" + "Category", + "Endpoints supporting Criteria " ], - "summary": "Search for products", - "description": "Performs a search for products which can be used to display a product listing.", - "operationId": "searchPageGet", + "summary": "Fetch a single category", + "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", + "operationId": "readCategoryGet", "parameters": [ { - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "in": "header", "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", "required": false, "schema": { "type": "boolean" } }, { - "name": "search", + "name": "navigationId", + "in": "path", + "description": "Identifier of the category to be fetched", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "slots", "in": "query", - "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", - "required": false, + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", "schema": { "type": "string" } @@ -25139,23 +24930,17 @@ ] } }, - { - "$ref": "#/components/parameters/noAggregations" - }, - { - "$ref": "#/components/parameters/onlyAggregations" - }, { "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", + "description": "The loaded category with cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "$ref": "#/components/schemas/Category" } } } @@ -25168,227 +24953,130 @@ ] } }, - "/shipping-cost/product/{productId}": { - "get": { + "/payment-method": { + "post": { "tags": [ - "Cart", + "Payment Method", "Endpoints supporting Criteria " ], - "summary": "Calculate shipping costs for a product", - "description": "Calculates shipping costs for a single product using criteria-based shipping method selection.", - "operationId": "readShippingCostByProduct", + "summary": "Loads all available payment methods", + "operationId": "readPaymentMethod", "parameters": [ { - "name": "productId", - "in": "path", - "description": "The product identifier.", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "sw-language-id", + "name": "sw-include-search-info", "in": "header", - "description": "Instructs Shopware to return the response in the given language.", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", "required": false, "schema": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaFields" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "$ref": "#/components/parameters/CompressedCriteria" - } - ], - "responses": { - "200": { - "description": "The calculated shipping costs.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "type": "object", - "required": [ - "shippingCost", - "deliveryDate", - "shippingMethod" - ], - "properties": { - "shippingCost": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" - } - } - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - } - } - } + "enum": [ + "0", + "1" + ], + "default": "1" } }, - "400": { - "$ref": "#/components/responses/400" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/shipping-cost/cart": { - "get": { - "tags": [ - "Cart" - ], - "summary": "Calculate shipping costs for the cart", - "description": "Calculates shipping costs for the current cart across available shipping methods.", - "operationId": "readShippingCostsByCart", - "parameters": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "$ref": "#/components/parameters/swLanguageId" } ], - "responses": { - "200": { - "description": "The calculated shipping costs.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "type": "object", - "required": [ - "shippingCost", - "deliveryDate", - "shippingMethod" - ], - "properties": { - "shippingCost": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" - } - } - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + }, + { + "properties": { + "onlyAvailable": { + "description": "List only available", + "type": "boolean" } - } + }, + "type": "object" } - } + ] } } } }, + "responses": { + "200": { + "$ref": "#/components/responses/PaymentMethodListResponse" + } + }, "security": [ { "ApiKey": [] } ] - } - }, - "/checkout/cart": { + }, "get": { "tags": [ - "Cart" + "Payment Method", + "Endpoints supporting Criteria " ], - "summary": "Fetch or create a cart", - "description": "Used to fetch the current cart or for creating a new one.", - "operationId": "readCart", + "summary": "Loads all available payment methods", + "operationId": "readPaymentMethodGet", "parameters": [ + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" + }, { "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "description": "Cart", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Cart" - } - } - } + "$ref": "#/components/responses/PaymentMethodListResponse" } }, "security": [ @@ -25396,21 +25084,23 @@ "ApiKey": [] } ] - }, - "delete": { + } + }, + "/context": { + "get": { "tags": [ - "Cart" + "System & Context" ], - "summary": "Delete a cart", - "description": "This route deletes the cart of the customer.", - "operationId": "deleteCart", + "summary": "Fetch the current context", + "description": "Fetches the current context. This includes for example the `customerGroup`, `currency`, `taxRules` and many more.", + "operationId": "readContext", "responses": { - "204": { - "description": "Successfully deleted the cart", + "200": { + "description": "Returns the current context.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/SalesChannelContext" } } } @@ -25420,85 +25110,177 @@ { "ApiKey": [] } - ] - } - }, - "/checkout/cart/line-item": { - "post": { - "tags": [ - "Cart" ], - "summary": "Add items to the cart", - "description": "This route adds items to the cart. An item can be a product or promotion for example. They are referenced by the `referencedId`-parameter.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#adding-new-items-to-the-cart)", - "operationId": "addLineItem", "parameters": [ { "$ref": "#/components/parameters/swLanguageId" } + ] + }, + "patch": { + "tags": [ + "System & Context" ], + "summary": "Modify the current context", + "description": "Used for switching the context. A typical example would be changing the language or changing the currency.", + "operationId": "updateContext", "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CartItems" + "properties": { + "currencyId": { + "description": "Currency", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "languageId": { + "description": "Language", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "billingAddressId": { + "description": "Billing Address", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingAddressId": { + "description": "Shipping Address", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "paymentMethodId": { + "description": "Payment Method", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingMethodId": { + "description": "Shipping Method", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryId": { + "description": "Country", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryStateId": { + "description": "Country State", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "type": "object" } } } }, "responses": { "200": { - "description": "The updated cart.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Cart" - } + "$ref": "#/components/responses/ContextTokenResponse" + } + }, + "security": [ + { + "ApiKey": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/context/gateway": { + "post": { + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "appName" + ], + "properties": { + "appName": { + "type": "string" + }, + "data": { + "type": "object" + } + }, + "type": "object" } } + } + }, + "tags": [ + "Gateway" + ], + "summary": "Call the context gateway", + "description": "Call the context gateway, which is used to manipulate certain aspects of context (e.g. selected payment methods, register customer, etc.).", + "operationId": "contextGateway", + "responses": { + "200": { + "$ref": "#/components/responses/ContextTokenResponse" }, "400": { - "$ref": "#/components/responses/400" + "description": "App server communication error" + }, + "422": { + "description": "Error provided by App Server with message to show customer" } }, "security": [ { "ApiKey": [] } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ] }, - "delete": { + "get": { "tags": [ - "Cart" + "Gateway" ], - "summary": "Remove items from the cart", - "description": "DEPRECATED: use removeLineItem instead. This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", - "operationId": "removeLineItemDeprecated", - "deprecated": true, + "summary": "Call the context gateway", + "description": "Call the context gateway, which is used to manipulate certain aspects of context (e.g. selected payment methods, register customer, etc.). Please prefer using the POST version of this endpoint.", + "operationId": "contextGatewayGet", "parameters": [ { - "name": "ids", + "name": "appName", "in": "query", - "description": "A list of product identifiers.", "required": true, "schema": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "type": "string" } + }, + { + "name": "data", + "in": "query", + "schema": { + "type": "object" + }, + "style": "deepObject" + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "description": "The updated cart.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Cart" - } - } - } + "$ref": "#/components/responses/ContextTokenResponse" + }, + "400": { + "description": "App server communication error" + }, + "422": { + "description": "Error provided by App Server with message to show customer" } }, "security": [ @@ -25506,15 +25288,49 @@ "ApiKey": [] } ] - }, - "patch": { + } + }, + "/search": { + "post": { "tags": [ - "Cart" + "Product" ], - "summary": "Update items in the cart", - "description": "This route updates items in the cart. A typical example is updating the quantity of an item.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#updating-items-in-the-cart)", - "operationId": "updateLineItem", + "summary": "Search for products", + "description": "Performs a search for products which can be used to display a product listing.", + "operationId": "searchPage", "parameters": [ + { + "name": "p", + "in": "query", + "description": "The page number to fetch.", + "required": false, + "schema": { + "type": "integer" + } + }, + { + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "in": "header", + "name": "sw-include-seo-urls", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, { "$ref": "#/components/parameters/swLanguageId" } @@ -25523,18 +25339,34 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CartItemsUpdate" + "allOf": [ + { + "properties": { + "search": { + "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/ProductListingCriteria" + }, + { + "$ref": "#/components/schemas/ProductListingFlags" + } + ] } } } }, "responses": { "200": { - "description": "The updated cart.", + "description": "Returns a product listing containing all products and additional fields to display a listing.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "$ref": "#/components/schemas/ProductListingResult" } } } @@ -25545,52 +25377,186 @@ "ApiKey": [] } ] - } - }, - "/checkout/cart/line-item/delete": { - "post": { + }, + "get": { "tags": [ - "Cart" + "Product" ], - "summary": "Remove items from the cart", - "description": "This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", - "operationId": "removeLineItem", + "summary": "Search for products", + "description": "Performs a search for products which can be used to display a product listing.", + "operationId": "searchPageGet", "parameters": [ + { + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "in": "header", + "name": "sw-include-seo-urls", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "search", + "in": "query", + "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", + "required": false, + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "name": "limit", + "in": "query", + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "schema": { + "type": "integer", + "minimum": 0 + } + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "name": "order", + "in": "query", + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "schema": { + "type": "string" + } + }, + { + "name": "p", + "in": "query", + "description": "Search result page", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "manufacturer", + "in": "query", + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "min-price", + "in": "query", + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "max-price", + "in": "query", + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "rating", + "in": "query", + "description": "Filter products with a minimum average rating.", + "schema": { + "type": "integer" + } + }, + { + "name": "shipping-free", + "in": "query", + "description": "Filters products that are marked as shipping-free.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "properties", + "in": "query", + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "reduce-aggregations", + "in": "query", + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + { + "$ref": "#/components/parameters/noAggregations" + }, + { + "$ref": "#/components/parameters/onlyAggregations" + }, { "$ref": "#/components/parameters/swLanguageId" } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "ids" - ], - "properties": { - "ids": { - "description": "A list of product identifiers.", - "type": "array", - "minItems": 1, - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - }, - "type": "object" - } - } - } - }, "responses": { "200": { - "description": "The updated cart.", + "description": "Returns a product listing containing all products and additional fields to display a listing.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "$ref": "#/components/schemas/ProductListingResult" } } } @@ -25603,53 +25569,88 @@ ] } }, - "/checkout/order": { + "/document/download/{documentId}/{deepLinkCode}": { "post": { "tags": [ - "Order" + "Document" ], - "summary": "Create an order from a cart", - "description": "Creates a new order from the current cart and deletes the cart.\n\nIf you are using the [prepared payment flow](https://developer.shopware.com/docs/concepts/commerce/checkout-concept/payments#2.1-prepare-payment-optional), this endpoint also receives additional transaction details. The exact name of the parameters depends on the implementation of the corresponding *payment handler*.", - "operationId": "createOrder", + "summary": "Download generated document", + "description": "Returns generated document to download.", + "operationId": "download", "parameters": [ + { + "name": "documentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "deepLinkCode", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, { "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { - "description": "Contains additional metadata which is stored together with the order. It can also contain payment transaction details.", + "required": false, "content": { "application/json": { "schema": { + "type": "object", "properties": { - "customerComment": { - "description": "Adds a comment from the customer to the order.", - "type": "string" - }, - "affiliateCode": { - "description": "The affiliate code can be used to track which referrer the customer came through. An example could be `Price-comparison-company-XY`.", + "email": { "type": "string" }, - "campaignCode": { - "description": "The campaign code is used to track which action the customer came from. An example could be `Summer-Deals`", + "zipcode": { "type": "string" } }, - "type": "object" + "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." } } } }, "responses": { "200": { - "description": "Order", + "description": "Success", "content": { - "application/json": { + "application/pdf": { "schema": { - "$ref": "#/components/schemas/Order" + "type": "string", + "format": "binary" + } + }, + "text/html": { + "schema": { + "type": "string" + } + }, + "application/xml": { + "schema": { + "type": "string" } } } + }, + "204": { + "description": "DEPRECATED: Returns a no content response when no document is found. Will be changed in v6.8.0.0 and returns a 404 response instead." + }, + "403": { + "description": "Forbidden." + }, + "404": { + "description": "Document not found." + }, + "406": { + "description": "The requested mime type is not supported." } }, "security": [ @@ -25658,94 +25659,93 @@ "ContextToken": [] } ] - } - }, - "/checkout/gateway": { + }, "get": { "tags": [ - "Gateway" + "Document" + ], + "summary": "Download generated document", + "description": "Returns generated document to download.", + "operationId": "downloadGet", + "parameters": [ + { + "name": "documentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "deepLinkCode", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "email", + "required": false, + "in": "query", + "schema": { + "type": "string" + }, + "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." + }, + { + "name": "zipcode", + "required": false, + "in": "query", + "schema": { + "type": "string" + }, + "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." + }, + { + "$ref": "#/components/parameters/swLanguageId" + } ], - "summary": "Call the checkout gateway", - "description": "Call the checkout gateway, which is used to manipulate certain aspects of the checkout process (e.g. available payment methods).", - "operationId": "checkoutGateway", "responses": { "200": { - "description": "Checkout gateway response", + "description": "Success", "content": { - "application/json": { + "application/pdf": { "schema": { - "properties": { - "paymentMethods": { - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PaymentMethod" - } - } - }, - "type": "object" - }, - "shippingMethods": { - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "type": "object" - }, - "errors": { - "type": "array", - "items": { - "properties": { - "code": { - "description": "Error code", - "type": "string" - }, - "detail": { - "description": "Error detail", - "type": "string" - }, - "blocking": { - "description": "If the error is blocking", - "type": "boolean" - } - } - } - } - } + "type": "string", + "format": "binary" + } + }, + "text/html": { + "schema": { + "type": "string" + } + }, + "application/xml": { + "schema": { + "type": "string" } } } + }, + "204": { + "description": "DEPRECATED: Returns a no content response when no document is found. Will be changed in v6.8.0.0 and returns a 404 response instead." + }, + "403": { + "description": "Forbidden." + }, + "404": { + "description": "Document not found." + }, + "406": { + "description": "The requested mime type is not supported." } }, "security": [ { - "ApiKey": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" + "ApiKey": [], + "ContextToken": [] } ] } From ee816391932f1cef67622e13650f946c6d785888 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 29 May 2026 16:48:36 +0200 Subject: [PATCH 08/16] [create-pull-request] automated change (#420) Co-authored-by: shopwareBot --- SwagCommercial-storeapi.json | 6498 +++++++++++++++++----------------- 1 file changed, 3249 insertions(+), 3249 deletions(-) diff --git a/SwagCommercial-storeapi.json b/SwagCommercial-storeapi.json index f8e2467..f99973d 100644 --- a/SwagCommercial-storeapi.json +++ b/SwagCommercial-storeapi.json @@ -17310,294 +17310,168 @@ }, "type": "object" }, - "EntitySearchResult": { - "type": "object", - "properties": { - "entity": { - "type": "string" - }, - "total": { - "type": "integer", - "description": "The total number of found entities" - }, - "aggregations": { - "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", - "items": { - "type": "object" - } - }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." - }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." - } + "CookieGroupCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CookieGroup" } }, - "SalesChannelContext": { + "CalculatedPrice": { "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "token": { - "description": "Context the user session", - "type": "string" - }, - "currentCustomerGroup": { - "type": "object", - "description": "Customer group of the current user", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } - } + "unitPrice": { + "type": "number" }, - "fallbackCustomerGroup": { - "description": "Fallback group if the default customer group is not applicable", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } - } + "quantity": { + "type": "number" }, - "currency": { - "$ref": "#/components/schemas/Currency" + "rawTotal": { + "type": "number" }, - "salesChannel": { - "$ref": "#/components/schemas/SalesChannel" + "totalPrice": { + "type": "number" }, - "measurementSystem": { - "$ref": "#/components/schemas/ContextMeasurementSystemInfo" + "taxStatus": { + "type": "string", + "enum": [ + "net", + "tax-free" + ] }, - "taxRules": { + "calculatedTaxes": { "type": "array", - "description": "Currently active tax rules and/or rates", "items": { "type": "object", "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, "taxRate": { - "type": "number", - "format": "float" + "type": "number" }, - "name": { - "type": "string" + "price": { + "type": "number" } - } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] } }, - "customer": { + "referencePrice": { "oneOf": [ { - "type": "null" + "$ref": "#/components/schemas/CartPriceReference" }, { - "$ref": "#/components/schemas/Customer" + "type": "null" } ] }, - "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethod" - }, - "shippingLocation": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" + { + "type": "null" } - } + ] }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" + "positionPrice": { + "type": "number" }, - "context": { - "description": "Core context with general configuration values and state", - "type": "object", - "properties": { - "versionId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "currencyFactor": { - "type": "integer" - }, - "currencyPrecision": { - "type": "integer", - "format": "int32" - }, - "languageIdChain": { - "type": "array", - "items": { - "type": "string" - } - }, - "scope": { - "type": "string" - }, - "source": { + "netPrice": { + "type": "number" + }, + "regulationPrice": { + "oneOf": [ + { "type": "object", - "required": [ - "salesChannelId", - "type" - ], "properties": { - "type": { + "price": { + "type": "number" + }, + "apiAlias": { "type": "string", "enum": [ - "sales-channel", - "shop-api" + "cart_regulation_price" ] - }, - "salesChannelId": { - "type": "string" } } }, - "taxState": { - "type": "string" - }, - "useCache": { - "type": "boolean" + { + "type": "null" } - } + ] }, - "itemRounding": { - "type": "object", - "required": [ - "decimals", - "interval", - "roundForNet", - "apiAlias" - ], - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" - ] - }, - "decimals": { - "type": "integer", - "format": "int32" - }, - "interval": { - "type": "number", - "format": "float" - }, - "roundForNet": { - "type": "boolean" - } - } + "hasRange": { + "type": "boolean" }, - "totalRounding": { - "type": "object", - "required": [ - "decimals", - "interval", - "roundForNet", - "apiAlias" - ], - "properties": { - "apiAlias": { + "variantId": { + "oneOf": [ + { "type": "string", - "enum": [ - "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" - ] - }, - "decimals": { - "type": "integer", - "format": "int32" - }, - "interval": { - "type": "number", - "format": "float" + "format": "^[0-9a-f]{32}$" }, - "roundForNet": { - "type": "boolean" + { + "type": "null" } - } - }, - "languageInfo": { - "type": "object", - "required": [ - "localeCode", - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "localeCode": { - "type": "string" - } - } + ] }, "apiAlias": { "type": "string", "enum": [ - "sales_channel_context" + "calculated_price" ] - } - }, - "required": [ - "salesChannel", - "apiAlias", - "itemRounding", - "totalRounding", - "languageInfo" - ] - }, - "CartError": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "key": { - "type": "string" - }, - "level": { - "type": "number", - "enum": [ - 0, - 10, - 20 - ], - "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" - }, - "message": { - "type": "string" }, - "messageKey": { - "type": "string" + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } } }, "required": [ - "key", - "level", - "message", - "messageKey" + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "referencePrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitPrice", + "positionPrice", + "netPrice", + "taxRules", + "rawTotal", + "taxStatus" ] }, - "ContextMeasurementSystemInfo": { + "MeasurementUnits": { "type": "object", - "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", + "description": "Configuration of the measurement system", "properties": { "system": { "type": "string", @@ -17639,57 +17513,86 @@ } } }, - "CustomerAddressRead": { + "CartListPrice": { "type": "object", + "description": "", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true + "discount": { + "type": "number" }, - "customerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true + "percentage": { + "type": "number" }, - "createdAt": { - "type": "string", - "format": "date-time" + "price": { + "type": "number" }, - "updatedAt": { - "oneOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "null" - } + "apiAlias": { + "type": "string", + "enum": [ + "cart_list_price" + ] + } + }, + "required": [ + "apiAlias" + ] + }, + "CartDeliveryInformation": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_information" ] }, - "country": { - "$ref": "#/components/schemas/Country" + "freeDelivery": { + "type": "boolean" }, - "countryState": { - "oneOf": [ - { - "$ref": "#/components/schemas/CountryState" + "deliveryTime": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - { - "type": "null" + "min": { + "type": "integer" + }, + "max": { + "type": "integer" + }, + "unit": { + "type": "string" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_time" + ] } - ] + } }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "height": { + "type": "integer" + }, + "length": { + "type": "integer" + }, + "restockTime": { + "type": "integer" + }, + "stock": { + "type": "integer" + }, + "weight": { + "type": "integer" + }, + "width": { + "type": "integer" } }, "required": [ - "customerId", - "createdAt", - "updatedAt", - "country", - "salutation" + "apiAlias" ] }, "ProductListingCriteria": { @@ -17788,1018 +17691,911 @@ } ] }, - "WishlistLoadRouteResponse": { + "ProductPurchaseLimit": { "type": "object", + "description": "Current quantity purchase limits for a product.", "required": [ - "products" + "productId", + "minPurchase", + "purchaseSteps", + "maxPurchase", + "stock", + "apiAlias" ], "properties": { - "wishlist": { - "type": "object", - "properties": { - "customerId": { - "type": "string" - }, - "salesChannelId": { - "type": "string" - } - } + "productId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The product ID." }, - "products": { - "$ref": "#/components/schemas/ProductListingResult" + "minPurchase": { + "type": "integer", + "description": "Minimum quantity a customer can purchase." + }, + "purchaseSteps": { + "type": "integer", + "description": "Step increment for quantity selection." + }, + "maxPurchase": { + "type": "integer", + "description": "Maximum quantity a customer can purchase, reflecting current stock for closeout products." + }, + "stock": { + "type": [ + "integer", + "null" + ], + "description": "Current stock level of the product." + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_purchase_limit" + ] } } }, - "Sitemap": { + "CrossSellingElementCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrossSellingElement" + } + }, + "Criteria": { "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "filename": { + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", "type": "string" }, - "created": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "filename", - "created" - ] - }, - "CartPriceQuantity": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_quantity" - ] - }, - "isCalculated": { - "type": "boolean" + "limit": { + "description": "Number of items per result page", + "type": "integer" }, - "listPrice": { - "$ref": "#/components/schemas/CartListPrice" + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } }, - "price": { - "type": "number" + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } }, - "quantity": { - "type": "number" + "query": { + "type": "string", + "description": "The query string to search for" }, - "regulationPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - } - }, - "type": "object" + "associations": { + "$ref": "#/components/schemas/Associations" }, - "taxRules": { + "post-filter": { "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "name": { - "type": "string" + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } - } + ] } }, - "type": { - "type": "string" - } - }, - "required": [ - "apiAlias" - ] - }, - "ProductDetailResponse": { - "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", - "properties": { - "product": { - "$ref": "#/components/schemas/Product" - }, - "configurator": { + "sort": { "type": "array", - "description": "List of property groups with their corresponding options and information on how to display them.", + "description": "Sorting in the search result.", "items": { - "$ref": "#/components/schemas/PropertyGroup" + "$ref": "#/components/schemas/Sort" } - } - }, - "required": [ - "product" - ] - }, - "NewsletterStatus": { - "type": "string", - "enum": [ - "notSet", - "optIn", - "optOut", - "direct", - "undefined" - ], - "description": "The subscription status. Possible values are: notSet, optIn, optOut, direct, undefined." - }, - "CartDelivery": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" - } + }, + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" } }, - "location": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "state": { - "$ref": "#/components/schemas/CountryState" - } + "fields": { + "type": "array", + "description": "Fields which should be returned in the search result.", + "items": { + "type": "string", + "description": "Name of a field" } }, - "positions": { + "grouping": { "type": "array", + "description": "Perform groupings over certain fields", "items": { - "$ref": "#/components/schemas/CartDeliveryPosition" + "type": "string", + "description": "Name of a field" } }, - "shippingCosts": { - "$ref": "#/components/schemas/CalculatedPrice" + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" + "includes": { + "$ref": "#/components/schemas/Includes" + }, + "excludes": { + "$ref": "#/components/schemas/Excludes" } } }, - "ReferencePrice": { + "NoneFieldsCriteria": { "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "purchaseUnit": { - "type": "number" - }, - "referenceUnit": { - "type": "number" + "page": { + "description": "Search result page", + "type": "integer" }, - "unitName": { + "term": { + "description": "Search term", "type": "string" }, - "price": { - "type": "number" + "limit": { + "description": "Number of items per result page", + "type": "integer" }, - "apiAlias": { + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } + }, + "query": { "type": "string", - "enum": [ - "cart_price_reference" - ] + "description": "The query string to search for" }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/ListPrice" - }, - { - "type": "null" - } - ] + "associations": { + "$ref": "#/components/schemas/Associations" }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } + ] + } + }, + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + }, + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } + }, + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" + }, + "excludes": { + "$ref": "#/components/schemas/Excludes" + } + } + }, + "Associations": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Criteria" + } + }, + "Includes": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "Excludes": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "Aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" + }, + { + "title": "AggregationEntity", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationEntity" }, { - "type": "null" + "$ref": "#/components/schemas/SubAggregations" } ] }, - "hasRange": { - "type": "boolean" + { + "title": "AggregationFilter", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationFilter" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] }, - "variantId": { - "oneOf": [ + { + "title": "AggregationTerms", + "allOf": [ { - "type": "string", - "format": "^[0-9a-f]{32}$" + "$ref": "#/components/schemas/AggregationTerms" }, { - "type": "null" + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationRange", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationRange" + }, + { + "$ref": "#/components/schemas/SubAggregations" } ] } - }, - "required": [ - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" ] }, - "CartDeliveryInformation": { + "SubAggregations": { "type": "object", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_information" - ] - }, - "freeDelivery": { - "type": "boolean" - }, - "deliveryTime": { - "type": "object", - "properties": { - "name": { - "type": "string" + "aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" }, - "min": { - "type": "integer" + { + "$ref": "#/components/schemas/AggregationEntity" }, - "max": { - "type": "integer" + { + "$ref": "#/components/schemas/AggregationFilter" }, - "unit": { - "type": "string" + { + "$ref": "#/components/schemas/AggregationTerms" }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_time" - ] + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/AggregationRange" } - } - }, - "height": { - "type": "integer" - }, - "length": { - "type": "integer" - }, - "restockTime": { - "type": "integer" - }, - "stock": { - "type": "integer" - }, - "weight": { - "type": "integer" - }, - "width": { - "type": "integer" + ] } - }, - "required": [ - "apiAlias" + } + }, + "TotalCountMode": { + "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", + "type": "string", + "default": "none", + "enum": [ + "none", + "exact", + "next-pages" ] }, - "Cart": { + "Query": { "type": "object", "properties": { - "name": { - "description": "Name of the cart - for example `guest-cart`", - "type": "string" - }, - "token": { - "description": "Context token identifying the cart and the user session", - "type": "string" - }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "lineItems": { - "description": "All items within the cart", - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } + "score": { + "type": "number" }, - "errors": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "anyOf": [ + "query": { + "oneOf": [ { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartError" - } + "$ref": "#/components/schemas/SimpleFilter" }, { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "code": { - "type": "number" - }, - "key": { - "type": "string" - }, - "level": { - "type": "number" - }, - "message": { - "type": "string" - }, - "messageKey": { - "type": "string" - } - }, - "required": [ - "code", - "key", - "level", - "message", - "messageKey" - ] - } + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } ] + } + }, + "additionalProperties": true + }, + "Sort": { + "type": "object", + "properties": { + "field": { + "type": "string" }, - "deliveries": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDelivery" - } + "order": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] }, - "transactions": { - "description": "A list of all payment transactions associated with the current cart.", - "type": "array", - "items": { - "type": "object", - "properties": { - "paymentMethodId": { - "type": "string" - }, - "amount": { - "$ref": "#/components/schemas/CalculatedPrice" - } - } + "naturalSorting": { + "type": "boolean" + }, + "type": { + "type": "string" + } + }, + "required": [ + "field", + "order" + ] + }, + "Filters": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } + ] + } + }, + "SimpleFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "contains", + "equalsAny", + "prefix", + "suffix" + ] }, - "modified": { - "type": "boolean" + "field": { + "type": "string" }, - "customerComment": { - "description": "A comment that can be added to the cart.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } + "value": { + "type": "string" + } + }, + "required": [ + "type", + "field", + "value" + ] + }, + "EqualsFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "equals" ] }, - "affiliateCode": { - "description": "An affiliate tracking code", + "field": { + "type": "string" + }, + "value": { "oneOf": [ { "type": "string" }, { - "type": "null" - } - ] - }, - "campaignCode": { - "description": "A campaign tracking code", - "oneOf": [ + "type": "number" + }, { - "type": "string" + "type": "boolean" }, { "type": "null" } ] + } + }, + "required": [ + "type", + "field", + "value" + ] + }, + "MultiNotFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "multi", + "not" + ] }, - "apiAlias": { + "operator": { "type": "string", "enum": [ - "cart" + "and", + "or", + "nor", + "nand" ] + }, + "queries": { + "$ref": "#/components/schemas/Filters" } }, "required": [ - "price", - "apiAlias" + "type", + "operator", + "queries" ] }, - "AccountNewsletterRecipient": { + "RangeFilter": { "type": "object", "properties": { - "status": { - "$ref": "#/components/schemas/NewsletterStatus" - }, - "apiAlias": { + "type": { "type": "string", "enum": [ - "account_newsletter_recipient" + "range" ] + }, + "field": { + "type": "string" + }, + "parameters": { + "type": "object", + "properties": { + "gte": { + "type": "number" + }, + "gt": { + "type": "number" + }, + "lte": { + "type": "number" + }, + "lt": { + "type": "number" + } + } } }, "required": [ - "status", - "apiAlias" + "type", + "field", + "parameters" ] }, - "CrossSellingElementCollection": { + "CookieEntryCollection": { "type": "array", "items": { - "$ref": "#/components/schemas/CrossSellingElement" + "$ref": "#/components/schemas/CookieEntry" } }, - "Criteria": { + "CartItems": { "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", + "required": [ + "items" + ], "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "term": { - "description": "Search term", - "type": "string" - }, - "limit": { - "description": "Number of items per result page", - "type": "integer" - }, - "filter": { + "items": { "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] + "$ref": "#/components/schemas/LineItem" } - }, - "ids": { + } + } + }, + "Association": { + "additionalProperties": { + "$ref": "#/components/schemas/Association" + } + }, + "CartItemsUpdate": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { "type": "array", - "description": "List of ids to search for", "items": { - "type": "string" + "$ref": "#/components/schemas/CartLineItemUpdate" } + } + } + }, + "CartLineItemUpdate": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "string" }, - "query": { - "type": "string", - "description": "The query string to search for" - }, - "associations": { - "$ref": "#/components/schemas/Associations" + "type": { + "$ref": "#/components/schemas/OrderLineItem/properties/type" }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } + "quantity": { + "type": "integer" }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" - } + "referencedId": { + "type": "string" }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } + "label": { + "type": "string" }, - "fields": { - "type": "array", - "description": "Fields which should be returned in the search result.", - "items": { - "type": "string", - "description": "Name of a field" - } + "payload": { + "type": "object" }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } + "stackable": { + "type": "boolean" }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" + "removable": { + "type": "boolean" }, - "includes": { - "$ref": "#/components/schemas/Includes" + "coverId": { + "type": "string" }, - "excludes": { - "$ref": "#/components/schemas/Excludes" + "priceDefinition": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "price": { + "type": "number" + }, + "percentage": { + "type": "number" + }, + "quantity": { + "type": "integer" + }, + "isCalculated": { + "type": "boolean" + }, + "listPrice": { + "type": "number" + }, + "taxRules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number" + }, + "percentage": { + "type": "number" + } + } + } + } + } } } }, - "NoneFieldsCriteria": { + "AggregationEntity": { + "title": "AggregationEntity", "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "page": { - "description": "Search result page", - "type": "integer" + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "term": { - "description": "Search term", + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "entity" + ] + }, + "field": { + "description": "The field you want to aggregate over.", "type": "string" }, - "limit": { - "description": "Number of items per result page", - "type": "integer" + "definition": { + "description": "The entity definition e.g \"product_manufacturer\".", + "type": "string" + } + }, + "required": [ + "name", + "type", + "field", + "definition" + ] + }, + "AggregationFilter": { + "title": "AggregationFilter", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "filter": { - "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "filter" + ] }, - "ids": { + "filter": { "type": "array", - "description": "List of ids to search for", "items": { - "type": "string" + "$ref": "#/components/schemas/Filters" } + } + }, + "required": [ + "name", + "type", + "filter" + ] + }, + "AggregationTerms": { + "title": "AggregationTerms", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "query": { + "type": { + "description": "The type of aggregation", "type": "string", - "description": "The query string to search for" + "enum": [ + "terms" + ] }, - "associations": { - "$ref": "#/components/schemas/Associations" + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "post-filter": { + "limit": { + "description": "The number of terms to return", + "type": "number" + }, + "sort": { "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", + "description": "Sorting the aggregation result.", "items": { "$ref": "#/components/schemas/Sort" } - }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } - }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" - }, - "includes": { - "$ref": "#/components/schemas/Includes" - }, - "excludes": { - "$ref": "#/components/schemas/Excludes" - } - } - }, - "Associations": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Criteria" - } - }, - "Includes": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "Excludes": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "Aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "title": "AggregationEntity", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationFilter", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationTerms", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationHistogram", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationRange", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationRange" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - } - ] - }, - "SubAggregations": { - "type": "object", - "properties": { - "aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/AggregationRange" - } - ] - } - } - }, - "TotalCountMode": { - "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", - "type": "string", - "default": "none", - "enum": [ - "none", - "exact", - "next-pages" - ] - }, - "Query": { - "type": "object", - "properties": { - "score": { - "type": "number" - }, - "query": { - "oneOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] } }, - "additionalProperties": true + "required": [ + "name", + "type", + "field" + ] }, - "Sort": { + "AggregationHistogram": { + "title": "AggregationHistogram", "type": "object", "properties": { - "field": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" }, - "order": { + "type": { + "description": "The type of aggregation", "type": "string", "enum": [ - "ASC", - "DESC" + "histogram" ] }, - "naturalSorting": { - "type": "boolean" + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "type": { + "interval": { + "description": "The interval of the histogram", + "type": "number" + }, + "format": { + "description": "The format of the histogram", + "type": "string" + }, + "timeZone": { + "description": "The timezone of the histogram", "type": "string" } }, "required": [ - "field", - "order" + "name", + "type", + "field" ] }, - "Filters": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "SimpleFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "contains", - "equalsAny", - "prefix", - "suffix" - ] - }, - "field": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "required": [ - "type", - "field", - "value" - ] - }, - "EqualsFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "equals" - ] - }, - "field": { - "type": "string" - }, - "value": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "type", - "field", - "value" - ] - }, - "MultiNotFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "multi", - "not" - ] - }, - "operator": { - "type": "string", - "enum": [ - "and", - "or", - "nor", - "nand" - ] - }, - "queries": { - "$ref": "#/components/schemas/Filters" - } - }, - "required": [ - "type", - "operator", - "queries" - ] - }, - "RangeFilter": { + "AggregationRange": { + "title": "AggregationRange", + "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", "type": "object", "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, "type": { + "description": "The type of aggregation", "type": "string", "enum": [ "range" ] }, "field": { + "description": "The field you want to aggregate over.", "type": "string" }, - "parameters": { - "type": "object", - "properties": { - "gte": { - "type": "number" - }, - "gt": { - "type": "number" - }, - "lte": { - "type": "number" - }, - "lt": { - "type": "number" - } + "ranges": { + "description": "The ranges of the aggregation", + "type": "array", + "items": { + "type": "object", + "anyOf": [ + { + "type": "object", + "title": "From and to", + "properties": { + "from": { + "type": "number", + "description": "The lower bound of the range" + }, + "to": { + "type": "number", + "description": "The upper bound of the range" + } + }, + "required": [ + "from", + "to" + ] + }, + { + "type": "object", + "title": "From only", + "properties": { + "from": { + "type": "string", + "description": "The lower bound of the range" + } + }, + "required": [ + "from" + ] + }, + { + "type": "object", + "title": "To only", + "properties": { + "to": { + "type": "string", + "description": "The upper bound of the range" + } + }, + "required": [ + "to" + ] + } + ] } } }, "required": [ + "name", "type", "field", - "parameters" + "ranges" ] }, - "FindProductVariantRouteResponse": { - "type": "object", - "properties": { - "foundCombination": { - "type": "object", - "properties": { - "variantId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "options": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, "Price": { "type": "object", "description": "Price object", @@ -18903,877 +18699,1081 @@ "net" ] }, - "NavigationType": { - "type": "string", - "enum": [ - "main-navigation", - "footer-navigation", - "service-navigation" - ] - }, - "OrderRouteResponse": { + "AggregationMetrics": { "type": "object", "properties": { - "orders": { - "type": "object", - "allOf": [ - { - "type": "object", - "required": [ - "elements" - ], - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order" - } - } - } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } + "name": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "avg", + "count", + "max", + "min", + "stats", + "sum" ] }, - "paymentChangeable": { - "type": "object", - "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", - "additionalProperties": { - "type": "boolean" - } + "field": { + "type": "string" } }, "required": [ - "orders" + "name", + "type", + "field" ] }, - "ProductListingResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EntitySearchResult" + "CartPriceReference": { + "type": "object", + "properties": { + "purchaseUnit": { + "type": "number" }, - { - "type": "object", - "properties": { - "currentFilters": { - "type": "object", - "description": "Contains the state of the filters. These can be used to create listing filters.", - "properties": { - "navigationId": { - "type": "string" - }, - "manufacturer": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, + "referenceUnit": { + "type": "number" + }, + "unitName": { + "type": "string" + }, + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_reference" + ] + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { "price": { - "type": "object", - "properties": { - "min": { - "type": "integer", - "default": 0 - }, - "max": { - "type": "integer", - "default": 0 - } - }, - "required": [ - "min", - "max" - ] + "type": "number" }, - "rating": { - "oneOf": [ - { - "type": "integer" - }, - { - "type": "null" - } + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" ] - }, - "shipping-free": { - "type": "boolean", - "default": false - }, - "properties": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "search": { - "type": "string" } - }, - "required": [ - "manufacturer", - "navigationId", - "price", - "properties", - "rating", - "shipping-free" - ] - }, - "availableSortings": { - "type": "array", - "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", - "items": { - "type": "object", - "properties": { - "label": { - "type": "string" - }, - "translated": { - "type": "object", - "properties": { - "label": { - "type": "string" - } - }, - "required": [ - "label" - ] - }, - "key": { - "type": "string" - }, - "priority": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_sorting" - ] - } - }, - "required": [ - "label", - "translated", - "key", - "priority", - "apiAlias" - ] - } - }, - "sorting": { - "type": "string" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" } }, - "entity": { + { + "type": "null" + } + ] + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { "type": "string", - "enum": [ - "product" - ] + "format": "^[0-9a-f]{32}$" }, - "apiAlias": { - "type": "string", - "enum": [ - "product_listing" - ] + { + "type": "null" } - }, - "required": [ - "elements", - "availableSortings", - "currentFilters", - "apiAlias" ] } + }, + "required": [ + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" ] }, - "ProductMeasurements": { - "type": "object", - "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", + "CustomerAddressBody": { + "description": "Added since version: 6.0.0.0", + "required": [ + "countryId", + "firstName", + "lastName", + "city", + "street" + ], "properties": { - "width": { - "type": "object", - "properties": { - "unit": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" - }, - "value": { - "type": "number" - } - } + "countryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "height": { - "type": "object", - "properties": { - "unit": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" - }, - "value": { - "type": "number" - } - } + "countryStateId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "length": { - "type": "object", - "properties": { - "unit": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" - }, - "value": { - "type": "number" - } - } + "salutationId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "weight": { - "type": "object", - "properties": { - "unit": { - "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg" - }, - "value": { - "type": "number" - } - } - } - } - }, - "CookieEntryCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CookieEntry" - } - }, - "CrossSellingElement": { - "type": "object", - "properties": { - "crossSelling": { - "$ref": "#/components/schemas/ProductCrossSelling" + "firstName": { + "type": "string" }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } + "lastName": { + "type": "string" }, - "total": { - "type": "integer", - "format": "int32" + "zipcode": { + "type": "string" }, - "streamId": { - "type": "string", - "format": "uuid" + "city": { + "type": "string" }, - "apiAlias": { - "type": "string", - "enum": [ - "cross_selling_element" - ] - } - }, - "required": [ - "crossSelling", - "products", - "total", - "apiAlias" - ] - }, - "CookieEntry": { - "type": "object", - "properties": { - "cookie": { + "company": { "type": "string" }, - "value": { + "street": { "type": "string" }, - "expiration": { - "type": "integer" + "department": { + "type": "string" }, - "name": { + "title": { "type": "string" }, - "description": { + "phoneNumber": { "type": "string" }, - "hidden": { - "type": "boolean" + "additionalAddressLine1": { + "type": "string" }, - "apiAlias": { - "type": "string", - "enum": [ - "cookie_entry" - ] - } - }, - "required": [ - "cookie", - "hidden", - "apiAlias" - ] - }, - "MeasurementUnits": { - "type": "object", - "description": "Configuration of the measurement system", - "properties": { - "system": { - "type": "string", - "enum": [ - "metric", - "imperial" - ], - "default": "metric", - "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." + "additionalAddressLine2": { + "type": "string" }, - "units": { - "type": "object", - "description": "Units used in the measurement system.", - "properties": { - "length": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm", - "description": "Unit of length." - }, - "weight": { - "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg", - "description": "Unit of weight." - } - } - } - } - }, - "CartListPrice": { - "type": "object", - "description": "", - "properties": { - "discount": { - "type": "number" + "customFields": { + "type": "object" }, - "percentage": { - "type": "number" + "country": { + "$ref": "#/components/schemas/Country" }, - "price": { - "type": "number" + "countryState": { + "$ref": "#/components/schemas/CountryState" }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_list_price" - ] + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, - "required": [ - "apiAlias" - ] + "type": "object" }, - "CookieGroup": { + "CustomerAddressRead": { "type": "object", "properties": { - "isRequired": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true }, - "cookie": { - "type": "string" + "customerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true }, - "value": { - "type": "string" + "createdAt": { + "type": "string", + "format": "date-time" }, - "expiration": { - "type": "integer" + "updatedAt": { + "oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ] }, - "entries": { - "$ref": "#/components/schemas/CookieEntryCollection" + "country": { + "$ref": "#/components/schemas/Country" }, - "apiAlias": { - "type": "string", - "enum": [ - "cookie_group" + "countryState": { + "oneOf": [ + { + "$ref": "#/components/schemas/CountryState" + }, + { + "type": "null" + } ] + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, - "not": { - "allOf": [ - { - "required": [ - "cookie" - ] - }, - { - "required": [ - "entries" - ] - } - ] - }, "required": [ - "name", - "isRequired", - "apiAlias" + "customerId", + "createdAt", + "updatedAt", + "country", + "salutation" ] }, - "SuccessResponse": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - } + "NavigationRouteResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" } }, - "CartItems": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } + "ShippingMethodPageRouteResponse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "deliveryTimeId": { + "type": "string" + }, + "deliveryTime": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "min": { + "type": "integer", + "format": "int32" + }, + "max": { + "type": "integer", + "format": "int32" + }, + "unit": { + "type": "string" + } + } + }, + "translations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + } + } + } + }, + "orderDeliveries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "orderId": { + "type": "string" + }, + "shippingOrderAddressId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "shippingDateEarliest": { + "type": "string", + "format": "date-time" + }, + "shippingDateLatest": { + "type": "string", + "format": "date-time" + }, + "stateId": { + "type": "string" + } + } + } + }, + "salesChannelDefaultAssignments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } + } + }, + "salesChannels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } + } + }, + "availabilityRule": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "priority": { + "type": "integer", + "format": "int32" + }, + "invalid": { + "type": "boolean" + } + } + }, + "availabilityRuleId": { + "type": "string" + }, + "prices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "ruleId": { + "type": "string" + }, + "calculation": { + "type": "integer", + "format": "int32" + }, + "quantityStart": { + "type": "number", + "format": "float" + }, + "quantityEnd": { + "type": "number", + "format": "float" + }, + "price": { + "type": "number", + "format": "float" + }, + "calculationRuleId": { + "type": "string" + } + } + } + }, + "mediaId": { + "type": "string" + }, + "media": { + "type": "object", + "properties": { + "userId": { + "type": "string" + }, + "mimeType": { + "type": "string" + }, + "fileExtension": { + "type": "string" + }, + "fileSize": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string" + }, + "metaDataRaw": { + "type": "string" + }, + "mediaTypeRaw": { + "type": "string" + }, + "uploadedAt": { + "type": "string", + "format": "date-time" + }, + "alt": { + "type": "string" + }, + "url": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "mediaFolderId": { + "type": "string" + }, + "private": { + "type": "boolean" + }, + "thumbnailsRo": { + "type": "string" + } + } + }, + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + } + } } } }, - "AggregationMetrics": { + "ProductDetailResponse": { + "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", + "properties": { + "product": { + "$ref": "#/components/schemas/Product" + }, + "configurator": { + "type": "array", + "description": "List of property groups with their corresponding options and information on how to display them.", + "items": { + "$ref": "#/components/schemas/PropertyGroup" + } + } + }, + "required": [ + "product" + ] + }, + "AccountNewsletterRecipient": { "type": "object", "properties": { - "name": { - "type": "string" + "status": { + "$ref": "#/components/schemas/NewsletterStatus" }, - "type": { + "apiAlias": { "type": "string", "enum": [ - "avg", - "count", - "max", - "min", - "stats", - "sum" + "account_newsletter_recipient" ] - }, - "field": { - "type": "string" } }, "required": [ - "name", - "type", - "field" + "status", + "apiAlias" ] }, - "CartDeliveryPosition": { + "ReferencePrice": { "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" - } - } + "purchaseUnit": { + "type": "number" }, - "identifier": { - "type": "string" + "referenceUnit": { + "type": "number" }, - "lineItem": { - "$ref": "#/components/schemas/LineItem" + "unitName": { + "type": "string" }, "price": { - "$ref": "#/components/schemas/CalculatedPrice" - } - } - }, - "CustomerAddressBody": { - "description": "Added since version: 6.0.0.0", - "required": [ - "countryId", - "firstName", - "lastName", - "city", - "street" - ], - "properties": { - "countryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryStateId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "number" }, - "salutationId": { + "apiAlias": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "zipcode": { - "type": "string" + "enum": [ + "cart_price_reference" + ] }, - "city": { - "type": "string" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/ListPrice" + }, + { + "type": "null" + } + ] }, - "company": { - "type": "string" + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] }, - "street": { - "type": "string" + "hasRange": { + "type": "boolean" }, - "department": { + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" + ] + }, + "CookieEntry": { + "type": "object", + "properties": { + "cookie": { "type": "string" }, - "title": { + "value": { "type": "string" }, - "phoneNumber": { - "type": "string" + "expiration": { + "type": "integer" }, - "additionalAddressLine1": { + "name": { "type": "string" }, - "additionalAddressLine2": { + "description": { "type": "string" }, - "customFields": { - "type": "object" - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "$ref": "#/components/schemas/CountryState" + "hidden": { + "type": "boolean" }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "apiAlias": { + "type": "string", + "enum": [ + "cookie_entry" + ] } }, - "type": "object" - }, - "ProductPurchaseLimit": { - "type": "object", - "description": "Current quantity purchase limits for a product.", "required": [ - "productId", - "minPurchase", - "purchaseSteps", - "maxPurchase", - "stock", + "cookie", + "hidden", "apiAlias" - ], + ] + }, + "FindProductVariantRouteResponse": { + "type": "object", "properties": { - "productId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The product ID." + "foundCombination": { + "type": "object", + "properties": { + "variantId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "options": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + }, + "SalesChannelContext": { + "type": "object", + "properties": { + "token": { + "description": "Context the user session", + "type": "string" }, - "minPurchase": { - "type": "integer", - "description": "Minimum quantity a customer can purchase." + "currentCustomerGroup": { + "type": "object", + "description": "Customer group of the current user", + "properties": { + "name": { + "type": "string" + }, + "displayGross": { + "type": "boolean" + } + } }, - "purchaseSteps": { - "type": "integer", - "description": "Step increment for quantity selection." + "fallbackCustomerGroup": { + "description": "Fallback group if the default customer group is not applicable", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "displayGross": { + "type": "boolean" + } + } }, - "maxPurchase": { - "type": "integer", - "description": "Maximum quantity a customer can purchase, reflecting current stock for closeout products." + "currency": { + "$ref": "#/components/schemas/Currency" }, - "stock": { - "type": [ - "integer", - "null" - ], - "description": "Current stock level of the product." + "salesChannel": { + "$ref": "#/components/schemas/SalesChannel" }, - "apiAlias": { - "type": "string", - "enum": [ - "product_purchase_limit" - ] - } - } - }, - "CookieRouteResponse": { - "type": "object", - "description": "Response containing cookie groups and their configuration hash.", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cookie_groups_hash" - ] + "measurementSystem": { + "$ref": "#/components/schemas/ContextMeasurementSystemInfo" }, - "elements": { + "taxRules": { "type": "array", - "description": "Collection of cookie groups", + "description": "Currently active tax rules and/or rates", "items": { - "$ref": "#/components/schemas/CookieGroup" + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } } }, - "hash": { - "type": "string", - "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", - "example": "f86b6a872cb83dbd22d838ceda1aa3d4" + "customer": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/Customer" + } + ] }, - "languageId": { - "type": "string", - "format": "uuid", - "description": "The language ID for which the cookie configuration was generated. Used to store hashes per language.", - "example": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" - } - }, - "required": [ - "elements", - "hash", - "languageId", - "apiAlias" - ], - "example": { - "apiAlias": "cookie_groups_hash", - "elements": [ - { - "isRequired": true, - "description": "Cookies required for this shop to function:", - "name": "Technically required", - "entries": [ - { - "name": "Session", - "hidden": false, - "cookie": "session-", - "apiAlias": "cookie_entry" - }, - { - "name": "Timezone", - "hidden": false, - "cookie": "timezone", - "apiAlias": "cookie_entry" - }, - { - "value": "1", - "expiration": 30, - "name": "Cookie preferences", - "hidden": true, - "cookie": "cookie-preference", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "description": "Cookies used for statistics and shop performance metrics.", - "name": "Statistics", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "Google Analytics", - "hidden": false, - "cookie": "google-analytics-enabled", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "description": "Allows Google to collect personal data for online advertising and marketing.", - "name": "Marketing", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "Google Advertising", - "hidden": false, - "cookie": "google-ads-enabled", - "apiAlias": "cookie_entry" + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod" + }, + "shippingLocation": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + } + } + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + }, + "context": { + "description": "Core context with general configuration values and state", + "type": "object", + "properties": { + "versionId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "currencyFactor": { + "type": "integer" + }, + "currencyPrecision": { + "type": "integer", + "format": "int32" + }, + "languageIdChain": { + "type": "array", + "items": { + "type": "string" } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "name": "Comfort features", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "YouTube video", - "hidden": false, - "cookie": "youtube-video", - "apiAlias": "cookie_entry" + }, + "scope": { + "type": "string" + }, + "source": { + "type": "object", + "required": [ + "salesChannelId", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "sales-channel", + "shop-api" + ] + }, + "salesChannelId": { + "type": "string" + } } - ], - "apiAlias": "cookie_group" + }, + "taxState": { + "type": "string" + }, + "useCache": { + "type": "boolean" + } + } + }, + "itemRounding": { + "type": "object", + "required": [ + "decimals", + "interval", + "roundForNet", + "apiAlias" + ], + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" + ] + }, + "decimals": { + "type": "integer", + "format": "int32" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" + } + } + }, + "totalRounding": { + "type": "object", + "required": [ + "decimals", + "interval", + "roundForNet", + "apiAlias" + ], + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" + ] + }, + "decimals": { + "type": "integer", + "format": "int32" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" + } } - ], - "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", - "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" - } + }, + "languageInfo": { + "type": "object", + "required": [ + "localeCode", + "name" + ], + "properties": { + "name": { + "type": "string" + }, + "localeCode": { + "type": "string" + } + } + }, + "apiAlias": { + "type": "string", + "enum": [ + "sales_channel_context" + ] + } + }, + "required": [ + "salesChannel", + "apiAlias", + "itemRounding", + "totalRounding", + "languageInfo" + ] }, - "CartItemsUpdate": { + "NavigationType": { + "type": "string", + "enum": [ + "main-navigation", + "footer-navigation", + "service-navigation" + ] + }, + "WishlistLoadRouteResponse": { "type": "object", "required": [ - "items" + "products" ], "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartLineItemUpdate" + "wishlist": { + "type": "object", + "properties": { + "customerId": { + "type": "string" + }, + "salesChannelId": { + "type": "string" + } } + }, + "products": { + "$ref": "#/components/schemas/ProductListingResult" } } }, - "CartLineItemUpdate": { + "Breadcrumb": { "type": "object", - "required": [ - "id" - ], "properties": { - "id": { - "type": "string" - }, - "type": { - "$ref": "#/components/schemas/OrderLineItem/properties/type" - }, - "quantity": { - "type": "integer" - }, - "referencedId": { - "type": "string" - }, - "label": { + "name": { "type": "string" }, - "payload": { - "type": "object" - }, - "stackable": { - "type": "boolean" - }, - "removable": { - "type": "boolean" + "categoryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "coverId": { - "type": "string" + "type": { + "$ref": "#/components/schemas/Category/properties/type" }, - "priceDefinition": { + "translated": { "type": "object", + "additionalProperties": true, "properties": { - "type": { - "type": "string" + "customFields": { + "type": "object" }, - "price": { - "type": "number" + "slotConfig": { + "type": "object" }, - "percentage": { - "type": "number" + "linkType": { + "$ref": "#/components/schemas/Category/properties/linkType" }, - "quantity": { - "type": "integer" + "internalLink": { + "type": "string" }, - "isCalculated": { + "externalLink": { + "type": "string" + }, + "linkNewTab": { "type": "boolean" }, - "listPrice": { - "type": "number" + "description": { + "type": "string" }, - "taxRules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number" - }, - "percentage": { - "type": "number" - } - } - } + "metaTitle": { + "type": "string" + }, + "metaDescription": { + "type": "string" + }, + "keywords": { + "type": "string" } } + }, + "path": { + "type": "string" + }, + "seoUrls": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" + } + }, + "apiAlias": { + "type": "string", + "enum": [ + "breadcrumb" + ] } - } - }, - "NavigationRouteResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - }, - "CookieGroupCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CookieGroup" - } + }, + "required": [ + "name", + "categoryId", + "type", + "translated", + "path", + "apiAlias" + ] }, "ProductListingFlags": { "type": "object", @@ -19796,614 +19796,711 @@ { "type": "string" }, - { - "type": "null" - } - ] - } - } - }, - "ShippingMethodPageRouteResponse": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "deliveryTimeId": { - "type": "string" - }, - "deliveryTime": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer", - "format": "int32" - }, - "max": { - "type": "integer", - "format": "int32" - }, - "unit": { - "type": "string" - } - } - }, - "translations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - } - } + { + "type": "null" } - }, - "orderDeliveries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "orderId": { - "type": "string" - }, - "shippingOrderAddressId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "shippingDateEarliest": { - "type": "string", - "format": "date-time" - }, - "shippingDateLatest": { - "type": "string", - "format": "date-time" + ] + } + } + }, + "LineItemType": { + "type": "string", + "deprecated": true, + "enum": [ + "product", + "credit", + "custom", + "promotion", + "discount", + "container", + "quantity" + ] + }, + "LineItem": { + "type": "object", + "properties": { + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + }, + "cover": { + "$ref": "#/components/schemas/Media" + }, + "dataContextHash": { + "type": "string" + }, + "dataTimestamp": { + "type": "string" + }, + "deliveryInformation": { + "$ref": "#/components/schemas/CartDeliveryInformation" + }, + "description": { + "type": "string" + }, + "good": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "label": { + "type": "string" + }, + "modified": { + "type": "boolean" + }, + "modifiedByApp": { + "type": "boolean" + }, + "payload": { + "$ref": "#/components/schemas/ProductJsonApi" + }, + "price": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] + }, + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } }, - "stateId": { - "type": "string" - } + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] } - } - }, - "salesChannelDefaultAssignments": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" }, - "hreflangDefaultDomainId": { - "type": "string" + { + "type": "null" } - } - } - }, - "salesChannels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" + ] + }, + "quantity": { + "type": "number" + }, + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" }, - "hreflangActive": { - "type": "boolean" + { + "type": "null" + } + ] + }, + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } }, - "hreflangDefaultDomainId": { - "type": "string" + { + "type": "null" + } + ] + }, + "totalPrice": { + "type": "number" + }, + "unitPrice": { + "type": "number" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } } } } }, - "availabilityRule": { + "required": [ + "apiAlias", + "totalPrice", + "quantity", + "unitPrice" + ] + }, + "priceDefinition": { + "$ref": "#/components/schemas/CartPriceQuantity" + }, + "quantity": { + "type": "number" + }, + "quantityInformation": { + "type": "object", + "properties": { + "maxPurchase": { + "type": "number" + }, + "minPurchase": { + "type": "number" + }, + "purchaseSteps": { + "type": "number" + } + } + }, + "referencedId": { + "type": "string" + }, + "removable": { + "type": "boolean" + }, + "stackable": { + "type": "boolean" + }, + "states": { + "deprecated": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "is-physical", + "is-download" + ] + } + }, + "type": { + "$ref": "#/components/schemas/OrderLineItem/properties/type" + }, + "uniqueIdentifier": { + "type": "string" + } + }, + "required": [ + "id", + "type" + ] + }, + "CartPriceQuantity": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_quantity" + ] + }, + "isCalculated": { + "type": "boolean" + }, + "listPrice": { + "$ref": "#/components/schemas/CartListPrice" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + } + }, + "type": "object" + }, + "taxRules": { + "type": "array", + "items": { "type": "object", "properties": { - "name": { - "type": "string" + "taxRate": { + "type": "number", + "format": "float" }, - "description": { + "name": { "type": "string" - }, - "priority": { - "type": "integer", - "format": "int32" - }, - "invalid": { - "type": "boolean" } } - }, - "availabilityRuleId": { - "type": "string" - }, - "prices": { - "type": "array", - "items": { + } + }, + "type": { + "type": "string" + } + }, + "required": [ + "apiAlias" + ] + }, + "NewsletterStatus": { + "type": "string", + "enum": [ + "notSet", + "optIn", + "optOut", + "direct", + "undefined" + ], + "description": "The subscription status. Possible values are: notSet, optIn, optOut, direct, undefined." + }, + "OrderRouteResponse": { + "type": "object", + "properties": { + "orders": { + "type": "object", + "allOf": [ + { "type": "object", + "required": [ + "elements" + ], "properties": { - "shippingMethodId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "ruleId": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" + } + } + } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + }, + "paymentChangeable": { + "type": "object", + "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", + "additionalProperties": { + "type": "boolean" + } + } + }, + "required": [ + "orders" + ] + }, + "ProductListingResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EntitySearchResult" + }, + { + "type": "object", + "properties": { + "currentFilters": { + "type": "object", + "description": "Contains the state of the filters. These can be used to create listing filters.", + "properties": { + "navigationId": { "type": "string" }, - "calculation": { - "type": "integer", - "format": "int32" + "manufacturer": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } }, - "quantityStart": { - "type": "number", - "format": "float" + "price": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "default": 0 + }, + "max": { + "type": "integer", + "default": 0 + } + }, + "required": [ + "min", + "max" + ] }, - "quantityEnd": { - "type": "number", - "format": "float" + "rating": { + "oneOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] }, - "price": { - "type": "number", - "format": "float" + "shipping-free": { + "type": "boolean", + "default": false }, - "calculationRuleId": { + "properties": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "search": { "type": "string" } + }, + "required": [ + "manufacturer", + "navigationId", + "price", + "properties", + "rating", + "shipping-free" + ] + }, + "availableSortings": { + "type": "array", + "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", + "items": { + "type": "object", + "properties": { + "label": { + "type": "string" + }, + "translated": { + "type": "object", + "properties": { + "label": { + "type": "string" + } + }, + "required": [ + "label" + ] + }, + "key": { + "type": "string" + }, + "priority": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_sorting" + ] + } + }, + "required": [ + "label", + "translated", + "key", + "priority", + "apiAlias" + ] } + }, + "sorting": { + "type": "string" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "entity": { + "type": "string", + "enum": [ + "product" + ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_listing" + ] } }, - "mediaId": { - "type": "string" - }, - "media": { - "type": "object", - "properties": { - "userId": { - "type": "string" - }, - "mimeType": { - "type": "string" - }, - "fileExtension": { - "type": "string" - }, - "fileSize": { - "type": "integer", - "format": "int32" - }, - "title": { - "type": "string" - }, - "metaDataRaw": { - "type": "string" - }, - "mediaTypeRaw": { - "type": "string" - }, - "uploadedAt": { - "type": "string", - "format": "date-time" - }, - "alt": { - "type": "string" - }, - "url": { - "type": "string" - }, - "fileName": { - "type": "string" - }, - "mediaFolderId": { - "type": "string" + "required": [ + "elements", + "availableSortings", + "currentFilters", + "apiAlias" + ] + } + ] + }, + "CookieRouteResponse": { + "type": "object", + "description": "Response containing cookie groups and their configuration hash.", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cookie_groups_hash" + ] + }, + "elements": { + "type": "array", + "description": "Collection of cookie groups", + "items": { + "$ref": "#/components/schemas/CookieGroup" + } + }, + "hash": { + "type": "string", + "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", + "example": "f86b6a872cb83dbd22d838ceda1aa3d4" + }, + "languageId": { + "type": "string", + "format": "uuid", + "description": "The language ID for which the cookie configuration was generated. Used to store hashes per language.", + "example": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" + } + }, + "required": [ + "elements", + "hash", + "languageId", + "apiAlias" + ], + "example": { + "apiAlias": "cookie_groups_hash", + "elements": [ + { + "isRequired": true, + "description": "Cookies required for this shop to function:", + "name": "Technically required", + "entries": [ + { + "name": "Session", + "hidden": false, + "cookie": "session-", + "apiAlias": "cookie_entry" }, - "private": { - "type": "boolean" + { + "name": "Timezone", + "hidden": false, + "cookie": "timezone", + "apiAlias": "cookie_entry" }, - "thumbnailsRo": { - "type": "string" + { + "value": "1", + "expiration": 30, + "name": "Cookie preferences", + "hidden": true, + "cookie": "cookie-preference", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "description": "Cookies used for statistics and shop performance metrics.", + "name": "Statistics", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "Google Analytics", + "hidden": false, + "cookie": "google-analytics-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "description": "Allows Google to collect personal data for online advertising and marketing.", + "name": "Marketing", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "Google Advertising", + "hidden": false, + "cookie": "google-ads-enabled", + "apiAlias": "cookie_entry" } - } + ], + "apiAlias": "cookie_group" }, - "tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - } + { + "isRequired": false, + "name": "Comfort features", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "YouTube video", + "hidden": false, + "cookie": "youtube-video", + "apiAlias": "cookie_entry" } - } + ], + "apiAlias": "cookie_group" } - } + ], + "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", + "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" } }, - "CartPriceReference": { + "Cart": { "type": "object", "properties": { - "purchaseUnit": { - "type": "number" - }, - "referenceUnit": { - "type": "number" + "name": { + "description": "Name of the cart - for example `guest-cart`", + "type": "string" }, - "unitName": { + "token": { + "description": "Context token identifying the cart and the user session", "type": "string" }, "price": { - "type": "number" + "$ref": "#/components/schemas/CalculatedPrice" }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_reference" - ] + "lineItems": { + "description": "All items within the cart", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } }, - "listPrice": { - "oneOf": [ + "errors": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "anyOf": [ { - "$ref": "#/components/schemas/CartListPrice" + "type": "array", + "items": { + "$ref": "#/components/schemas/CartError" + } }, - { - "type": "null" - } - ] - }, - "regulationPrice": { - "oneOf": [ { "type": "object", - "properties": { - "price": { - "type": "number" + "additionalProperties": { + "type": "object", + "properties": { + "code": { + "type": "number" + }, + "key": { + "type": "string" + }, + "level": { + "type": "number" + }, + "message": { + "type": "string" + }, + "messageKey": { + "type": "string" + } }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } + "required": [ + "code", + "key", + "level", + "message", + "messageKey" + ] } - }, - { - "type": "null" - } - ] - }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "^[0-9a-f]{32}$" - }, - { - "type": "null" } ] - } - }, - "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" - ] - }, - "Breadcrumb": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "categoryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "type": { - "$ref": "#/components/schemas/Category/properties/type" - }, - "translated": { - "type": "object", - "additionalProperties": true, - "properties": { - "customFields": { - "type": "object" - }, - "slotConfig": { - "type": "object" - }, - "linkType": { - "$ref": "#/components/schemas/Category/properties/linkType" - }, - "internalLink": { - "type": "string" - }, - "externalLink": { - "type": "string" - }, - "linkNewTab": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "metaTitle": { - "type": "string" - }, - "metaDescription": { - "type": "string" - }, - "keywords": { - "type": "string" - } - } - }, - "path": { - "type": "string" }, - "seoUrls": { + "deliveries": { "type": "array", "items": { - "$ref": "#/components/schemas/SeoUrl" + "$ref": "#/components/schemas/CartDelivery" } }, - "apiAlias": { - "type": "string", - "enum": [ - "breadcrumb" - ] - } - }, - "required": [ - "name", - "categoryId", - "type", - "translated", - "path", - "apiAlias" - ] - }, - "CalculatedPrice": { - "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", - "properties": { - "unitPrice": { - "type": "number" - }, - "quantity": { - "type": "number" - }, - "rawTotal": { - "type": "number" - }, - "totalPrice": { - "type": "number" - }, - "taxStatus": { - "type": "string", - "enum": [ - "net", - "tax-free" - ] - }, - "calculatedTaxes": { + "transactions": { + "description": "A list of all payment transactions associated with the current cart.", "type": "array", "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" + "type": "object", + "properties": { + "paymentMethodId": { + "type": "string" }, - "price": { - "type": "number" + "amount": { + "$ref": "#/components/schemas/CalculatedPrice" } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] + } } }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] + "modified": { + "type": "boolean" }, - "listPrice": { + "customerComment": { + "description": "A comment that can be added to the cart.", "oneOf": [ { - "$ref": "#/components/schemas/CartListPrice" + "type": "string" }, { "type": "null" } ] }, - "positionPrice": { - "type": "number" - }, - "netPrice": { - "type": "number" - }, - "regulationPrice": { + "affiliateCode": { + "description": "An affiliate tracking code", "oneOf": [ { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } + "type": "string" }, { "type": "null" } ] }, - "hasRange": { - "type": "boolean" - }, - "variantId": { + "campaignCode": { + "description": "A campaign tracking code", "oneOf": [ { - "type": "string", - "format": "^[0-9a-f]{32}$" + "type": "string" }, { "type": "null" @@ -20413,265 +20510,297 @@ "apiAlias": { "type": "string", "enum": [ - "calculated_price" + "cart" ] - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } } }, "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "referencePrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitPrice", - "positionPrice", - "netPrice", - "taxRules", - "rawTotal", - "taxStatus" + "price", + "apiAlias" ] }, - "Association": { - "additionalProperties": { - "$ref": "#/components/schemas/Association" - } - }, - "LineItemType": { - "type": "string", - "deprecated": true, - "enum": [ - "product", - "credit", - "custom", - "promotion", - "discount", - "container", - "quantity" + "Sitemap": { + "type": "object", + "properties": { + "filename": { + "type": "string" + }, + "created": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "filename", + "created" ] }, - "LineItem": { + "CrossSellingElement": { "type": "object", "properties": { - "children": { + "crossSelling": { + "$ref": "#/components/schemas/ProductCrossSelling" + }, + "products": { "type": "array", "items": { - "$ref": "#/components/schemas/LineItem" + "$ref": "#/components/schemas/Product" } }, - "cover": { - "$ref": "#/components/schemas/Media" - }, - "dataContextHash": { - "type": "string" - }, - "dataTimestamp": { - "type": "string" - }, - "deliveryInformation": { - "$ref": "#/components/schemas/CartDeliveryInformation" - }, - "description": { - "type": "string" - }, - "good": { - "type": "boolean" - }, - "id": { - "type": "string" - }, - "label": { - "type": "string" - }, - "modified": { - "type": "boolean" - }, - "modifiedByApp": { - "type": "boolean" + "total": { + "type": "integer", + "format": "int32" }, - "payload": { - "$ref": "#/components/schemas/ProductJsonApi" + "streamId": { + "type": "string", + "format": "uuid" }, - "price": { + "apiAlias": { + "type": "string", + "enum": [ + "cross_selling_element" + ] + } + }, + "required": [ + "crossSelling", + "products", + "total", + "apiAlias" + ] + }, + "ProductMeasurements": { + "type": "object", + "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", + "properties": { + "width": { "type": "object", "properties": { - "apiAlias": { + "unit": { "type": "string", "enum": [ - "calculated_price" - ] - }, - "calculatedTaxes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] - }, - "quantity": { - "type": "number" - }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } - }, - { - "type": "null" - } - ] + "value": { + "type": "number" + } + } + }, + "height": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" }, - "totalPrice": { + "value": { "type": "number" + } + } + }, + "length": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" }, - "unitPrice": { + "value": { "type": "number" + } + } + }, + "weight": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg" }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } + "value": { + "type": "number" } - }, - "required": [ - "apiAlias", - "totalPrice", - "quantity", - "unitPrice" - ] + } + } + } + }, + "CartError": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "key": { + "type": "string" }, - "priceDefinition": { - "$ref": "#/components/schemas/CartPriceQuantity" + "level": { + "type": "number", + "enum": [ + 0, + 10, + 20 + ], + "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" }, - "quantity": { - "type": "number" + "message": { + "type": "string" }, - "quantityInformation": { + "messageKey": { + "type": "string" + } + }, + "required": [ + "key", + "level", + "message", + "messageKey" + ] + }, + "ContextMeasurementSystemInfo": { + "type": "object", + "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", + "properties": { + "system": { + "type": "string", + "enum": [ + "metric", + "imperial" + ], + "default": "metric", + "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." + }, + "units": { "type": "object", + "description": "Units used in the measurement system.", "properties": { - "maxPurchase": { - "type": "number" + "length": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Unit of length." }, - "minPurchase": { - "type": "number" + "weight": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." + } + } + } + } + }, + "CartDeliveryPosition": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" }, - "purchaseSteps": { - "type": "number" + "latest": { + "type": "string", + "format": "date-time" } } }, - "referencedId": { + "identifier": { "type": "string" }, - "removable": { - "type": "boolean" + "lineItem": { + "$ref": "#/components/schemas/LineItem" }, - "stackable": { + "price": { + "$ref": "#/components/schemas/CalculatedPrice" + } + } + }, + "CookieGroup": { + "type": "object", + "properties": { + "isRequired": { "type": "boolean" }, - "states": { - "deprecated": true, - "type": "array", - "items": { - "type": "string", - "enum": [ - "is-physical", - "is-download" - ] - } + "name": { + "type": "string" }, - "type": { - "$ref": "#/components/schemas/OrderLineItem/properties/type" + "description": { + "type": "string" }, - "uniqueIdentifier": { + "cookie": { + "type": "string" + }, + "value": { "type": "string" + }, + "expiration": { + "type": "integer" + }, + "entries": { + "$ref": "#/components/schemas/CookieEntryCollection" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cookie_group" + ] } }, + "not": { + "allOf": [ + { + "required": [ + "cookie" + ] + }, + { + "required": [ + "entries" + ] + } + ] + }, "required": [ - "id", - "type" + "name", + "isRequired", + "apiAlias" ] }, "ListPrice": { @@ -20698,220 +20827,91 @@ "apiAlias" ] }, - "AggregationEntity": { - "title": "AggregationEntity", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "entity" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "definition": { - "description": "The entity definition e.g \"product_manufacturer\".", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field", - "definition" - ] - }, - "AggregationFilter": { - "title": "AggregationFilter", + "CartDelivery": { "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "filter" - ] + "location": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "state": { + "$ref": "#/components/schemas/CountryState" + } + } }, - "filter": { + "positions": { "type": "array", "items": { - "$ref": "#/components/schemas/Filters" + "$ref": "#/components/schemas/CartDeliveryPosition" } + }, + "shippingCosts": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" } - }, - "required": [ - "name", - "type", - "filter" - ] + } }, - "AggregationTerms": { - "title": "AggregationTerms", + "EntitySearchResult": { "type": "object", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "terms" - ] - }, - "field": { - "description": "The field you want to aggregate over.", + "entity": { "type": "string" }, - "limit": { - "description": "The number of terms to return", - "type": "number" + "total": { + "type": "integer", + "description": "The total number of found entities" }, - "sort": { + "aggregations": { "type": "array", - "description": "Sorting the aggregation result.", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", "items": { - "$ref": "#/components/schemas/Sort" + "type": "object" } - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "AggregationHistogram": { - "title": "AggregationHistogram", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "histogram" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" }, - "interval": { - "description": "The interval of the histogram", - "type": "number" - }, - "format": { - "description": "The format of the histogram", - "type": "string" + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." }, - "timeZone": { - "description": "The timezone of the histogram", - "type": "string" + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." } - }, - "required": [ - "name", - "type", - "field" - ] + } }, - "AggregationRange": { - "title": "AggregationRange", - "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", + "SuccessResponse": { "type": "object", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "range" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "ranges": { - "description": "The ranges of the aggregation", - "type": "array", - "items": { - "type": "object", - "anyOf": [ - { - "type": "object", - "title": "From and to", - "properties": { - "from": { - "type": "number", - "description": "The lower bound of the range" - }, - "to": { - "type": "number", - "description": "The upper bound of the range" - } - }, - "required": [ - "from", - "to" - ] - }, - { - "type": "object", - "title": "From only", - "properties": { - "from": { - "type": "string", - "description": "The lower bound of the range" - } - }, - "required": [ - "from" - ] - }, - { - "type": "object", - "title": "To only", - "properties": { - "to": { - "type": "string", - "description": "The upper bound of the range" - } - }, - "required": [ - "to" - ] - } - ] - } - } - }, - "required": [ - "name", - "type", - "field", - "ranges" - ] + "success": { + "type": "boolean" + } + } }, "SearchByImageSearchTermResponse": { "type": "array", @@ -20965,6 +20965,44 @@ } } }, + "ApprovalRule": { + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "businessPartnerCustomerId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "priority": { + "type": "integer" + }, + "description": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "conditions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": { + "type": "string" + } + } + } + } + }, + "type": "object" + }, "PendingOrder": { "type": "object", "properties": { @@ -21172,44 +21210,6 @@ } } }, - "ApprovalRule": { - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "businessPartnerCustomerId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "priority": { - "type": "integer" - }, - "description": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "conditions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "value": { - "type": "string" - } - } - } - } - }, - "type": "object" - }, "ListCategoryRouteResponse": { "type": "object", "properties": { @@ -21399,62 +21399,6 @@ "204": { "description": "No Content" }, - "SeoUrlListResponse": { - "description": "Entity search result containing seo urls.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } - } - }, - "type": "object", - "required": [ - "elements" - ] - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } - }, - "ProductListResponse": { - "description": "Entity search result containing products", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "required": [ - "elements" - ], - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } - }, "CurrencyListResponse": { "description": "Entity search result containing currencies.", "content": { @@ -21468,31 +21412,6 @@ } } }, - "CountryListResponse": { - "description": "Entity search result containing countries.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Country" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } - }, "SalutationListResponse": { "description": "Entity search result containing salutations.", "content": { @@ -21518,104 +21437,62 @@ } } }, - "CategoryListResponse": { - "description": "Entity search result containing categories.", - "content": { - "application/json": { + "ContextTokenResponse": { + "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", + "headers": { + "sw-context-token": { + "description": "Contains sw-context-token value", "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - } - } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "type": "string" } } - } - }, - "CountryStateListResponse": { - "description": "Entity search result containing countries.", + }, "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CountryState" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" + "type": "object", + "properties": { + "redirectUrl": { + "description": "Define the URL which browser will be redirected to", + "type": "string" } - ] + } } } } }, - "LanguageListResponse": { - "description": "Entity search result containing languages.", + "ShippingMethodListResponse": { + "description": "Entity search result containing shipping methods.", "content": { "application/json": { "schema": { "allOf": [ { + "required": [ + "elements" + ], "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Language" + "$ref": "#/components/schemas/ShippingMethod" } } }, - "required": [ - "elements" - ], "type": "object" }, { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } - }, - "ContextTokenResponse": { - "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", - "headers": { - "sw-context-token": { - "description": "Contains sw-context-token value", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "description": "Define the URL which browser will be redirected to", - "type": "string" + "$ref": "#/components/schemas/EntitySearchResult" } - } + ] } } } @@ -21809,6 +21686,31 @@ } } }, + "CountryStateListResponse": { + "description": "Entity search result containing countries.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CountryState" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + }, "PaymentMethodListResponse": { "description": "", "content": { @@ -21835,8 +21737,89 @@ } } }, - "ShippingMethodListResponse": { - "description": "Entity search result containing shipping methods.", + "SeoUrlListResponse": { + "description": "Entity search result containing seo urls.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" + } + } + }, + "type": "object", + "required": [ + "elements" + ] + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + }, + "CategoryListResponse": { + "description": "Entity search result containing categories.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + } + } + } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + }, + "LanguageListResponse": { + "description": "Entity search result containing languages.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + } + } + }, + "required": [ + "elements" + ], + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + }, + "ProductListResponse": { + "description": "Entity search result containing products", "content": { "application/json": { "schema": { @@ -21846,18 +21829,35 @@ "elements" ], "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/ShippingMethod" + "$ref": "#/components/schemas/Product" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + }, + "CountryListResponse": { + "description": "Entity search result containing countries.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Country" } } }, @@ -23752,15 +23752,35 @@ ] } }, - "/pending-orders/request": { + "/approval-rule": { "post": { "tags": [ "B2B Order Approval" ], - "summary": "Request new order approval", - "description": "This route is used to request a new order approval", - "operationId": "requestOrderApproval", + "summary": "List all approval rules", + "description": "This route is used to list all approval rules from the store", + "operationId": "listApprovalRules", "parameters": [ + { + "name": "p", + "in": "query", + "description": "Page number", + "required": false, + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "limit", + "in": "query", + "description": "Number of items per page", + "required": false, + "schema": { + "type": "integer", + "default": 10 + } + }, { "$ref": "#/components/parameters/swLanguageId" } @@ -23770,24 +23790,38 @@ "content": { "application/json": { "schema": { - "properties": { - "comment": { - "description": "Message content", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Pending order entity", + "description": "Entity search result containing approval rules", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PendingOrder" + "type": "object", + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ApprovalRule" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -23798,48 +23832,62 @@ "ApiKey": [] } ] - } - }, - "/pending-order/{id}": { - "post": { + }, + "get": { "tags": [ "B2B Order Approval" ], - "summary": "Fetch one pending order by id", - "description": "This route is used to fetch a pending order from the store by id", - "operationId": "fetchPendingOrder", + "summary": "Fetch a list of approval rules", + "description": "This route is used to load approval rules", + "operationId": "readApprovalRules", "parameters": [ { - "name": "id", - "in": "path", - "description": "Identifier of the pending order to be fetched", - "required": true, + "name": "p", + "in": "query", + "description": "Page number", + "required": false, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "integer", + "default": 1 + } + }, + { + "name": "limit", + "in": "query", + "description": "Number of items per page", + "required": false, + "schema": { + "type": "integer", + "default": 10 } }, { "$ref": "#/components/parameters/swLanguageId" } ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Criteria" - } - } - } - }, "responses": { "200": { - "description": "Pending order entity", + "description": "Entity search result containing approval rules", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PendingOrder" + "type": "object", + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ApprovalRule" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -23852,52 +23900,76 @@ ] } }, - "/pending-order/{id}/payment-method": { + "/approval-rule/create": { "post": { "tags": [ "B2B Order Approval" ], - "summary": "Fetch payment methods of a pending order", - "description": "This route is used to fetch the payment methods of a pending order", - "operationId": "fetchPendingOrderPaymentMethods", + "summary": "Create a new approval rule", + "description": "This route is used to create a new approval rule", + "operationId": "createApprovalRule", "parameters": [ - { - "name": "id", - "in": "path", - "description": "Identifier of the pending order to be fetched", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, { "$ref": "#/components/parameters/swLanguageId" } ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "approvalRuleName": { + "description": "Name of the approval rule", + "type": "string" + }, + "approvalRuleApprove": { + "description": "ID of the role that can approve the rule", + "type": "string" + }, + "approvalRuleRole": { + "description": "ID of the role that is affected by the rule", + "type": "string" + }, + "priority": { + "description": "Priority of the approval rule", + "type": "integer" + }, + "description": { + "description": "Description of the approval rule", + "type": "string" + }, + "active": { + "description": "Active status of the approval rule", + "type": "boolean" + }, + "approvalRuleCondition": { + "description": "List of rules", + "type": "object", + "properties": { + "type": { + "description": "Type of the rule", + "type": "string" + }, + "value": { + "description": "Value", + "type": "string" + } + } + } + }, + "type": "object" + } + } + } + }, "responses": { "200": { - "description": "", + "description": "Approval rule entity", "content": { "application/json": { "schema": { - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PaymentMethod" - } - } - }, - "type": "object" + "$ref": "#/components/schemas/ApprovalRule" } } } @@ -23910,19 +23982,19 @@ ] } }, - "/pending-order/{id}/decline": { - "post": { + "/approval-rule/{id}": { + "get": { "tags": [ "B2B Order Approval" ], - "summary": "Decline a pending order by id", - "description": "This route is used to decline a pending order from the store by id", - "operationId": "declinePendingOrder", + "summary": "Fetch one approval rule by id", + "description": "This route is used to fetch a approval rule from the store by id", + "operationId": "readApprovalRule", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the pending order to be declined", + "description": "Identifier of the approval rule to be fetched", "required": true, "schema": { "type": "string", @@ -23933,47 +24005,36 @@ "$ref": "#/components/parameters/swLanguageId" } ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "properties": { - "comment": { - "description": "Message content", - "type": "string" - } - }, - "type": "object" + "responses": { + "200": { + "description": "Approval rule entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApprovalRule" + } } } } }, - "responses": { - "204": { - "description": "No content response" - } - }, "security": [ { "ApiKey": [] } ] - } - }, - "/pending-order/{id}/approve": { - "post": { + }, + "patch": { "tags": [ "B2B Order Approval" ], - "summary": "Approve a pending order by id", - "description": "This route is used to approve a pending order from the store by id", - "operationId": "approvePendingOrder", + "summary": "Update a approval rule by id", + "description": "This route is used to update a approval rule from the store by id", + "operationId": "updateApprovalRule", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the pending order to be approved", + "description": "Identifier of the approval rule to be updated", "required": true, "schema": { "type": "string", @@ -23985,14 +24046,48 @@ } ], "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { "properties": { - "comment": { - "description": "Message content", + "approvalRuleName": { + "description": "Name of the approval rule", + "type": "string" + }, + "approvalRuleApprove": { + "description": "ID of the role that can approve the rule", + "type": "string" + }, + "approvalRuleRole": { + "description": "ID of the role that is affected by the rule", + "type": "string" + }, + "priority": { + "description": "Priority of the approval rule", + "type": "integer" + }, + "description": { + "description": "Description of the approval rule", "type": "string" + }, + "active": { + "description": "Active status of the approval rule", + "type": "boolean" + }, + "approvalRuleCondition": { + "description": "List of rules", + "type": "object", + "properties": { + "type": { + "description": "Type of the rule", + "type": "string" + }, + "value": { + "description": "Value", + "type": "string" + } + } } }, "type": "object" @@ -24001,8 +24096,15 @@ } }, "responses": { - "204": { - "description": "No content response" + "200": { + "description": "Approval rule entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApprovalRule" + } + } + } } }, "security": [ @@ -24012,25 +24114,15 @@ ] } }, - "/pending-order/{id}/checkout/order": { + "/pending-orders/request": { "post": { "tags": [ "B2B Order Approval" ], - "summary": "Create a order from a pending order", - "description": "This route is used to create a order from a pending order", - "operationId": "createOrderFromPendingOrder", + "summary": "Request new order approval", + "description": "This route is used to request a new order approval", + "operationId": "requestOrderApproval", "parameters": [ - { - "name": "id", - "in": "path", - "description": "Identifier of the pending order to be used to create a order", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, { "$ref": "#/components/parameters/swLanguageId" } @@ -24041,7 +24133,7 @@ "application/json": { "schema": { "properties": { - "customerComment": { + "comment": { "description": "Message content", "type": "string" } @@ -24053,11 +24145,11 @@ }, "responses": { "200": { - "description": "Order entity", + "description": "Pending order entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Order" + "$ref": "#/components/schemas/PendingOrder" } } } @@ -24070,33 +24162,23 @@ ] } }, - "/approval-rule": { + "/pending-order/{id}": { "post": { "tags": [ "B2B Order Approval" ], - "summary": "List all approval rules", - "description": "This route is used to list all approval rules from the store", - "operationId": "listApprovalRules", + "summary": "Fetch one pending order by id", + "description": "This route is used to fetch a pending order from the store by id", + "operationId": "fetchPendingOrder", "parameters": [ { - "name": "p", - "in": "query", - "description": "Page number", - "required": false, - "schema": { - "type": "integer", - "default": 1 - } - }, - { - "name": "limit", - "in": "query", - "description": "Number of items per page", - "required": false, + "name": "id", + "in": "path", + "description": "Identifier of the pending order to be fetched", + "required": true, "schema": { - "type": "integer", - "default": 10 + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, { @@ -24108,38 +24190,18 @@ "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] + "$ref": "#/components/schemas/Criteria" } } } }, "responses": { "200": { - "description": "Entity search result containing approval rules", + "description": "Pending order entity", "content": { "application/json": { "schema": { - "type": "object", - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ApprovalRule" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/PendingOrder" } } } @@ -24150,33 +24212,25 @@ "ApiKey": [] } ] - }, - "get": { + } + }, + "/pending-order/{id}/payment-method": { + "post": { "tags": [ "B2B Order Approval" ], - "summary": "Fetch a list of approval rules", - "description": "This route is used to load approval rules", - "operationId": "readApprovalRules", + "summary": "Fetch payment methods of a pending order", + "description": "This route is used to fetch the payment methods of a pending order", + "operationId": "fetchPendingOrderPaymentMethods", "parameters": [ { - "name": "p", - "in": "query", - "description": "Page number", - "required": false, - "schema": { - "type": "integer", - "default": 1 - } - }, - { - "name": "limit", - "in": "query", - "description": "Number of items per page", - "required": false, + "name": "id", + "in": "path", + "description": "Identifier of the pending order to be fetched", + "required": true, "schema": { - "type": "integer", - "default": 10 + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, { @@ -24185,27 +24239,27 @@ ], "responses": { "200": { - "description": "Entity search result containing approval rules", + "description": "", "content": { "application/json": { "schema": { - "type": "object", - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ApprovalRule" - } - } - }, + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", "type": "object" }, - { - "$ref": "#/components/schemas/EntitySearchResult" + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentMethod" + } } - ] + }, + "type": "object" } } } @@ -24218,62 +24272,38 @@ ] } }, - "/approval-rule/create": { + "/pending-order/{id}/decline": { "post": { "tags": [ "B2B Order Approval" ], - "summary": "Create a new approval rule", - "description": "This route is used to create a new approval rule", - "operationId": "createApprovalRule", + "summary": "Decline a pending order by id", + "description": "This route is used to decline a pending order from the store by id", + "operationId": "declinePendingOrder", "parameters": [ + { + "name": "id", + "in": "path", + "description": "Identifier of the pending order to be declined", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, { "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { "properties": { - "approvalRuleName": { - "description": "Name of the approval rule", - "type": "string" - }, - "approvalRuleApprove": { - "description": "ID of the role that can approve the rule", - "type": "string" - }, - "approvalRuleRole": { - "description": "ID of the role that is affected by the rule", - "type": "string" - }, - "priority": { - "description": "Priority of the approval rule", - "type": "integer" - }, - "description": { - "description": "Description of the approval rule", + "comment": { + "description": "Message content", "type": "string" - }, - "active": { - "description": "Active status of the approval rule", - "type": "boolean" - }, - "approvalRuleCondition": { - "description": "List of rules", - "type": "object", - "properties": { - "type": { - "description": "Type of the rule", - "type": "string" - }, - "value": { - "description": "Value", - "type": "string" - } - } } }, "type": "object" @@ -24282,15 +24312,8 @@ } }, "responses": { - "200": { - "description": "Approval rule entity", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApprovalRule" - } - } - } + "204": { + "description": "No content response" } }, "security": [ @@ -24300,19 +24323,19 @@ ] } }, - "/approval-rule/{id}": { - "get": { + "/pending-order/{id}/approve": { + "post": { "tags": [ "B2B Order Approval" ], - "summary": "Fetch one approval rule by id", - "description": "This route is used to fetch a approval rule from the store by id", - "operationId": "readApprovalRule", + "summary": "Approve a pending order by id", + "description": "This route is used to approve a pending order from the store by id", + "operationId": "approvePendingOrder", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the approval rule to be fetched", + "description": "Identifier of the pending order to be approved", "required": true, "schema": { "type": "string", @@ -24323,36 +24346,47 @@ "$ref": "#/components/parameters/swLanguageId" } ], - "responses": { - "200": { - "description": "Approval rule entity", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApprovalRule" - } + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "properties": { + "comment": { + "description": "Message content", + "type": "string" + } + }, + "type": "object" } } } }, + "responses": { + "204": { + "description": "No content response" + } + }, "security": [ { "ApiKey": [] } ] - }, - "patch": { + } + }, + "/pending-order/{id}/checkout/order": { + "post": { "tags": [ "B2B Order Approval" ], - "summary": "Update a approval rule by id", - "description": "This route is used to update a approval rule from the store by id", - "operationId": "updateApprovalRule", + "summary": "Create a order from a pending order", + "description": "This route is used to create a order from a pending order", + "operationId": "createOrderFromPendingOrder", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the approval rule to be updated", + "description": "Identifier of the pending order to be used to create a order", "required": true, "schema": { "type": "string", @@ -24364,48 +24398,14 @@ } ], "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { "properties": { - "approvalRuleName": { - "description": "Name of the approval rule", - "type": "string" - }, - "approvalRuleApprove": { - "description": "ID of the role that can approve the rule", - "type": "string" - }, - "approvalRuleRole": { - "description": "ID of the role that is affected by the rule", - "type": "string" - }, - "priority": { - "description": "Priority of the approval rule", - "type": "integer" - }, - "description": { - "description": "Description of the approval rule", + "customerComment": { + "description": "Message content", "type": "string" - }, - "active": { - "description": "Active status of the approval rule", - "type": "boolean" - }, - "approvalRuleCondition": { - "description": "List of rules", - "type": "object", - "properties": { - "type": { - "description": "Type of the rule", - "type": "string" - }, - "value": { - "description": "Value", - "type": "string" - } - } } }, "type": "object" @@ -24415,11 +24415,11 @@ }, "responses": { "200": { - "description": "Approval rule entity", + "description": "Order entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApprovalRule" + "$ref": "#/components/schemas/Order" } } } From 0154aa5ad3dc0695b2c202f63df5f850f5f84983 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 29 May 2026 16:49:24 +0200 Subject: [PATCH 09/16] [create-pull-request] automated change (#419) Co-authored-by: shopwareBot --- SwagDigitalSalesRooms-storeapi.json | 10020 +++++++++++++------------- 1 file changed, 5010 insertions(+), 5010 deletions(-) diff --git a/SwagDigitalSalesRooms-storeapi.json b/SwagDigitalSalesRooms-storeapi.json index 8a983d8..2c8a15f 100644 --- a/SwagDigitalSalesRooms-storeapi.json +++ b/SwagDigitalSalesRooms-storeapi.json @@ -11862,294 +11862,168 @@ }, "type": "object" }, - "EntitySearchResult": { - "type": "object", - "properties": { - "entity": { - "type": "string" - }, - "total": { - "type": "integer", - "description": "The total number of found entities" - }, - "aggregations": { - "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", - "items": { - "type": "object" - } - }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." - }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." - } + "CookieGroupCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CookieGroup" } }, - "SalesChannelContext": { + "CalculatedPrice": { "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "token": { - "description": "Context the user session", - "type": "string" - }, - "currentCustomerGroup": { - "type": "object", - "description": "Customer group of the current user", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } - } + "unitPrice": { + "type": "number" }, - "fallbackCustomerGroup": { - "description": "Fallback group if the default customer group is not applicable", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } - } + "quantity": { + "type": "number" }, - "currency": { - "$ref": "#/components/schemas/Currency" + "rawTotal": { + "type": "number" }, - "salesChannel": { - "$ref": "#/components/schemas/SalesChannel" + "totalPrice": { + "type": "number" }, - "measurementSystem": { - "$ref": "#/components/schemas/ContextMeasurementSystemInfo" + "taxStatus": { + "type": "string", + "enum": [ + "net", + "tax-free" + ] }, - "taxRules": { + "calculatedTaxes": { "type": "array", - "description": "Currently active tax rules and/or rates", "items": { "type": "object", "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, "taxRate": { - "type": "number", - "format": "float" + "type": "number" }, - "name": { - "type": "string" + "price": { + "type": "number" } - } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] } }, - "customer": { + "referencePrice": { "oneOf": [ { - "type": "null" + "$ref": "#/components/schemas/CartPriceReference" }, { - "$ref": "#/components/schemas/Customer" + "type": "null" } ] }, - "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethod" - }, - "shippingLocation": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" + { + "type": "null" } - } + ] }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" + "positionPrice": { + "type": "number" }, - "context": { - "description": "Core context with general configuration values and state", - "type": "object", - "properties": { - "versionId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "currencyFactor": { - "type": "integer" - }, - "currencyPrecision": { - "type": "integer", - "format": "int32" - }, - "languageIdChain": { - "type": "array", - "items": { - "type": "string" - } - }, - "scope": { - "type": "string" - }, - "source": { + "netPrice": { + "type": "number" + }, + "regulationPrice": { + "oneOf": [ + { "type": "object", - "required": [ - "salesChannelId", - "type" - ], "properties": { - "type": { + "price": { + "type": "number" + }, + "apiAlias": { "type": "string", "enum": [ - "sales-channel", - "shop-api" + "cart_regulation_price" ] - }, - "salesChannelId": { - "type": "string" } } }, - "taxState": { - "type": "string" - }, - "useCache": { - "type": "boolean" + { + "type": "null" } - } + ] }, - "itemRounding": { - "type": "object", - "required": [ - "decimals", - "interval", - "roundForNet", - "apiAlias" - ], - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" - ] - }, - "decimals": { - "type": "integer", - "format": "int32" - }, - "interval": { - "type": "number", - "format": "float" - }, - "roundForNet": { - "type": "boolean" - } - } + "hasRange": { + "type": "boolean" }, - "totalRounding": { - "type": "object", - "required": [ - "decimals", - "interval", - "roundForNet", - "apiAlias" - ], - "properties": { - "apiAlias": { + "variantId": { + "oneOf": [ + { "type": "string", - "enum": [ - "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" - ] - }, - "decimals": { - "type": "integer", - "format": "int32" - }, - "interval": { - "type": "number", - "format": "float" + "format": "^[0-9a-f]{32}$" }, - "roundForNet": { - "type": "boolean" + { + "type": "null" } - } - }, - "languageInfo": { - "type": "object", - "required": [ - "localeCode", - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "localeCode": { - "type": "string" - } - } + ] }, "apiAlias": { "type": "string", "enum": [ - "sales_channel_context" + "calculated_price" ] - } - }, - "required": [ - "salesChannel", - "apiAlias", - "itemRounding", - "totalRounding", - "languageInfo" - ] - }, - "CartError": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "key": { - "type": "string" - }, - "level": { - "type": "number", - "enum": [ - 0, - 10, - 20 - ], - "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" - }, - "message": { - "type": "string" }, - "messageKey": { - "type": "string" + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } } }, "required": [ - "key", - "level", - "message", - "messageKey" + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "referencePrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitPrice", + "positionPrice", + "netPrice", + "taxRules", + "rawTotal", + "taxStatus" ] }, - "ContextMeasurementSystemInfo": { + "MeasurementUnits": { "type": "object", - "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", + "description": "Configuration of the measurement system", "properties": { "system": { "type": "string", @@ -12191,57 +12065,86 @@ } } }, - "CustomerAddressRead": { + "CartListPrice": { "type": "object", + "description": "", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true + "discount": { + "type": "number" }, - "customerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true + "percentage": { + "type": "number" }, - "createdAt": { - "type": "string", - "format": "date-time" + "price": { + "type": "number" }, - "updatedAt": { - "oneOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "null" - } + "apiAlias": { + "type": "string", + "enum": [ + "cart_list_price" + ] + } + }, + "required": [ + "apiAlias" + ] + }, + "CartDeliveryInformation": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_information" ] }, - "country": { - "$ref": "#/components/schemas/Country" + "freeDelivery": { + "type": "boolean" }, - "countryState": { - "oneOf": [ - { - "$ref": "#/components/schemas/CountryState" + "deliveryTime": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - { - "type": "null" + "min": { + "type": "integer" + }, + "max": { + "type": "integer" + }, + "unit": { + "type": "string" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_time" + ] } - ] + } }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "height": { + "type": "integer" + }, + "length": { + "type": "integer" + }, + "restockTime": { + "type": "integer" + }, + "stock": { + "type": "integer" + }, + "weight": { + "type": "integer" + }, + "width": { + "type": "integer" } }, "required": [ - "customerId", - "createdAt", - "updatedAt", - "country", - "salutation" + "apiAlias" ] }, "ProductListingCriteria": { @@ -12340,1018 +12243,911 @@ } ] }, - "WishlistLoadRouteResponse": { + "ProductPurchaseLimit": { "type": "object", + "description": "Current quantity purchase limits for a product.", "required": [ - "products" + "productId", + "minPurchase", + "purchaseSteps", + "maxPurchase", + "stock", + "apiAlias" ], "properties": { - "wishlist": { - "type": "object", - "properties": { - "customerId": { - "type": "string" - }, - "salesChannelId": { - "type": "string" - } - } + "productId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The product ID." }, - "products": { - "$ref": "#/components/schemas/ProductListingResult" + "minPurchase": { + "type": "integer", + "description": "Minimum quantity a customer can purchase." + }, + "purchaseSteps": { + "type": "integer", + "description": "Step increment for quantity selection." + }, + "maxPurchase": { + "type": "integer", + "description": "Maximum quantity a customer can purchase, reflecting current stock for closeout products." + }, + "stock": { + "type": [ + "integer", + "null" + ], + "description": "Current stock level of the product." + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_purchase_limit" + ] } } }, - "Sitemap": { + "CrossSellingElementCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrossSellingElement" + } + }, + "Criteria": { "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "filename": { + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", "type": "string" }, - "created": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "filename", - "created" - ] - }, - "CartPriceQuantity": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_quantity" - ] - }, - "isCalculated": { - "type": "boolean" + "limit": { + "description": "Number of items per result page", + "type": "integer" }, - "listPrice": { - "$ref": "#/components/schemas/CartListPrice" + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } }, - "price": { - "type": "number" + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } }, - "quantity": { - "type": "number" + "query": { + "type": "string", + "description": "The query string to search for" }, - "regulationPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - } - }, - "type": "object" + "associations": { + "$ref": "#/components/schemas/Associations" }, - "taxRules": { + "post-filter": { "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "name": { - "type": "string" + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } - } + ] } }, - "type": { - "type": "string" - } - }, - "required": [ - "apiAlias" - ] - }, - "ProductDetailResponse": { - "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", - "properties": { - "product": { - "$ref": "#/components/schemas/Product" - }, - "configurator": { + "sort": { "type": "array", - "description": "List of property groups with their corresponding options and information on how to display them.", + "description": "Sorting in the search result.", "items": { - "$ref": "#/components/schemas/PropertyGroup" + "$ref": "#/components/schemas/Sort" } - } - }, - "required": [ - "product" - ] - }, - "NewsletterStatus": { - "type": "string", - "enum": [ - "notSet", - "optIn", - "optOut", - "direct", - "undefined" - ], - "description": "The subscription status. Possible values are: notSet, optIn, optOut, direct, undefined." - }, - "CartDelivery": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" - } + }, + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" } }, - "location": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "state": { - "$ref": "#/components/schemas/CountryState" - } + "fields": { + "type": "array", + "description": "Fields which should be returned in the search result.", + "items": { + "type": "string", + "description": "Name of a field" } }, - "positions": { + "grouping": { "type": "array", + "description": "Perform groupings over certain fields", "items": { - "$ref": "#/components/schemas/CartDeliveryPosition" + "type": "string", + "description": "Name of a field" } }, - "shippingCosts": { - "$ref": "#/components/schemas/CalculatedPrice" + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" + "includes": { + "$ref": "#/components/schemas/Includes" + }, + "excludes": { + "$ref": "#/components/schemas/Excludes" } } }, - "ReferencePrice": { + "NoneFieldsCriteria": { "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "purchaseUnit": { - "type": "number" - }, - "referenceUnit": { - "type": "number" + "page": { + "description": "Search result page", + "type": "integer" }, - "unitName": { + "term": { + "description": "Search term", "type": "string" }, - "price": { - "type": "number" + "limit": { + "description": "Number of items per result page", + "type": "integer" }, - "apiAlias": { + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } + }, + "query": { "type": "string", - "enum": [ - "cart_price_reference" - ] + "description": "The query string to search for" }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/ListPrice" - }, - { - "type": "null" - } - ] + "associations": { + "$ref": "#/components/schemas/Associations" }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } + ] + } + }, + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + }, + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } + }, + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" + }, + "excludes": { + "$ref": "#/components/schemas/Excludes" + } + } + }, + "Associations": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Criteria" + } + }, + "Includes": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "Excludes": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "Aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" + }, + { + "title": "AggregationEntity", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationEntity" }, { - "type": "null" + "$ref": "#/components/schemas/SubAggregations" } ] }, - "hasRange": { - "type": "boolean" + { + "title": "AggregationFilter", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationFilter" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] }, - "variantId": { - "oneOf": [ + { + "title": "AggregationTerms", + "allOf": [ { - "type": "string", - "format": "^[0-9a-f]{32}$" + "$ref": "#/components/schemas/AggregationTerms" }, { - "type": "null" + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationRange", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationRange" + }, + { + "$ref": "#/components/schemas/SubAggregations" } ] } - }, - "required": [ - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" ] }, - "CartDeliveryInformation": { + "SubAggregations": { "type": "object", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_information" - ] - }, - "freeDelivery": { - "type": "boolean" - }, - "deliveryTime": { - "type": "object", - "properties": { - "name": { - "type": "string" + "aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" }, - "min": { - "type": "integer" + { + "$ref": "#/components/schemas/AggregationEntity" }, - "max": { - "type": "integer" + { + "$ref": "#/components/schemas/AggregationFilter" }, - "unit": { - "type": "string" + { + "$ref": "#/components/schemas/AggregationTerms" }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_time" - ] + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/AggregationRange" } - } - }, - "height": { - "type": "integer" - }, - "length": { - "type": "integer" - }, - "restockTime": { - "type": "integer" - }, - "stock": { - "type": "integer" - }, - "weight": { - "type": "integer" - }, - "width": { - "type": "integer" + ] } - }, - "required": [ - "apiAlias" + } + }, + "TotalCountMode": { + "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", + "type": "string", + "default": "none", + "enum": [ + "none", + "exact", + "next-pages" ] }, - "Cart": { + "Query": { "type": "object", "properties": { - "name": { - "description": "Name of the cart - for example `guest-cart`", - "type": "string" - }, - "token": { - "description": "Context token identifying the cart and the user session", - "type": "string" - }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "lineItems": { - "description": "All items within the cart", - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } + "score": { + "type": "number" }, - "errors": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "anyOf": [ + "query": { + "oneOf": [ { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartError" - } + "$ref": "#/components/schemas/SimpleFilter" }, { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "code": { - "type": "number" - }, - "key": { - "type": "string" - }, - "level": { - "type": "number" - }, - "message": { - "type": "string" - }, - "messageKey": { - "type": "string" - } - }, - "required": [ - "code", - "key", - "level", - "message", - "messageKey" - ] - } + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } ] + } + }, + "additionalProperties": true + }, + "Sort": { + "type": "object", + "properties": { + "field": { + "type": "string" }, - "deliveries": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDelivery" - } + "order": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] }, - "transactions": { - "description": "A list of all payment transactions associated with the current cart.", - "type": "array", - "items": { - "type": "object", - "properties": { - "paymentMethodId": { - "type": "string" - }, - "amount": { - "$ref": "#/components/schemas/CalculatedPrice" - } - } + "naturalSorting": { + "type": "boolean" + }, + "type": { + "type": "string" + } + }, + "required": [ + "field", + "order" + ] + }, + "Filters": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } + ] + } + }, + "SimpleFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "contains", + "equalsAny", + "prefix", + "suffix" + ] }, - "modified": { - "type": "boolean" + "field": { + "type": "string" }, - "customerComment": { - "description": "A comment that can be added to the cart.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } + "value": { + "type": "string" + } + }, + "required": [ + "type", + "field", + "value" + ] + }, + "EqualsFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "equals" ] }, - "affiliateCode": { - "description": "An affiliate tracking code", + "field": { + "type": "string" + }, + "value": { "oneOf": [ { "type": "string" }, { - "type": "null" - } - ] - }, - "campaignCode": { - "description": "A campaign tracking code", - "oneOf": [ + "type": "number" + }, { - "type": "string" + "type": "boolean" }, { "type": "null" } ] + } + }, + "required": [ + "type", + "field", + "value" + ] + }, + "MultiNotFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "multi", + "not" + ] }, - "apiAlias": { + "operator": { "type": "string", "enum": [ - "cart" + "and", + "or", + "nor", + "nand" ] + }, + "queries": { + "$ref": "#/components/schemas/Filters" } }, "required": [ - "price", - "apiAlias" + "type", + "operator", + "queries" ] }, - "AccountNewsletterRecipient": { + "RangeFilter": { "type": "object", "properties": { - "status": { - "$ref": "#/components/schemas/NewsletterStatus" - }, - "apiAlias": { + "type": { "type": "string", "enum": [ - "account_newsletter_recipient" + "range" ] + }, + "field": { + "type": "string" + }, + "parameters": { + "type": "object", + "properties": { + "gte": { + "type": "number" + }, + "gt": { + "type": "number" + }, + "lte": { + "type": "number" + }, + "lt": { + "type": "number" + } + } } }, "required": [ - "status", - "apiAlias" + "type", + "field", + "parameters" ] }, - "CrossSellingElementCollection": { + "CookieEntryCollection": { "type": "array", "items": { - "$ref": "#/components/schemas/CrossSellingElement" + "$ref": "#/components/schemas/CookieEntry" } }, - "Criteria": { + "CartItems": { "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", + "required": [ + "items" + ], "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "term": { - "description": "Search term", - "type": "string" - }, - "limit": { - "description": "Number of items per result page", - "type": "integer" - }, - "filter": { + "items": { "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] + "$ref": "#/components/schemas/LineItem" } - }, - "ids": { + } + } + }, + "Association": { + "additionalProperties": { + "$ref": "#/components/schemas/Association" + } + }, + "CartItemsUpdate": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { "type": "array", - "description": "List of ids to search for", "items": { - "type": "string" + "$ref": "#/components/schemas/CartLineItemUpdate" } + } + } + }, + "CartLineItemUpdate": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "string" }, - "query": { - "type": "string", - "description": "The query string to search for" - }, - "associations": { - "$ref": "#/components/schemas/Associations" + "type": { + "$ref": "#/components/schemas/OrderLineItem/properties/type" }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } + "quantity": { + "type": "integer" }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" - } + "referencedId": { + "type": "string" }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } + "label": { + "type": "string" }, - "fields": { - "type": "array", - "description": "Fields which should be returned in the search result.", - "items": { - "type": "string", - "description": "Name of a field" - } + "payload": { + "type": "object" }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } + "stackable": { + "type": "boolean" }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" + "removable": { + "type": "boolean" }, - "includes": { - "$ref": "#/components/schemas/Includes" + "coverId": { + "type": "string" }, - "excludes": { - "$ref": "#/components/schemas/Excludes" + "priceDefinition": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "price": { + "type": "number" + }, + "percentage": { + "type": "number" + }, + "quantity": { + "type": "integer" + }, + "isCalculated": { + "type": "boolean" + }, + "listPrice": { + "type": "number" + }, + "taxRules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number" + }, + "percentage": { + "type": "number" + } + } + } + } + } } } }, - "NoneFieldsCriteria": { + "AggregationEntity": { + "title": "AggregationEntity", "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "page": { - "description": "Search result page", - "type": "integer" + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "term": { - "description": "Search term", + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "entity" + ] + }, + "field": { + "description": "The field you want to aggregate over.", "type": "string" }, - "limit": { - "description": "Number of items per result page", - "type": "integer" + "definition": { + "description": "The entity definition e.g \"product_manufacturer\".", + "type": "string" + } + }, + "required": [ + "name", + "type", + "field", + "definition" + ] + }, + "AggregationFilter": { + "title": "AggregationFilter", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "filter": { - "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "filter" + ] }, - "ids": { + "filter": { "type": "array", - "description": "List of ids to search for", "items": { - "type": "string" + "$ref": "#/components/schemas/Filters" } + } + }, + "required": [ + "name", + "type", + "filter" + ] + }, + "AggregationTerms": { + "title": "AggregationTerms", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "query": { + "type": { + "description": "The type of aggregation", "type": "string", - "description": "The query string to search for" + "enum": [ + "terms" + ] }, - "associations": { - "$ref": "#/components/schemas/Associations" + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "post-filter": { + "limit": { + "description": "The number of terms to return", + "type": "number" + }, + "sort": { "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", + "description": "Sorting the aggregation result.", "items": { "$ref": "#/components/schemas/Sort" } - }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } - }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" - }, - "includes": { - "$ref": "#/components/schemas/Includes" - }, - "excludes": { - "$ref": "#/components/schemas/Excludes" - } - } - }, - "Associations": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Criteria" - } - }, - "Includes": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "Excludes": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "Aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "title": "AggregationEntity", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationFilter", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationTerms", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationHistogram", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationRange", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationRange" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - } - ] - }, - "SubAggregations": { - "type": "object", - "properties": { - "aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/AggregationRange" - } - ] - } - } - }, - "TotalCountMode": { - "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", - "type": "string", - "default": "none", - "enum": [ - "none", - "exact", - "next-pages" - ] - }, - "Query": { - "type": "object", - "properties": { - "score": { - "type": "number" - }, - "query": { - "oneOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] } }, - "additionalProperties": true + "required": [ + "name", + "type", + "field" + ] }, - "Sort": { + "AggregationHistogram": { + "title": "AggregationHistogram", "type": "object", "properties": { - "field": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" }, - "order": { + "type": { + "description": "The type of aggregation", "type": "string", "enum": [ - "ASC", - "DESC" + "histogram" ] }, - "naturalSorting": { - "type": "boolean" + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "type": { + "interval": { + "description": "The interval of the histogram", + "type": "number" + }, + "format": { + "description": "The format of the histogram", + "type": "string" + }, + "timeZone": { + "description": "The timezone of the histogram", "type": "string" } }, "required": [ - "field", - "order" + "name", + "type", + "field" ] }, - "Filters": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "SimpleFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "contains", - "equalsAny", - "prefix", - "suffix" - ] - }, - "field": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "required": [ - "type", - "field", - "value" - ] - }, - "EqualsFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "equals" - ] - }, - "field": { - "type": "string" - }, - "value": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "type", - "field", - "value" - ] - }, - "MultiNotFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "multi", - "not" - ] - }, - "operator": { - "type": "string", - "enum": [ - "and", - "or", - "nor", - "nand" - ] - }, - "queries": { - "$ref": "#/components/schemas/Filters" - } - }, - "required": [ - "type", - "operator", - "queries" - ] - }, - "RangeFilter": { + "AggregationRange": { + "title": "AggregationRange", + "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", "type": "object", "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, "type": { + "description": "The type of aggregation", "type": "string", "enum": [ "range" ] }, "field": { + "description": "The field you want to aggregate over.", "type": "string" }, - "parameters": { - "type": "object", - "properties": { - "gte": { - "type": "number" - }, - "gt": { - "type": "number" - }, - "lte": { - "type": "number" - }, - "lt": { - "type": "number" - } + "ranges": { + "description": "The ranges of the aggregation", + "type": "array", + "items": { + "type": "object", + "anyOf": [ + { + "type": "object", + "title": "From and to", + "properties": { + "from": { + "type": "number", + "description": "The lower bound of the range" + }, + "to": { + "type": "number", + "description": "The upper bound of the range" + } + }, + "required": [ + "from", + "to" + ] + }, + { + "type": "object", + "title": "From only", + "properties": { + "from": { + "type": "string", + "description": "The lower bound of the range" + } + }, + "required": [ + "from" + ] + }, + { + "type": "object", + "title": "To only", + "properties": { + "to": { + "type": "string", + "description": "The upper bound of the range" + } + }, + "required": [ + "to" + ] + } + ] } } }, "required": [ + "name", "type", "field", - "parameters" + "ranges" ] }, - "FindProductVariantRouteResponse": { - "type": "object", - "properties": { - "foundCombination": { - "type": "object", - "properties": { - "variantId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "options": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, "Price": { "type": "object", "description": "Price object", @@ -13455,932 +13251,266 @@ "net" ] }, - "NavigationType": { - "type": "string", - "enum": [ - "main-navigation", - "footer-navigation", - "service-navigation" - ] - }, - "OrderRouteResponse": { + "AggregationMetrics": { "type": "object", "properties": { - "orders": { - "type": "object", - "allOf": [ - { - "type": "object", - "required": [ - "elements" - ], - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order" - } - } - } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } + "name": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "avg", + "count", + "max", + "min", + "stats", + "sum" ] }, - "paymentChangeable": { - "type": "object", - "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", - "additionalProperties": { - "type": "boolean" - } + "field": { + "type": "string" } }, "required": [ - "orders" + "name", + "type", + "field" ] }, - "ProductListingResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EntitySearchResult" + "CartPriceReference": { + "type": "object", + "properties": { + "purchaseUnit": { + "type": "number" }, - { - "type": "object", - "properties": { - "currentFilters": { - "type": "object", - "description": "Contains the state of the filters. These can be used to create listing filters.", - "properties": { - "navigationId": { - "type": "string" - }, - "manufacturer": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, + "referenceUnit": { + "type": "number" + }, + "unitName": { + "type": "string" + }, + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_reference" + ] + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { "price": { - "type": "object", - "properties": { - "min": { - "type": "integer", - "default": 0 - }, - "max": { - "type": "integer", - "default": 0 - } - }, - "required": [ - "min", - "max" - ] + "type": "number" }, - "rating": { - "oneOf": [ - { - "type": "integer" - }, - { - "type": "null" - } + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" ] - }, - "shipping-free": { - "type": "boolean", - "default": false - }, - "properties": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "search": { - "type": "string" } - }, - "required": [ - "manufacturer", - "navigationId", - "price", - "properties", - "rating", - "shipping-free" - ] - }, - "availableSortings": { - "type": "array", - "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", - "items": { - "type": "object", - "properties": { - "label": { - "type": "string" - }, - "translated": { - "type": "object", - "properties": { - "label": { - "type": "string" - } - }, - "required": [ - "label" - ] - }, - "key": { - "type": "string" - }, - "priority": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_sorting" - ] - } - }, - "required": [ - "label", - "translated", - "key", - "priority", - "apiAlias" - ] - } - }, - "sorting": { - "type": "string" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" } }, - "entity": { + { + "type": "null" + } + ] + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { "type": "string", - "enum": [ - "product" - ] + "format": "^[0-9a-f]{32}$" }, - "apiAlias": { - "type": "string", - "enum": [ - "product_listing" - ] + { + "type": "null" } - }, - "required": [ - "elements", - "availableSortings", - "currentFilters", - "apiAlias" ] } + }, + "required": [ + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" ] }, - "ProductMeasurements": { - "type": "object", - "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", + "CustomerAddressBody": { + "description": "Added since version: 6.0.0.0", + "required": [ + "countryId", + "firstName", + "lastName", + "city", + "street" + ], "properties": { - "width": { - "type": "object", - "properties": { - "unit": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" - }, - "value": { - "type": "number" - } - } + "countryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "height": { - "type": "object", - "properties": { - "unit": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" - }, - "value": { - "type": "number" - } - } + "countryStateId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "length": { - "type": "object", - "properties": { - "unit": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" - }, - "value": { - "type": "number" - } - } + "salutationId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "weight": { - "type": "object", - "properties": { - "unit": { - "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg" - }, - "value": { - "type": "number" - } - } - } - } - }, - "CookieEntryCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CookieEntry" - } - }, - "CrossSellingElement": { - "type": "object", - "properties": { - "crossSelling": { - "$ref": "#/components/schemas/ProductCrossSelling" + "firstName": { + "type": "string" }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } + "lastName": { + "type": "string" }, - "total": { - "type": "integer", - "format": "int32" + "zipcode": { + "type": "string" }, - "streamId": { - "type": "string", - "format": "uuid" + "city": { + "type": "string" }, - "apiAlias": { - "type": "string", - "enum": [ - "cross_selling_element" - ] - } - }, - "required": [ - "crossSelling", - "products", - "total", - "apiAlias" - ] - }, - "CookieEntry": { - "type": "object", - "properties": { - "cookie": { + "company": { "type": "string" }, - "value": { + "street": { "type": "string" }, - "expiration": { - "type": "integer" + "department": { + "type": "string" }, - "name": { + "title": { "type": "string" }, - "description": { + "phoneNumber": { "type": "string" }, - "hidden": { - "type": "boolean" + "additionalAddressLine1": { + "type": "string" }, - "apiAlias": { - "type": "string", - "enum": [ - "cookie_entry" - ] - } - }, - "required": [ - "cookie", - "hidden", - "apiAlias" - ] - }, - "MeasurementUnits": { - "type": "object", - "description": "Configuration of the measurement system", - "properties": { - "system": { - "type": "string", - "enum": [ - "metric", - "imperial" - ], - "default": "metric", - "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." + "additionalAddressLine2": { + "type": "string" }, - "units": { - "type": "object", - "description": "Units used in the measurement system.", - "properties": { - "length": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm", - "description": "Unit of length." - }, - "weight": { - "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg", - "description": "Unit of weight." - } - } - } - } - }, - "CartListPrice": { - "type": "object", - "description": "", - "properties": { - "discount": { - "type": "number" + "customFields": { + "type": "object" }, - "percentage": { - "type": "number" + "country": { + "$ref": "#/components/schemas/Country" }, - "price": { - "type": "number" + "countryState": { + "$ref": "#/components/schemas/CountryState" }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_list_price" - ] + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, - "required": [ - "apiAlias" - ] + "type": "object" }, - "CookieGroup": { + "CustomerAddressRead": { "type": "object", "properties": { - "isRequired": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true }, - "cookie": { - "type": "string" + "customerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true }, - "value": { - "type": "string" + "createdAt": { + "type": "string", + "format": "date-time" }, - "expiration": { - "type": "integer" + "updatedAt": { + "oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ] }, - "entries": { - "$ref": "#/components/schemas/CookieEntryCollection" + "country": { + "$ref": "#/components/schemas/Country" }, - "apiAlias": { - "type": "string", - "enum": [ - "cookie_group" + "countryState": { + "oneOf": [ + { + "$ref": "#/components/schemas/CountryState" + }, + { + "type": "null" + } ] + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, - "not": { - "allOf": [ - { - "required": [ - "cookie" - ] - }, - { - "required": [ - "entries" - ] - } - ] - }, "required": [ - "name", - "isRequired", - "apiAlias" + "customerId", + "createdAt", + "updatedAt", + "country", + "salutation" ] }, - "SuccessResponse": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - } + "NavigationRouteResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" } }, - "CartItems": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - } - } - }, - "AggregationMetrics": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "avg", - "count", - "max", - "min", - "stats", - "sum" - ] - }, - "field": { - "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "CartDeliveryPosition": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" - } - } - }, - "identifier": { - "type": "string" - }, - "lineItem": { - "$ref": "#/components/schemas/LineItem" - }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" - } - } - }, - "CustomerAddressBody": { - "description": "Added since version: 6.0.0.0", - "required": [ - "countryId", - "firstName", - "lastName", - "city", - "street" - ], - "properties": { - "countryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryStateId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "salutationId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "zipcode": { - "type": "string" - }, - "city": { - "type": "string" - }, - "company": { - "type": "string" - }, - "street": { - "type": "string" - }, - "department": { - "type": "string" - }, - "title": { - "type": "string" - }, - "phoneNumber": { - "type": "string" - }, - "additionalAddressLine1": { - "type": "string" - }, - "additionalAddressLine2": { - "type": "string" - }, - "customFields": { - "type": "object" - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "$ref": "#/components/schemas/CountryState" - }, - "salutation": { - "$ref": "#/components/schemas/Salutation" - } - }, - "type": "object" - }, - "ProductPurchaseLimit": { - "type": "object", - "description": "Current quantity purchase limits for a product.", - "required": [ - "productId", - "minPurchase", - "purchaseSteps", - "maxPurchase", - "stock", - "apiAlias" - ], - "properties": { - "productId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The product ID." - }, - "minPurchase": { - "type": "integer", - "description": "Minimum quantity a customer can purchase." - }, - "purchaseSteps": { - "type": "integer", - "description": "Step increment for quantity selection." - }, - "maxPurchase": { - "type": "integer", - "description": "Maximum quantity a customer can purchase, reflecting current stock for closeout products." - }, - "stock": { - "type": [ - "integer", - "null" - ], - "description": "Current stock level of the product." - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_purchase_limit" - ] - } - } - }, - "CookieRouteResponse": { - "type": "object", - "description": "Response containing cookie groups and their configuration hash.", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cookie_groups_hash" - ] - }, - "elements": { - "type": "array", - "description": "Collection of cookie groups", - "items": { - "$ref": "#/components/schemas/CookieGroup" - } - }, - "hash": { - "type": "string", - "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", - "example": "f86b6a872cb83dbd22d838ceda1aa3d4" - }, - "languageId": { - "type": "string", - "format": "uuid", - "description": "The language ID for which the cookie configuration was generated. Used to store hashes per language.", - "example": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" - } - }, - "required": [ - "elements", - "hash", - "languageId", - "apiAlias" - ], - "example": { - "apiAlias": "cookie_groups_hash", - "elements": [ - { - "isRequired": true, - "description": "Cookies required for this shop to function:", - "name": "Technically required", - "entries": [ - { - "name": "Session", - "hidden": false, - "cookie": "session-", - "apiAlias": "cookie_entry" + "ShippingMethodPageRouteResponse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "deliveryTimeId": { + "type": "string" + }, + "deliveryTime": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - { - "name": "Timezone", - "hidden": false, - "cookie": "timezone", - "apiAlias": "cookie_entry" - }, - { - "value": "1", - "expiration": 30, - "name": "Cookie preferences", - "hidden": true, - "cookie": "cookie-preference", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "description": "Cookies used for statistics and shop performance metrics.", - "name": "Statistics", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "Google Analytics", - "hidden": false, - "cookie": "google-analytics-enabled", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "description": "Allows Google to collect personal data for online advertising and marketing.", - "name": "Marketing", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "Google Advertising", - "hidden": false, - "cookie": "google-ads-enabled", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "name": "Comfort features", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "YouTube video", - "hidden": false, - "cookie": "youtube-video", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - } - ], - "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", - "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" - } - }, - "CartItemsUpdate": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartLineItemUpdate" - } - } - } - }, - "CartLineItemUpdate": { - "type": "object", - "required": [ - "id" - ], - "properties": { - "id": { - "type": "string" - }, - "type": { - "$ref": "#/components/schemas/OrderLineItem/properties/type" - }, - "quantity": { - "type": "integer" - }, - "referencedId": { - "type": "string" - }, - "label": { - "type": "string" - }, - "payload": { - "type": "object" - }, - "stackable": { - "type": "boolean" - }, - "removable": { - "type": "boolean" - }, - "coverId": { - "type": "string" - }, - "priceDefinition": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "price": { - "type": "number" - }, - "percentage": { - "type": "number" - }, - "quantity": { - "type": "integer" - }, - "isCalculated": { - "type": "boolean" - }, - "listPrice": { - "type": "number" - }, - "taxRules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number" - }, - "percentage": { - "type": "number" - } - } - } - } - } - } - } - }, - "NavigationRouteResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - }, - "CookieGroupCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CookieGroup" - } - }, - "ProductListingFlags": { - "type": "object", - "description": "Additional flags for product listings", - "properties": { - "no-aggregations": { - "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "only-aggregations": { - "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - } - }, - "ShippingMethodPageRouteResponse": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "deliveryTimeId": { - "type": "string" - }, - "deliveryTime": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer", - "format": "int32" + "min": { + "type": "integer", + "format": "int32" }, "max": { "type": "integer", @@ -14697,7 +13827,44 @@ } } }, - "CartPriceReference": { + "ProductDetailResponse": { + "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", + "properties": { + "product": { + "$ref": "#/components/schemas/Product" + }, + "configurator": { + "type": "array", + "description": "List of property groups with their corresponding options and information on how to display them.", + "items": { + "$ref": "#/components/schemas/PropertyGroup" + } + } + }, + "required": [ + "product" + ] + }, + "AccountNewsletterRecipient": { + "type": "object", + "properties": { + "status": { + "$ref": "#/components/schemas/NewsletterStatus" + }, + "apiAlias": { + "type": "string", + "enum": [ + "account_newsletter_recipient" + ] + } + }, + "required": [ + "status", + "apiAlias" + ] + }, + "ReferencePrice": { "type": "object", "properties": { "purchaseUnit": { @@ -14721,7 +13888,7 @@ "listPrice": { "oneOf": [ { - "$ref": "#/components/schemas/CartListPrice" + "$ref": "#/components/schemas/ListPrice" }, { "type": "null" @@ -14765,7 +13932,6 @@ } }, "required": [ - "apiAlias", "hasRange", "regulationPrice", "listPrice", @@ -14775,236 +13941,418 @@ "unitName" ] }, - "Breadcrumb": { + "CookieEntry": { "type": "object", "properties": { - "name": { + "cookie": { "type": "string" }, - "categoryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "value": { + "type": "string" }, - "type": { - "$ref": "#/components/schemas/Category/properties/type" + "expiration": { + "type": "integer" }, - "translated": { - "type": "object", - "additionalProperties": true, - "properties": { - "customFields": { - "type": "object" - }, - "slotConfig": { - "type": "object" - }, - "linkType": { - "$ref": "#/components/schemas/Category/properties/linkType" - }, - "internalLink": { - "type": "string" - }, - "externalLink": { - "type": "string" - }, - "linkNewTab": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "metaTitle": { - "type": "string" - }, - "metaDescription": { - "type": "string" - }, - "keywords": { - "type": "string" - } - } + "name": { + "type": "string" }, - "path": { + "description": { "type": "string" }, - "seoUrls": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } + "hidden": { + "type": "boolean" }, "apiAlias": { "type": "string", "enum": [ - "breadcrumb" + "cookie_entry" ] } }, "required": [ - "name", - "categoryId", - "type", - "translated", - "path", + "cookie", + "hidden", "apiAlias" ] }, - "CalculatedPrice": { + "FindProductVariantRouteResponse": { "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "unitPrice": { - "type": "number" + "foundCombination": { + "type": "object", + "properties": { + "variantId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "options": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + }, + "SalesChannelContext": { + "type": "object", + "properties": { + "token": { + "description": "Context the user session", + "type": "string" }, - "quantity": { - "type": "number" + "currentCustomerGroup": { + "type": "object", + "description": "Customer group of the current user", + "properties": { + "name": { + "type": "string" + }, + "displayGross": { + "type": "boolean" + } + } }, - "rawTotal": { - "type": "number" + "fallbackCustomerGroup": { + "description": "Fallback group if the default customer group is not applicable", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "displayGross": { + "type": "boolean" + } + } }, - "totalPrice": { - "type": "number" + "currency": { + "$ref": "#/components/schemas/Currency" }, - "taxStatus": { - "type": "string", - "enum": [ - "net", - "tax-free" - ] + "salesChannel": { + "$ref": "#/components/schemas/SalesChannel" }, - "calculatedTaxes": { + "measurementSystem": { + "$ref": "#/components/schemas/ContextMeasurementSystemInfo" + }, + "taxRules": { "type": "array", + "description": "Currently active tax rules and/or rates", "items": { "type": "object", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, "taxRate": { - "type": "number" + "type": "number", + "format": "float" }, - "price": { - "type": "number" + "name": { + "type": "string" } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] + } } }, - "referencePrice": { + "customer": { "oneOf": [ { - "$ref": "#/components/schemas/CartPriceReference" + "type": "null" }, { - "type": "null" + "$ref": "#/components/schemas/Customer" } ] }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod" + }, + "shippingLocation": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] }, - { - "type": "null" + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" } - ] - }, - "positionPrice": { - "type": "number" + } }, - "netPrice": { - "type": "number" + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" }, - "regulationPrice": { - "oneOf": [ - { + "context": { + "description": "Core context with general configuration values and state", + "type": "object", + "properties": { + "versionId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "currencyFactor": { + "type": "integer" + }, + "currencyPrecision": { + "type": "integer", + "format": "int32" + }, + "languageIdChain": { + "type": "array", + "items": { + "type": "string" + } + }, + "scope": { + "type": "string" + }, + "source": { "type": "object", + "required": [ + "salesChannelId", + "type" + ], "properties": { - "price": { - "type": "number" - }, - "apiAlias": { + "type": { "type": "string", "enum": [ - "cart_regulation_price" + "sales-channel", + "shop-api" ] + }, + "salesChannelId": { + "type": "string" } } }, - { - "type": "null" + "taxState": { + "type": "string" + }, + "useCache": { + "type": "boolean" } - ] - }, - "hasRange": { - "type": "boolean" + } }, - "variantId": { - "oneOf": [ - { + "itemRounding": { + "type": "object", + "required": [ + "decimals", + "interval", + "roundForNet", + "apiAlias" + ], + "properties": { + "apiAlias": { "type": "string", - "format": "^[0-9a-f]{32}$" + "enum": [ + "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" + ] }, - { - "type": "null" + "decimals": { + "type": "integer", + "format": "int32" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" } - ] + } + }, + "totalRounding": { + "type": "object", + "required": [ + "decimals", + "interval", + "roundForNet", + "apiAlias" + ], + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" + ] + }, + "decimals": { + "type": "integer", + "format": "int32" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" + } + } + }, + "languageInfo": { + "type": "object", + "required": [ + "localeCode", + "name" + ], + "properties": { + "name": { + "type": "string" + }, + "localeCode": { + "type": "string" + } + } }, "apiAlias": { "type": "string", "enum": [ - "calculated_price" + "sales_channel_context" ] + } + }, + "required": [ + "salesChannel", + "apiAlias", + "itemRounding", + "totalRounding", + "languageInfo" + ] + }, + "NavigationType": { + "type": "string", + "enum": [ + "main-navigation", + "footer-navigation", + "service-navigation" + ] + }, + "WishlistLoadRouteResponse": { + "type": "object", + "required": [ + "products" + ], + "properties": { + "wishlist": { + "type": "object", + "properties": { + "customerId": { + "type": "string" + }, + "salesChannelId": { + "type": "string" + } + } }, - "taxRules": { + "products": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + }, + "Breadcrumb": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "categoryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "type": { + "$ref": "#/components/schemas/Category/properties/type" + }, + "translated": { + "type": "object", + "additionalProperties": true, + "properties": { + "customFields": { + "type": "object" + }, + "slotConfig": { + "type": "object" + }, + "linkType": { + "$ref": "#/components/schemas/Category/properties/linkType" + }, + "internalLink": { + "type": "string" + }, + "externalLink": { + "type": "string" + }, + "linkNewTab": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "metaTitle": { + "type": "string" + }, + "metaDescription": { + "type": "string" + }, + "keywords": { + "type": "string" + } + } + }, + "path": { + "type": "string" + }, + "seoUrls": { "type": "array", - "description": "Currently active tax rules and/or rates", "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } + "$ref": "#/components/schemas/SeoUrl" } + }, + "apiAlias": { + "type": "string", + "enum": [ + "breadcrumb" + ] } }, "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "referencePrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitPrice", - "positionPrice", - "netPrice", - "taxRules", - "rawTotal", - "taxStatus" + "name", + "categoryId", + "type", + "translated", + "path", + "apiAlias" ] }, - "Association": { - "additionalProperties": { - "$ref": "#/components/schemas/Association" + "ProductListingFlags": { + "type": "object", + "description": "Additional flags for product listings", + "properties": { + "no-aggregations": { + "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "only-aggregations": { + "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } } }, "LineItemType": { @@ -15256,398 +14604,460 @@ "type" ] }, - "ListPrice": { + "CartPriceQuantity": { "type": "object", - "description": "", "properties": { - "discount": { - "type": "number" + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_quantity" + ] }, - "percentage": { - "type": "number" + "isCalculated": { + "type": "boolean" + }, + "listPrice": { + "$ref": "#/components/schemas/CartListPrice" }, "price": { "type": "number" }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_list_price" - ] - } - }, - "required": [ - "apiAlias" - ] - }, - "AggregationEntity": { - "title": "AggregationEntity", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "entity" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "definition": { - "description": "The entity definition e.g \"product_manufacturer\".", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field", - "definition" - ] - }, - "AggregationFilter": { - "title": "AggregationFilter", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" + "quantity": { + "type": "number" }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "filter" - ] + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + } + }, + "type": "object" }, - "filter": { + "taxRules": { "type": "array", "items": { - "$ref": "#/components/schemas/Filters" + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } } - } - }, - "required": [ - "name", - "type", - "filter" - ] - }, - "AggregationTerms": { - "title": "AggregationTerms", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" }, "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "terms" - ] - }, - "field": { - "description": "The field you want to aggregate over.", "type": "string" - }, - "limit": { - "description": "The number of terms to return", - "type": "number" - }, - "sort": { - "type": "array", - "description": "Sorting the aggregation result.", - "items": { - "$ref": "#/components/schemas/Sort" - } } }, "required": [ - "name", - "type", - "field" + "apiAlias" ] }, - "AggregationHistogram": { - "title": "AggregationHistogram", + "NewsletterStatus": { + "type": "string", + "enum": [ + "notSet", + "optIn", + "optOut", + "direct", + "undefined" + ], + "description": "The subscription status. Possible values are: notSet, optIn, optOut, direct, undefined." + }, + "OrderRouteResponse": { "type": "object", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "histogram" + "orders": { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "elements" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" + } + } + } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } ] }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "interval": { - "description": "The interval of the histogram", - "type": "number" - }, - "format": { - "description": "The format of the histogram", - "type": "string" - }, - "timeZone": { - "description": "The timezone of the histogram", - "type": "string" + "paymentChangeable": { + "type": "object", + "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", + "additionalProperties": { + "type": "boolean" + } } }, "required": [ - "name", - "type", - "field" + "orders" ] }, - "AggregationRange": { - "title": "AggregationRange", - "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "range" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "ProductListingResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EntitySearchResult" }, - "ranges": { - "description": "The ranges of the aggregation", - "type": "array", - "items": { - "type": "object", - "anyOf": [ - { - "type": "object", - "title": "From and to", - "properties": { - "from": { - "type": "number", - "description": "The lower bound of the range" - }, - "to": { - "type": "number", - "description": "The upper bound of the range" - } + { + "type": "object", + "properties": { + "currentFilters": { + "type": "object", + "description": "Contains the state of the filters. These can be used to create listing filters.", + "properties": { + "navigationId": { + "type": "string" }, - "required": [ - "from", - "to" - ] - }, - { - "type": "object", - "title": "From only", - "properties": { - "from": { + "manufacturer": { + "type": "array", + "items": { "type": "string", - "description": "The lower bound of the range" + "pattern": "^[0-9a-f]{32}$" } }, - "required": [ - "from" - ] - }, - { - "type": "object", - "title": "To only", - "properties": { - "to": { - "type": "string", - "description": "The upper bound of the range" - } + "price": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "default": 0 + }, + "max": { + "type": "integer", + "default": 0 + } + }, + "required": [ + "min", + "max" + ] }, - "required": [ - "to" - ] - } - ] - } - } - }, - "required": [ - "name", - "type", - "field", - "ranges" - ] - }, - "PresentationCmsPage": { - "allOf": [ - { - "$ref": "#/components/schemas/DsrPresentationCmsPage" - }, - { - "type": "object", - "properties": { - "pickedProductIds": { - "anyOf": [ - { + "rating": { + "oneOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "shipping-free": { + "type": "boolean", + "default": false + }, + "properties": { "type": "array", "items": { "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Product id" + "pattern": "^[0-9a-f]{32}$" } }, - { - "type": "null" + "search": { + "type": "string" } - ], - "description": "The product id is assigned to presentation if it's product listing or instant listing" - } - } - } - ] - }, - "AttendeeProductCollectionLastSeenResponse": { - "type": "object", - "properties": { - "collection": { - "type": "object", - "properties": { - "lastSeen": { + }, + "required": [ + "manufacturer", + "navigationId", + "price", + "properties", + "rating", + "shipping-free" + ] + }, + "availableSortings": { "type": "array", + "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Product ids from the collection" + "type": "object", + "properties": { + "label": { + "type": "string" + }, + "translated": { + "type": "object", + "properties": { + "label": { + "type": "string" + } + }, + "required": [ + "label" + ] + }, + "key": { + "type": "string" + }, + "priority": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_sorting" + ] + } + }, + "required": [ + "label", + "translated", + "key", + "priority", + "apiAlias" + ] } - } - } - } - }, - "example": { - "collection": { - "lastSeen": [ - "0015b3d83df441e490da7f6880a9c2da", - "60793d25cbab473f92c405ce0525f3ec" - ] - } - } - }, - "GuideHoveredPayload": { - "type": "object", - "properties": { - "hoveredElementId": { - "anyOf": [ - { + }, + "sorting": { + "type": "string" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "entity": { "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "the id from the product which is used in the interaction" + "enum": [ + "product" + ] }, - { - "type": "null" + "apiAlias": { + "type": "string", + "enum": [ + "product_listing" + ] } + }, + "required": [ + "elements", + "availableSortings", + "currentFilters", + "apiAlias" ] } - } + ] }, - "DynamicPageClosedPayload": { + "CookieRouteResponse": { "type": "object", + "description": "Response containing cookie groups and their configuration hash.", "properties": { - "pageId": { - "oneOf": [ - { - "type": "string", - "pattern": "^[a-f0-9]{32}$" - }, - { - "type": "null" - } - ], - "pattern": "^[a-f0-9]{32}$", - "description": "The id of the page that was closed" + "apiAlias": { + "type": "string", + "enum": [ + "cookie_groups_hash" + ] }, - "all": { - "type": "boolean", - "default": false, - "description": "Whether all pages were closed" - } - } - }, - "ScreenSharingToggledPayload": { - "type": "object", - "required": [ - "active" - ], - "properties": { - "active": { - "type": "boolean", - "description": "Whether the screen sharing is active or not" - } - } - }, - "DynamicProductListingPageOpenedPayload": { - "required": [ - "page" - ], - "properties": { - "page": { - "type": "integer", - "description": "Current page position in the pagination" - } - } - }, - "ToggleBroadcastModePayload": { - "type": "object", - "required": [ - "active" - ], - "properties": { - "active": { - "type": "boolean", - "description": "Status if the mode is toggled to active or inactive" - } - } - }, - "JoinAppointmentResponse": { - "type": "object", - "description": "Includes all data you will need to attend to a appointment.", - "properties": { - "mercureSubscriberTopics": { + "elements": { "type": "array", + "description": "Collection of cookie groups", "items": { - "type": "string", - "description": "mercure topic" - }, - "description": "The topics to which the attendee/guide can subscribe for" + "$ref": "#/components/schemas/CookieGroup" + } }, - "mercurePublisherTopic": { - "oneOf": [ + "hash": { + "type": "string", + "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", + "example": "f86b6a872cb83dbd22d838ceda1aa3d4" + }, + "languageId": { + "type": "string", + "format": "uuid", + "description": "The language ID for which the cookie configuration was generated. Used to store hashes per language.", + "example": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" + } + }, + "required": [ + "elements", + "hash", + "languageId", + "apiAlias" + ], + "example": { + "apiAlias": "cookie_groups_hash", + "elements": [ + { + "isRequired": true, + "description": "Cookies required for this shop to function:", + "name": "Technically required", + "entries": [ + { + "name": "Session", + "hidden": false, + "cookie": "session-", + "apiAlias": "cookie_entry" + }, + { + "name": "Timezone", + "hidden": false, + "cookie": "timezone", + "apiAlias": "cookie_entry" + }, + { + "value": "1", + "expiration": 30, + "name": "Cookie preferences", + "hidden": true, + "cookie": "cookie-preference", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "description": "Cookies used for statistics and shop performance metrics.", + "name": "Statistics", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "Google Analytics", + "hidden": false, + "cookie": "google-analytics-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "description": "Allows Google to collect personal data for online advertising and marketing.", + "name": "Marketing", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "Google Advertising", + "hidden": false, + "cookie": "google-ads-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "name": "Comfort features", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "YouTube video", + "hidden": false, + "cookie": "youtube-video", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + } + ], + "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", + "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" + } + }, + "Cart": { + "type": "object", + "properties": { + "name": { + "description": "Name of the cart - for example `guest-cart`", + "type": "string" + }, + "token": { + "description": "Context token identifying the cart and the user session", + "type": "string" + }, + "price": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "lineItems": { + "description": "All items within the cart", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + }, + "errors": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "anyOf": [ { - "type": "string" + "type": "array", + "items": { + "$ref": "#/components/schemas/CartError" + } }, { - "type": "null" + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "code": { + "type": "number" + }, + "key": { + "type": "string" + }, + "level": { + "type": "number" + }, + "message": { + "type": "string" + }, + "messageKey": { + "type": "string" + } + }, + "required": [ + "code", + "key", + "level", + "message", + "messageKey" + ] + } } - ], - "description": "The topic to which the attendee/guide can send updates" + ] }, - "JWTMercureSubscriberToken": { + "deliveries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDelivery" + } + }, + "transactions": { + "description": "A list of all payment transactions associated with the current cart.", + "type": "array", + "items": { + "type": "object", + "properties": { + "paymentMethodId": { + "type": "string" + }, + "amount": { + "$ref": "#/components/schemas/CalculatedPrice" + } + } + } + }, + "modified": { + "type": "boolean" + }, + "customerComment": { + "description": "A comment that can be added to the cart.", "oneOf": [ { "type": "string" @@ -15655,10 +15065,10 @@ { "type": "null" } - ], - "description": "The JWT mercure token to publish updates" + ] }, - "mercureHubPublicUrl": { + "affiliateCode": { + "description": "An affiliate tracking code", "oneOf": [ { "type": "string" @@ -15666,10 +15076,10 @@ { "type": "null" } - ], - "description": "The mercure hub url to connect for subscribing and updating" + ] }, - "JWTMercurePublisherToken": { + "campaignCode": { + "description": "A campaign tracking code", "oneOf": [ { "type": "string" @@ -15677,505 +15087,752 @@ { "type": "null" } - ], - "description": "The JWT mercure token to subscribe for updates" + ] }, - "id": { + "apiAlias": { "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The appointment id" + "enum": [ + "cart" + ] + } + }, + "required": [ + "price", + "apiAlias" + ] + }, + "Sitemap": { + "type": "object", + "properties": { + "filename": { + "type": "string" }, - "newContextToken": { + "created": { "type": "string", - "description": "The new context token will be used in the header (sw-context-token) for calling the other routes" + "format": "date-time" + } + }, + "required": [ + "filename", + "created" + ] + }, + "CrossSellingElement": { + "type": "object", + "properties": { + "crossSelling": { + "$ref": "#/components/schemas/ProductCrossSelling" }, - "attendeeId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The created Id for the attendee" + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } }, - "salesChannelId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The id of the current sales channel" + "total": { + "type": "integer", + "format": "int32" }, - "salesChannelName": { - "type": "string", - "description": "The name of the current sales channel" - }, - "appointmentName": { + "streamId": { "type": "string", - "description": "The name of the appointment" + "format": "uuid" }, - "presentationGuideMode": { + "apiAlias": { "type": "string", "enum": [ - "self", - "guided" - ], - "description": "The type of the appointment" - }, - "isPreview": { - "type": "boolean", - "description": "To see if it's a preview appointment" - }, - "attendeeName": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "The name of the attendee" - }, - "videoUserId": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "The video user id that attendee could use" - }, - "b2bFeatures": { - "type": "object", - "description": "The b2b features that available for the appointment", - "properties": { - "quoteManagement": { - "type": "boolean", - "description": "To know if the quote management is enabled for current customer" - } - } + "cross_selling_element" + ] } }, - "example": { - "mercureSubscriberTopics": [ - "gs-guide-actions-2d2c358f1ca04098aacf12873c2eed82", - "gs-presentation-state-for-client-2d2c358f1ca04098aacf12873c2eed82", - "gs-presentation-state-for-all-2d2c358f1ca04098aacf12873c2eed82" - ], - "mercurePublisherTopic": "gs-client-actions-2d2c358f1ca04098aacf12873c2eed82", - "JWTMercureSubscriberToken": "jwt token for subscribing to updates", - "mercureHubPublicUrl": "http://localhost:8081/.well-known/mercure", - "JWTMercurePublisherToken": "jwt token for publishing updates", - "attendeeName": "attendee name", - "videoUserId": null, - "b2bFeatures": { - "feature1": false, - "feature2": true - }, - "id": "2d2c358f1ca04098aacf12873c2eed82", - "newContextToken": "new context token to call the other routes", - "attendeeId": "b6358241e4ad4a4e99d0f729d21d63be", - "salesChannelId": "4a791ec7f9ff46b2ad67ae2f562891d3", - "salesChannelName": "Storefront", - "appointmentName": "Test Appointment", - "presentationGuideMode": "guided", - "isPreview": false, - "apiAlias": "swag_digital_sales_rooms_content_appointment_struct_appointment_join_struct" - } + "required": [ + "crossSelling", + "products", + "total", + "apiAlias" + ] }, - "StateForAll": { + "ProductMeasurements": { "type": "object", + "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", "properties": { - "currentGuideProductId": { - "anyOf": [ - { + "width": { + "type": "object", + "properties": { + "unit": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" }, - { - "type": "null" + "value": { + "type": "number" } - ] + } }, - "lastActiveGuideSection": { - "anyOf": [ - { + "height": { + "type": "object", + "properties": { + "unit": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" }, - { - "type": "null" + "value": { + "type": "number" } - ] + } }, - "currentPageId": { - "anyOf": [ - { + "length": { + "type": "object", + "properties": { + "unit": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" }, - { - "type": "null" + "value": { + "type": "number" } - ] + } }, - "currentSectionId": { - "anyOf": [ - { + "weight": { + "type": "object", + "properties": { + "unit": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } - ] - }, - "currentSlideAlias": { - "type": "integer", - "default": 0 - }, - "currentSlideData": { - "anyOf": [ - { - "$ref": "#/components/schemas/DynamicProductListingPageOpenedPayload" + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg" }, - { - "type": "null" + "value": { + "type": "number" } - ] - }, - "currentDynamicPage": { - "$ref": "#/components/schemas/DynamicPageOpenedPayload" + } + } + } + }, + "CartError": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "key": { + "type": "string" }, - "started": { - "type": "boolean", - "default": false + "level": { + "type": "number", + "enum": [ + 0, + 10, + 20 + ], + "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" }, - "running": { - "type": "boolean", - "default": false + "message": { + "type": "string" }, - "ended": { - "type": "boolean", - "default": false + "messageKey": { + "type": "string" + } + }, + "required": [ + "key", + "level", + "message", + "messageKey" + ] + }, + "ContextMeasurementSystemInfo": { + "type": "object", + "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", + "properties": { + "system": { + "type": "string", + "enum": [ + "metric", + "imperial" + ], + "default": "metric", + "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." }, - "startedAt": { - "anyOf": [ - { + "units": { + "type": "object", + "description": "Units used in the measurement system.", + "properties": { + "length": { "type": "string", - "format": "date-time" - }, - { - "type": "null" - } - ] - }, - "endedAt": { - "anyOf": [ - { - "type": "string", - "format": "date-time" + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Unit of length." }, - { - "type": "null" + "weight": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." } - ] - }, - "accessibleFrom": { - "anyOf": [ - { + } + } + } + }, + "CartDeliveryPosition": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { "type": "string", "format": "date-time" }, - { - "type": "null" - } - ] - }, - "accessibleTo": { - "anyOf": [ - { + "latest": { "type": "string", "format": "date-time" - }, - { - "type": "null" } - ] + } }, - "appointmentMode": { + "identifier": { + "type": "string" + }, + "lineItem": { + "$ref": "#/components/schemas/LineItem" + }, + "price": { + "$ref": "#/components/schemas/CalculatedPrice" + } + } + }, + "CookieGroup": { + "type": "object", + "properties": { + "isRequired": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "cookie": { + "type": "string" + }, + "value": { + "type": "string" + }, + "expiration": { + "type": "integer" + }, + "entries": { + "$ref": "#/components/schemas/CookieEntryCollection" + }, + "apiAlias": { "type": "string", "enum": [ - "guided", - "self" + "cookie_group" ] + } + }, + "not": { + "allOf": [ + { + "required": [ + "cookie" + ] + }, + { + "required": [ + "entries" + ] + } + ] + }, + "required": [ + "name", + "isRequired", + "apiAlias" + ] + }, + "ListPrice": { + "type": "object", + "description": "", + "properties": { + "discount": { + "type": "number" }, - "videoAudioSettings": { - "type": "string", - "enum": [ - "both", - "none", - "audio-only" - ], - "default": "none" + "percentage": { + "type": "number" }, - "videoRoomUrl": { - "type": "string", - "default": "" + "price": { + "type": "number" }, - "attendeeRestrictionType": { - "anyOf": [ - { - "type": "string", - "enum": [ - "open", - "customer", - "rules" - ] - }, - { - "type": "null" - } + "apiAlias": { + "type": "string", + "enum": [ + "cart_list_price" ] - }, - "productDetailDefaultPageId": { - "anyOf": [ - { + } + }, + "required": [ + "apiAlias" + ] + }, + "CartDelivery": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time" }, - { - "type": "null" - } - ] - }, - "quickviewPageId": { - "anyOf": [ - { + "latest": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "type": "null" + "format": "date-time" } - ] + } }, - "productListingDefaultPageId": { - "anyOf": [ - { + "location": { + "type": "object", + "properties": { + "apiAlias": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "enum": [ + "cart_delivery_shipping_location" + ] }, - { - "type": "null" + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "state": { + "$ref": "#/components/schemas/CountryState" } - ] - }, - "broadcastMode": { - "type": "boolean", - "default": false + } }, - "viewMode": { - "type": "string", - "enum": [ - "onlyYou", - "presentation", - "videoGrid" - ], - "default": "presentation" + "positions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDeliveryPosition" + } }, - "allowScreenSharing": { - "type": "boolean", - "default": false + "shippingCosts": { + "$ref": "#/components/schemas/CalculatedPrice" }, - "extensions": { - "type": "array", - "default": [] + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" } } }, - "DynamicInteractionBody": { - "oneOf": [ - { - "$ref": "#/components/schemas/EmptyInteraction" - }, - { - "$ref": "#/components/schemas/ProductInteraction" + "EntitySearchResult": { + "type": "object", + "properties": { + "entity": { + "type": "string" }, - { - "$ref": "#/components/schemas/DynamicPageOpenedInteraction" - }, - { - "$ref": "#/components/schemas/DynamicPageClosedInteraction" - }, - { - "$ref": "#/components/schemas/DynamicProductPageOpenedInteraction" - }, - { - "$ref": "#/components/schemas/PageViewedInteraction" - }, - { - "$ref": "#/components/schemas/GuideHoveredInteraction" + "total": { + "type": "integer", + "description": "The total number of found entities" }, - { - "$ref": "#/components/schemas/ToggleBroadcastModeInteraction" + "aggregations": { + "type": "array", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", + "items": { + "type": "object" + } }, - { - "$ref": "#/components/schemas/ViewModeChangedInteraction" + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." }, - { - "$ref": "#/components/schemas/ScreenSharingToggledInteraction" + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." } - ], - "discriminator": { - "propertyName": "name", - "mapping": { - "keep.alive": "#/components/schemas/EmptyInteraction", - "quickview.opened": "#/components/schemas/EmptyInteraction", - "quickview.closed": "#/components/schemas/EmptyInteraction", - "attendee.leave": "#/components/schemas/EmptyInteraction", - "remote.checkout.accepted": "#/components/schemas/EmptyInteraction", - "remote.checkout.denied": "#/components/schemas/EmptyInteraction", - "product.viewed": "#/components/schemas/ProductInteraction", - "attendee.product.collection.liked": "#/components/schemas/ProductInteraction", - "attendee.product.collection.disliked": "#/components/schemas/ProductInteraction", - "attendee.product.collection.removed": "#/components/schemas/ProductInteraction", - "dynamicPage.opened": "#/components/schemas/DynamicPageOpenedInteraction", - "dynamicPage.closed": "#/components/schemas/DynamicPageClosedInteraction", - "dynamicProductPage.opened": "#/components/schemas/DynamicProductPageOpenedInteraction", - "page.viewed": "#/components/schemas/PageViewedInteraction", - "guide.hovered": "#/components/schemas/GuideHoveredInteraction", - "broadcastMode.toggled": "#/components/schemas/ToggleBroadcastModeInteraction", - "viewMode.changed": "#/components/schemas/ViewModeChangedInteraction", - "screenSharing.toggled": "#/components/schemas/ScreenSharingToggledInteraction" + } + }, + "SuccessResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" } } }, - "BaseInteraction": { + "ToggleBroadcastModePayload": { "type": "object", + "required": [ + "active" + ], "properties": { - "triggeredAt": { - "type": "string", - "description": "The time when the interaction was triggered", - "default": "now" - }, - "lifeTimeInSeconds": { - "type": "integer", - "description": "The time in seconds how long the interaction should be stored in the database", - "default": -1 + "active": { + "type": "boolean", + "description": "Status if the mode is toggled to active or inactive" } } }, - "EmptyInteraction": { - "allOf": [ - { - "$ref": "#/components/schemas/BaseInteraction" + "ProductPageResult": { + "type": "object", + "properties": { + "cmsPage": { + "$ref": "#/components/schemas/CmsPage" }, - { - "type": "object", - "required": [ - "name", - "payload" - ], - "properties": { - "name": { - "type": "string" + "product": { + "$ref": "#/components/schemas/Product" + }, + "configurator": { + "oneOf": [ + { + "$ref": "#/components/schemas/PropertyGroup" }, - "payload": { - "type": "object", - "additionalProperties": false, - "minProperties": 0, - "maxProperties": 0 + { + "type": "null" } - } + ] + }, + "apiAlias": { + "type": "string" } - ] + } }, - "ProductInteraction": { - "allOf": [ - { - "$ref": "#/components/schemas/BaseInteraction" - }, - { - "type": "object", - "required": [ - "name", - "payload" - ], - "properties": { - "name": { - "type": "string" - }, - "payload": { - "$ref": "#/components/schemas/ProductPayload" - } - } + "ProductPayload": { + "type": "object", + "required": [ + "productId" + ], + "properties": { + "productId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "the id from the product which is used in the interaction" } - ] + } }, - "DynamicPageOpenedInteraction": { - "allOf": [ - { - "$ref": "#/components/schemas/BaseInteraction" - }, - { + "EmptyPayload": { + "type": "object", + "properties": [] + }, + "AttendeeRespondInvitationResponse": { + "type": "object", + "properties": { + "appointment": { "type": "object", - "required": [ - "name", - "payload" - ], "properties": { - "name": { - "type": "string" + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The appointment id" }, - "payload": { - "$ref": "#/components/schemas/DynamicPageOpenedPayload" + "accessibleFrom": { + "type": "string", + "format": "date-time", + "description": "The time the client can access the appointment" + }, + "accessibleTo": { + "type": "string", + "format": "date-time", + "description": "The time the appointment will be closed, the client can not access" + }, + "status": { + "anyOf": [ + { + "type": "string", + "enum": [ + "started", + "ended" + ] + }, + { + "type": "null" + } + ], + "description": "The appointment status" } } + }, + "answer": { + "type": "string", + "enum": [ + "accepted", + "maybe", + "declined" + ], + "description": "The invitation status that client responded to" } - ] + } }, - "DynamicProductPageOpenedInteraction": { - "allOf": [ - { - "$ref": "#/components/schemas/BaseInteraction" + "UpdateAttendeeRequestBody": { + "type": "object", + "properties": { + "attendeeName": { + "type": "string", + "description": "Name of the attendee" }, - { - "type": "object", - "required": [ - "name", - "payload" - ], - "properties": { - "name": { - "type": "string" - }, - "payload": { - "$ref": "#/components/schemas/DynamicProductPageOpenedPayload" - } - } + "videoUserId": { + "type": "string", + "description": "Id of the attendee in the video chat tool" } - ] + } }, - "DynamicPageClosedInteraction": { - "allOf": [ - { - "$ref": "#/components/schemas/BaseInteraction" + "AppointmentBasicSettingResponse": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "description": "The API alias of the appointment basic setting" }, - { - "type": "object", - "required": [ - "name", - "payload" + "mode": { + "type": "string", + "description": "The mode of the interaction", + "enum": [ + "guided", + "self" + ] + }, + "attendeeRestrictionType": { + "type": "string", + "description": "The type of attendee restriction", + "enum": [ + "open", + "customer", + "rules" + ] + }, + "videoAudioSettings": { + "type": "string", + "description": "The video and audio settings", + "enum": [ + "none", + "both", + "audio-only" + ] + }, + "canSendRequestEmail": { + "type": "boolean", + "description": "Indicates if request emails can be sent", + "default": false + }, + "canBookAppointment": { + "type": "boolean", + "description": "Indicates if appointments can be booked", + "default": false + }, + "enableWishlist": { + "type": "boolean", + "description": "Indicates if the wishlist is enabled", + "default": false + }, + "bookingLink": { + "description": "The booking link", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "appointmentName": { + "type": "string", + "description": "The name of the appointment" + }, + "salesChannelName": { + "type": "string", + "description": "The name of the sales channel" + } + }, + "example": { + "apiAlias": "appointment_basic_setting", + "mode": "self", + "attendeeRestrictionType": "open", + "videoAudioSettings": "none", + "canSendRequestEmail": false, + "canBookAppointment": false, + "enableWishlist": false, + "bookingLink": null, + "appointmentName": "dsr11", + "salesChannelName": "Storefront" + } + }, + "AttendeeProductCollectionResponse": { + "type": "object", + "properties": { + "collection": { + "type": "object", + "anyOf": [ + { + "type": "object", + "properties": { + "liked": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Product ids from the collection" + } + } + } + }, + { + "type": "object", + "properties": { + "disliked": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Product ids from the collection" + } + } + } + } + ] + } + }, + "example": { + "collection": { + "liked": [ + "0015b3d83df441e490da7f6880a9c2da", + "60793d25cbab473f92c405ce0525f3ec" + ] + } + } + }, + "DynamicInteractionBody": { + "oneOf": [ + { + "$ref": "#/components/schemas/EmptyInteraction" + }, + { + "$ref": "#/components/schemas/ProductInteraction" + }, + { + "$ref": "#/components/schemas/DynamicPageOpenedInteraction" + }, + { + "$ref": "#/components/schemas/DynamicPageClosedInteraction" + }, + { + "$ref": "#/components/schemas/DynamicProductPageOpenedInteraction" + }, + { + "$ref": "#/components/schemas/PageViewedInteraction" + }, + { + "$ref": "#/components/schemas/GuideHoveredInteraction" + }, + { + "$ref": "#/components/schemas/ToggleBroadcastModeInteraction" + }, + { + "$ref": "#/components/schemas/ViewModeChangedInteraction" + }, + { + "$ref": "#/components/schemas/ScreenSharingToggledInteraction" + } + ], + "discriminator": { + "propertyName": "name", + "mapping": { + "keep.alive": "#/components/schemas/EmptyInteraction", + "quickview.opened": "#/components/schemas/EmptyInteraction", + "quickview.closed": "#/components/schemas/EmptyInteraction", + "attendee.leave": "#/components/schemas/EmptyInteraction", + "remote.checkout.accepted": "#/components/schemas/EmptyInteraction", + "remote.checkout.denied": "#/components/schemas/EmptyInteraction", + "product.viewed": "#/components/schemas/ProductInteraction", + "attendee.product.collection.liked": "#/components/schemas/ProductInteraction", + "attendee.product.collection.disliked": "#/components/schemas/ProductInteraction", + "attendee.product.collection.removed": "#/components/schemas/ProductInteraction", + "dynamicPage.opened": "#/components/schemas/DynamicPageOpenedInteraction", + "dynamicPage.closed": "#/components/schemas/DynamicPageClosedInteraction", + "dynamicProductPage.opened": "#/components/schemas/DynamicProductPageOpenedInteraction", + "page.viewed": "#/components/schemas/PageViewedInteraction", + "guide.hovered": "#/components/schemas/GuideHoveredInteraction", + "broadcastMode.toggled": "#/components/schemas/ToggleBroadcastModeInteraction", + "viewMode.changed": "#/components/schemas/ViewModeChangedInteraction", + "screenSharing.toggled": "#/components/schemas/ScreenSharingToggledInteraction" + } + } + }, + "BaseInteraction": { + "type": "object", + "properties": { + "triggeredAt": { + "type": "string", + "description": "The time when the interaction was triggered", + "default": "now" + }, + "lifeTimeInSeconds": { + "type": "integer", + "description": "The time in seconds how long the interaction should be stored in the database", + "default": -1 + } + } + }, + "EmptyInteraction": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseInteraction" + }, + { + "type": "object", + "required": [ + "name", + "payload" ], "properties": { "name": { "type": "string" }, "payload": { - "$ref": "#/components/schemas/DynamicPageClosedPayload" + "type": "object", + "additionalProperties": false, + "minProperties": 0, + "maxProperties": 0 } } } ] }, - "PageViewedInteraction": { + "ProductInteraction": { "allOf": [ { "$ref": "#/components/schemas/BaseInteraction" @@ -16191,13 +15848,13 @@ "type": "string" }, "payload": { - "$ref": "#/components/schemas/PageViewedPayload" + "$ref": "#/components/schemas/ProductPayload" } } } ] }, - "GuideHoveredInteraction": { + "DynamicPageOpenedInteraction": { "allOf": [ { "$ref": "#/components/schemas/BaseInteraction" @@ -16213,13 +15870,13 @@ "type": "string" }, "payload": { - "$ref": "#/components/schemas/GuideHoveredPayload" + "$ref": "#/components/schemas/DynamicPageOpenedPayload" } } } ] }, - "ToggleBroadcastModeInteraction": { + "DynamicProductPageOpenedInteraction": { "allOf": [ { "$ref": "#/components/schemas/BaseInteraction" @@ -16235,13 +15892,13 @@ "type": "string" }, "payload": { - "$ref": "#/components/schemas/ToggleBroadcastModePayload" + "$ref": "#/components/schemas/DynamicProductPageOpenedPayload" } } } ] }, - "ViewModeChangedInteraction": { + "DynamicPageClosedInteraction": { "allOf": [ { "$ref": "#/components/schemas/BaseInteraction" @@ -16257,13 +15914,13 @@ "type": "string" }, "payload": { - "$ref": "#/components/schemas/ViewModeChangedPayload" + "$ref": "#/components/schemas/DynamicPageClosedPayload" } } } ] }, - "ScreenSharingToggledInteraction": { + "PageViewedInteraction": { "allOf": [ { "$ref": "#/components/schemas/BaseInteraction" @@ -16279,278 +15936,202 @@ "type": "string" }, "payload": { - "$ref": "#/components/schemas/ScreenSharingToggledPayload" + "$ref": "#/components/schemas/PageViewedPayload" } } } ] }, - "CreateInteractionRequestBody": { - "$ref": "#/components/schemas/DynamicInteractionBody" - }, - "ViewModeChangedPayload": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "description": "The view mode of presentation", - "enum": [ - "onlyYou", - "presentation", - "videoGrid" - ], - "default": "presentation" - } - } - }, - "ClientPresentationStateResponse": { - "type": "object", - "properties": { - "stateForAll": { - "$ref": "#/components/schemas/StateForAll" + "GuideHoveredInteraction": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseInteraction" }, - "stateForClients": { - "$ref": "#/components/schemas/StateForClients" - } - }, - "example": { - "stateForAll": { - "currentGuideProductId": null, - "lastActiveGuideSection": null, - "currentPageId": null, - "currentSectionId": null, - "currentSlideAlias": 0, - "currentDynamicPage": null, - "started": false, - "running": false, - "ended": false, - "startedAt": null, - "endedAt": null, - "accessibleFrom": null, - "accessibleTo": null, - "appointmentMode": "guided", - "videoAudioSettings": "both", - "videoRoomUrl": "", - "attendeeRestrictionType": "open", - "productDetailDefaultPageId": "bea211b5099241719830df8026624f7f", - "quickviewPageId": "182d3f7f988044adbba449b70c8bc472", - "productListingDefaultPageId": "33e88c7994fa4cf79a1265e5105b93b2", - "broadcastMode": false, - "extensions": [] - }, - "stateForClients": { - "videoClientToken": null, - "hoveredElementId": null, - "extensions": [] - }, - "apiAlias": "swag_digital_sales_rooms_content_presentation_state_sales_channel_get_get_client_presentation_state_struct" - } - }, - "AppointmentBasicSettingResponse": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "description": "The API alias of the appointment basic setting" - }, - "mode": { - "type": "string", - "description": "The mode of the interaction", - "enum": [ - "guided", - "self" - ] - }, - "attendeeRestrictionType": { - "type": "string", - "description": "The type of attendee restriction", - "enum": [ - "open", - "customer", - "rules" - ] - }, - "videoAudioSettings": { - "type": "string", - "description": "The video and audio settings", - "enum": [ - "none", - "both", - "audio-only" - ] - }, - "canSendRequestEmail": { - "type": "boolean", - "description": "Indicates if request emails can be sent", - "default": false - }, - "canBookAppointment": { - "type": "boolean", - "description": "Indicates if appointments can be booked", - "default": false - }, - "enableWishlist": { - "type": "boolean", - "description": "Indicates if the wishlist is enabled", - "default": false - }, - "bookingLink": { - "description": "The booking link", - "oneOf": [ - { + { + "type": "object", + "required": [ + "name", + "payload" + ], + "properties": { + "name": { "type": "string" }, - { - "type": "null" + "payload": { + "$ref": "#/components/schemas/GuideHoveredPayload" } - ] - }, - "appointmentName": { - "type": "string", - "description": "The name of the appointment" - }, - "salesChannelName": { - "type": "string", - "description": "The name of the sales channel" - } - }, - "example": { - "apiAlias": "appointment_basic_setting", - "mode": "self", - "attendeeRestrictionType": "open", - "videoAudioSettings": "none", - "canSendRequestEmail": false, - "canBookAppointment": false, - "enableWishlist": false, - "bookingLink": null, - "appointmentName": "dsr11", - "salesChannelName": "Storefront" - } - }, - "UpdateAttendeeRequestBody": { - "type": "object", - "properties": { - "attendeeName": { - "type": "string", - "description": "Name of the attendee" - }, - "videoUserId": { - "type": "string", - "description": "Id of the attendee in the video chat tool" + } } - } + ] }, - "DynamicProductPageOpenedPayload": { + "ToggleBroadcastModeInteraction": { "allOf": [ { - "$ref": "#/components/schemas/AbstractDynamicPageOpenedPayload" - } - ], - "required": [ - "productId" - ], - "properties": { - "productId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "the id from the product which is shown on the dynamic page" - } - } - }, - "ProductPayload": { - "type": "object", - "required": [ - "productId" - ], - "properties": { - "productId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "the id from the product which is used in the interaction" - } - } - }, - "ProductPageResult": { - "type": "object", - "properties": { - "cmsPage": { - "$ref": "#/components/schemas/CmsPage" - }, - "product": { - "$ref": "#/components/schemas/Product" + "$ref": "#/components/schemas/BaseInteraction" }, - "configurator": { - "oneOf": [ - { - "$ref": "#/components/schemas/PropertyGroup" + { + "type": "object", + "required": [ + "name", + "payload" + ], + "properties": { + "name": { + "type": "string" }, - { - "type": "null" + "payload": { + "$ref": "#/components/schemas/ToggleBroadcastModePayload" } - ] - }, - "apiAlias": { - "type": "string" + } } - } + ] }, - "BasePresentationSlideData": { - "properties": { - "cmsPage": { - "$ref": "#/components/schemas/CmsPage" + "ViewModeChangedInteraction": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseInteraction" }, - "extensions": { + { "type": "object", + "required": [ + "name", + "payload" + ], "properties": { - "cmsPageRelation": { - "$ref": "#/components/schemas/PresentationCmsPage" + "name": { + "type": "string" + }, + "payload": { + "$ref": "#/components/schemas/ViewModeChangedPayload" } } } - } + ] }, - "PresentationSlideData": { - "type": "object", - "properties": { - "cmsPage": { - "$ref": "#/components/schemas/CmsPage" + "ScreenSharingToggledInteraction": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseInteraction" }, - "extensions": { + { "type": "object", + "required": [ + "name", + "payload" + ], "properties": { - "cmsPageRelation": { - "$ref": "#/components/schemas/PresentationCmsPage" + "name": { + "type": "string" + }, + "payload": { + "$ref": "#/components/schemas/ScreenSharingToggledPayload" } } - }, - "product": { - "$ref": "#/components/schemas/Product" - }, - "category": { - "$ref": "#/components/schemas/Category" - }, - "configurator": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PropertyGroup" - } } - }, - "example": { - "extensions": { - "cmsPageRelation": { - "translated": { - "title": null - }, - "createdAt": "2023-08-09T11:00:13.160+00:00", - "updatedAt": null, - "presentationId": "506cce706e914c1e8b083f05670d85c4", - "cmsPageId": "33e88c7994fa4cf79a1265e5105b93b2", - "title": null, - "productId": null, - "productStreamId": null, - "position": 2, - "isInstantListing": false, + ] + }, + "CreateInteractionRequestBody": { + "$ref": "#/components/schemas/DynamicInteractionBody" + }, + "PresentationStructure": { + "type": "object", + "required": [ + "cmsPageResults", + "navigation" + ], + "properties": { + "cmsPageResults": { + "type": "array", + "items": { + "type": "object", + "properties": { + "resourceType": { + "type": "string", + "description": "The type of presentation page", + "default": "frontend.presentation.page" + }, + "resourceIdentifier": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The presentation id" + }, + "cmsPage": { + "$ref": "#/components/schemas/CmsPage" + } + } + } + }, + "navigation": { + "type": "array", + "items": { + "type": "object", + "required": [ + "cmsPageId", + "groupId", + "groupName", + "index", + "sectionId", + "sectionName" + ], + "properties": { + "index": { + "type": "integer", + "description": "The slide position" + }, + "sectionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The section id" + }, + "sectionName": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The section name" + }, + "groupId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The presentation CMS page id" + }, + "groupName": { + "type": "string", + "description": "The slide name" + }, + "cmsPageId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The CMS page id" + }, + "isInstantListing": { + "type": "boolean", + "description": "If the slide is an instant listing" + }, + "pickedProductsCount": { + "type": "integer", + "description": "The number of picked products of the instant listing" + }, + "notes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CmsSlot" + }, + "default": [] + } + } + } + } + }, + "example": { + "cmsPageResults": [ + { + "resourceType": "frontend.presentation.page", + "resourceIdentifier": "45a2b8ad0bb544e48f61eab564a2171c", "cmsPage": { "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", "translated": { @@ -16558,22 +16139,25 @@ "customFields": [] }, "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, + "updatedAt": "2023-08-10T04:30:28.668+00:00", "name": "Default Digital Sales Rooms product listing page", "type": "presentation_product_list", "entity": null, "sections": [ { + "extensions": { + "translations": [] + }, "translated": [], "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, + "updatedAt": "2023-08-10T04:30:28.668+00:00", "type": "default", "blocks": [ { "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", "translated": [], "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, + "updatedAt": "2023-08-10T04:30:28.667+00:00", "type": "product-listing", "slots": [ { @@ -16657,7 +16241,7 @@ } ], "sectionId": "2229e1f1208a4b8086baf7aec84f5e2c", - "position": 0, + "position": 1, "name": null, "sectionPosition": "main", "marginTop": "20px", @@ -16670,7 +16254,11 @@ "backgroundMediaMode": "cover", "cssClass": null, "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": null, + "visibility": { + "mobile": true, + "tablet": true, + "desktop": true + }, "customFields": null, "apiAlias": "cms_block" } @@ -16686,7 +16274,11 @@ "backgroundMediaMode": "cover", "cssClass": null, "cmsPageVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": null, + "visibility": { + "mobile": true, + "tablet": true, + "desktop": true + }, "customFields": null, "apiAlias": "cms_section" } @@ -16701,802 +16293,159 @@ "customFields": null, "apiAlias": "cms_page" }, - "pickedProductIds": null, - "dsrPresentationVersionId": "213769ba28dd4ee788bdb49dc9ce53d2", - "id": "4ee08e142ed046eb99681594f67599f1", - "customFields": null, - "cmsPageVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "apiAlias": "dsr_presentation_cms_page" - } - }, - "cmsPage": { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "name": "Default Digital Sales Rooms product listing page", - "customFields": [] + "apiAlias": "pwa_page_result" }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "name": "Default Digital Sales Rooms product listing page", - "type": "presentation_product_list", - "entity": null, - "sections": [ - { - "translated": [], + { + "resourceType": "frontend.presentation.page", + "resourceIdentifier": "45a2b8ad0bb544e48f61eab564a2171c", + "cmsPage": { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": { + "name": "Default Digital Sales Rooms product detail page", + "customFields": [] + }, "createdAt": "2023-08-03T17:24:09.000+00:00", "updatedAt": null, - "type": "default", - "blocks": [ + "name": "Default Digital Sales Rooms product detail page", + "type": "presentation_product_detail", + "entity": null, + "sections": [ { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "extensions": { + "translations": [] + }, "translated": [], "createdAt": "2023-08-03T17:24:09.000+00:00", "updatedAt": null, - "type": "product-listing", - "slots": [ + "type": "default", + "blocks": [ { "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "config": { - "filters": { - "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", - "source": "static" - }, - "boxLayout": { - "value": "standard", - "source": "static" - }, - "showSorting": { - "value": true, - "source": "static" - }, - "defaultSorting": { - "value": "", - "source": "static" - }, - "useCustomSorting": { - "value": false, - "source": "static" - }, - "availableSortings": { - "value": [], - "source": "static" - }, - "propertyWhitelist": { - "value": [], - "source": "static" - } - }, - "customFields": [] - }, + "translated": [], "createdAt": "2023-08-03T17:24:09.000+00:00", "updatedAt": null, - "type": "product-listing", - "slot": "content", - "block": null, - "blockId": "96ea8b9676a5461c9149d205d792ecf2", - "config": { - "filters": { - "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", - "source": "static" - }, - "boxLayout": { - "value": "standard", - "source": "static" + "type": "product-heading", + "slots": [ + { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": { + "config": [], + "customFields": [] + }, + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "type": "like", + "slot": "right", + "block": null, + "blockId": "c0d3daba2e244122947438c28f776d41", + "config": [], + "fieldConfig": null, + "translations": null, + "data": null, + "locked": false, + "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "customFields": null, + "apiAlias": "cms_slot" }, - "showSorting": { - "value": true, - "source": "static" - }, - "defaultSorting": { - "value": "", - "source": "static" - }, - "useCustomSorting": { - "value": false, - "source": "static" - }, - "availableSortings": { - "value": [], - "source": "static" - }, - "propertyWhitelist": { - "value": [], - "source": "static" - } - }, - "fieldConfig": null, - "translations": null, - "data": { - "listing": { - "elements": [ - { - "versionId": null, - "translated": [], - "createdAt": null, - "updatedAt": null, - "parentId": null, - "childCount": null, - "taxId": null, - "manufacturerId": null, - "unitId": null, - "active": null, - "displayGroup": null, - "manufacturerNumber": null, - "ean": null, - "sales": null, - "productNumber": null, - "stock": null, - "availableStock": null, - "available": null, - "deliveryTimeId": null, - "deliveryTime": null, - "restockTime": null, - "isCloseout": null, - "purchaseSteps": null, - "maxPurchase": null, - "minPurchase": null, - "purchaseUnit": null, - "referenceUnit": null, - "shippingFree": null, - "markAsTopseller": null, - "weight": null, - "width": null, - "height": null, - "length": null, - "releaseDate": null, - "categoryTree": null, - "streamIds": null, - "optionIds": null, - "propertyIds": null, - "name": null, - "keywords": null, - "description": null, - "metaDescription": null, - "metaTitle": null, - "packUnit": null, - "packUnitPlural": null, - "tax": null, - "manufacturer": null, - "unit": null, - "cover": null, - "parent": null, - "children": null, - "media": null, - "cmsPageId": null, - "cmsPage": null, - "translations": null, - "categories": null, - "properties": null, - "options": null, - "configuratorSettings": null, - "categoriesRo": null, - "coverId": null, - "categoryIds": null, - "productReviews": null, - "ratingAverage": null, - "mainCategories": null, - "seoUrls": null, - "crossSellings": null, - "canonicalProductId": null, - "canonicalProduct": null, - "streams": null, - "downloads": null, - "states": [], - "id": "a32702bb0b1443e3881c3b9a38c09169", - "customFields": null, - "apiAlias": "product" + { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": { + "config": { + "content": { + "value": "product.name", + "source": "mapped" + }, + "verticalAlign": { + "value": null, + "source": "static" + } + }, + "customFields": [] + }, + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "type": "product-name", + "slot": "left", + "block": null, + "blockId": "c0d3daba2e244122947438c28f776d41", + "config": { + "content": { + "value": "product.name", + "source": "mapped" + }, + "verticalAlign": { + "value": null, + "source": "static" } - ], - "aggregations": [], - "page": 1, - "limit": null, - "entity": "product", - "total": 0, - "states": [], - "apiAlias": "dal_entity_search_result" - }, - "apiAlias": "cms_product_listing" - }, - "locked": false, - "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + }, + "fieldConfig": null, + "translations": null, + "data": null, + "locked": false, + "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "customFields": null, + "apiAlias": "cms_slot" + } + ], + "sectionId": "f4aaa27972314e3c9b7f3bb35c7f8a10", + "position": 0, + "name": null, + "sectionPosition": "main", + "marginTop": "0", + "marginBottom": "20px", + "marginLeft": "0", + "marginRight": "0", + "backgroundColor": null, + "backgroundMediaId": null, + "backgroundMedia": null, + "backgroundMediaMode": "cover", + "cssClass": null, + "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "visibility": null, "customFields": null, - "apiAlias": "cms_slot" - } - ], - "sectionId": "2229e1f1208a4b8086baf7aec84f5e2c", - "position": 0, - "name": null, - "sectionPosition": "main", - "marginTop": "20px", - "marginBottom": "20px", - "marginLeft": "20px", - "marginRight": "20px", - "backgroundColor": null, - "backgroundMediaId": null, - "backgroundMedia": null, - "backgroundMediaMode": "cover", - "cssClass": null, - "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": null, - "customFields": null, - "apiAlias": "cms_block" - } - ], - "pageId": "33e88c7994fa4cf79a1265e5105b93b2", - "page": null, - "position": 0, - "sizingMode": "boxed", - "mobileBehavior": "wrap", - "backgroundColor": null, - "backgroundMediaId": null, - "backgroundMedia": null, - "backgroundMediaMode": "cover", - "cssClass": null, - "cmsPageVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": null, - "customFields": null, - "apiAlias": "cms_section" - } - ], - "translations": null, - "cssClass": null, - "config": null, - "previewMediaId": null, - "previewMedia": null, - "landingPages": null, - "id": "33e88c7994fa4cf79a1265e5105b93b2", - "customFields": null, - "apiAlias": "cms_page" - }, - "category": { - "versionId": null, - "translated": { - "breadcrumb": [] - }, - "createdAt": null, - "updatedAt": null, - "afterCategoryId": null, - "parentId": null, - "mediaId": null, - "name": null, - "breadcrumb": [], - "path": null, - "level": null, - "active": null, - "childCount": null, - "visibleChildCount": 0, - "displayNestedProducts": null, - "parent": null, - "children": null, - "translations": null, - "media": null, - "cmsPageId": null, - "cmsPageIdSwitched": false, - "cmsPage": null, - "linkType": null, - "linkNewTab": null, - "internalLink": null, - "externalLink": null, - "visible": null, - "type": null, - "productAssignmentType": null, - "description": null, - "metaTitle": null, - "metaDescription": null, - "keywords": null, - "seoUrls": null, - "customEntityTypeId": null, - "id": "34f21c5eb6d54a939f10973204aa5f08", - "customFields": null, - "apiAlias": "category" - }, - "apiAlias": "pwa_page_result" - } - }, - "DynamicPageOpenedPayload": { - "allOf": [ - { - "$ref": "#/components/schemas/AbstractDynamicPageOpenedPayload" - } - ] - }, - "AttendeeRespondInvitationResponse": { - "type": "object", - "properties": { - "appointment": { - "type": "object", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The appointment id" - }, - "accessibleFrom": { - "type": "string", - "format": "date-time", - "description": "The time the client can access the appointment" - }, - "accessibleTo": { - "type": "string", - "format": "date-time", - "description": "The time the appointment will be closed, the client can not access" - }, - "status": { - "anyOf": [ - { - "type": "string", - "enum": [ - "started", - "ended" - ] - }, - { - "type": "null" - } - ], - "description": "The appointment status" - } - } - }, - "answer": { - "type": "string", - "enum": [ - "accepted", - "maybe", - "declined" - ], - "description": "The invitation status that client responded to" - } - } - }, - "StateForClients": { - "type": "object", - "properties": { - "videoClientToken": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "hoveredElementId": { - "anyOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } - ] - }, - "extensions": { - "type": "array", - "default": [] - } - } - }, - "EmptyPayload": { - "type": "object", - "properties": [] - }, - "PresentationStructure": { - "type": "object", - "required": [ - "cmsPageResults", - "navigation" - ], - "properties": { - "cmsPageResults": { - "type": "array", - "items": { - "type": "object", - "properties": { - "resourceType": { - "type": "string", - "description": "The type of presentation page", - "default": "frontend.presentation.page" - }, - "resourceIdentifier": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The presentation id" - }, - "cmsPage": { - "$ref": "#/components/schemas/CmsPage" - } - } - } - }, - "navigation": { - "type": "array", - "items": { - "type": "object", - "required": [ - "cmsPageId", - "groupId", - "groupName", - "index", - "sectionId", - "sectionName" - ], - "properties": { - "index": { - "type": "integer", - "description": "The slide position" - }, - "sectionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The section id" - }, - "sectionName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "The section name" - }, - "groupId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The presentation CMS page id" - }, - "groupName": { - "type": "string", - "description": "The slide name" - }, - "cmsPageId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The CMS page id" - }, - "isInstantListing": { - "type": "boolean", - "description": "If the slide is an instant listing" - }, - "pickedProductsCount": { - "type": "integer", - "description": "The number of picked products of the instant listing" - }, - "notes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CmsSlot" - }, - "default": [] - } - } - } - } - }, - "example": { - "cmsPageResults": [ - { - "resourceType": "frontend.presentation.page", - "resourceIdentifier": "45a2b8ad0bb544e48f61eab564a2171c", - "cmsPage": { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "name": "Default Digital Sales Rooms product listing page", - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": "2023-08-10T04:30:28.668+00:00", - "name": "Default Digital Sales Rooms product listing page", - "type": "presentation_product_list", - "entity": null, - "sections": [ - { - "extensions": { - "translations": [] - }, - "translated": [], - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": "2023-08-10T04:30:28.668+00:00", - "type": "default", - "blocks": [ + "apiAlias": "cms_block" + }, { "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", "translated": [], "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": "2023-08-10T04:30:28.667+00:00", - "type": "product-listing", + "updatedAt": null, + "type": "image-gallery-big", "slots": [ { "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", "translated": { "config": { - "filters": { - "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", + "zoom": { + "value": true, "source": "static" }, - "boxLayout": { - "value": "standard", + "minHeight": { + "value": "430px", "source": "static" }, - "showSorting": { + "fullScreen": { "value": true, "source": "static" }, - "defaultSorting": { - "value": "", + "displayMode": { + "value": "contain", "source": "static" }, - "useCustomSorting": { - "value": false, + "sliderItems": { + "value": "product.media", + "source": "mapped" + }, + "bigImageMode": { + "value": true, "source": "static" }, - "availableSortings": { - "value": [], + "verticalAlign": { + "value": null, "source": "static" }, - "propertyWhitelist": { - "value": [], - "source": "static" - } - }, - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "product-listing", - "slot": "content", - "block": null, - "blockId": "96ea8b9676a5461c9149d205d792ecf2", - "config": { - "filters": { - "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", - "source": "static" - }, - "boxLayout": { - "value": "standard", - "source": "static" - }, - "showSorting": { - "value": true, - "source": "static" - }, - "defaultSorting": { - "value": "", - "source": "static" - }, - "useCustomSorting": { - "value": false, - "source": "static" - }, - "availableSortings": { - "value": [], - "source": "static" - }, - "propertyWhitelist": { - "value": [], - "source": "static" - } - }, - "fieldConfig": null, - "translations": null, - "data": null, - "locked": false, - "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "customFields": null, - "apiAlias": "cms_slot" - } - ], - "sectionId": "2229e1f1208a4b8086baf7aec84f5e2c", - "position": 1, - "name": null, - "sectionPosition": "main", - "marginTop": "20px", - "marginBottom": "20px", - "marginLeft": "20px", - "marginRight": "20px", - "backgroundColor": null, - "backgroundMediaId": null, - "backgroundMedia": null, - "backgroundMediaMode": "cover", - "cssClass": null, - "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": { - "mobile": true, - "tablet": true, - "desktop": true - }, - "customFields": null, - "apiAlias": "cms_block" - } - ], - "pageId": "33e88c7994fa4cf79a1265e5105b93b2", - "page": null, - "position": 0, - "sizingMode": "boxed", - "mobileBehavior": "wrap", - "backgroundColor": null, - "backgroundMediaId": null, - "backgroundMedia": null, - "backgroundMediaMode": "cover", - "cssClass": null, - "cmsPageVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": { - "mobile": true, - "tablet": true, - "desktop": true - }, - "customFields": null, - "apiAlias": "cms_section" - } - ], - "translations": null, - "cssClass": null, - "config": null, - "previewMediaId": null, - "previewMedia": null, - "landingPages": null, - "id": "33e88c7994fa4cf79a1265e5105b93b2", - "customFields": null, - "apiAlias": "cms_page" - }, - "apiAlias": "pwa_page_result" - }, - { - "resourceType": "frontend.presentation.page", - "resourceIdentifier": "45a2b8ad0bb544e48f61eab564a2171c", - "cmsPage": { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "name": "Default Digital Sales Rooms product detail page", - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "name": "Default Digital Sales Rooms product detail page", - "type": "presentation_product_detail", - "entity": null, - "sections": [ - { - "extensions": { - "translations": [] - }, - "translated": [], - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "default", - "blocks": [ - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": [], - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "product-heading", - "slots": [ - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "config": [], - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "like", - "slot": "right", - "block": null, - "blockId": "c0d3daba2e244122947438c28f776d41", - "config": [], - "fieldConfig": null, - "translations": null, - "data": null, - "locked": false, - "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "customFields": null, - "apiAlias": "cms_slot" - }, - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "config": { - "content": { - "value": "product.name", - "source": "mapped" - }, - "verticalAlign": { - "value": null, - "source": "static" - } - }, - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "product-name", - "slot": "left", - "block": null, - "blockId": "c0d3daba2e244122947438c28f776d41", - "config": { - "content": { - "value": "product.name", - "source": "mapped" - }, - "verticalAlign": { - "value": null, - "source": "static" - } - }, - "fieldConfig": null, - "translations": null, - "data": null, - "locked": false, - "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "customFields": null, - "apiAlias": "cms_slot" - } - ], - "sectionId": "f4aaa27972314e3c9b7f3bb35c7f8a10", - "position": 0, - "name": null, - "sectionPosition": "main", - "marginTop": "0", - "marginBottom": "20px", - "marginLeft": "0", - "marginRight": "0", - "backgroundColor": null, - "backgroundMediaId": null, - "backgroundMedia": null, - "backgroundMediaMode": "cover", - "cssClass": null, - "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": null, - "customFields": null, - "apiAlias": "cms_block" - }, - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": [], - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "image-gallery-big", - "slots": [ - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "config": { - "zoom": { - "value": true, - "source": "static" - }, - "minHeight": { - "value": "430px", - "source": "static" - }, - "fullScreen": { - "value": true, - "source": "static" - }, - "displayMode": { - "value": "contain", - "source": "static" - }, - "sliderItems": { - "value": "product.media", - "source": "mapped" - }, - "bigImageMode": { - "value": true, - "source": "static" - }, - "verticalAlign": { - "value": null, - "source": "static" - }, - "navigationDots": { - "value": "inside", + "navigationDots": { + "value": "inside", "source": "static" }, "galleryPosition": { @@ -17805,89 +16754,1099 @@ "cmsPage": { "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", "translated": { - "name": "Ended presentation page", + "name": "Ended presentation page", + "customFields": [] + }, + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "name": "Ended presentation page", + "type": "presentation_product_list", + "entity": null, + "sections": [ + { + "extensions": { + "translations": [] + }, + "translated": [], + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "type": "default", + "blocks": [ + { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": [], + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "type": "text-hero", + "slots": [ + { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": { + "config": { + "content": { + "value": "

The live presentation ended

\n
\n

Thank you for your attention!

Below you can find all products wich were presented to you.

", + "source": "static" + }, + "verticalAlign": { + "value": null, + "source": "static" + } + }, + "customFields": [] + }, + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "type": "text", + "slot": "content", + "block": null, + "blockId": "c49b01e9c6624973b9cdd1992d3c009a", + "config": { + "content": { + "value": "

The live presentation ended

\n
\n

Thank you for your attention!

Below you can find all products wich were presented to you.

", + "source": "static" + }, + "verticalAlign": { + "value": null, + "source": "static" + } + }, + "fieldConfig": null, + "translations": null, + "data": null, + "locked": false, + "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "customFields": null, + "apiAlias": "cms_slot" + } + ], + "sectionId": "0a5e89814463470684a734b975add4ed", + "position": 0, + "name": null, + "sectionPosition": "main", + "marginTop": "20px", + "marginBottom": "20px", + "marginLeft": "20px", + "marginRight": "20px", + "backgroundColor": null, + "backgroundMediaId": null, + "backgroundMedia": null, + "backgroundMediaMode": "cover", + "cssClass": null, + "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "visibility": null, + "customFields": null, + "apiAlias": "cms_block" + }, + { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": [], + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "type": "product-listing", + "slots": [ + { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": { + "config": { + "filters": { + "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", + "source": "static" + }, + "boxLayout": { + "value": "standard", + "source": "static" + }, + "showSorting": { + "value": true, + "source": "static" + }, + "defaultSorting": { + "value": "", + "source": "static" + }, + "useCustomSorting": { + "value": false, + "source": "static" + }, + "availableSortings": { + "value": [], + "source": "static" + }, + "propertyWhitelist": { + "value": [], + "source": "static" + } + }, + "customFields": [] + }, + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "type": "product-listing", + "slot": "content", + "block": null, + "blockId": "0a13f5daa9be4e7b8ed5e3ecaba79fe6", + "config": { + "filters": { + "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", + "source": "static" + }, + "boxLayout": { + "value": "standard", + "source": "static" + }, + "showSorting": { + "value": true, + "source": "static" + }, + "defaultSorting": { + "value": "", + "source": "static" + }, + "useCustomSorting": { + "value": false, + "source": "static" + }, + "availableSortings": { + "value": [], + "source": "static" + }, + "propertyWhitelist": { + "value": [], + "source": "static" + } + }, + "fieldConfig": null, + "translations": null, + "data": null, + "locked": false, + "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "customFields": null, + "apiAlias": "cms_slot" + } + ], + "sectionId": "0a5e89814463470684a734b975add4ed", + "position": 1, + "name": null, + "sectionPosition": "main", + "marginTop": "20px", + "marginBottom": "20px", + "marginLeft": "20px", + "marginRight": "20px", + "backgroundColor": null, + "backgroundMediaId": null, + "backgroundMedia": null, + "backgroundMediaMode": "cover", + "cssClass": null, + "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "visibility": null, + "customFields": null, + "apiAlias": "cms_block" + } + ], + "pageId": "8ea80092faa744559409f3e9f7adcc6b", + "page": null, + "position": 0, + "sizingMode": "boxed", + "mobileBehavior": "wrap", + "backgroundColor": null, + "backgroundMediaId": null, + "backgroundMedia": null, + "backgroundMediaMode": "cover", + "cssClass": null, + "cmsPageVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "visibility": null, + "customFields": null, + "apiAlias": "cms_section" + } + ], + "translations": null, + "cssClass": null, + "config": null, + "previewMediaId": null, + "previewMedia": null, + "landingPages": null, + "id": "8ea80092faa744559409f3e9f7adcc6b", + "customFields": null, + "apiAlias": "cms_page" + }, + "apiAlias": "pwa_page_result" + } + ], + "navigation": [ + { + "groupName": "Default Digital Sales Rooms product listing page", + "groupId": "468b0e34237a44ad8f8a8d5e0b72b78f", + "cmsPageId": "33e88c7994fa4cf79a1265e5105b93b2", + "name": null, + "id": "2229e1f1208a4b8086baf7aec84f5e2c", + "index": 1, + "notes": [ + { + "extensions": { + "foreignKeys": { + "extensions": [], + "apiAlias": "cms_slot_foreign_keys_extension" + } + }, + "_uniqueIdentifier": "de28c711c20b4ad0a54871d5a23109fc", + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": { + "config": { + "content": { + "value": "

Lorem Ipsum dolor sit amet

\n

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, \n sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, \n sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. \n Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. \n Lorem ipsum dolor sit amet, consetetur sadipscing elitr, \n sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. \n At vero eos et accusam et justo duo dolores et ea rebum. \n Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

", + "source": "static" + }, + "verticalAlign": { + "value": null, + "source": "static" + } + }, + "customFields": [] + }, + "createdAt": "2023-08-10T04:30:28.649+00:00", + "updatedAt": null, + "type": "notes", + "slot": "content", + "block": null, + "blockId": "978ca9beff6e4edca6d5263fac254e13", + "config": { + "content": { + "value": "

Lorem Ipsum dolor sit amet

\n

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, \n sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, \n sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. \n Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. \n Lorem ipsum dolor sit amet, consetetur sadipscing elitr, \n sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. \n At vero eos et accusam et justo duo dolores et ea rebum. \n Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

", + "source": "static" + }, + "verticalAlign": { + "value": null, + "source": "static" + } + }, + "fieldConfig": null, + "translations": null, + "data": null, + "locked": false, + "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "id": "de28c711c20b4ad0a54871d5a23109fc", + "customFields": null + } + ] + }, + { + "groupName": "Default Digital Sales Rooms product detail page", + "groupId": "52f1e61cd45945a0b72bd613d1268d65", + "cmsPageId": "bea211b5099241719830df8026624f7f", + "name": null, + "id": "f4aaa27972314e3c9b7f3bb35c7f8a10", + "index": 2, + "notes": [] + }, + { + "groupName": "Ended presentation page", + "groupId": "b073190abe03407993f41b8d5bc8ba57", + "cmsPageId": "8ea80092faa744559409f3e9f7adcc6b", + "name": null, + "id": "0a5e89814463470684a734b975add4ed", + "index": 3, + "notes": [] + } + ], + "apiAlias": "pwa_page_result" + } + }, + "PageViewedPayload": { + "type": "object", + "required": [ + "pageId", + "sectionId", + "slideAlias" + ], + "properties": { + "pageId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "the id from the page which was viewed" + }, + "sectionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "the id from the section within the page which was viewed" + }, + "slideAlias": { + "type": "number", + "description": "the alias of the slide which was viewed" + }, + "pageNumber": { + "oneOf": [ + { + "type": "integer", + "description": "the number of the page which was viewed" + }, + { + "type": "null" + } + ] + } + } + }, + "DynamicProductListingPageOpenedPayload": { + "required": [ + "page" + ], + "properties": { + "page": { + "type": "integer", + "description": "Current page position in the pagination" + } + } + }, + "CreateAppointmentRequestBody": { + "type": "object", + "description": "Includes all data you will need to attend to a appointment.", + "required": [ + "salutationId", + "firstName", + "lastName", + "emailAddress", + "subject" + ], + "properties": { + "salutationId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The id of the salutation" + }, + "firstName": { + "type": "string", + "description": "The first name of the requester" + }, + "lastName": { + "type": "string", + "description": "The last name of the requester" + }, + "emailAddress": { + "type": "string", + "format": "email", + "description": "The email address of the requester" + }, + "companyName": { + "type": "string", + "description": "The company name of the requester" + }, + "phoneNumber": { + "type": "string", + "description": "The phone number of the requester" + }, + "subject": { + "type": "string", + "description": "The subject of the appointment" + }, + "message": { + "type": "string", + "description": "The message of the appointment" + } + }, + "example": { + "id": "2d2c358f1ca04098aacf12873c2eed94", + "appointmentId": "3b3c358f1ca04098aacf12873c2eed94", + "salutationId": "5m6c358f1ca04098aacf12873c2eed94", + "firstName": "John", + "lastName": "Doe", + "emailAddress": "john@example.com", + "companyName": "Example Inc.", + "phoneNumber": "+1234567890", + "subject": "Appointment subject", + "message": "Appointment message", + "requestedById": "7b7c358f1ca04098aacf12873c2eed94" + } + }, + "AbstractDynamicPageOpenedPayload": { + "type": "object", + "required": [ + "pageId", + "type" + ], + "properties": { + "pageId": { + "type": "string", + "pattern": "^[a-f0-9]{32}$", + "description": "The id of the current dynamic page" + }, + "type": { + "type": "string", + "description": "The type of the current dynamic page" + }, + "opened": { + "type": "boolean", + "default": true + }, + "position": { + "type": "integer", + "description": "The position of the dynamic page in the list of dynamic pages" + } + } + }, + "DiscountLineItemPayload": { + "type": "object", + "properties": { + "discountType": { + "type": "string", + "enum": [ + "percentage", + "absolute" + ] + }, + "discountValue": { + "type": "number", + "format": "float", + "maximum": 0 + }, + "discountPrice": { + "type": "number", + "format": "float", + "maximum": 0 + } + } + }, + "ClientPresentationStateResponse": { + "type": "object", + "properties": { + "stateForAll": { + "$ref": "#/components/schemas/StateForAll" + }, + "stateForClients": { + "$ref": "#/components/schemas/StateForClients" + } + }, + "example": { + "stateForAll": { + "currentGuideProductId": null, + "lastActiveGuideSection": null, + "currentPageId": null, + "currentSectionId": null, + "currentSlideAlias": 0, + "currentDynamicPage": null, + "started": false, + "running": false, + "ended": false, + "startedAt": null, + "endedAt": null, + "accessibleFrom": null, + "accessibleTo": null, + "appointmentMode": "guided", + "videoAudioSettings": "both", + "videoRoomUrl": "", + "attendeeRestrictionType": "open", + "productDetailDefaultPageId": "bea211b5099241719830df8026624f7f", + "quickviewPageId": "182d3f7f988044adbba449b70c8bc472", + "productListingDefaultPageId": "33e88c7994fa4cf79a1265e5105b93b2", + "broadcastMode": false, + "extensions": [] + }, + "stateForClients": { + "videoClientToken": null, + "hoveredElementId": null, + "extensions": [] + }, + "apiAlias": "swag_digital_sales_rooms_content_presentation_state_sales_channel_get_get_client_presentation_state_struct" + } + }, + "DynamicPageOpenedPayload": { + "allOf": [ + { + "$ref": "#/components/schemas/AbstractDynamicPageOpenedPayload" + } + ] + }, + "DynamicPageClosedPayload": { + "type": "object", + "properties": { + "pageId": { + "oneOf": [ + { + "type": "string", + "pattern": "^[a-f0-9]{32}$" + }, + { + "type": "null" + } + ], + "pattern": "^[a-f0-9]{32}$", + "description": "The id of the page that was closed" + }, + "all": { + "type": "boolean", + "default": false, + "description": "Whether all pages were closed" + } + } + }, + "StateForClients": { + "type": "object", + "properties": { + "videoClientToken": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "hoveredElementId": { + "anyOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] + }, + "extensions": { + "type": "array", + "default": [] + } + } + }, + "DynamicProductPageOpenedPayload": { + "allOf": [ + { + "$ref": "#/components/schemas/AbstractDynamicPageOpenedPayload" + } + ], + "required": [ + "productId" + ], + "properties": { + "productId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "the id from the product which is shown on the dynamic page" + } + } + }, + "JoinAppointmentResponse": { + "type": "object", + "description": "Includes all data you will need to attend to a appointment.", + "properties": { + "mercureSubscriberTopics": { + "type": "array", + "items": { + "type": "string", + "description": "mercure topic" + }, + "description": "The topics to which the attendee/guide can subscribe for" + }, + "mercurePublisherTopic": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The topic to which the attendee/guide can send updates" + }, + "JWTMercureSubscriberToken": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The JWT mercure token to publish updates" + }, + "mercureHubPublicUrl": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The mercure hub url to connect for subscribing and updating" + }, + "JWTMercurePublisherToken": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The JWT mercure token to subscribe for updates" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The appointment id" + }, + "newContextToken": { + "type": "string", + "description": "The new context token will be used in the header (sw-context-token) for calling the other routes" + }, + "attendeeId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The created Id for the attendee" + }, + "salesChannelId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The id of the current sales channel" + }, + "salesChannelName": { + "type": "string", + "description": "The name of the current sales channel" + }, + "appointmentName": { + "type": "string", + "description": "The name of the appointment" + }, + "presentationGuideMode": { + "type": "string", + "enum": [ + "self", + "guided" + ], + "description": "The type of the appointment" + }, + "isPreview": { + "type": "boolean", + "description": "To see if it's a preview appointment" + }, + "attendeeName": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The name of the attendee" + }, + "videoUserId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The video user id that attendee could use" + }, + "b2bFeatures": { + "type": "object", + "description": "The b2b features that available for the appointment", + "properties": { + "quoteManagement": { + "type": "boolean", + "description": "To know if the quote management is enabled for current customer" + } + } + } + }, + "example": { + "mercureSubscriberTopics": [ + "gs-guide-actions-2d2c358f1ca04098aacf12873c2eed82", + "gs-presentation-state-for-client-2d2c358f1ca04098aacf12873c2eed82", + "gs-presentation-state-for-all-2d2c358f1ca04098aacf12873c2eed82" + ], + "mercurePublisherTopic": "gs-client-actions-2d2c358f1ca04098aacf12873c2eed82", + "JWTMercureSubscriberToken": "jwt token for subscribing to updates", + "mercureHubPublicUrl": "http://localhost:8081/.well-known/mercure", + "JWTMercurePublisherToken": "jwt token for publishing updates", + "attendeeName": "attendee name", + "videoUserId": null, + "b2bFeatures": { + "feature1": false, + "feature2": true + }, + "id": "2d2c358f1ca04098aacf12873c2eed82", + "newContextToken": "new context token to call the other routes", + "attendeeId": "b6358241e4ad4a4e99d0f729d21d63be", + "salesChannelId": "4a791ec7f9ff46b2ad67ae2f562891d3", + "salesChannelName": "Storefront", + "appointmentName": "Test Appointment", + "presentationGuideMode": "guided", + "isPreview": false, + "apiAlias": "swag_digital_sales_rooms_content_appointment_struct_appointment_join_struct" + } + }, + "PresentationCmsPage": { + "allOf": [ + { + "$ref": "#/components/schemas/DsrPresentationCmsPage" + }, + { + "type": "object", + "properties": { + "pickedProductIds": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Product id" + } + }, + { + "type": "null" + } + ], + "description": "The product id is assigned to presentation if it's product listing or instant listing" + } + } + } + ] + }, + "StateForAll": { + "type": "object", + "properties": { + "currentGuideProductId": { + "anyOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] + }, + "lastActiveGuideSection": { + "anyOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] + }, + "currentPageId": { + "anyOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] + }, + "currentSectionId": { + "anyOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] + }, + "currentSlideAlias": { + "type": "integer", + "default": 0 + }, + "currentSlideData": { + "anyOf": [ + { + "$ref": "#/components/schemas/DynamicProductListingPageOpenedPayload" + }, + { + "type": "null" + } + ] + }, + "currentDynamicPage": { + "$ref": "#/components/schemas/DynamicPageOpenedPayload" + }, + "started": { + "type": "boolean", + "default": false + }, + "running": { + "type": "boolean", + "default": false + }, + "ended": { + "type": "boolean", + "default": false + }, + "startedAt": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ] + }, + "endedAt": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ] + }, + "accessibleFrom": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ] + }, + "accessibleTo": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ] + }, + "appointmentMode": { + "type": "string", + "enum": [ + "guided", + "self" + ] + }, + "videoAudioSettings": { + "type": "string", + "enum": [ + "both", + "none", + "audio-only" + ], + "default": "none" + }, + "videoRoomUrl": { + "type": "string", + "default": "" + }, + "attendeeRestrictionType": { + "anyOf": [ + { + "type": "string", + "enum": [ + "open", + "customer", + "rules" + ] + }, + { + "type": "null" + } + ] + }, + "productDetailDefaultPageId": { + "anyOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] + }, + "quickviewPageId": { + "anyOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] + }, + "productListingDefaultPageId": { + "anyOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] + }, + "broadcastMode": { + "type": "boolean", + "default": false + }, + "viewMode": { + "type": "string", + "enum": [ + "onlyYou", + "presentation", + "videoGrid" + ], + "default": "presentation" + }, + "allowScreenSharing": { + "type": "boolean", + "default": false + }, + "extensions": { + "type": "array", + "default": [] + } + } + }, + "ViewModeChangedPayload": { + "type": "object", + "properties": { + "mode": { + "type": "string", + "description": "The view mode of presentation", + "enum": [ + "onlyYou", + "presentation", + "videoGrid" + ], + "default": "presentation" + } + } + }, + "ScreenSharingToggledPayload": { + "type": "object", + "required": [ + "active" + ], + "properties": { + "active": { + "type": "boolean", + "description": "Whether the screen sharing is active or not" + } + } + }, + "AttendeeProductCollectionLastSeenResponse": { + "type": "object", + "properties": { + "collection": { + "type": "object", + "properties": { + "lastSeen": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Product ids from the collection" + } + } + } + } + }, + "example": { + "collection": { + "lastSeen": [ + "0015b3d83df441e490da7f6880a9c2da", + "60793d25cbab473f92c405ce0525f3ec" + ] + } + } + }, + "BasePresentationSlideData": { + "properties": { + "cmsPage": { + "$ref": "#/components/schemas/CmsPage" + }, + "extensions": { + "type": "object", + "properties": { + "cmsPageRelation": { + "$ref": "#/components/schemas/PresentationCmsPage" + } + } + } + } + }, + "PresentationSlideData": { + "type": "object", + "properties": { + "cmsPage": { + "$ref": "#/components/schemas/CmsPage" + }, + "extensions": { + "type": "object", + "properties": { + "cmsPageRelation": { + "$ref": "#/components/schemas/PresentationCmsPage" + } + } + }, + "product": { + "$ref": "#/components/schemas/Product" + }, + "category": { + "$ref": "#/components/schemas/Category" + }, + "configurator": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PropertyGroup" + } + } + }, + "example": { + "extensions": { + "cmsPageRelation": { + "translated": { + "title": null + }, + "createdAt": "2023-08-09T11:00:13.160+00:00", + "updatedAt": null, + "presentationId": "506cce706e914c1e8b083f05670d85c4", + "cmsPageId": "33e88c7994fa4cf79a1265e5105b93b2", + "title": null, + "productId": null, + "productStreamId": null, + "position": 2, + "isInstantListing": false, + "cmsPage": { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": { + "name": "Default Digital Sales Rooms product listing page", "customFields": [] }, "createdAt": "2023-08-03T17:24:09.000+00:00", "updatedAt": null, - "name": "Ended presentation page", + "name": "Default Digital Sales Rooms product listing page", "type": "presentation_product_list", "entity": null, "sections": [ { - "extensions": { - "translations": [] - }, "translated": [], "createdAt": "2023-08-03T17:24:09.000+00:00", "updatedAt": null, "type": "default", "blocks": [ - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": [], - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "text-hero", - "slots": [ - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "config": { - "content": { - "value": "

The live presentation ended

\n
\n

Thank you for your attention!

Below you can find all products wich were presented to you.

", - "source": "static" - }, - "verticalAlign": { - "value": null, - "source": "static" - } - }, - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "text", - "slot": "content", - "block": null, - "blockId": "c49b01e9c6624973b9cdd1992d3c009a", - "config": { - "content": { - "value": "

The live presentation ended

\n
\n

Thank you for your attention!

Below you can find all products wich were presented to you.

", - "source": "static" - }, - "verticalAlign": { - "value": null, - "source": "static" - } - }, - "fieldConfig": null, - "translations": null, - "data": null, - "locked": false, - "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "customFields": null, - "apiAlias": "cms_slot" - } - ], - "sectionId": "0a5e89814463470684a734b975add4ed", - "position": 0, - "name": null, - "sectionPosition": "main", - "marginTop": "20px", - "marginBottom": "20px", - "marginLeft": "20px", - "marginRight": "20px", - "backgroundColor": null, - "backgroundMediaId": null, - "backgroundMedia": null, - "backgroundMediaMode": "cover", - "cssClass": null, - "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": null, - "customFields": null, - "apiAlias": "cms_block" - }, { "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", "translated": [], @@ -17935,7 +17894,7 @@ "type": "product-listing", "slot": "content", "block": null, - "blockId": "0a13f5daa9be4e7b8ed5e3ecaba79fe6", + "blockId": "96ea8b9676a5461c9149d205d792ecf2", "config": { "filters": { "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", @@ -17965,236 +17924,363 @@ "value": [], "source": "static" } - }, - "fieldConfig": null, - "translations": null, - "data": null, - "locked": false, - "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "customFields": null, - "apiAlias": "cms_slot" - } - ], - "sectionId": "0a5e89814463470684a734b975add4ed", - "position": 1, - "name": null, - "sectionPosition": "main", - "marginTop": "20px", - "marginBottom": "20px", - "marginLeft": "20px", - "marginRight": "20px", - "backgroundColor": null, - "backgroundMediaId": null, - "backgroundMedia": null, - "backgroundMediaMode": "cover", - "cssClass": null, - "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": null, + }, + "fieldConfig": null, + "translations": null, + "data": null, + "locked": false, + "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "customFields": null, + "apiAlias": "cms_slot" + } + ], + "sectionId": "2229e1f1208a4b8086baf7aec84f5e2c", + "position": 0, + "name": null, + "sectionPosition": "main", + "marginTop": "20px", + "marginBottom": "20px", + "marginLeft": "20px", + "marginRight": "20px", + "backgroundColor": null, + "backgroundMediaId": null, + "backgroundMedia": null, + "backgroundMediaMode": "cover", + "cssClass": null, + "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "visibility": null, + "customFields": null, + "apiAlias": "cms_block" + } + ], + "pageId": "33e88c7994fa4cf79a1265e5105b93b2", + "page": null, + "position": 0, + "sizingMode": "boxed", + "mobileBehavior": "wrap", + "backgroundColor": null, + "backgroundMediaId": null, + "backgroundMedia": null, + "backgroundMediaMode": "cover", + "cssClass": null, + "cmsPageVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "visibility": null, + "customFields": null, + "apiAlias": "cms_section" + } + ], + "translations": null, + "cssClass": null, + "config": null, + "previewMediaId": null, + "previewMedia": null, + "landingPages": null, + "id": "33e88c7994fa4cf79a1265e5105b93b2", + "customFields": null, + "apiAlias": "cms_page" + }, + "pickedProductIds": null, + "dsrPresentationVersionId": "213769ba28dd4ee788bdb49dc9ce53d2", + "id": "4ee08e142ed046eb99681594f67599f1", + "customFields": null, + "cmsPageVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "apiAlias": "dsr_presentation_cms_page" + } + }, + "cmsPage": { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": { + "name": "Default Digital Sales Rooms product listing page", + "customFields": [] + }, + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "name": "Default Digital Sales Rooms product listing page", + "type": "presentation_product_list", + "entity": null, + "sections": [ + { + "translated": [], + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "type": "default", + "blocks": [ + { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": [], + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "type": "product-listing", + "slots": [ + { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": { + "config": { + "filters": { + "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", + "source": "static" + }, + "boxLayout": { + "value": "standard", + "source": "static" + }, + "showSorting": { + "value": true, + "source": "static" + }, + "defaultSorting": { + "value": "", + "source": "static" + }, + "useCustomSorting": { + "value": false, + "source": "static" + }, + "availableSortings": { + "value": [], + "source": "static" + }, + "propertyWhitelist": { + "value": [], + "source": "static" + } + }, + "customFields": [] + }, + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "type": "product-listing", + "slot": "content", + "block": null, + "blockId": "96ea8b9676a5461c9149d205d792ecf2", + "config": { + "filters": { + "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", + "source": "static" + }, + "boxLayout": { + "value": "standard", + "source": "static" + }, + "showSorting": { + "value": true, + "source": "static" + }, + "defaultSorting": { + "value": "", + "source": "static" + }, + "useCustomSorting": { + "value": false, + "source": "static" + }, + "availableSortings": { + "value": [], + "source": "static" + }, + "propertyWhitelist": { + "value": [], + "source": "static" + } + }, + "fieldConfig": null, + "translations": null, + "data": { + "listing": { + "elements": [ + { + "versionId": null, + "translated": [], + "createdAt": null, + "updatedAt": null, + "parentId": null, + "childCount": null, + "taxId": null, + "manufacturerId": null, + "unitId": null, + "active": null, + "displayGroup": null, + "manufacturerNumber": null, + "ean": null, + "sales": null, + "productNumber": null, + "stock": null, + "availableStock": null, + "available": null, + "deliveryTimeId": null, + "deliveryTime": null, + "restockTime": null, + "isCloseout": null, + "purchaseSteps": null, + "maxPurchase": null, + "minPurchase": null, + "purchaseUnit": null, + "referenceUnit": null, + "shippingFree": null, + "markAsTopseller": null, + "weight": null, + "width": null, + "height": null, + "length": null, + "releaseDate": null, + "categoryTree": null, + "streamIds": null, + "optionIds": null, + "propertyIds": null, + "name": null, + "keywords": null, + "description": null, + "metaDescription": null, + "metaTitle": null, + "packUnit": null, + "packUnitPlural": null, + "tax": null, + "manufacturer": null, + "unit": null, + "cover": null, + "parent": null, + "children": null, + "media": null, + "cmsPageId": null, + "cmsPage": null, + "translations": null, + "categories": null, + "properties": null, + "options": null, + "configuratorSettings": null, + "categoriesRo": null, + "coverId": null, + "categoryIds": null, + "productReviews": null, + "ratingAverage": null, + "mainCategories": null, + "seoUrls": null, + "crossSellings": null, + "canonicalProductId": null, + "canonicalProduct": null, + "streams": null, + "downloads": null, + "states": [], + "id": "a32702bb0b1443e3881c3b9a38c09169", + "customFields": null, + "apiAlias": "product" + } + ], + "aggregations": [], + "page": 1, + "limit": null, + "entity": "product", + "total": 0, + "states": [], + "apiAlias": "dal_entity_search_result" + }, + "apiAlias": "cms_product_listing" + }, + "locked": false, + "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", "customFields": null, - "apiAlias": "cms_block" + "apiAlias": "cms_slot" } ], - "pageId": "8ea80092faa744559409f3e9f7adcc6b", - "page": null, + "sectionId": "2229e1f1208a4b8086baf7aec84f5e2c", "position": 0, - "sizingMode": "boxed", - "mobileBehavior": "wrap", + "name": null, + "sectionPosition": "main", + "marginTop": "20px", + "marginBottom": "20px", + "marginLeft": "20px", + "marginRight": "20px", "backgroundColor": null, "backgroundMediaId": null, "backgroundMedia": null, "backgroundMediaMode": "cover", "cssClass": null, - "cmsPageVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", "visibility": null, "customFields": null, - "apiAlias": "cms_section" + "apiAlias": "cms_block" } ], - "translations": null, + "pageId": "33e88c7994fa4cf79a1265e5105b93b2", + "page": null, + "position": 0, + "sizingMode": "boxed", + "mobileBehavior": "wrap", + "backgroundColor": null, + "backgroundMediaId": null, + "backgroundMedia": null, + "backgroundMediaMode": "cover", "cssClass": null, - "config": null, - "previewMediaId": null, - "previewMedia": null, - "landingPages": null, - "id": "8ea80092faa744559409f3e9f7adcc6b", - "customFields": null, - "apiAlias": "cms_page" - }, - "apiAlias": "pwa_page_result" - } - ], - "navigation": [ - { - "groupName": "Default Digital Sales Rooms product listing page", - "groupId": "468b0e34237a44ad8f8a8d5e0b72b78f", - "cmsPageId": "33e88c7994fa4cf79a1265e5105b93b2", - "name": null, - "id": "2229e1f1208a4b8086baf7aec84f5e2c", - "index": 1, - "notes": [ - { - "extensions": { - "foreignKeys": { - "extensions": [], - "apiAlias": "cms_slot_foreign_keys_extension" - } - }, - "_uniqueIdentifier": "de28c711c20b4ad0a54871d5a23109fc", - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "config": { - "content": { - "value": "

Lorem Ipsum dolor sit amet

\n

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, \n sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, \n sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. \n Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. \n Lorem ipsum dolor sit amet, consetetur sadipscing elitr, \n sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. \n At vero eos et accusam et justo duo dolores et ea rebum. \n Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

", - "source": "static" - }, - "verticalAlign": { - "value": null, - "source": "static" - } - }, - "customFields": [] - }, - "createdAt": "2023-08-10T04:30:28.649+00:00", - "updatedAt": null, - "type": "notes", - "slot": "content", - "block": null, - "blockId": "978ca9beff6e4edca6d5263fac254e13", - "config": { - "content": { - "value": "

Lorem Ipsum dolor sit amet

\n

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, \n sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, \n sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. \n Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. \n Lorem ipsum dolor sit amet, consetetur sadipscing elitr, \n sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. \n At vero eos et accusam et justo duo dolores et ea rebum. \n Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.

", - "source": "static" - }, - "verticalAlign": { - "value": null, - "source": "static" - } - }, - "fieldConfig": null, - "translations": null, - "data": null, - "locked": false, - "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "id": "de28c711c20b4ad0a54871d5a23109fc", - "customFields": null - } - ] - }, - { - "groupName": "Default Digital Sales Rooms product detail page", - "groupId": "52f1e61cd45945a0b72bd613d1268d65", - "cmsPageId": "bea211b5099241719830df8026624f7f", - "name": null, - "id": "f4aaa27972314e3c9b7f3bb35c7f8a10", - "index": 2, - "notes": [] - }, - { - "groupName": "Ended presentation page", - "groupId": "b073190abe03407993f41b8d5bc8ba57", - "cmsPageId": "8ea80092faa744559409f3e9f7adcc6b", - "name": null, - "id": "0a5e89814463470684a734b975add4ed", - "index": 3, - "notes": [] - } - ], - "apiAlias": "pwa_page_result" - } - }, - "AttendeeProductCollectionResponse": { - "type": "object", - "properties": { - "collection": { - "type": "object", - "anyOf": [ - { - "type": "object", - "properties": { - "liked": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Product ids from the collection" - } - } - } - }, - { - "type": "object", - "properties": { - "disliked": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Product ids from the collection" - } - } - } + "cmsPageVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "visibility": null, + "customFields": null, + "apiAlias": "cms_section" } - ] - } - }, - "example": { - "collection": { - "liked": [ - "0015b3d83df441e490da7f6880a9c2da", - "60793d25cbab473f92c405ce0525f3ec" - ] - } - } - }, - "DiscountLineItemPayload": { - "type": "object", - "properties": { - "discountType": { - "type": "string", - "enum": [ - "percentage", - "absolute" - ] + ], + "translations": null, + "cssClass": null, + "config": null, + "previewMediaId": null, + "previewMedia": null, + "landingPages": null, + "id": "33e88c7994fa4cf79a1265e5105b93b2", + "customFields": null, + "apiAlias": "cms_page" }, - "discountValue": { - "type": "number", - "format": "float", - "maximum": 0 + "category": { + "versionId": null, + "translated": { + "breadcrumb": [] + }, + "createdAt": null, + "updatedAt": null, + "afterCategoryId": null, + "parentId": null, + "mediaId": null, + "name": null, + "breadcrumb": [], + "path": null, + "level": null, + "active": null, + "childCount": null, + "visibleChildCount": 0, + "displayNestedProducts": null, + "parent": null, + "children": null, + "translations": null, + "media": null, + "cmsPageId": null, + "cmsPageIdSwitched": false, + "cmsPage": null, + "linkType": null, + "linkNewTab": null, + "internalLink": null, + "externalLink": null, + "visible": null, + "type": null, + "productAssignmentType": null, + "description": null, + "metaTitle": null, + "metaDescription": null, + "keywords": null, + "seoUrls": null, + "customEntityTypeId": null, + "id": "34f21c5eb6d54a939f10973204aa5f08", + "customFields": null, + "apiAlias": "category" }, - "discountPrice": { - "type": "number", - "format": "float", - "maximum": 0 - } + "apiAlias": "pwa_page_result" } }, - "PageViewedPayload": { + "GuideHoveredPayload": { "type": "object", - "required": [ - "pageId", - "sectionId", - "slideAlias" - ], "properties": { - "pageId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "the id from the page which was viewed" - }, - "sectionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "the id from the section within the page which was viewed" - }, - "slideAlias": { - "type": "number", - "description": "the alias of the slide which was viewed" - }, - "pageNumber": { - "oneOf": [ + "hoveredElementId": { + "anyOf": [ { - "type": "integer", - "description": "the number of the page which was viewed" + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "the id from the product which is used in the interaction" }, { "type": "null" @@ -18202,92 +18288,6 @@ ] } } - }, - "AbstractDynamicPageOpenedPayload": { - "type": "object", - "required": [ - "pageId", - "type" - ], - "properties": { - "pageId": { - "type": "string", - "pattern": "^[a-f0-9]{32}$", - "description": "The id of the current dynamic page" - }, - "type": { - "type": "string", - "description": "The type of the current dynamic page" - }, - "opened": { - "type": "boolean", - "default": true - }, - "position": { - "type": "integer", - "description": "The position of the dynamic page in the list of dynamic pages" - } - } - }, - "CreateAppointmentRequestBody": { - "type": "object", - "description": "Includes all data you will need to attend to a appointment.", - "required": [ - "salutationId", - "firstName", - "lastName", - "emailAddress", - "subject" - ], - "properties": { - "salutationId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The id of the salutation" - }, - "firstName": { - "type": "string", - "description": "The first name of the requester" - }, - "lastName": { - "type": "string", - "description": "The last name of the requester" - }, - "emailAddress": { - "type": "string", - "format": "email", - "description": "The email address of the requester" - }, - "companyName": { - "type": "string", - "description": "The company name of the requester" - }, - "phoneNumber": { - "type": "string", - "description": "The phone number of the requester" - }, - "subject": { - "type": "string", - "description": "The subject of the appointment" - }, - "message": { - "type": "string", - "description": "The message of the appointment" - } - }, - "example": { - "id": "2d2c358f1ca04098aacf12873c2eed94", - "appointmentId": "3b3c358f1ca04098aacf12873c2eed94", - "salutationId": "5m6c358f1ca04098aacf12873c2eed94", - "firstName": "John", - "lastName": "Doe", - "emailAddress": "john@example.com", - "companyName": "Example Inc.", - "phoneNumber": "+1234567890", - "subject": "Appointment subject", - "message": "Appointment message", - "requestedById": "7b7c358f1ca04098aacf12873c2eed94" - } } }, "responses": { @@ -18403,85 +18403,29 @@ "status": "400", "title": "Bad Request", "description": "Bad parameters for this endpoint. See documentation for the correct ones." - } - ] - } - }, - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "400", - "title": "Bad Request", - "description": "Bad parameters for this endpoint. See documentation for the correct ones." - } - ] - } - } - } - }, - "204": { - "description": "No Content" - }, - "SeoUrlListResponse": { - "description": "Entity search result containing seo urls.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } - } - }, - "type": "object", - "required": [ - "elements" - ] - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } - }, - "ProductListResponse": { - "description": "Entity search result containing products", - "content": { + } + ] + } + }, "application/json": { "schema": { - "allOf": [ - { - "required": [ - "elements" - ], - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - } - }, - "type": "object" - }, + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ { - "$ref": "#/components/schemas/EntitySearchResult" + "status": "400", + "title": "Bad Request", + "description": "Bad parameters for this endpoint. See documentation for the correct ones." } ] } } } }, + "204": { + "description": "No Content" + }, "CurrencyListResponse": { "description": "Entity search result containing currencies.", "content": { @@ -18495,31 +18439,6 @@ } } }, - "CountryListResponse": { - "description": "Entity search result containing countries.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Country" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } - }, "SalutationListResponse": { "description": "Entity search result containing salutations.", "content": { @@ -18545,74 +18464,56 @@ } } }, - "CategoryListResponse": { - "description": "Entity search result containing categories.", - "content": { - "application/json": { + "ContextTokenResponse": { + "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", + "headers": { + "sw-context-token": { + "description": "Contains sw-context-token value", "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - } - } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "type": "string" } } - } - }, - "CountryStateListResponse": { - "description": "Entity search result containing countries.", + }, "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CountryState" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" + "type": "object", + "properties": { + "redirectUrl": { + "description": "Define the URL which browser will be redirected to", + "type": "string" } - ] + } } } } }, - "LanguageListResponse": { - "description": "Entity search result containing languages.", + "ShippingMethodListResponse": { + "description": "Entity search result containing shipping methods.", "content": { "application/json": { "schema": { "allOf": [ { + "required": [ + "elements" + ], "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Language" + "$ref": "#/components/schemas/ShippingMethod" } } }, - "required": [ - "elements" - ], "type": "object" }, { @@ -18623,30 +18524,6 @@ } } }, - "ContextTokenResponse": { - "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", - "headers": { - "sw-context-token": { - "description": "Contains sw-context-token value", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "description": "Define the URL which browser will be redirected to", - "type": "string" - } - } - } - } - } - }, "OpenApi3": { "description": "Returns information about the store API.", "content": { @@ -18836,6 +18713,31 @@ } } }, + "CountryStateListResponse": { + "description": "Entity search result containing countries.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CountryState" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + }, "PaymentMethodListResponse": { "description": "", "content": { @@ -18856,14 +18758,95 @@ "$ref": "#/components/schemas/PaymentMethod" } } - }, - "type": "object" + }, + "type": "object" + } + } + } + }, + "SeoUrlListResponse": { + "description": "Entity search result containing seo urls.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" + } + } + }, + "type": "object", + "required": [ + "elements" + ] + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + }, + "CategoryListResponse": { + "description": "Entity search result containing categories.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + } + } + } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + }, + "LanguageListResponse": { + "description": "Entity search result containing languages.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + } + } + }, + "required": [ + "elements" + ], + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } }, - "ShippingMethodListResponse": { - "description": "Entity search result containing shipping methods.", + "ProductListResponse": { + "description": "Entity search result containing products", "content": { "application/json": { "schema": { @@ -18873,18 +18856,35 @@ "elements" ], "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/ShippingMethod" + "$ref": "#/components/schemas/Product" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + }, + "CountryListResponse": { + "description": "Entity search result containing countries.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Country" } } }, @@ -19181,34 +19181,82 @@ } ], "paths": { - "/dsr/shop-pages/{layoutName}": { - "get": { + "/dsr/product-listing": { + "post": { "tags": [ - "Shop pages" + "Product" ], - "summary": "Get shop pages", - "description": "Get shop pages by layout name", - "operationId": "dsrReadShopPage", + "summary": "Fetch a product listing by criteria", + "description": "Fetches a product listing for a given criteria. It also provides filters, sortings and property aggregations, analogous to the /product-listing endpoint.", + "operationId": "dsrProductListing", "parameters": [ - { - "name": "layoutName", - "in": "path", - "required": true, - "schema": { - "type": "string" - } - }, { "$ref": "#/components/parameters/swLanguageId" } ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ], + "anyOf": [ + { + "properties": { + "interaction": { + "type": "boolean", + "default": false, + "description": "Load interaction (like & dislike) to product of attendee. It will be added into product extensions named interaction" + }, + "useIdSorting": { + "type": "boolean", + "default": false, + "description": "Use id sorting instead of other sorting fields" + }, + "loadVariants": { + "type": "boolean", + "default": false, + "description": "load all variants following the main products" + }, + "loadAllIds": { + "type": "boolean", + "default": false, + "description": "Load all product ids, you can access it from `extensions.allIds` of the response" + } + } + } + ] + } + } + } + }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CmsPage" + "type": "object", + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -19216,20 +19264,30 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/dsr/appointment/presentation": { + "/dsr/product/{productId}": { "get": { "tags": [ - "Presentation" + "Shop pages" ], - "summary": "Fetch presentation structure and flat navigation", - "description": "Resolves the presentation structure and navigation by using the attendeeContext information. There will be NO Slot-Data inside call store-api.dsr.presentation-data for that", - "operationId": "getPresentationStructure", + "summary": "Load product detail page", + "description": "Load product detail page with product id", + "operationId": "dsrReadProductDetailPage", "parameters": [ + { + "name": "productId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, { "$ref": "#/components/parameters/swLanguageId" } @@ -19240,7 +19298,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PresentationStructure" + "$ref": "#/components/schemas/ProductPageResult" } } } @@ -19254,46 +19312,56 @@ ] } }, - "/dsr/appointment/presentation/{presentationCmsPageId}/slide/{sectionId}": { - "get": { + "/dsr/appointment/{presentationPath}/join-as-client": { + "post": { "tags": [ - "Presentation" + "Appointment" ], - "summary": "Fetch resolved data for specific slide", - "description": "Gives the resolved slot-data for the given slide index (slot-config)", - "operationId": "getSlideData", + "summary": "Join a meeting as a attendee", + "description": "Returns the client join appointment response.", + "operationId": "joinAppointmentAsClient", "parameters": [ { - "name": "presentationCmsPageId", - "in": "path", - "description": "Presentation CMS page id for which the data is requested", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "sectionId", + "name": "presentationPath", "in": "path", - "description": "CMS section id for which the data is requested", + "description": "Presentation path", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } }, { "$ref": "#/components/parameters/swLanguageId" } ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "properties": { + "attendeeName": { + "type": "string", + "required": false, + "description": "The name of the attendee" + }, + "currentAttendeeId": { + "type": "string", + "required": false, + "description": "Identifier of the current attendee you want log in as" + } + } + } + } + } + }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PresentationSlideData" + "$ref": "#/components/schemas/JoinAppointmentResponse" } } } @@ -19301,73 +19369,40 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/dsr/appointment/presentation/{presentationCmsPageId}/slide/{sectionId}/products": { - "post": { + "/dsr/appointment/{presentationPath}/basic-setting": { + "get": { "tags": [ - "Presentation" + "Appointment" ], - "summary": "Fetch all products for specific slide", - "description": "Fetches all products for a specific slide", - "operationId": "getSlideProducts", + "summary": "Get the appointment's basic settings", + "description": "Get all the basic settings of the appointment", + "operationId": "dsrReadAppointmentSettings", "parameters": [ { - "name": "presentationCmsPageId", - "in": "path", - "description": "Presentation CMS page id for which the data is requested", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "sectionId", + "name": "presentationPath", "in": "path", - "description": "CMS section id for which the data is requested", + "description": "Presentation path", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } }, { "$ref": "#/components/parameters/swLanguageId" } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - }, - { - "type": "object", - "properties": { - "interaction": { - "type": "boolean" - } - } - } - ] - } - } - } - }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "$ref": "#/components/schemas/AppointmentBasicSettingResponse" } } } @@ -19375,20 +19410,19 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/dsr/appointment/presentation/state": { + "/dsr/appointment/collection/last-seen": { "get": { "tags": [ - "Presentation" + "Appointment" ], - "summary": "Get the current presentation state", - "description": "Returns the presentation state for all and the client", - "operationId": "getClientPresentationState", + "summary": "Get the last seen products for the current attendee", + "description": "Returns the the last seen products for the requesting client", + "operationId": "getLastSeenProducts", "parameters": [ { "$ref": "#/components/parameters/swLanguageId" @@ -19400,7 +19434,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ClientPresentationStateResponse" + "$ref": "#/components/schemas/AttendeeProductCollectionLastSeenResponse" } } } @@ -19414,29 +19448,32 @@ ] } }, - "/dsr/quickview/{productId}/{cmsPageLayoutId}": { - "get": { + "/dsr/appointment/collection/{alias}/{productId}": { + "post": { "tags": [ - "Presentation" + "Appointment" ], - "summary": "Fetch a cms page for quickview with product data", - "description": "Takes a product identifier and returns the preconfigured quickview CMS layout (defined in SwagDigitalSalesRooms.config.quickviewPageId ) hydrated with the product specific data", - "operationId": "resolveQuickviewPage", + "summary": "Add a product to the attendee product list", + "description": "Add a product with the alias to the product list of the attendee", + "operationId": "attendeeProductCollectionAddProduct", "parameters": [ { - "name": "productId", + "name": "alias", "in": "path", - "description": "The product id", + "description": "The alias of collection you want to add", "required": true, "schema": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "enum": [ + "liked", + "disliked" + ] } }, { - "name": "cmsPageLayoutId", + "name": "productId", "in": "path", - "description": "The cms page id using as product quick view", + "description": "The product id you want to add", "required": true, "schema": { "type": "string", @@ -19448,29 +19485,9 @@ } ], "responses": { - "200": { + "204": { "description": "", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "cmsPage": { - "$ref": "#/components/schemas/CmsPage" - }, - "product": { - "$ref": "#/components/schemas/Product" - }, - "configurator": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PropertyGroup" - } - } - } - } - } - } + "content": [] } }, "security": [ @@ -19479,31 +19496,43 @@ "ContextToken": [] } ] - } - }, - "/dsr/account/update-default-info": { - "post": { + }, + "delete": { "tags": [ - "Customer account" + "Appointment" ], - "summary": "Update customer default info", - "description": "Mark the customer who was created by admin from DSR has already updated the default info when the customer first login", - "operationId": "dsrAccountUpdateDefaultInfo", + "summary": "Remove a product with the alias from the for the attendee product collection", + "description": "Removes the product with the matching alias from of the attendee product collection", + "operationId": "attendeeProductCollectionRemoveProduct", "parameters": [ { - "$ref": "#/components/parameters/swLanguageId" + "name": "alias", + "in": "path", + "description": "The alias of collection you want to remove", + "required": true, + "schema": { + "type": "string", + "enum": [ + "liked", + "disliked" + ] + } + }, + { + "name": "productId", + "in": "path", + "description": "The product id you want to remove", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } ], "responses": { - "200": { + "204": { "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } + "content": [] } }, "security": [ @@ -19514,15 +19543,28 @@ ] } }, - "/dsr/customer/wishlist-product-ids": { - "post": { + "/dsr/appointment/collection/{alias}": { + "get": { "tags": [ - "Wishlist" + "Appointment" ], - "summary": "Load customer wishlist product ids", - "description": "Load customer wishlist product ids", - "operationId": "dsrLoadCustomerWishlistProductIds", + "summary": "Get the product ids for the attendee in product collection with the matching alias", + "description": "Returns the product ids for the requesting attendee and matching alias", + "operationId": "getAttendeeProductCollection", "parameters": [ + { + "name": "alias", + "in": "path", + "description": "The alias of collection you want to get", + "required": true, + "schema": { + "type": "string", + "enum": [ + "liked", + "disliked" + ] + } + }, { "$ref": "#/components/parameters/swLanguageId" } @@ -19533,29 +19575,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "default": "array_struct" - }, - "wishlistProductIds": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "example": { - "apiAlias": "array_struct", - "wishlistProductIds": [ - "01951c1b08247366b6c29989c74b048d", - "01951c1b0ad070b689596328fa27568b", - "01951c359620703b833179608409e270", - "01951c3d327b72d59694fc992aac69a5", - "01951c3fe62a71c5a5f0523d87af0800" - ] + "$ref": "#/components/schemas/AttendeeProductCollectionResponse" } } } @@ -19569,19 +19589,45 @@ ] } }, - "/dsr/customer/generate-login-token": { + "/dsr/appointment/{appointmentId}/download-ics": { "post": { "tags": [ - "Customer account" + "Appointment" ], - "summary": "Generate login token that can be used to login to Storefront from DSR", - "description": "Generate login token that can be used to login to Storefront from DSR", - "operationId": "dsrGenerateLoginToken", - "body": { - "type": "object", - "properties": { - "storefrontUrl": { - "type": "string" + "summary": "Get the ics file to import to your calendar", + "description": "Returns the calendar file", + "operationId": "getCalendarFile", + "parameters": [ + { + "name": "appointmentId", + "in": "path", + "description": "The appointment id you want to get the calendar file", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "token" + ], + "properties": { + "token": { + "description": "The token will be attached to the invitation response link in the invitation mail", + "type": "string" + } + }, + "type": "object" + } } } }, @@ -19589,19 +19635,8 @@ "200": { "description": "", "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "default": "dsr.storefront-login.response" - }, - "token": { - "type": "string" - } - } - } + "text/calendar": { + "example": "BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:-//DIGITAL SALES ROOMS//Calendar//EN\nCALSCALE:GREGORIAN\nMETHOD:REQUEST\nBEGIN:VTIMEZONE\nTZID:UTC\nBEGIN:STANDARD\nDTSTART:20221016T102853Z\nTZOFFSETFROM:+0000\nTZOFFSETTO:+0000\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nUID:95f79a4ecfae4794ae2b65b018330f88@shopware.com\nDTSTAMP:20230713T102853Z\nSUMMARY:test send invitation\nDESCRIPTION:Hello\nLOCATION:https://localhost.test/presentation/95f79a4ecfae47\n 94ae2b65b018330f88\nSTATUS:CANCELLED\nTRANSP:TRANSPARENT\nORGANIZER;CN=Phung Nguyen:MAILTO:p.nguyen@localhost.com\nATTENDEE;CN=p.test;RSVP=TRUE;PARTSTAT=NEEDS-ACTION:MAILTO:p.test@test.\n com\nDTSTART:20230713T121000Z\nDTEND:20230713T123000Z\nEND:VEVENT\nEND:VCALENDAR" } } } @@ -19611,27 +19646,57 @@ "ApiKey": [], "ContextToken": [] } + ] + } + }, + "/dsr/appointment/{appointmentId}/attendee/respond-invitation": { + "patch": { + "tags": [ + "Appointment" ], + "summary": "Respond the appointment invitation", + "description": "Returns the appointment invitation status", + "operationId": "attendeeRespondInvitation", "parameters": [ + { + "name": "appointmentId", + "in": "path", + "description": "The appointment id you respond to", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, { "$ref": "#/components/parameters/swLanguageId" } - ] - } - }, - "/dsr/customer/automatic-login": { - "post": { - "tags": [ - "Customer account" ], - "summary": "Automatic login from DSR to Storefront", - "description": "Automatic login from DSR to Storefront", - "operationId": "dsrAutomaticLogin", - "body": { - "type": "object", - "properties": { - "token": { - "type": "string" + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "token" + ], + "properties": { + "token": { + "description": "The token will be attached to the invitation response link in the invitation mail", + "type": "string" + }, + "answer": { + "description": "The status you respond to", + "type": "string", + "enum": [ + "accepted", + "maybe", + "declined" + ] + } + }, + "type": "object" + } } } }, @@ -19641,7 +19706,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/responses/ContextTokenResponse" + "$ref": "#/components/schemas/AttendeeRespondInvitationResponse" } } } @@ -19652,95 +19717,28 @@ "ApiKey": [], "ContextToken": [] } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } - ] - } - }, - "/dsr/customer/migrate-visitor-session": { - "post": { - "tags": [ - "Customer account" - ], - "summary": "Migrate visitor session from DSR to Storefront", - "description": "Migrate visitor session from DSR to Storefront", - "operationId": "dsrMigrateVisitorSession", - "body": { - "type": "object", - "properties": { - "contextToken": { - "type": "string" - } - } - }, - "responses": { - "204": [] - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } ] } }, - "/dsr/product-listing": { - "post": { + "/dsr/appointment/attendee": { + "patch": { "tags": [ - "Product" + "Appointment" ], - "summary": "Fetch a product listing by criteria", - "description": "Fetches a product listing for a given criteria. It also provides filters, sortings and property aggregations, analogous to the /product-listing endpoint.", - "operationId": "dsrProductListing", + "summary": "Update attendee information", + "description": "Update attendee information", + "operationId": "updateAttendee", "parameters": [ { "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ], - "anyOf": [ - { - "properties": { - "interaction": { - "type": "boolean", - "default": false, - "description": "Load interaction (like & dislike) to product of attendee. It will be added into product extensions named interaction" - }, - "useIdSorting": { - "type": "boolean", - "default": false, - "description": "Use id sorting instead of other sorting fields" - }, - "loadVariants": { - "type": "boolean", - "default": false, - "description": "load all variants following the main products" - }, - "loadAllIds": { - "type": "boolean", - "default": false, - "description": "Load all product ids, you can access it from `extensions.allIds` of the response" - } - } - } - ] + "$ref": "#/components/schemas/UpdateAttendeeRequestBody" } } } @@ -19752,22 +19750,26 @@ "application/json": { "schema": { "type": "object", - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - } - }, - "type": "object" + "properties": { + "apiAlias": { + "type": "string", + "default": "dsr.appointment.update-attendee", + "description": "The api alias of the API" }, - { - "$ref": "#/components/schemas/EntitySearchResult" + "data": { + "items": { + "type": "string", + "description": "Updated data" + }, + "description": "The data is used to update the attendee information" } - ] + }, + "example": { + "data": { + "attendeeName": "John Doe", + "videoUserId": "1234567890" + } + } } } } @@ -19781,40 +19783,34 @@ ] } }, - "/dsr/product/{productId}": { - "get": { + "/dsr/interaction": { + "post": { "tags": [ - "Shop pages" + "Appointment" ], - "summary": "Load product detail page", - "description": "Load product detail page with product id", - "operationId": "dsrReadProductDetailPage", + "summary": "Add a interaction to log", + "description": "Create a interaction log entry in a specific appointment", + "operationId": "addInteraction", "parameters": [ - { - "name": "productId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, { "$ref": "#/components/parameters/swLanguageId" } ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProductPageResult" - } + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateInteractionRequestBody" } } } }, + "responses": { + "200": { + "description": "" + } + }, "security": [ { "ApiKey": [], @@ -19823,45 +19819,25 @@ ] } }, - "/dsr/appointment/{presentationPath}/join-as-client": { + "/dsr/appointment/request": { "post": { "tags": [ "Appointment" ], - "summary": "Join a meeting as a attendee", - "description": "Returns the client join appointment response.", - "operationId": "joinAppointmentAsClient", + "summary": "Create appointment request", + "description": "Create a appointment request for a specific appointment", + "operationId": "createAppointmentRequest", "parameters": [ - { - "name": "presentationPath", - "in": "path", - "description": "Presentation path", - "required": true, - "schema": { - "type": "string" - } - }, { "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "properties": { - "attendeeName": { - "type": "string", - "required": false, - "description": "The name of the attendee" - }, - "currentAttendeeId": { - "type": "string", - "required": false, - "description": "Identifier of the current attendee you want log in as" - } - } + "$ref": "#/components/schemas/CreateAppointmentRequestBody" } } } @@ -19872,7 +19848,21 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JoinAppointmentResponse" + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "default": "dsr.appointment.create-appointment-request", + "description": "The api alias of the API" + }, + "data": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The data is used to create the appointment request" + } + } } } } @@ -19880,27 +19870,29 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/dsr/appointment/{presentationPath}/basic-setting": { + "/dsr/appointment/{appointmentId}/shopping-lists": { "get": { "tags": [ "Appointment" ], - "summary": "Get the appointment's basic settings", - "description": "Get all the basic settings of the appointment", - "operationId": "dsrReadAppointmentSettings", + "summary": "Load line item ids of a shopping lists from appointment cache", + "description": "Load line item ids of a shopping lists from the appointment cache", + "operationId": "getSharingShoppingList", "parameters": [ { - "name": "presentationPath", + "name": "appointmentId", "in": "path", - "description": "Presentation path", + "description": "The appointment id you are joining", "required": true, "schema": { - "type": "string" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, { @@ -19913,7 +19905,31 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AppointmentBasicSettingResponse" + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "default": "dsr.appointment.load-shopping-lists", + "description": "The api alias of the API" + }, + "data": { + "type": "object", + "example": { + "apiAlias": "dsr.appointment.load-shopping-lists", + "data": { + "01938f89c632709ba4d65eb53604bf5b": { + "quantity": "1" + }, + "01938f89c8647036a617b7d88e1e24f5": { + "quantity": "1" + }, + "01938f8a23d47305b1e289163cea5074": { + "quantity": "1" + } + } + } + } + } } } } @@ -19921,19 +19937,20 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/dsr/appointment/collection/last-seen": { + "/dsr/appointment/presentation": { "get": { "tags": [ - "Appointment" + "Presentation" ], - "summary": "Get the last seen products for the current attendee", - "description": "Returns the the last seen products for the requesting client", - "operationId": "getLastSeenProducts", + "summary": "Fetch presentation structure and flat navigation", + "description": "Resolves the presentation structure and navigation by using the attendeeContext information. There will be NO Slot-Data inside call store-api.dsr.presentation-data for that", + "operationId": "getPresentationStructure", "parameters": [ { "$ref": "#/components/parameters/swLanguageId" @@ -19945,7 +19962,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AttendeeProductCollectionLastSeenResponse" + "$ref": "#/components/schemas/PresentationStructure" } } } @@ -19959,32 +19976,29 @@ ] } }, - "/dsr/appointment/collection/{alias}/{productId}": { - "post": { + "/dsr/appointment/presentation/{presentationCmsPageId}/slide/{sectionId}": { + "get": { "tags": [ - "Appointment" + "Presentation" ], - "summary": "Add a product to the attendee product list", - "description": "Add a product with the alias to the product list of the attendee", - "operationId": "attendeeProductCollectionAddProduct", + "summary": "Fetch resolved data for specific slide", + "description": "Gives the resolved slot-data for the given slide index (slot-config)", + "operationId": "getSlideData", "parameters": [ { - "name": "alias", + "name": "presentationCmsPageId", "in": "path", - "description": "The alias of collection you want to add", + "description": "Presentation CMS page id for which the data is requested", "required": true, "schema": { "type": "string", - "enum": [ - "liked", - "disliked" - ] + "pattern": "^[0-9a-f]{32}$" } }, { - "name": "productId", + "name": "sectionId", "in": "path", - "description": "The product id you want to add", + "description": "CMS section id for which the data is requested", "required": true, "schema": { "type": "string", @@ -19996,9 +20010,15 @@ } ], "responses": { - "204": { + "200": { "description": "", - "content": [] + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PresentationSlideData" + } + } + } } }, "security": [ @@ -20007,43 +20027,72 @@ "ContextToken": [] } ] - }, - "delete": { + } + }, + "/dsr/appointment/presentation/{presentationCmsPageId}/slide/{sectionId}/products": { + "post": { "tags": [ - "Appointment" + "Presentation" ], - "summary": "Remove a product with the alias from the for the attendee product collection", - "description": "Removes the product with the matching alias from of the attendee product collection", - "operationId": "attendeeProductCollectionRemoveProduct", + "summary": "Fetch all products for specific slide", + "description": "Fetches all products for a specific slide", + "operationId": "getSlideProducts", "parameters": [ { - "name": "alias", + "name": "presentationCmsPageId", "in": "path", - "description": "The alias of collection you want to remove", + "description": "Presentation CMS page id for which the data is requested", "required": true, "schema": { "type": "string", - "enum": [ - "liked", - "disliked" - ] + "pattern": "^[0-9a-f]{32}$" } }, { - "name": "productId", + "name": "sectionId", "in": "path", - "description": "The product id you want to remove", + "description": "CMS section id for which the data is requested", "required": true, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + }, + { + "type": "object", + "properties": { + "interaction": { + "type": "boolean" + } + } + } + ] + } + } + } + }, "responses": { - "204": { + "200": { "description": "", - "content": [] + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + } } }, "security": [ @@ -20054,28 +20103,15 @@ ] } }, - "/dsr/appointment/collection/{alias}": { + "/dsr/appointment/presentation/state": { "get": { "tags": [ - "Appointment" + "Presentation" ], - "summary": "Get the product ids for the attendee in product collection with the matching alias", - "description": "Returns the product ids for the requesting attendee and matching alias", - "operationId": "getAttendeeProductCollection", + "summary": "Get the current presentation state", + "description": "Returns the presentation state for all and the client", + "operationId": "getClientPresentationState", "parameters": [ - { - "name": "alias", - "in": "path", - "description": "The alias of collection you want to get", - "required": true, - "schema": { - "type": "string", - "enum": [ - "liked", - "disliked" - ] - } - }, { "$ref": "#/components/parameters/swLanguageId" } @@ -20086,7 +20122,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AttendeeProductCollectionResponse" + "$ref": "#/components/schemas/ClientPresentationStateResponse" } } } @@ -20100,19 +20136,19 @@ ] } }, - "/dsr/appointment/{appointmentId}/download-ics": { - "post": { + "/dsr/quickview/{productId}/{cmsPageLayoutId}": { + "get": { "tags": [ - "Appointment" + "Presentation" ], - "summary": "Get the ics file to import to your calendar", - "description": "Returns the calendar file", - "operationId": "getCalendarFile", + "summary": "Fetch a cms page for quickview with product data", + "description": "Takes a product identifier and returns the preconfigured quickview CMS layout (defined in SwagDigitalSalesRooms.config.quickviewPageId ) hydrated with the product specific data", + "operationId": "resolveQuickviewPage", "parameters": [ { - "name": "appointmentId", + "name": "productId", "in": "path", - "description": "The appointment id you want to get the calendar file", + "description": "The product id", "required": true, "schema": { "type": "string", @@ -20120,59 +20156,9 @@ } }, { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "token" - ], - "properties": { - "token": { - "description": "The token will be attached to the invitation response link in the invitation mail", - "type": "string" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "text/calendar": { - "example": "BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:-//DIGITAL SALES ROOMS//Calendar//EN\nCALSCALE:GREGORIAN\nMETHOD:REQUEST\nBEGIN:VTIMEZONE\nTZID:UTC\nBEGIN:STANDARD\nDTSTART:20221016T102853Z\nTZOFFSETFROM:+0000\nTZOFFSETTO:+0000\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nUID:95f79a4ecfae4794ae2b65b018330f88@shopware.com\nDTSTAMP:20230713T102853Z\nSUMMARY:test send invitation\nDESCRIPTION:Hello\nLOCATION:https://localhost.test/presentation/95f79a4ecfae47\n 94ae2b65b018330f88\nSTATUS:CANCELLED\nTRANSP:TRANSPARENT\nORGANIZER;CN=Phung Nguyen:MAILTO:p.nguyen@localhost.com\nATTENDEE;CN=p.test;RSVP=TRUE;PARTSTAT=NEEDS-ACTION:MAILTO:p.test@test.\n com\nDTSTART:20230713T121000Z\nDTEND:20230713T123000Z\nEND:VEVENT\nEND:VCALENDAR" - } - } - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/dsr/appointment/{appointmentId}/attendee/respond-invitation": { - "patch": { - "tags": [ - "Appointment" - ], - "summary": "Respond the appointment invitation", - "description": "Returns the appointment invitation status", - "operationId": "attendeeRespondInvitation", - "parameters": [ - { - "name": "appointmentId", + "name": "cmsPageLayoutId", "in": "path", - "description": "The appointment id you respond to", + "description": "The cms page id using as product quick view", "required": true, "schema": { "type": "string", @@ -20183,41 +20169,60 @@ "$ref": "#/components/parameters/swLanguageId" } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "token" - ], - "properties": { - "token": { - "description": "The token will be attached to the invitation response link in the invitation mail", - "type": "string" - }, - "answer": { - "description": "The status you respond to", - "type": "string", - "enum": [ - "accepted", - "maybe", - "declined" - ] + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "cmsPage": { + "$ref": "#/components/schemas/CmsPage" + }, + "product": { + "$ref": "#/components/schemas/Product" + }, + "configurator": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PropertyGroup" + } + } } - }, - "type": "object" + } } } } }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/dsr/account/update-default-info": { + "post": { + "tags": [ + "Customer account" + ], + "summary": "Update customer default info", + "description": "Mark the customer who was created by admin from DSR has already updated the default info when the customer first login", + "operationId": "dsrAccountUpdateDefaultInfo", + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ], "responses": { "200": { "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AttendeeRespondInvitationResponse" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -20231,29 +20236,19 @@ ] } }, - "/dsr/appointment/attendee": { - "patch": { + "/dsr/customer/wishlist-product-ids": { + "post": { "tags": [ - "Appointment" + "Wishlist" ], - "summary": "Update attendee information", - "description": "Update attendee information", - "operationId": "updateAttendee", + "summary": "Load customer wishlist product ids", + "description": "Load customer wishlist product ids", + "operationId": "dsrLoadCustomerWishlistProductIds", "parameters": [ { "$ref": "#/components/parameters/swLanguageId" } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateAttendeeRequestBody" - } - } - } - }, "responses": { "200": { "description": "", @@ -20264,23 +20259,25 @@ "properties": { "apiAlias": { "type": "string", - "default": "dsr.appointment.update-attendee", - "description": "The api alias of the API" + "default": "array_struct" }, - "data": { + "wishlistProductIds": { + "type": "array", "items": { - "type": "string", - "description": "Updated data" - }, - "description": "The data is used to update the attendee information" - } - }, - "example": { - "data": { - "attendeeName": "John Doe", - "videoUserId": "1234567890" + "type": "string" + } } } + }, + "example": { + "apiAlias": "array_struct", + "wishlistProductIds": [ + "01951c1b08247366b6c29989c74b048d", + "01951c1b0ad070b689596328fa27568b", + "01951c359620703b833179608409e270", + "01951c3d327b72d59694fc992aac69a5", + "01951c3fe62a71c5a5f0523d87af0800" + ] } } } @@ -20294,32 +20291,41 @@ ] } }, - "/dsr/interaction": { + "/dsr/customer/generate-login-token": { "post": { "tags": [ - "Appointment" - ], - "summary": "Add a interaction to log", - "description": "Create a interaction log entry in a specific appointment", - "operationId": "addInteraction", - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } + "Customer account" ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateInteractionRequestBody" - } + "summary": "Generate login token that can be used to login to Storefront from DSR", + "description": "Generate login token that can be used to login to Storefront from DSR", + "operationId": "dsrGenerateLoginToken", + "body": { + "type": "object", + "properties": { + "storefrontUrl": { + "type": "string" } } }, "responses": { "200": { - "description": "" + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "default": "dsr.storefront-login.response" + }, + "token": { + "type": "string" + } + } + } + } + } } }, "security": [ @@ -20327,29 +20333,27 @@ "ApiKey": [], "ContextToken": [] } - ] - } - }, - "/dsr/appointment/request": { - "post": { - "tags": [ - "Appointment" ], - "summary": "Create appointment request", - "description": "Create a appointment request for a specific appointment", - "operationId": "createAppointmentRequest", "parameters": [ { "$ref": "#/components/parameters/swLanguageId" } + ] + } + }, + "/dsr/customer/automatic-login": { + "post": { + "tags": [ + "Customer account" ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateAppointmentRequestBody" - } + "summary": "Automatic login from DSR to Storefront", + "description": "Automatic login from DSR to Storefront", + "operationId": "dsrAutomaticLogin", + "body": { + "type": "object", + "properties": { + "token": { + "type": "string" } } }, @@ -20359,21 +20363,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "default": "dsr.appointment.create-appointment-request", - "description": "The api alias of the API" - }, - "data": { - "type": "array", - "items": { - "type": "string" - }, - "description": "The data is used to create the appointment request" - } - } + "$ref": "#/components/responses/ContextTokenResponse" } } } @@ -20384,26 +20374,61 @@ "ApiKey": [], "ContextToken": [] } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ] } }, - "/dsr/appointment/{appointmentId}/shopping-lists": { + "/dsr/customer/migrate-visitor-session": { + "post": { + "tags": [ + "Customer account" + ], + "summary": "Migrate visitor session from DSR to Storefront", + "description": "Migrate visitor session from DSR to Storefront", + "operationId": "dsrMigrateVisitorSession", + "body": { + "type": "object", + "properties": { + "contextToken": { + "type": "string" + } + } + }, + "responses": { + "204": [] + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/dsr/shop-pages/{layoutName}": { "get": { "tags": [ - "Appointment" + "Shop pages" ], - "summary": "Load line item ids of a shopping lists from appointment cache", - "description": "Load line item ids of a shopping lists from the appointment cache", - "operationId": "getSharingShoppingList", + "summary": "Get shop pages", + "description": "Get shop pages by layout name", + "operationId": "dsrReadShopPage", "parameters": [ { - "name": "appointmentId", + "name": "layoutName", "in": "path", - "description": "The appointment id you are joining", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } }, { @@ -20416,31 +20441,7 @@ "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "default": "dsr.appointment.load-shopping-lists", - "description": "The api alias of the API" - }, - "data": { - "type": "object", - "example": { - "apiAlias": "dsr.appointment.load-shopping-lists", - "data": { - "01938f89c632709ba4d65eb53604bf5b": { - "quantity": "1" - }, - "01938f89c8647036a617b7d88e1e24f5": { - "quantity": "1" - }, - "01938f8a23d47305b1e289163cea5074": { - "quantity": "1" - } - } - } - } - } + "$ref": "#/components/schemas/CmsPage" } } } @@ -20448,8 +20449,7 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } From 5e42a62396813a821ef89cd6860e78f095ca1c78 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 8 Jun 2026 16:15:14 +0200 Subject: [PATCH 10/16] [create-pull-request] automated change (#426) Co-authored-by: shopwareBot --- storeapi.json | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/storeapi.json b/storeapi.json index 5d8ee0e..a0e68f1 100644 --- a/storeapi.json +++ b/storeapi.json @@ -561,7 +561,7 @@ "type": "object" }, "AppMcpPrompt": { - "description": "Added since version: 6.7.0.0", + "description": "Added since version: 6.7.11.0", "required": [ "label" ], @@ -587,7 +587,7 @@ "type": "object" }, "AppMcpResource": { - "description": "Added since version: 6.7.0.0", + "description": "Added since version: 6.7.11.0", "required": [ "label" ], @@ -613,7 +613,7 @@ "type": "object" }, "AppMcpTool": { - "description": "Added since version: 6.7.0.0", + "description": "Added since version: 6.7.11.0", "required": [ "label" ], @@ -24251,6 +24251,9 @@ { "$ref": "#/components/parameters/onlyAggregations" }, + { + "$ref": "#/components/parameters/CompressedCriteria" + }, { "$ref": "#/components/parameters/swLanguageId" } From a09da113acc2ee1f146111808477deb7060f6ba4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 8 Jun 2026 16:22:20 +0200 Subject: [PATCH 11/16] [create-pull-request] automated change (#425) Co-authored-by: shopwareBot --- SwagDigitalSalesRooms-storeapi.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/SwagDigitalSalesRooms-storeapi.json b/SwagDigitalSalesRooms-storeapi.json index 2c8a15f..3bb6c4e 100644 --- a/SwagDigitalSalesRooms-storeapi.json +++ b/SwagDigitalSalesRooms-storeapi.json @@ -547,7 +547,7 @@ "type": "object" }, "AppMcpPrompt": { - "description": "Added since version: 6.7.0.0", + "description": "Added since version: 6.7.11.0", "required": [ "label" ], @@ -573,7 +573,7 @@ "type": "object" }, "AppMcpResource": { - "description": "Added since version: 6.7.0.0", + "description": "Added since version: 6.7.11.0", "required": [ "label" ], @@ -599,7 +599,7 @@ "type": "object" }, "AppMcpTool": { - "description": "Added since version: 6.7.0.0", + "description": "Added since version: 6.7.11.0", "required": [ "label" ], From de2cf92c23911ddc1303c43604e62cbfc9187a79 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 8 Jun 2026 16:22:42 +0200 Subject: [PATCH 12/16] [create-pull-request] automated change (#424) Co-authored-by: shopwareBot --- SwagCommercial-storeapi.json | 91 ++++++++++++++++++++++++++-- SwagCommercial-storeapi.summary.json | 1 + 2 files changed, 87 insertions(+), 5 deletions(-) diff --git a/SwagCommercial-storeapi.json b/SwagCommercial-storeapi.json index f99973d..03d1208 100644 --- a/SwagCommercial-storeapi.json +++ b/SwagCommercial-storeapi.json @@ -743,7 +743,7 @@ "type": "object" }, "AppMcpPrompt": { - "description": "Added since version: 6.7.0.0", + "description": "Added since version: 6.7.11.0", "required": [ "label" ], @@ -769,7 +769,7 @@ "type": "object" }, "AppMcpResource": { - "description": "Added since version: 6.7.0.0", + "description": "Added since version: 6.7.11.0", "required": [ "label" ], @@ -795,7 +795,7 @@ "type": "object" }, "AppMcpTool": { - "description": "Added since version: 6.7.0.0", + "description": "Added since version: 6.7.11.0", "required": [ "label" ], @@ -1145,6 +1145,42 @@ "format": "date-time", "readOnly": true }, + "extensions": { + "properties": { + "subscriptionBudgets": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/b2b-components-budget/1e4002da52224f484ff690aa9b0bfb2a/subscriptionBudgets" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "b2b_components_subscription_budget" + }, + "id": { + "type": "string", + "example": "db9b610a5feba7efda832033f6be0bbf" + } + } + } + } + }, + "type": "object" + } + }, + "type": "object" + }, "customer": { "$ref": "#/components/schemas/Customer" }, @@ -2529,6 +2565,22 @@ }, "type": "object" }, + "B2bComponentsSubscriptionBudget": { + "description": "Added since version: 6.7.0.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "subscription": { + "$ref": "#/components/schemas/Subscription" + }, + "budget": { + "$ref": "#/components/schemas/B2bComponentsBudget" + } + }, + "type": "object" + }, "B2bComponentsSubscriptionEmployee": { "required": [ "id", @@ -16268,6 +16320,35 @@ } }, "type": "object" + }, + "subscriptionBudget": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/subscription/787ad0b7a17de4ad6b1711bbf8d79fcb/subscriptionBudget" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "b2b_components_subscription_budget" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "6b2732717e6360e8eccfd947596f4e64" + } + } + } + }, + "type": "object" } }, "type": "object" @@ -25927,7 +26008,7 @@ "B2B Budget Management" ], "summary": "Load single budget", - "description": "This route is used to load one budget by ID\n\n**Available Associations:**\n- `customer`\n- `organizations`\n- `notificationRecipients`\n- `reviewerRole`\n- `currency`", + "description": "This route is used to load one budget by ID\n\n**Available Associations:**\n- `customer`\n- `organizations`\n- `notificationRecipients`\n- `reviewerRole`\n- `currency`\n- `subscriptionBudgets`", "operationId": "readBudget", "requestBody": { "required": false, @@ -25980,7 +26061,7 @@ "B2B Budget Management" ], "summary": "Load single budget", - "description": "This route is used to load one budget by ID\n\n**Available Associations:**\n- `customer`\n- `organizations`\n- `notificationRecipients`\n- `reviewerRole`\n- `currency`", + "description": "This route is used to load one budget by ID\n\n**Available Associations:**\n- `customer`\n- `organizations`\n- `notificationRecipients`\n- `reviewerRole`\n- `currency`\n- `subscriptionBudgets`", "operationId": "readBudgetGet", "parameters": [ { diff --git a/SwagCommercial-storeapi.summary.json b/SwagCommercial-storeapi.summary.json index 1de3ab0..c2b7dd2 100644 --- a/SwagCommercial-storeapi.summary.json +++ b/SwagCommercial-storeapi.summary.json @@ -116,6 +116,7 @@ "B2bComponentsShoppingListJsonApi", "B2bComponentsShoppingListLineItem", "B2bComponentsShoppingListLineItemJsonApi", + "B2bComponentsSubscriptionBudget", "B2bComponentsSubscriptionEmployee", "B2bEmployee", "B2bOrderEmployee", From 35b4108d7d19cab1e2e17a980532bfed92b4d2ec Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 25 Jun 2026 16:33:45 +0200 Subject: [PATCH 13/16] [create-pull-request] automated change (#427) Co-authored-by: shopwareBot --- SwagDigitalSalesRooms-storeapi.json | 9848 ++++++++++--------- SwagDigitalSalesRooms-storeapi.summary.json | 1 + 2 files changed, 4961 insertions(+), 4888 deletions(-) diff --git a/SwagDigitalSalesRooms-storeapi.json b/SwagDigitalSalesRooms-storeapi.json index 3bb6c4e..a9d12ad 100644 --- a/SwagDigitalSalesRooms-storeapi.json +++ b/SwagDigitalSalesRooms-storeapi.json @@ -6406,9 +6406,6 @@ }, "readOnly": true }, - "purchasePrices": { - "type": "string" - }, "releaseDate": { "type": "string", "format": "date-time" @@ -7662,6 +7659,11 @@ "description": { "type": "string" }, + "descriptionTeaser": { + "description": "Read-only, HTML-stripped excerpt of the description, derived on write.", + "type": "string", + "readOnly": true + }, "metaTitle": { "type": "string" }, @@ -8804,6 +8806,11 @@ "description": { "type": "string" }, + "descriptionTeaser": { + "description": "Read-only, HTML-stripped excerpt of the description, derived on write.", + "type": "string", + "readOnly": true + }, "metaTitle": { "type": "string" }, @@ -10203,6 +10210,10 @@ "measurementUnits": { "$ref": "#/components/schemas/MeasurementUnits" }, + "businessTimeZone": { + "description": "Business timezone used for sales-channel-specific rendering. Added since version: 6.7.13.0.", + "type": "string" + }, "name": { "type": "string" }, @@ -10381,6 +10392,26 @@ }, "type": "object" }, + "SalesChannelFile": { + "description": "Added since version: 6.7.12.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, "SalesChannelTrackingCustomer": { "description": "Added since version: 6.7.9.0", "properties": { @@ -11862,403 +11893,107 @@ }, "type": "object" }, - "CookieGroupCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CookieGroup" - } + "NewsletterStatus": { + "type": "string", + "enum": [ + "notSet", + "optIn", + "optOut", + "direct", + "undefined" + ], + "description": "The subscription status. Possible values are: notSet, optIn, optOut, direct, undefined." }, - "CalculatedPrice": { + "Breadcrumb": { "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "unitPrice": { - "type": "number" - }, - "quantity": { - "type": "number" - }, - "rawTotal": { - "type": "number" - }, - "totalPrice": { - "type": "number" + "name": { + "type": "string" }, - "taxStatus": { + "categoryId": { "type": "string", - "enum": [ - "net", - "tax-free" - ] + "pattern": "^[0-9a-f]{32}$" }, - "calculatedTaxes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } + "type": { + "$ref": "#/components/schemas/Category/properties/type" }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" + "translated": { + "type": "object", + "additionalProperties": true, + "properties": { + "customFields": { + "type": "object" }, - { - "type": "null" - } - ] - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" + "slotConfig": { + "type": "object" }, - { - "type": "null" - } - ] - }, - "positionPrice": { - "type": "number" - }, - "netPrice": { - "type": "number" - }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } + "linkType": { + "$ref": "#/components/schemas/Category/properties/linkType" }, - { - "type": "null" + "internalLink": { + "type": "string" + }, + "externalLink": { + "type": "string" + }, + "linkNewTab": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "metaTitle": { + "type": "string" + }, + "metaDescription": { + "type": "string" + }, + "keywords": { + "type": "string" } - ] + } }, - "hasRange": { - "type": "boolean" + "path": { + "type": "string" }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } - ] + "seoUrls": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" + } }, "apiAlias": { "type": "string", "enum": [ - "calculated_price" + "breadcrumb" ] - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } } }, "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "referencePrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitPrice", - "positionPrice", - "netPrice", - "taxRules", - "rawTotal", - "taxStatus" + "name", + "categoryId", + "type", + "translated", + "path", + "apiAlias" ] }, - "MeasurementUnits": { + "ProductPurchaseLimit": { "type": "object", - "description": "Configuration of the measurement system", + "description": "Current quantity purchase limits for a product.", + "required": [ + "productId", + "minPurchase", + "purchaseSteps", + "maxPurchase", + "stock", + "apiAlias" + ], "properties": { - "system": { + "productId": { "type": "string", - "enum": [ - "metric", - "imperial" - ], - "default": "metric", - "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." - }, - "units": { - "type": "object", - "description": "Units used in the measurement system.", - "properties": { - "length": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm", - "description": "Unit of length." - }, - "weight": { - "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg", - "description": "Unit of weight." - } - } - } - } - }, - "CartListPrice": { - "type": "object", - "description": "", - "properties": { - "discount": { - "type": "number" - }, - "percentage": { - "type": "number" - }, - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_list_price" - ] - } - }, - "required": [ - "apiAlias" - ] - }, - "CartDeliveryInformation": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_information" - ] - }, - "freeDelivery": { - "type": "boolean" - }, - "deliveryTime": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer" - }, - "max": { - "type": "integer" - }, - "unit": { - "type": "string" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_time" - ] - } - } - }, - "height": { - "type": "integer" - }, - "length": { - "type": "integer" - }, - "restockTime": { - "type": "integer" - }, - "stock": { - "type": "integer" - }, - "weight": { - "type": "integer" - }, - "width": { - "type": "integer" - } - }, - "required": [ - "apiAlias" - ] - }, - "ProductListingCriteria": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - }, - { - "type": "object", - "description": "Additional search parameters for product listings", - "properties": { - "order": { - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "type": "string" - }, - "limit": { - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "type": "integer", - "minimum": 0 - }, - "p": { - "description": "Search result page", - "type": "integer", - "default": 1 - }, - "manufacturer": { - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", - "type": "string" - }, - "min-price": { - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 - }, - "max-price": { - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 - }, - "rating": { - "description": "Filter products with a minimum average rating.", - "type": "integer" - }, - "shipping-free": { - "description": "Filters products that are marked as shipping-free.", - "type": "boolean", - "default": false - }, - "properties": { - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", - "type": "string" - }, - "manufacturer-filter": { - "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "price-filter": { - "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "rating-filter": { - "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "shipping-free-filter": { - "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "property-filter": { - "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "property-whitelist": { - "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", - "type": "string" - }, - "reduce-aggregations": { - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - } - } - ] - }, - "ProductPurchaseLimit": { - "type": "object", - "description": "Current quantity purchase limits for a product.", - "required": [ - "productId", - "minPurchase", - "purchaseSteps", - "maxPurchase", - "stock", - "apiAlias" - ], - "properties": { - "productId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The product ID." + "pattern": "^[0-9a-f]{32}$", + "description": "The product ID." }, "minPurchase": { "type": "integer", @@ -12287,1286 +12022,792 @@ } } }, - "CrossSellingElementCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CrossSellingElement" - } - }, - "Criteria": { + "AggregationMetrics": { "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "term": { - "description": "Search term", + "name": { "type": "string" }, - "limit": { - "description": "Number of items per result page", - "type": "integer" + "type": { + "type": "string", + "enum": [ + "avg", + "count", + "max", + "min", + "stats", + "sum" + ] }, - "filter": { - "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" - } - }, - "query": { - "type": "string", - "description": "The query string to search for" - }, - "associations": { - "$ref": "#/components/schemas/Associations" - }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" - } - }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } - }, - "fields": { - "type": "array", - "description": "Fields which should be returned in the search result.", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" - }, - "includes": { - "$ref": "#/components/schemas/Includes" - }, - "excludes": { - "$ref": "#/components/schemas/Excludes" + "field": { + "type": "string" } - } + }, + "required": [ + "name", + "type", + "field" + ] }, - "NoneFieldsCriteria": { + "LineItemType": { + "type": "string", + "deprecated": true, + "enum": [ + "product", + "credit", + "custom", + "promotion", + "discount", + "container", + "quantity", + "dsr-line-item-discount", + "dsr-cart-discount" + ] + }, + "LineItem": { "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "term": { - "description": "Search term", - "type": "string" - }, - "limit": { - "description": "Number of items per result page", - "type": "integer" - }, - "filter": { + "children": { "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] + "$ref": "#/components/schemas/LineItem" } }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" - } + "cover": { + "$ref": "#/components/schemas/Media" }, - "query": { - "type": "string", - "description": "The query string to search for" + "dataContextHash": { + "type": "string" }, - "associations": { - "$ref": "#/components/schemas/Associations" + "dataTimestamp": { + "type": "string" }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } + "deliveryInformation": { + "$ref": "#/components/schemas/CartDeliveryInformation" }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" - } + "description": { + "type": "string" }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } + "good": { + "type": "boolean" }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } + "id": { + "type": "string" }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" + "label": { + "type": "string" }, - "includes": { - "$ref": "#/components/schemas/Includes" + "modified": { + "type": "boolean" }, - "excludes": { - "$ref": "#/components/schemas/Excludes" - } - } - }, - "Associations": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Criteria" - } - }, - "Includes": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "Excludes": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "Aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" + "modifiedByApp": { + "type": "boolean" }, - { - "title": "AggregationEntity", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "payload": { + "$ref": "#/components/schemas/ProductJsonApi" }, - { - "title": "AggregationFilter", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationTerms", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationTerms" + "price": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationHistogram", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationHistogram" + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationRange", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationRange" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - } - ] - }, - "SubAggregations": { - "type": "object", - "properties": { - "aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" + "quantity": { + "type": "number" }, - { - "$ref": "#/components/schemas/AggregationEntity" + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] }, - { - "$ref": "#/components/schemas/AggregationFilter" + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] }, - { - "$ref": "#/components/schemas/AggregationTerms" + "totalPrice": { + "type": "number" }, - { - "$ref": "#/components/schemas/AggregationHistogram" + "unitPrice": { + "type": "number" }, - { - "$ref": "#/components/schemas/AggregationRange" + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } } + }, + "required": [ + "apiAlias", + "totalPrice", + "quantity", + "unitPrice" ] - } - } - }, - "TotalCountMode": { - "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", - "type": "string", - "default": "none", - "enum": [ - "none", - "exact", - "next-pages" - ] - }, - "Query": { - "type": "object", - "properties": { - "score": { + }, + "priceDefinition": { + "$ref": "#/components/schemas/CartPriceQuantity" + }, + "quantity": { "type": "number" }, - "query": { - "oneOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" + "quantityInformation": { + "type": "object", + "properties": { + "maxPurchase": { + "type": "number" }, - { - "$ref": "#/components/schemas/MultiNotFilter" + "minPurchase": { + "type": "number" }, - { - "$ref": "#/components/schemas/RangeFilter" + "purchaseSteps": { + "type": "number" } - ] - } - }, - "additionalProperties": true - }, - "Sort": { - "type": "object", - "properties": { - "field": { + } + }, + "referencedId": { "type": "string" }, - "order": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "removable": { + "type": "boolean" }, - "naturalSorting": { + "stackable": { "type": "boolean" }, + "states": { + "deprecated": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "is-physical", + "is-download" + ] + } + }, "type": { + "$ref": "#/components/schemas/OrderLineItem/properties/type" + }, + "uniqueIdentifier": { "type": "string" - } - }, - "required": [ - "field", - "order" - ] - }, - "Filters": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "SimpleFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "contains", - "equalsAny", - "prefix", - "suffix" - ] }, - "field": { - "type": "string" - }, - "value": { - "type": "string" + "extensions": { + "type": "object", + "properties": { + "meta": { + "type": "object", + "properties": { + "attendees": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "name" + ], + "properties": { + "name": { + "type": "string" + }, + "id": { + "type": "string" + } + } + } + } + } + } + } } }, "required": [ - "type", - "field", - "value" + "id", + "type" ] }, - "EqualsFilter": { + "CookieEntryCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CookieEntry" + } + }, + "ProductMeasurements": { "type": "object", + "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", "properties": { - "type": { - "type": "string", - "enum": [ - "equals" - ] - }, - "field": { - "type": "string" - }, - "value": { - "oneOf": [ - { - "type": "string" + "width": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" }, - { + "value": { "type": "number" - }, - { - "type": "boolean" - }, - { - "type": "null" } - ] - } - }, - "required": [ - "type", - "field", - "value" - ] - }, - "MultiNotFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "multi", - "not" - ] - }, - "operator": { - "type": "string", - "enum": [ - "and", - "or", - "nor", - "nand" - ] - }, - "queries": { - "$ref": "#/components/schemas/Filters" - } - }, - "required": [ - "type", - "operator", - "queries" - ] - }, - "RangeFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "range" - ] - }, - "field": { - "type": "string" + } }, - "parameters": { + "height": { "type": "object", "properties": { - "gte": { - "type": "number" + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" }, - "gt": { + "value": { "type": "number" + } + } + }, + "length": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" }, - "lte": { + "value": { "type": "number" + } + } + }, + "weight": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg" }, - "lt": { + "value": { "type": "number" } } } - }, - "required": [ - "type", - "field", - "parameters" - ] + } }, - "CookieEntryCollection": { + "CookieGroupCollection": { "type": "array", "items": { - "$ref": "#/components/schemas/CookieEntry" + "$ref": "#/components/schemas/CookieGroup" } }, - "CartItems": { + "EntitySearchResult": { "type": "object", - "required": [ - "items" - ], "properties": { - "items": { + "entity": { + "type": "string" + }, + "total": { + "type": "integer", + "description": "The total number of found entities" + }, + "aggregations": { "type": "array", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", "items": { - "$ref": "#/components/schemas/LineItem" + "type": "object" } + }, + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." + }, + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." } } }, - "Association": { - "additionalProperties": { - "$ref": "#/components/schemas/Association" - } - }, - "CartItemsUpdate": { + "Price": { "type": "object", - "required": [ - "items" - ], + "description": "Price object", "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartLineItemUpdate" - } - } - } - }, - "CartLineItemUpdate": { - "type": "object", - "required": [ - "id" - ], - "properties": { - "id": { - "type": "string" - }, - "type": { - "$ref": "#/components/schemas/OrderLineItem/properties/type" - }, - "quantity": { - "type": "integer" - }, - "referencedId": { - "type": "string" - }, - "label": { - "type": "string" + "currencyId": { + "description": "Unique identity of the associated currency.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "payload": { - "type": "object" + "gross": { + "description": "Gross price for the associated currency.", + "type": "number" }, - "stackable": { - "type": "boolean" + "net": { + "description": "Net price for the associated currency.", + "type": "number" }, - "removable": { + "linked": { + "description": "Whether gross and net prices are linked through the tax configuration.", "type": "boolean" }, - "coverId": { - "type": "string" + "percentage": { + "description": "Discount percentage relative to the list price for the gross and net amounts. `null` when no list price is set.", + "type": [ + "object", + "null" + ], + "properties": { + "gross": { + "description": "Discount percentage relative to the gross list price.", + "type": "number" + }, + "net": { + "description": "Discount percentage relative to the net list price.", + "type": "number" + } + }, + "required": [ + "gross", + "net" + ] }, - "priceDefinition": { + "listPrice": { + "description": "Reference list price for displaying discounts.", "type": "object", "properties": { - "type": { - "type": "string" + "currencyId": { + "description": "Unique identity of the associated currency.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "price": { + "gross": { + "description": "Gross list price for the associated currency.", "type": "number" }, - "percentage": { + "net": { + "description": "Net list price for the associated currency.", "type": "number" }, - "quantity": { - "type": "integer" - }, - "isCalculated": { + "linked": { + "description": "Whether gross and net list prices are linked through the tax configuration.", "type": "boolean" + } + }, + "required": [ + "gross", + "net" + ] + }, + "regulationPrice": { + "description": "Reference price used for legal price disclosures.", + "type": "object", + "properties": { + "currencyId": { + "description": "Unique identity of the associated currency.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "listPrice": { + "gross": { + "description": "Gross regulation price for the associated currency.", "type": "number" }, - "taxRules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number" - }, - "percentage": { - "type": "number" - } - } - } + "net": { + "description": "Net regulation price for the associated currency.", + "type": "number" + }, + "linked": { + "description": "Whether gross and net regulation prices are linked through the tax configuration.", + "type": "boolean" } - } - } - } - }, - "AggregationEntity": { - "title": "AggregationEntity", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "entity" + }, + "required": [ + "gross", + "net" ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "definition": { - "description": "The entity definition e.g \"product_manufacturer\".", - "type": "string" } }, "required": [ - "name", - "type", - "field", - "definition" + "currencyId", + "gross", + "net" ] }, - "AggregationFilter": { - "title": "AggregationFilter", + "CartItems": { "type": "object", + "required": [ + "items" + ], "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "filter" - ] - }, - "filter": { + "items": { "type": "array", "items": { - "$ref": "#/components/schemas/Filters" + "$ref": "#/components/schemas/LineItem" } } - }, - "required": [ - "name", - "type", - "filter" - ] + } }, - "AggregationTerms": { - "title": "AggregationTerms", + "CookieRouteResponse": { "type": "object", + "description": "Response containing cookie groups and their configuration hash.", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", + "apiAlias": { "type": "string", "enum": [ - "terms" + "cookie_groups_hash" ] }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "limit": { - "description": "The number of terms to return", - "type": "number" - }, - "sort": { + "elements": { "type": "array", - "description": "Sorting the aggregation result.", + "description": "Collection of cookie groups", "items": { - "$ref": "#/components/schemas/Sort" + "$ref": "#/components/schemas/CookieGroup" } - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "AggregationHistogram": { - "title": "AggregationHistogram", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" }, - "type": { - "description": "The type of aggregation", + "hash": { "type": "string", - "enum": [ - "histogram" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "interval": { - "description": "The interval of the histogram", - "type": "number" - }, - "format": { - "description": "The format of the histogram", - "type": "string" + "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", + "example": "f86b6a872cb83dbd22d838ceda1aa3d4" }, - "timeZone": { - "description": "The timezone of the histogram", - "type": "string" + "languageId": { + "type": "string", + "format": "uuid", + "description": "The language ID for which the cookie configuration was generated. Used to store hashes per language.", + "example": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" } }, "required": [ - "name", - "type", - "field" - ] - }, - "AggregationRange": { - "title": "AggregationRange", - "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "range" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "ranges": { - "description": "The ranges of the aggregation", - "type": "array", - "items": { - "type": "object", - "anyOf": [ + "elements", + "hash", + "languageId", + "apiAlias" + ], + "example": { + "apiAlias": "cookie_groups_hash", + "elements": [ + { + "isRequired": true, + "description": "Cookies required for this shop to function:", + "name": "Technically required", + "entries": [ { - "type": "object", - "title": "From and to", - "properties": { - "from": { - "type": "number", - "description": "The lower bound of the range" - }, - "to": { - "type": "number", - "description": "The upper bound of the range" - } - }, - "required": [ - "from", - "to" - ] + "name": "Session", + "hidden": false, + "cookie": "session-", + "apiAlias": "cookie_entry" }, { - "type": "object", - "title": "From only", - "properties": { - "from": { - "type": "string", - "description": "The lower bound of the range" - } - }, - "required": [ - "from" - ] + "name": "Timezone", + "hidden": false, + "cookie": "timezone", + "apiAlias": "cookie_entry" }, { - "type": "object", - "title": "To only", - "properties": { - "to": { - "type": "string", - "description": "The upper bound of the range" - } - }, - "required": [ - "to" - ] + "value": "1", + "expiration": 30, + "name": "Cookie preferences", + "hidden": true, + "cookie": "cookie-preference", + "apiAlias": "cookie_entry" } - ] + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "description": "Cookies used for statistics and shop performance metrics.", + "name": "Statistics", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "Google Analytics", + "hidden": false, + "cookie": "google-analytics-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "description": "Allows Google to collect personal data for online advertising and marketing.", + "name": "Marketing", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "Google Advertising", + "hidden": false, + "cookie": "google-ads-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "name": "Comfort features", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "YouTube video", + "hidden": false, + "cookie": "youtube-video", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" } - } - }, - "required": [ - "name", - "type", - "field", - "ranges" - ] + ], + "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", + "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" + } }, - "Price": { - "type": "object", - "description": "Price object", - "properties": { - "currencyId": { - "description": "Unique identity of the associated currency.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "Gross price for the associated currency.", - "type": "number" - }, - "net": { - "description": "Net price for the associated currency.", - "type": "number" - }, - "linked": { - "description": "Whether gross and net prices are linked through the tax configuration.", - "type": "boolean" - }, - "percentage": { - "description": "Discount percentage relative to the list price for the gross and net amounts. `null` when no list price is set.", - "type": [ - "object", - "null" - ], - "properties": { - "gross": { - "description": "Discount percentage relative to the gross list price.", - "type": "number" - }, - "net": { - "description": "Discount percentage relative to the net list price.", - "type": "number" - } + "ShippingMethodPageRouteResponse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - "required": [ - "gross", - "net" - ] - }, - "listPrice": { - "description": "Reference list price for displaying discounts.", - "type": "object", - "properties": { - "currencyId": { - "description": "Unique identity of the associated currency.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "Gross list price for the associated currency.", - "type": "number" - }, - "net": { - "description": "Net list price for the associated currency.", - "type": "number" - }, - "linked": { - "description": "Whether gross and net list prices are linked through the tax configuration.", - "type": "boolean" - } + "active": { + "type": "boolean" }, - "required": [ - "gross", - "net" - ] - }, - "regulationPrice": { - "description": "Reference price used for legal price disclosures.", - "type": "object", - "properties": { - "currencyId": { - "description": "Unique identity of the associated currency.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "Gross regulation price for the associated currency.", - "type": "number" - }, - "net": { - "description": "Net regulation price for the associated currency.", - "type": "number" - }, - "linked": { - "description": "Whether gross and net regulation prices are linked through the tax configuration.", - "type": "boolean" - } + "description": { + "type": "string" }, - "required": [ - "gross", - "net" - ] - } - }, - "required": [ - "currencyId", - "gross", - "net" - ] - }, - "AggregationMetrics": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "avg", - "count", - "max", - "min", - "stats", - "sum" - ] - }, - "field": { - "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "CartPriceReference": { - "type": "object", - "properties": { - "purchaseUnit": { - "type": "number" - }, - "referenceUnit": { - "type": "number" - }, - "unitName": { - "type": "string" - }, - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_reference" - ] - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" + "deliveryTimeId": { + "type": "string" + }, + "deliveryTime": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "min": { + "type": "integer", + "format": "int32" + }, + "max": { + "type": "integer", + "format": "int32" + }, + "unit": { + "type": "string" + } } - ] - }, - "regulationPrice": { - "oneOf": [ - { + }, + "translations": { + "type": "array", + "items": { "type": "object", "properties": { - "price": { - "type": "number" + "shippingMethodId": { + "type": "string" }, - "apiAlias": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + } + } + } + }, + "orderDeliveries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "orderId": { + "type": "string" + }, + "shippingOrderAddressId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "shippingDateEarliest": { "type": "string", - "enum": [ - "cart_regulation_price" - ] + "format": "date-time" + }, + "shippingDateLatest": { + "type": "string", + "format": "date-time" + }, + "stateId": { + "type": "string" } } - }, - { - "type": "null" } - ] - }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" - ] - }, - "CustomerAddressBody": { - "description": "Added since version: 6.0.0.0", - "required": [ - "countryId", - "firstName", - "lastName", - "city", - "street" - ], - "properties": { - "countryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryStateId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "salutationId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "zipcode": { - "type": "string" - }, - "city": { - "type": "string" - }, - "company": { - "type": "string" - }, - "street": { - "type": "string" - }, - "department": { - "type": "string" - }, - "title": { - "type": "string" - }, - "phoneNumber": { - "type": "string" - }, - "additionalAddressLine1": { - "type": "string" - }, - "additionalAddressLine2": { - "type": "string" - }, - "customFields": { - "type": "object" - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "$ref": "#/components/schemas/CountryState" - }, - "salutation": { - "$ref": "#/components/schemas/Salutation" - } - }, - "type": "object" - }, - "CustomerAddressRead": { - "type": "object", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true - }, - "customerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true - }, - "createdAt": { - "type": "string", - "format": "date-time" - }, - "updatedAt": { - "oneOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "null" - } - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "oneOf": [ - { - "$ref": "#/components/schemas/CountryState" - }, - { - "type": "null" - } - ] - }, - "salutation": { - "$ref": "#/components/schemas/Salutation" - } - }, - "required": [ - "customerId", - "createdAt", - "updatedAt", - "country", - "salutation" - ] - }, - "NavigationRouteResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - }, - "ShippingMethodPageRouteResponse": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "deliveryTimeId": { - "type": "string" - }, - "deliveryTime": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer", - "format": "int32" - }, - "max": { - "type": "integer", - "format": "int32" - }, - "unit": { - "type": "string" - } - } - }, - "translations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - } - } - } - }, - "orderDeliveries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "orderId": { - "type": "string" - }, - "shippingOrderAddressId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "shippingDateEarliest": { - "type": "string", - "format": "date-time" - }, - "shippingDateLatest": { - "type": "string", - "format": "date-time" - }, - "stateId": { - "type": "string" - } - } + }, + "salesChannelDefaultAssignments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpAllowlist": { + "type": "string" + }, + "maintenanceIpWhitelist": { + "deprecated": true, + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } } }, - "salesChannelDefaultAssignments": { + "salesChannels": { "type": "array", "items": { "type": "object", @@ -13617,76 +12858,11 @@ "maintenance": { "type": "boolean" }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" - }, - "hreflangDefaultDomainId": { - "type": "string" - } - } - } - }, - "salesChannels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { + "maintenanceIpAllowlist": { "type": "string" }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, "maintenanceIpWhitelist": { + "deprecated": true, "type": "string" }, "mailHeaderFooterId": { @@ -13827,44 +13003,7 @@ } } }, - "ProductDetailResponse": { - "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", - "properties": { - "product": { - "$ref": "#/components/schemas/Product" - }, - "configurator": { - "type": "array", - "description": "List of property groups with their corresponding options and information on how to display them.", - "items": { - "$ref": "#/components/schemas/PropertyGroup" - } - } - }, - "required": [ - "product" - ] - }, - "AccountNewsletterRecipient": { - "type": "object", - "properties": { - "status": { - "$ref": "#/components/schemas/NewsletterStatus" - }, - "apiAlias": { - "type": "string", - "enum": [ - "account_newsletter_recipient" - ] - } - }, - "required": [ - "status", - "apiAlias" - ] - }, - "ReferencePrice": { + "CartPriceReference": { "type": "object", "properties": { "purchaseUnit": { @@ -13888,7 +13027,7 @@ "listPrice": { "oneOf": [ { - "$ref": "#/components/schemas/ListPrice" + "$ref": "#/components/schemas/CartListPrice" }, { "type": "null" @@ -13932,6 +13071,7 @@ } }, "required": [ + "apiAlias", "hasRange", "regulationPrice", "listPrice", @@ -13941,1134 +13081,656 @@ "unitName" ] }, - "CookieEntry": { + "AggregationEntity": { + "title": "AggregationEntity", "type": "object", "properties": { - "cookie": { - "type": "string" - }, - "value": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" }, - "expiration": { - "type": "integer" + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "entity" + ] }, - "name": { + "field": { + "description": "The field you want to aggregate over.", "type": "string" }, - "description": { + "definition": { + "description": "The entity definition e.g \"product_manufacturer\".", + "type": "string" + } + }, + "required": [ + "name", + "type", + "field", + "definition" + ] + }, + "AggregationFilter": { + "title": "AggregationFilter", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" }, - "hidden": { - "type": "boolean" - }, - "apiAlias": { + "type": { + "description": "The type of aggregation", "type": "string", "enum": [ - "cookie_entry" + "filter" ] + }, + "filter": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Filters" + } } }, "required": [ - "cookie", - "hidden", - "apiAlias" + "name", + "type", + "filter" ] }, - "FindProductVariantRouteResponse": { + "AggregationTerms": { + "title": "AggregationTerms", "type": "object", "properties": { - "foundCombination": { - "type": "object", - "properties": { - "variantId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "options": { - "type": "array", - "items": { - "type": "string" - } - } + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "terms" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "limit": { + "description": "The number of terms to return", + "type": "number" + }, + "sort": { + "type": "array", + "description": "Sorting the aggregation result.", + "items": { + "$ref": "#/components/schemas/Sort" } } - } + }, + "required": [ + "name", + "type", + "field" + ] }, - "SalesChannelContext": { + "AggregationHistogram": { + "title": "AggregationHistogram", "type": "object", "properties": { - "token": { - "description": "Context the user session", + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" }, - "currentCustomerGroup": { - "type": "object", - "description": "Customer group of the current user", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } - } + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "histogram" + ] }, - "fallbackCustomerGroup": { - "description": "Fallback group if the default customer group is not applicable", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } - } + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "currency": { - "$ref": "#/components/schemas/Currency" + "interval": { + "description": "The interval of the histogram", + "type": "number" }, - "salesChannel": { - "$ref": "#/components/schemas/SalesChannel" + "format": { + "description": "The format of the histogram", + "type": "string" }, - "measurementSystem": { - "$ref": "#/components/schemas/ContextMeasurementSystemInfo" + "timeZone": { + "description": "The timezone of the histogram", + "type": "string" + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "AggregationRange": { + "title": "AggregationRange", + "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "taxRules": { + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "range" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "ranges": { + "description": "The ranges of the aggregation", "type": "array", - "description": "Currently active tax rules and/or rates", "items": { "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" + "anyOf": [ + { + "type": "object", + "title": "From and to", + "properties": { + "from": { + "type": "number", + "description": "The lower bound of the range" + }, + "to": { + "type": "number", + "description": "The upper bound of the range" + } + }, + "required": [ + "from", + "to" + ] }, - "name": { - "type": "string" - } - } + { + "type": "object", + "title": "From only", + "properties": { + "from": { + "type": "string", + "description": "The lower bound of the range" + } + }, + "required": [ + "from" + ] + }, + { + "type": "object", + "title": "To only", + "properties": { + "to": { + "type": "string", + "description": "The upper bound of the range" + } + }, + "required": [ + "to" + ] + } + ] } + } + }, + "required": [ + "name", + "type", + "field", + "ranges" + ] + }, + "Cart": { + "type": "object", + "properties": { + "name": { + "description": "Name of the cart - for example `guest-cart`", + "type": "string" }, - "customer": { - "oneOf": [ - { - "type": "null" - }, - { - "$ref": "#/components/schemas/Customer" - } - ] + "token": { + "description": "Context token identifying the cart and the user session", + "type": "string" }, - "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethod" + "price": { + "$ref": "#/components/schemas/CalculatedPrice" }, - "shippingLocation": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" - } + "lineItems": { + "description": "All items within the cart", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" } }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" - }, - "context": { - "description": "Core context with general configuration values and state", + "errors": { "type": "object", - "properties": { - "versionId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "currencyFactor": { - "type": "integer" - }, - "currencyPrecision": { - "type": "integer", - "format": "int32" - }, - "languageIdChain": { + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "anyOf": [ + { "type": "array", "items": { - "type": "string" + "$ref": "#/components/schemas/CartError" } }, - "scope": { - "type": "string" - }, - "source": { + { "type": "object", - "required": [ - "salesChannelId", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "sales-channel", - "shop-api" - ] + "additionalProperties": { + "type": "object", + "properties": { + "code": { + "type": "number" + }, + "key": { + "type": "string" + }, + "level": { + "type": "number" + }, + "message": { + "type": "string" + }, + "messageKey": { + "type": "string" + } }, - "salesChannelId": { - "type": "string" - } + "required": [ + "code", + "key", + "level", + "message", + "messageKey" + ] } - }, - "taxState": { - "type": "string" - }, - "useCache": { - "type": "boolean" } + ] + }, + "deliveries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDelivery" } }, - "itemRounding": { - "type": "object", - "required": [ - "decimals", - "interval", - "roundForNet", - "apiAlias" - ], - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" - ] - }, - "decimals": { - "type": "integer", - "format": "int32" - }, - "interval": { - "type": "number", - "format": "float" - }, - "roundForNet": { - "type": "boolean" + "transactions": { + "description": "A list of all payment transactions associated with the current cart.", + "type": "array", + "items": { + "type": "object", + "properties": { + "paymentMethodId": { + "type": "string" + }, + "amount": { + "$ref": "#/components/schemas/CalculatedPrice" + } } } }, - "totalRounding": { - "type": "object", - "required": [ - "decimals", - "interval", - "roundForNet", - "apiAlias" - ], - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" - ] - }, - "decimals": { - "type": "integer", - "format": "int32" - }, - "interval": { - "type": "number", - "format": "float" + "modified": { + "type": "boolean" + }, + "customerComment": { + "description": "A comment that can be added to the cart.", + "oneOf": [ + { + "type": "string" }, - "roundForNet": { - "type": "boolean" + { + "type": "null" } - } + ] }, - "languageInfo": { - "type": "object", - "required": [ - "localeCode", - "name" - ], - "properties": { - "name": { + "affiliateCode": { + "description": "An affiliate tracking code", + "oneOf": [ + { "type": "string" }, - "localeCode": { - "type": "string" + { + "type": "null" } - } - }, - "apiAlias": { - "type": "string", - "enum": [ - "sales_channel_context" ] - } - }, - "required": [ - "salesChannel", - "apiAlias", - "itemRounding", - "totalRounding", - "languageInfo" - ] - }, - "NavigationType": { - "type": "string", - "enum": [ - "main-navigation", - "footer-navigation", - "service-navigation" - ] - }, - "WishlistLoadRouteResponse": { - "type": "object", - "required": [ - "products" - ], - "properties": { - "wishlist": { - "type": "object", - "properties": { - "customerId": { - "type": "string" - }, - "salesChannelId": { - "type": "string" - } - } - }, - "products": { - "$ref": "#/components/schemas/ProductListingResult" - } - } - }, - "Breadcrumb": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "categoryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "type": { - "$ref": "#/components/schemas/Category/properties/type" }, - "translated": { - "type": "object", - "additionalProperties": true, - "properties": { - "customFields": { - "type": "object" - }, - "slotConfig": { - "type": "object" - }, - "linkType": { - "$ref": "#/components/schemas/Category/properties/linkType" - }, - "internalLink": { - "type": "string" - }, - "externalLink": { - "type": "string" - }, - "linkNewTab": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "metaTitle": { - "type": "string" - }, - "metaDescription": { + "campaignCode": { + "description": "A campaign tracking code", + "oneOf": [ + { "type": "string" }, - "keywords": { - "type": "string" + { + "type": "null" } - } - }, - "path": { - "type": "string" - }, - "seoUrls": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } + ] }, "apiAlias": { "type": "string", "enum": [ - "breadcrumb" + "cart" ] } }, "required": [ - "name", - "categoryId", - "type", - "translated", - "path", + "price", "apiAlias" ] }, - "ProductListingFlags": { + "CartItemsUpdate": { "type": "object", - "description": "Additional flags for product listings", + "required": [ + "items" + ], "properties": { - "no-aggregations": { - "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "only-aggregations": { - "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartLineItemUpdate" + } } } }, - "LineItemType": { - "type": "string", - "deprecated": true, - "enum": [ - "product", - "credit", - "custom", - "promotion", - "discount", - "container", - "quantity", - "dsr-line-item-discount", - "dsr-cart-discount" - ] - }, - "LineItem": { + "CartLineItemUpdate": { "type": "object", + "required": [ + "id" + ], "properties": { - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - }, - "cover": { - "$ref": "#/components/schemas/Media" - }, - "dataContextHash": { - "type": "string" - }, - "dataTimestamp": { + "id": { "type": "string" }, - "deliveryInformation": { - "$ref": "#/components/schemas/CartDeliveryInformation" - }, - "description": { - "type": "string" + "type": { + "$ref": "#/components/schemas/OrderLineItem/properties/type" }, - "good": { - "type": "boolean" + "quantity": { + "type": "integer" }, - "id": { + "referencedId": { "type": "string" }, "label": { "type": "string" }, - "modified": { + "payload": { + "type": "object" + }, + "stackable": { "type": "boolean" }, - "modifiedByApp": { + "removable": { "type": "boolean" }, - "payload": { - "$ref": "#/components/schemas/ProductJsonApi" + "coverId": { + "type": "string" }, - "price": { + "priceDefinition": { "type": "object", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "calculated_price" - ] + "type": { + "type": "string" }, - "calculatedTaxes": { + "price": { + "type": "number" + }, + "percentage": { + "type": "number" + }, + "quantity": { + "type": "integer" + }, + "isCalculated": { + "type": "boolean" + }, + "listPrice": { + "type": "number" + }, + "taxRules": { "type": "array", "items": { "type": "object", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, "taxRate": { "type": "number" }, - "price": { + "percentage": { "type": "number" } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] - }, - "quantity": { - "type": "number" - }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] - }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } - }, - { - "type": "null" - } - ] - }, - "totalPrice": { - "type": "number" - }, - "unitPrice": { - "type": "number" - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } } } } - }, - "required": [ - "apiAlias", - "totalPrice", - "quantity", - "unitPrice" - ] - }, - "priceDefinition": { - "$ref": "#/components/schemas/CartPriceQuantity" - }, - "quantity": { - "type": "number" - }, - "quantityInformation": { - "type": "object", - "properties": { - "maxPurchase": { - "type": "number" - }, - "minPurchase": { - "type": "number" - }, - "purchaseSteps": { - "type": "number" - } - } - }, - "referencedId": { - "type": "string" - }, - "removable": { - "type": "boolean" - }, - "stackable": { - "type": "boolean" - }, - "states": { - "deprecated": true, - "type": "array", - "items": { - "type": "string", - "enum": [ - "is-physical", - "is-download" - ] } + } + } + }, + "ContextMeasurementSystemInfo": { + "type": "object", + "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", + "properties": { + "system": { + "type": "string", + "enum": [ + "metric", + "imperial" + ], + "default": "metric", + "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." }, - "type": { - "$ref": "#/components/schemas/OrderLineItem/properties/type" - }, - "uniqueIdentifier": { - "type": "string" - }, - "extensions": { + "units": { "type": "object", + "description": "Units used in the measurement system.", "properties": { - "meta": { - "type": "object", - "properties": { - "attendees": { - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "id": { - "type": "string" - } - } - } - } - } + "length": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Unit of length." + }, + "weight": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." } } } - }, - "required": [ - "id", - "type" - ] + } }, - "CartPriceQuantity": { + "AccountNewsletterRecipient": { "type": "object", "properties": { + "status": { + "$ref": "#/components/schemas/NewsletterStatus" + }, "apiAlias": { "type": "string", "enum": [ - "cart_price_quantity" + "account_newsletter_recipient" ] - }, - "isCalculated": { - "type": "boolean" - }, - "listPrice": { - "$ref": "#/components/schemas/CartListPrice" - }, - "price": { - "type": "number" - }, - "quantity": { - "type": "number" - }, - "regulationPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - } - }, - "type": "object" - }, - "taxRules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } - }, - "type": { - "type": "string" } }, "required": [ + "status", "apiAlias" ] }, - "NewsletterStatus": { - "type": "string", - "enum": [ - "notSet", - "optIn", - "optOut", - "direct", - "undefined" - ], - "description": "The subscription status. Possible values are: notSet, optIn, optOut, direct, undefined." - }, - "OrderRouteResponse": { - "type": "object", - "properties": { - "orders": { - "type": "object", - "allOf": [ - { - "type": "object", - "required": [ - "elements" - ], - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order" - } - } - } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - }, - "paymentChangeable": { - "type": "object", - "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", - "additionalProperties": { - "type": "boolean" - } - } - }, - "required": [ - "orders" - ] - }, - "ProductListingResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EntitySearchResult" - }, - { + "ProductListingCriteria": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + }, + { "type": "object", + "description": "Additional search parameters for product listings", "properties": { - "currentFilters": { - "type": "object", - "description": "Contains the state of the filters. These can be used to create listing filters.", - "properties": { - "navigationId": { - "type": "string" - }, - "manufacturer": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "price": { - "type": "object", - "properties": { - "min": { - "type": "integer", - "default": 0 - }, - "max": { - "type": "integer", - "default": 0 - } - }, - "required": [ - "min", - "max" - ] - }, - "rating": { - "oneOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "shipping-free": { - "type": "boolean", - "default": false - }, - "properties": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "search": { - "type": "string" - } - }, - "required": [ - "manufacturer", - "navigationId", - "price", - "properties", - "rating", - "shipping-free" - ] + "order": { + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "type": "string" }, - "availableSortings": { - "type": "array", - "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", - "items": { - "type": "object", - "properties": { - "label": { - "type": "string" - }, - "translated": { - "type": "object", - "properties": { - "label": { - "type": "string" - } - }, - "required": [ - "label" - ] - }, - "key": { - "type": "string" - }, - "priority": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_sorting" - ] - } - }, - "required": [ - "label", - "translated", - "key", - "priority", - "apiAlias" - ] - } + "limit": { + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "type": "integer", + "minimum": 0 }, - "sorting": { + "p": { + "description": "Search result page", + "type": "integer", + "default": 1 + }, + "manufacturer": { + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", "type": "string" }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } + "min-price": { + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 }, - "entity": { - "type": "string", - "enum": [ - "product" - ] + "max-price": { + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 }, - "apiAlias": { - "type": "string", - "enum": [ - "product_listing" + "rating": { + "description": "Filter products with a minimum average rating.", + "type": "integer" + }, + "shipping-free": { + "description": "Filters products that are marked as shipping-free.", + "type": "boolean", + "default": false + }, + "properties": { + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "type": "string" + }, + "manufacturer-filter": { + "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "price-filter": { + "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "rating-filter": { + "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "shipping-free-filter": { + "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-filter": { + "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-whitelist": { + "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", + "type": "string" + }, + "reduce-aggregations": { + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } ] } - }, - "required": [ - "elements", - "availableSortings", - "currentFilters", - "apiAlias" - ] + } } ] }, - "CookieRouteResponse": { + "CartPriceQuantity": { "type": "object", - "description": "Response containing cookie groups and their configuration hash.", "properties": { "apiAlias": { "type": "string", "enum": [ - "cookie_groups_hash" + "cart_price_quantity" ] }, - "elements": { - "type": "array", - "description": "Collection of cookie groups", - "items": { - "$ref": "#/components/schemas/CookieGroup" - } + "isCalculated": { + "type": "boolean" }, - "hash": { - "type": "string", - "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", - "example": "f86b6a872cb83dbd22d838ceda1aa3d4" - }, - "languageId": { - "type": "string", - "format": "uuid", - "description": "The language ID for which the cookie configuration was generated. Used to store hashes per language.", - "example": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" - } - }, - "required": [ - "elements", - "hash", - "languageId", - "apiAlias" - ], - "example": { - "apiAlias": "cookie_groups_hash", - "elements": [ - { - "isRequired": true, - "description": "Cookies required for this shop to function:", - "name": "Technically required", - "entries": [ - { - "name": "Session", - "hidden": false, - "cookie": "session-", - "apiAlias": "cookie_entry" - }, - { - "name": "Timezone", - "hidden": false, - "cookie": "timezone", - "apiAlias": "cookie_entry" - }, - { - "value": "1", - "expiration": 30, - "name": "Cookie preferences", - "hidden": true, - "cookie": "cookie-preference", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "description": "Cookies used for statistics and shop performance metrics.", - "name": "Statistics", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "Google Analytics", - "hidden": false, - "cookie": "google-analytics-enabled", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "description": "Allows Google to collect personal data for online advertising and marketing.", - "name": "Marketing", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "Google Advertising", - "hidden": false, - "cookie": "google-ads-enabled", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "name": "Comfort features", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "YouTube video", - "hidden": false, - "cookie": "youtube-video", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - } - ], - "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", - "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" - } - }, - "Cart": { - "type": "object", - "properties": { - "name": { - "description": "Name of the cart - for example `guest-cart`", - "type": "string" - }, - "token": { - "description": "Context token identifying the cart and the user session", - "type": "string" + "listPrice": { + "$ref": "#/components/schemas/CartListPrice" }, "price": { - "$ref": "#/components/schemas/CalculatedPrice" + "type": "number" }, - "lineItems": { - "description": "All items within the cart", - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } + "quantity": { + "type": "number" }, - "errors": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "anyOf": [ - { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartError" - } - }, - { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "code": { - "type": "number" - }, - "key": { - "type": "string" - }, - "level": { - "type": "number" - }, - "message": { - "type": "string" - }, - "messageKey": { - "type": "string" - } - }, - "required": [ - "code", - "key", - "level", - "message", - "messageKey" - ] - } + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" } - ] - }, - "deliveries": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDelivery" - } + }, + "type": "object" }, - "transactions": { - "description": "A list of all payment transactions associated with the current cart.", + "taxRules": { "type": "array", "items": { "type": "object", "properties": { - "paymentMethodId": { - "type": "string" + "taxRate": { + "type": "number", + "format": "float" }, - "amount": { - "$ref": "#/components/schemas/CalculatedPrice" + "name": { + "type": "string" } } } }, - "modified": { - "type": "boolean" - }, - "customerComment": { - "description": "A comment that can be added to the cart.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - }, - "affiliateCode": { - "description": "An affiliate tracking code", + "type": { + "type": "string" + } + }, + "required": [ + "apiAlias" + ] + }, + "ProductListingFlags": { + "type": "object", + "description": "Additional flags for product listings", + "properties": { + "no-aggregations": { + "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", "oneOf": [ { "type": "string" @@ -15078,8 +13740,8 @@ } ] }, - "campaignCode": { - "description": "A campaign tracking code", + "only-aggregations": { + "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", "oneOf": [ { "type": "string" @@ -15088,1277 +13750,2139 @@ "type": "null" } ] - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart" - ] - } - }, - "required": [ - "price", - "apiAlias" - ] - }, - "Sitemap": { - "type": "object", - "properties": { - "filename": { - "type": "string" - }, - "created": { - "type": "string", - "format": "date-time" } - }, - "required": [ - "filename", - "created" - ] + } }, - "CrossSellingElement": { + "CartDelivery": { "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "crossSelling": { - "$ref": "#/components/schemas/ProductCrossSelling" - }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } } }, - "total": { - "type": "integer", - "format": "int32" - }, - "streamId": { - "type": "string", - "format": "uuid" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cross_selling_element" - ] - } - }, - "required": [ - "crossSelling", - "products", - "total", - "apiAlias" - ] - }, - "ProductMeasurements": { - "type": "object", - "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", - "properties": { - "width": { + "location": { "type": "object", "properties": { - "unit": { + "apiAlias": { "type": "string", "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" + "cart_delivery_shipping_location" + ] }, - "value": { - "type": "number" - } - } - }, - "height": { - "type": "object", - "properties": { - "unit": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" + "country": { + "$ref": "#/components/schemas/Country" }, - "value": { - "type": "number" - } - } - }, - "length": { - "type": "object", - "properties": { - "unit": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" + "address": { + "$ref": "#/components/schemas/CustomerAddress" }, - "value": { - "type": "number" + "state": { + "$ref": "#/components/schemas/CountryState" } } }, - "weight": { - "type": "object", - "properties": { - "unit": { - "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg" - }, - "value": { - "type": "number" - } + "positions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDeliveryPosition" } + }, + "shippingCosts": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" } } }, - "CartError": { + "Association": { + "additionalProperties": { + "$ref": "#/components/schemas/Association" + } + }, + "ProductDetailResponse": { "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "key": { - "type": "string" - }, - "level": { - "type": "number", - "enum": [ - 0, - 10, - 20 - ], - "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" - }, - "message": { - "type": "string" + "product": { + "$ref": "#/components/schemas/Product" }, - "messageKey": { - "type": "string" + "configurator": { + "type": "array", + "description": "List of property groups with their corresponding options and information on how to display them.", + "items": { + "$ref": "#/components/schemas/PropertyGroup" + } } }, "required": [ - "key", - "level", - "message", - "messageKey" + "product" ] }, - "ContextMeasurementSystemInfo": { - "type": "object", - "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", - "properties": { - "system": { - "type": "string", - "enum": [ - "metric", - "imperial" - ], - "default": "metric", - "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." - }, - "units": { - "type": "object", - "description": "Units used in the measurement system.", - "properties": { - "length": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm", - "description": "Unit of length." - }, - "weight": { - "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg", - "description": "Unit of weight." - } - } - } - } - }, - "CartDeliveryPosition": { + "Criteria": { "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" - } - } + "page": { + "description": "Search result page", + "type": "integer" }, - "identifier": { + "term": { + "description": "Search term", "type": "string" }, - "lineItem": { - "$ref": "#/components/schemas/LineItem" - }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" - } - } - }, - "CookieGroup": { - "type": "object", - "properties": { - "isRequired": { - "type": "boolean" + "limit": { + "description": "Number of items per result page", + "type": "integer" }, - "name": { - "type": "string" + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } }, - "description": { - "type": "string" + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } }, - "cookie": { - "type": "string" - }, - "value": { - "type": "string" - }, - "expiration": { - "type": "integer" + "query": { + "type": "string", + "description": "The query string to search for" }, - "entries": { - "$ref": "#/components/schemas/CookieEntryCollection" + "associations": { + "$ref": "#/components/schemas/Associations" }, - "apiAlias": { - "type": "string", - "enum": [ - "cookie_group" - ] - } - }, - "not": { - "allOf": [ - { - "required": [ - "cookie" - ] - }, - { - "required": [ - "entries" + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } ] } - ] - }, - "required": [ - "name", - "isRequired", - "apiAlias" - ] - }, - "ListPrice": { - "type": "object", - "description": "", - "properties": { - "discount": { - "type": "number" - }, - "percentage": { - "type": "number" }, - "price": { - "type": "number" + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + } }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_list_price" - ] - } - }, - "required": [ - "apiAlias" - ] - }, - "CartDelivery": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" - } + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" } }, - "location": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "state": { - "$ref": "#/components/schemas/CountryState" - } + "fields": { + "type": "array", + "description": "Fields which should be returned in the search result.", + "items": { + "type": "string", + "description": "Name of a field" } }, - "positions": { + "grouping": { "type": "array", + "description": "Perform groupings over certain fields", "items": { - "$ref": "#/components/schemas/CartDeliveryPosition" + "type": "string", + "description": "Name of a field" } }, - "shippingCosts": { - "$ref": "#/components/schemas/CalculatedPrice" + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" + "includes": { + "$ref": "#/components/schemas/Includes" + }, + "excludes": { + "$ref": "#/components/schemas/Excludes" } } }, - "EntitySearchResult": { + "NoneFieldsCriteria": { "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "entity": { + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", "type": "string" }, - "total": { - "type": "integer", - "description": "The total number of found entities" + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } + }, + "query": { + "type": "string", + "description": "The query string to search for" + }, + "associations": { + "$ref": "#/components/schemas/Associations" + }, + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + } }, "aggregations": { "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", "items": { - "type": "object" + "$ref": "#/components/schemas/Aggregation" } }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" + }, + "excludes": { + "$ref": "#/components/schemas/Excludes" } } }, - "SuccessResponse": { + "Associations": { "type": "object", - "properties": { - "success": { - "type": "boolean" - } + "additionalProperties": { + "$ref": "#/components/schemas/Criteria" } }, - "ToggleBroadcastModePayload": { + "Includes": { "type": "object", - "required": [ - "active" - ], - "properties": { - "active": { - "type": "boolean", - "description": "Status if the mode is toggled to active or inactive" + "additionalProperties": { + "type": "array", + "items": { + "type": "string" } } }, - "ProductPageResult": { + "Excludes": { "type": "object", - "properties": { - "cmsPage": { - "$ref": "#/components/schemas/CmsPage" + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "Aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" }, - "product": { - "$ref": "#/components/schemas/Product" + { + "title": "AggregationEntity", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationEntity" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] }, - "configurator": { - "oneOf": [ + { + "title": "AggregationFilter", + "allOf": [ { - "$ref": "#/components/schemas/PropertyGroup" + "$ref": "#/components/schemas/AggregationFilter" }, { - "type": "null" + "$ref": "#/components/schemas/SubAggregations" } ] }, - "apiAlias": { - "type": "string" + { + "title": "AggregationTerms", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationRange", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationRange" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] } - } + ] }, - "ProductPayload": { + "SubAggregations": { "type": "object", - "required": [ - "productId" - ], "properties": { - "productId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "the id from the product which is used in the interaction" + "aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" + }, + { + "$ref": "#/components/schemas/AggregationEntity" + }, + { + "$ref": "#/components/schemas/AggregationFilter" + }, + { + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/AggregationRange" + } + ] } } }, - "EmptyPayload": { - "type": "object", - "properties": [] + "TotalCountMode": { + "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", + "type": "string", + "default": "none", + "enum": [ + "none", + "exact", + "next-pages" + ] }, - "AttendeeRespondInvitationResponse": { + "Query": { "type": "object", "properties": { - "appointment": { - "type": "object", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The appointment id" + "score": { + "type": "number" + }, + "query": { + "oneOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "accessibleFrom": { - "type": "string", - "format": "date-time", - "description": "The time the client can access the appointment" + { + "$ref": "#/components/schemas/EqualsFilter" }, - "accessibleTo": { - "type": "string", - "format": "date-time", - "description": "The time the appointment will be closed, the client can not access" + { + "$ref": "#/components/schemas/MultiNotFilter" }, - "status": { - "anyOf": [ - { - "type": "string", - "enum": [ - "started", - "ended" - ] - }, - { - "type": "null" - } - ], - "description": "The appointment status" + { + "$ref": "#/components/schemas/RangeFilter" } - } - }, - "answer": { - "type": "string", - "enum": [ - "accepted", - "maybe", - "declined" - ], - "description": "The invitation status that client responded to" + ] } - } + }, + "additionalProperties": true }, - "UpdateAttendeeRequestBody": { + "Sort": { "type": "object", "properties": { - "attendeeName": { - "type": "string", - "description": "Name of the attendee" + "field": { + "type": "string" }, - "videoUserId": { + "order": { "type": "string", - "description": "Id of the attendee in the video chat tool" + "enum": [ + "ASC", + "DESC" + ] + }, + "naturalSorting": { + "type": "boolean" + }, + "type": { + "type": "string" } + }, + "required": [ + "field", + "order" + ] + }, + "Filters": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] } }, - "AppointmentBasicSettingResponse": { + "SimpleFilter": { "type": "object", "properties": { - "apiAlias": { - "type": "string", - "description": "The API alias of the appointment basic setting" - }, - "mode": { + "type": { "type": "string", - "description": "The mode of the interaction", "enum": [ - "guided", - "self" + "contains", + "equalsAny", + "prefix", + "suffix" ] }, - "attendeeRestrictionType": { - "type": "string", - "description": "The type of attendee restriction", - "enum": [ - "open", - "customer", - "rules" - ] + "field": { + "type": "string" }, - "videoAudioSettings": { - "type": "string", - "description": "The video and audio settings", - "enum": [ - "none", - "both", - "audio-only" + "value": { + "type": "string" + } + }, + "required": [ + "type", + "field", + "value" + ] + }, + "EqualsFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "equals" ] }, - "canSendRequestEmail": { - "type": "boolean", - "description": "Indicates if request emails can be sent", - "default": false - }, - "canBookAppointment": { - "type": "boolean", - "description": "Indicates if appointments can be booked", - "default": false - }, - "enableWishlist": { - "type": "boolean", - "description": "Indicates if the wishlist is enabled", - "default": false + "field": { + "type": "string" }, - "bookingLink": { - "description": "The booking link", + "value": { "oneOf": [ { "type": "string" }, + { + "type": "number" + }, + { + "type": "boolean" + }, { "type": "null" } ] - }, - "appointmentName": { + } + }, + "required": [ + "type", + "field", + "value" + ] + }, + "MultiNotFilter": { + "type": "object", + "properties": { + "type": { "type": "string", - "description": "The name of the appointment" + "enum": [ + "multi", + "not" + ] }, - "salesChannelName": { + "operator": { "type": "string", - "description": "The name of the sales channel" + "enum": [ + "and", + "or", + "nor", + "nand" + ] + }, + "queries": { + "$ref": "#/components/schemas/Filters" } }, - "example": { - "apiAlias": "appointment_basic_setting", - "mode": "self", - "attendeeRestrictionType": "open", - "videoAudioSettings": "none", - "canSendRequestEmail": false, - "canBookAppointment": false, - "enableWishlist": false, - "bookingLink": null, - "appointmentName": "dsr11", - "salesChannelName": "Storefront" - } + "required": [ + "type", + "operator", + "queries" + ] }, - "AttendeeProductCollectionResponse": { + "RangeFilter": { "type": "object", "properties": { - "collection": { + "type": { + "type": "string", + "enum": [ + "range" + ] + }, + "field": { + "type": "string" + }, + "parameters": { "type": "object", - "anyOf": [ - { - "type": "object", - "properties": { - "liked": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Product ids from the collection" - } - } - } + "properties": { + "gte": { + "type": "number" }, - { - "type": "object", - "properties": { - "disliked": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Product ids from the collection" - } - } - } + "gt": { + "type": "number" + }, + "lte": { + "type": "number" + }, + "lt": { + "type": "number" } - ] + } } }, - "example": { - "collection": { - "liked": [ - "0015b3d83df441e490da7f6880a9c2da", - "60793d25cbab473f92c405ce0525f3ec" - ] - } - } + "required": [ + "type", + "field", + "parameters" + ] }, - "DynamicInteractionBody": { - "oneOf": [ - { - "$ref": "#/components/schemas/EmptyInteraction" - }, - { - "$ref": "#/components/schemas/ProductInteraction" - }, - { - "$ref": "#/components/schemas/DynamicPageOpenedInteraction" + "CookieGroup": { + "type": "object", + "properties": { + "isRequired": { + "type": "boolean" }, - { - "$ref": "#/components/schemas/DynamicPageClosedInteraction" + "name": { + "type": "string" }, - { - "$ref": "#/components/schemas/DynamicProductPageOpenedInteraction" + "description": { + "type": "string" }, - { - "$ref": "#/components/schemas/PageViewedInteraction" + "cookie": { + "type": "string" }, - { - "$ref": "#/components/schemas/GuideHoveredInteraction" + "value": { + "type": "string" }, - { - "$ref": "#/components/schemas/ToggleBroadcastModeInteraction" + "expiration": { + "type": "integer" }, - { - "$ref": "#/components/schemas/ViewModeChangedInteraction" + "entries": { + "$ref": "#/components/schemas/CookieEntryCollection" }, - { - "$ref": "#/components/schemas/ScreenSharingToggledInteraction" - } - ], - "discriminator": { - "propertyName": "name", - "mapping": { - "keep.alive": "#/components/schemas/EmptyInteraction", - "quickview.opened": "#/components/schemas/EmptyInteraction", - "quickview.closed": "#/components/schemas/EmptyInteraction", - "attendee.leave": "#/components/schemas/EmptyInteraction", - "remote.checkout.accepted": "#/components/schemas/EmptyInteraction", - "remote.checkout.denied": "#/components/schemas/EmptyInteraction", - "product.viewed": "#/components/schemas/ProductInteraction", - "attendee.product.collection.liked": "#/components/schemas/ProductInteraction", - "attendee.product.collection.disliked": "#/components/schemas/ProductInteraction", - "attendee.product.collection.removed": "#/components/schemas/ProductInteraction", - "dynamicPage.opened": "#/components/schemas/DynamicPageOpenedInteraction", - "dynamicPage.closed": "#/components/schemas/DynamicPageClosedInteraction", - "dynamicProductPage.opened": "#/components/schemas/DynamicProductPageOpenedInteraction", - "page.viewed": "#/components/schemas/PageViewedInteraction", - "guide.hovered": "#/components/schemas/GuideHoveredInteraction", - "broadcastMode.toggled": "#/components/schemas/ToggleBroadcastModeInteraction", - "viewMode.changed": "#/components/schemas/ViewModeChangedInteraction", - "screenSharing.toggled": "#/components/schemas/ScreenSharingToggledInteraction" + "apiAlias": { + "type": "string", + "enum": [ + "cookie_group" + ] } - } + }, + "not": { + "allOf": [ + { + "required": [ + "cookie" + ] + }, + { + "required": [ + "entries" + ] + } + ] + }, + "required": [ + "name", + "isRequired", + "apiAlias" + ] }, - "BaseInteraction": { + "CartDeliveryPosition": { "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "triggeredAt": { - "type": "string", - "description": "The time when the interaction was triggered", - "default": "now" - }, - "lifeTimeInSeconds": { - "type": "integer", - "description": "The time in seconds how long the interaction should be stored in the database", - "default": -1 - } - } - }, - "EmptyInteraction": { - "allOf": [ - { - "$ref": "#/components/schemas/BaseInteraction" - }, - { + "deliveryDate": { "type": "object", - "required": [ - "name", - "payload" - ], "properties": { - "name": { - "type": "string" + "earliest": { + "type": "string", + "format": "date-time" }, - "payload": { - "type": "object", - "additionalProperties": false, - "minProperties": 0, - "maxProperties": 0 + "latest": { + "type": "string", + "format": "date-time" } } + }, + "identifier": { + "type": "string" + }, + "lineItem": { + "$ref": "#/components/schemas/LineItem" + }, + "price": { + "$ref": "#/components/schemas/CalculatedPrice" } - ] + } }, - "ProductInteraction": { - "allOf": [ - { - "$ref": "#/components/schemas/BaseInteraction" + "ReferencePrice": { + "type": "object", + "properties": { + "purchaseUnit": { + "type": "number" }, - { - "type": "object", - "required": [ - "name", - "payload" - ], - "properties": { - "name": { - "type": "string" + "referenceUnit": { + "type": "number" + }, + "unitName": { + "type": "string" + }, + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_reference" + ] + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/ListPrice" }, - "payload": { - "$ref": "#/components/schemas/ProductPayload" + { + "type": "null" } - } - } - ] - }, - "DynamicPageOpenedInteraction": { - "allOf": [ - { - "$ref": "#/components/schemas/BaseInteraction" + ] }, - { - "type": "object", - "required": [ - "name", - "payload" - ], - "properties": { - "name": { - "type": "string" + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } }, - "payload": { - "$ref": "#/components/schemas/DynamicPageOpenedPayload" + { + "type": "null" } - } - } - ] - }, - "DynamicProductPageOpenedInteraction": { - "allOf": [ - { - "$ref": "#/components/schemas/BaseInteraction" + ] }, - { - "type": "object", - "required": [ - "name", - "payload" - ], - "properties": { - "name": { - "type": "string" + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" }, - "payload": { - "$ref": "#/components/schemas/DynamicProductPageOpenedPayload" + { + "type": "null" } - } + ] } + }, + "required": [ + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" ] }, - "DynamicPageClosedInteraction": { - "allOf": [ - { - "$ref": "#/components/schemas/BaseInteraction" - }, - { + "OrderRouteResponse": { + "type": "object", + "properties": { + "orders": { "type": "object", - "required": [ - "name", - "payload" - ], - "properties": { - "name": { - "type": "string" + "allOf": [ + { + "type": "object", + "required": [ + "elements" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" + } + } + } }, - "payload": { - "$ref": "#/components/schemas/DynamicPageClosedPayload" + { + "$ref": "#/components/schemas/EntitySearchResult" } - } - } - ] - }, - "PageViewedInteraction": { - "allOf": [ - { - "$ref": "#/components/schemas/BaseInteraction" + ] }, - { + "paymentChangeable": { "type": "object", - "required": [ - "name", - "payload" - ], - "properties": { - "name": { - "type": "string" - }, - "payload": { - "$ref": "#/components/schemas/PageViewedPayload" - } + "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", + "additionalProperties": { + "type": "boolean" } } + }, + "required": [ + "orders" ] }, - "GuideHoveredInteraction": { - "allOf": [ - { - "$ref": "#/components/schemas/BaseInteraction" - }, - { + "WishlistLoadRouteResponse": { + "type": "object", + "required": [ + "products" + ], + "properties": { + "wishlist": { "type": "object", - "required": [ - "name", - "payload" - ], "properties": { - "name": { + "customerId": { "type": "string" }, - "payload": { - "$ref": "#/components/schemas/GuideHoveredPayload" + "salesChannelId": { + "type": "string" } } + }, + "products": { + "$ref": "#/components/schemas/ProductListingResult" } - ] + } }, - "ToggleBroadcastModeInteraction": { - "allOf": [ - { - "$ref": "#/components/schemas/BaseInteraction" - }, - { - "type": "object", - "required": [ - "name", - "payload" - ], - "properties": { - "name": { - "type": "string" - }, - "payload": { - "$ref": "#/components/schemas/ToggleBroadcastModePayload" - } - } + "Sitemap": { + "type": "object", + "properties": { + "filename": { + "type": "string" + }, + "created": { + "type": "string", + "format": "date-time" } + }, + "required": [ + "filename", + "created" ] }, - "ViewModeChangedInteraction": { - "allOf": [ - { - "$ref": "#/components/schemas/BaseInteraction" - }, - { - "type": "object", - "required": [ - "name", - "payload" - ], - "properties": { - "name": { - "type": "string" - }, - "payload": { - "$ref": "#/components/schemas/ViewModeChangedPayload" - } - } - } + "NavigationType": { + "type": "string", + "enum": [ + "main-navigation", + "footer-navigation", + "service-navigation" ] }, - "ScreenSharingToggledInteraction": { - "allOf": [ - { - "$ref": "#/components/schemas/BaseInteraction" + "ListPrice": { + "type": "object", + "description": "", + "properties": { + "discount": { + "type": "number" }, - { - "type": "object", - "required": [ - "name", - "payload" - ], - "properties": { - "name": { - "type": "string" - }, - "payload": { - "$ref": "#/components/schemas/ScreenSharingToggledPayload" - } - } + "percentage": { + "type": "number" + }, + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_list_price" + ] } + }, + "required": [ + "apiAlias" ] }, - "CreateInteractionRequestBody": { - "$ref": "#/components/schemas/DynamicInteractionBody" - }, - "PresentationStructure": { + "CalculatedPrice": { "type": "object", - "required": [ - "cmsPageResults", - "navigation" - ], + "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "cmsPageResults": { + "unitPrice": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "rawTotal": { + "type": "number" + }, + "totalPrice": { + "type": "number" + }, + "taxStatus": { + "type": "string", + "enum": [ + "net", + "tax-free" + ] + }, + "calculatedTaxes": { "type": "array", "items": { "type": "object", "properties": { - "resourceType": { + "apiAlias": { "type": "string", - "description": "The type of presentation page", - "default": "frontend.presentation.page" + "enum": [ + "cart_tax_calculated" + ] }, - "resourceIdentifier": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The presentation id" + "tax": { + "type": "number" }, - "cmsPage": { - "$ref": "#/components/schemas/CmsPage" + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" } - } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] } }, - "navigation": { + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] + }, + "positionPrice": { + "type": "number" + }, + "netPrice": { + "type": "number" + }, + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] + }, + "taxRules": { "type": "array", + "description": "Currently active tax rules and/or rates", "items": { "type": "object", - "required": [ - "cmsPageId", - "groupId", - "groupName", - "index", - "sectionId", - "sectionName" - ], "properties": { - "index": { - "type": "integer", - "description": "The slide position" - }, - "sectionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The section id" - }, - "sectionName": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "The section name" - }, - "groupId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The presentation CMS page id" + "taxRate": { + "type": "number", + "format": "float" }, - "groupName": { - "type": "string", - "description": "The slide name" - }, - "cmsPageId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The CMS page id" - }, - "isInstantListing": { - "type": "boolean", - "description": "If the slide is an instant listing" - }, - "pickedProductsCount": { - "type": "integer", - "description": "The number of picked products of the instant listing" - }, - "notes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CmsSlot" - }, - "default": [] + "name": { + "type": "string" } } } } }, - "example": { - "cmsPageResults": [ - { - "resourceType": "frontend.presentation.page", - "resourceIdentifier": "45a2b8ad0bb544e48f61eab564a2171c", - "cmsPage": { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "name": "Default Digital Sales Rooms product listing page", - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": "2023-08-10T04:30:28.668+00:00", - "name": "Default Digital Sales Rooms product listing page", - "type": "presentation_product_list", - "entity": null, - "sections": [ - { - "extensions": { - "translations": [] - }, - "translated": [], - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": "2023-08-10T04:30:28.668+00:00", - "type": "default", - "blocks": [ - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": [], - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": "2023-08-10T04:30:28.667+00:00", - "type": "product-listing", - "slots": [ - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "config": { - "filters": { - "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", - "source": "static" - }, - "boxLayout": { - "value": "standard", - "source": "static" - }, - "showSorting": { - "value": true, - "source": "static" - }, - "defaultSorting": { - "value": "", - "source": "static" - }, - "useCustomSorting": { - "value": false, - "source": "static" - }, - "availableSortings": { - "value": [], - "source": "static" - }, - "propertyWhitelist": { - "value": [], - "source": "static" - } - }, - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "product-listing", - "slot": "content", - "block": null, - "blockId": "96ea8b9676a5461c9149d205d792ecf2", - "config": { - "filters": { - "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", - "source": "static" - }, - "boxLayout": { - "value": "standard", - "source": "static" - }, - "showSorting": { - "value": true, - "source": "static" - }, - "defaultSorting": { - "value": "", - "source": "static" - }, - "useCustomSorting": { - "value": false, - "source": "static" - }, - "availableSortings": { - "value": [], - "source": "static" - }, - "propertyWhitelist": { - "value": [], - "source": "static" - } - }, - "fieldConfig": null, - "translations": null, - "data": null, - "locked": false, - "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "customFields": null, - "apiAlias": "cms_slot" - } - ], - "sectionId": "2229e1f1208a4b8086baf7aec84f5e2c", - "position": 1, - "name": null, - "sectionPosition": "main", - "marginTop": "20px", - "marginBottom": "20px", - "marginLeft": "20px", - "marginRight": "20px", - "backgroundColor": null, - "backgroundMediaId": null, - "backgroundMedia": null, - "backgroundMediaMode": "cover", - "cssClass": null, - "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": { - "mobile": true, - "tablet": true, - "desktop": true - }, - "customFields": null, - "apiAlias": "cms_block" - } - ], - "pageId": "33e88c7994fa4cf79a1265e5105b93b2", - "page": null, - "position": 0, - "sizingMode": "boxed", - "mobileBehavior": "wrap", - "backgroundColor": null, - "backgroundMediaId": null, - "backgroundMedia": null, - "backgroundMediaMode": "cover", - "cssClass": null, - "cmsPageVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": { - "mobile": true, - "tablet": true, - "desktop": true - }, - "customFields": null, - "apiAlias": "cms_section" - } - ], - "translations": null, - "cssClass": null, - "config": null, - "previewMediaId": null, - "previewMedia": null, - "landingPages": null, - "id": "33e88c7994fa4cf79a1265e5105b93b2", - "customFields": null, - "apiAlias": "cms_page" - }, - "apiAlias": "pwa_page_result" - }, - { - "resourceType": "frontend.presentation.page", - "resourceIdentifier": "45a2b8ad0bb544e48f61eab564a2171c", - "cmsPage": { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "name": "Default Digital Sales Rooms product detail page", - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "name": "Default Digital Sales Rooms product detail page", - "type": "presentation_product_detail", - "entity": null, - "sections": [ - { - "extensions": { - "translations": [] - }, - "translated": [], - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "default", - "blocks": [ - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": [], - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "product-heading", - "slots": [ - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "config": [], - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "like", - "slot": "right", - "block": null, - "blockId": "c0d3daba2e244122947438c28f776d41", - "config": [], - "fieldConfig": null, - "translations": null, - "data": null, - "locked": false, - "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "customFields": null, - "apiAlias": "cms_slot" - }, - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "config": { - "content": { - "value": "product.name", - "source": "mapped" - }, - "verticalAlign": { - "value": null, - "source": "static" - } + "required": [ + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "referencePrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitPrice", + "positionPrice", + "netPrice", + "taxRules", + "rawTotal", + "taxStatus" + ] + }, + "CookieEntry": { + "type": "object", + "properties": { + "cookie": { + "type": "string" + }, + "value": { + "type": "string" + }, + "expiration": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cookie_entry" + ] + } + }, + "required": [ + "cookie", + "hidden", + "apiAlias" + ] + }, + "CartListPrice": { + "type": "object", + "description": "", + "properties": { + "discount": { + "type": "number" + }, + "percentage": { + "type": "number" + }, + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_list_price" + ] + } + }, + "required": [ + "apiAlias" + ] + }, + "CustomerAddressBody": { + "description": "Added since version: 6.0.0.0", + "required": [ + "countryId", + "firstName", + "lastName", + "city", + "street" + ], + "properties": { + "countryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryStateId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "salutationId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "zipcode": { + "type": "string" + }, + "city": { + "type": "string" + }, + "company": { + "type": "string" + }, + "street": { + "type": "string" + }, + "department": { + "type": "string" + }, + "title": { + "type": "string" + }, + "phoneNumber": { + "type": "string" + }, + "additionalAddressLine1": { + "type": "string" + }, + "additionalAddressLine2": { + "type": "string" + }, + "customFields": { + "type": "object" + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "$ref": "#/components/schemas/CountryState" + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" + } + }, + "type": "object" + }, + "MeasurementUnits": { + "type": "object", + "description": "Configuration of the measurement system", + "properties": { + "system": { + "type": "string", + "enum": [ + "metric", + "imperial" + ], + "default": "metric", + "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." + }, + "units": { + "type": "object", + "description": "Units used in the measurement system.", + "properties": { + "length": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Unit of length." + }, + "weight": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." + } + } + } + } + }, + "CustomerAddressRead": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true + }, + "customerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "updatedAt": { + "oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" + } + ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "oneOf": [ + { + "$ref": "#/components/schemas/CountryState" + }, + { + "type": "null" + } + ] + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" + } + }, + "required": [ + "customerId", + "createdAt", + "updatedAt", + "country", + "salutation" + ] + }, + "CrossSellingElement": { + "type": "object", + "properties": { + "crossSelling": { + "$ref": "#/components/schemas/ProductCrossSelling" + }, + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "streamId": { + "type": "string", + "format": "uuid" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cross_selling_element" + ] + } + }, + "required": [ + "crossSelling", + "products", + "total", + "apiAlias" + ] + }, + "SalesChannelContext": { + "type": "object", + "properties": { + "token": { + "description": "Context the user session", + "type": "string" + }, + "currentCustomerGroup": { + "type": "object", + "description": "Customer group of the current user", + "properties": { + "name": { + "type": "string" + }, + "displayGross": { + "type": "boolean" + } + } + }, + "fallbackCustomerGroup": { + "description": "Fallback group if the default customer group is not applicable", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "displayGross": { + "type": "boolean" + } + } + }, + "currency": { + "$ref": "#/components/schemas/Currency" + }, + "salesChannel": { + "$ref": "#/components/schemas/SalesChannel" + }, + "measurementSystem": { + "$ref": "#/components/schemas/ContextMeasurementSystemInfo" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } + }, + "customer": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/Customer" + } + ] + }, + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod" + }, + "shippingLocation": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + } + } + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + }, + "context": { + "description": "Core context with general configuration values and state", + "type": "object", + "properties": { + "versionId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "currencyFactor": { + "type": "integer" + }, + "currencyPrecision": { + "type": "integer", + "format": "int32" + }, + "languageIdChain": { + "type": "array", + "items": { + "type": "string" + } + }, + "scope": { + "type": "string" + }, + "source": { + "type": "object", + "required": [ + "salesChannelId", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "sales-channel", + "shop-api" + ] + }, + "salesChannelId": { + "type": "string" + } + } + }, + "taxState": { + "type": "string" + }, + "useCache": { + "type": "boolean" + } + } + }, + "itemRounding": { + "type": "object", + "required": [ + "decimals", + "interval", + "roundForNet", + "apiAlias" + ], + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" + ] + }, + "decimals": { + "type": "integer", + "format": "int32" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" + } + } + }, + "totalRounding": { + "type": "object", + "required": [ + "decimals", + "interval", + "roundForNet", + "apiAlias" + ], + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" + ] + }, + "decimals": { + "type": "integer", + "format": "int32" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" + } + } + }, + "languageInfo": { + "type": "object", + "required": [ + "localeCode", + "name" + ], + "properties": { + "name": { + "type": "string" + }, + "localeCode": { + "type": "string" + } + } + }, + "apiAlias": { + "type": "string", + "enum": [ + "sales_channel_context" + ] + } + }, + "required": [ + "salesChannel", + "apiAlias", + "itemRounding", + "totalRounding", + "languageInfo" + ] + }, + "SuccessResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + } + } + }, + "NavigationRouteResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + } + }, + "CartDeliveryInformation": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_information" + ] + }, + "freeDelivery": { + "type": "boolean" + }, + "deliveryTime": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "min": { + "type": "integer" + }, + "max": { + "type": "integer" + }, + "unit": { + "type": "string" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_time" + ] + } + } + }, + "height": { + "type": "integer" + }, + "length": { + "type": "integer" + }, + "restockTime": { + "type": "integer" + }, + "stock": { + "type": "integer" + }, + "weight": { + "type": "integer" + }, + "width": { + "type": "integer" + } + }, + "required": [ + "apiAlias" + ] + }, + "FindProductVariantRouteResponse": { + "type": "object", + "properties": { + "foundCombination": { + "type": "object", + "properties": { + "variantId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "options": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + }, + "CrossSellingElementCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrossSellingElement" + } + }, + "CartError": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "key": { + "type": "string" + }, + "level": { + "type": "number", + "enum": [ + 0, + 10, + 20 + ], + "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" + }, + "message": { + "type": "string" + }, + "messageKey": { + "type": "string" + } + }, + "required": [ + "key", + "level", + "message", + "messageKey" + ] + }, + "ProductListingResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EntitySearchResult" + }, + { + "type": "object", + "properties": { + "currentFilters": { + "type": "object", + "description": "Contains the state of the filters. These can be used to create listing filters.", + "properties": { + "navigationId": { + "type": "string" + }, + "manufacturer": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "price": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "default": 0 + }, + "max": { + "type": "integer", + "default": 0 + } + }, + "required": [ + "min", + "max" + ] + }, + "rating": { + "oneOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "shipping-free": { + "type": "boolean", + "default": false + }, + "properties": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "search": { + "type": "string" + } + }, + "required": [ + "manufacturer", + "navigationId", + "price", + "properties", + "rating", + "shipping-free" + ] + }, + "availableSortings": { + "type": "array", + "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", + "items": { + "type": "object", + "properties": { + "label": { + "type": "string" + }, + "translated": { + "type": "object", + "properties": { + "label": { + "type": "string" + } + }, + "required": [ + "label" + ] + }, + "key": { + "type": "string" + }, + "priority": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_sorting" + ] + } + }, + "required": [ + "label", + "translated", + "key", + "priority", + "apiAlias" + ] + } + }, + "sorting": { + "type": "string" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "entity": { + "type": "string", + "enum": [ + "product" + ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_listing" + ] + } + }, + "required": [ + "elements", + "availableSortings", + "currentFilters", + "apiAlias" + ] + } + ] + }, + "DynamicPageClosedPayload": { + "type": "object", + "properties": { + "pageId": { + "oneOf": [ + { + "type": "string", + "pattern": "^[a-f0-9]{32}$" + }, + { + "type": "null" + } + ], + "pattern": "^[a-f0-9]{32}$", + "description": "The id of the page that was closed" + }, + "all": { + "type": "boolean", + "default": false, + "description": "Whether all pages were closed" + } + } + }, + "PresentationStructure": { + "type": "object", + "required": [ + "cmsPageResults", + "navigation" + ], + "properties": { + "cmsPageResults": { + "type": "array", + "items": { + "type": "object", + "properties": { + "resourceType": { + "type": "string", + "description": "The type of presentation page", + "default": "frontend.presentation.page" + }, + "resourceIdentifier": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The presentation id" + }, + "cmsPage": { + "$ref": "#/components/schemas/CmsPage" + } + } + } + }, + "navigation": { + "type": "array", + "items": { + "type": "object", + "required": [ + "cmsPageId", + "groupId", + "groupName", + "index", + "sectionId", + "sectionName" + ], + "properties": { + "index": { + "type": "integer", + "description": "The slide position" + }, + "sectionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The section id" + }, + "sectionName": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The section name" + }, + "groupId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The presentation CMS page id" + }, + "groupName": { + "type": "string", + "description": "The slide name" + }, + "cmsPageId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The CMS page id" + }, + "isInstantListing": { + "type": "boolean", + "description": "If the slide is an instant listing" + }, + "pickedProductsCount": { + "type": "integer", + "description": "The number of picked products of the instant listing" + }, + "notes": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CmsSlot" + }, + "default": [] + } + } + } + } + }, + "example": { + "cmsPageResults": [ + { + "resourceType": "frontend.presentation.page", + "resourceIdentifier": "45a2b8ad0bb544e48f61eab564a2171c", + "cmsPage": { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": { + "name": "Default Digital Sales Rooms product listing page", + "customFields": [] + }, + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": "2023-08-10T04:30:28.668+00:00", + "name": "Default Digital Sales Rooms product listing page", + "type": "presentation_product_list", + "entity": null, + "sections": [ + { + "extensions": { + "translations": [] + }, + "translated": [], + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": "2023-08-10T04:30:28.668+00:00", + "type": "default", + "blocks": [ + { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": [], + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": "2023-08-10T04:30:28.667+00:00", + "type": "product-listing", + "slots": [ + { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": { + "config": { + "filters": { + "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", + "source": "static" + }, + "boxLayout": { + "value": "standard", + "source": "static" + }, + "showSorting": { + "value": true, + "source": "static" + }, + "defaultSorting": { + "value": "", + "source": "static" + }, + "useCustomSorting": { + "value": false, + "source": "static" + }, + "availableSortings": { + "value": [], + "source": "static" + }, + "propertyWhitelist": { + "value": [], + "source": "static" + } + }, + "customFields": [] + }, + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "type": "product-listing", + "slot": "content", + "block": null, + "blockId": "96ea8b9676a5461c9149d205d792ecf2", + "config": { + "filters": { + "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", + "source": "static" + }, + "boxLayout": { + "value": "standard", + "source": "static" + }, + "showSorting": { + "value": true, + "source": "static" + }, + "defaultSorting": { + "value": "", + "source": "static" + }, + "useCustomSorting": { + "value": false, + "source": "static" + }, + "availableSortings": { + "value": [], + "source": "static" + }, + "propertyWhitelist": { + "value": [], + "source": "static" + } + }, + "fieldConfig": null, + "translations": null, + "data": null, + "locked": false, + "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "customFields": null, + "apiAlias": "cms_slot" + } + ], + "sectionId": "2229e1f1208a4b8086baf7aec84f5e2c", + "position": 1, + "name": null, + "sectionPosition": "main", + "marginTop": "20px", + "marginBottom": "20px", + "marginLeft": "20px", + "marginRight": "20px", + "backgroundColor": null, + "backgroundMediaId": null, + "backgroundMedia": null, + "backgroundMediaMode": "cover", + "cssClass": null, + "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "visibility": { + "mobile": true, + "tablet": true, + "desktop": true + }, + "customFields": null, + "apiAlias": "cms_block" + } + ], + "pageId": "33e88c7994fa4cf79a1265e5105b93b2", + "page": null, + "position": 0, + "sizingMode": "boxed", + "mobileBehavior": "wrap", + "backgroundColor": null, + "backgroundMediaId": null, + "backgroundMedia": null, + "backgroundMediaMode": "cover", + "cssClass": null, + "cmsPageVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "visibility": { + "mobile": true, + "tablet": true, + "desktop": true + }, + "customFields": null, + "apiAlias": "cms_section" + } + ], + "translations": null, + "cssClass": null, + "config": null, + "previewMediaId": null, + "previewMedia": null, + "landingPages": null, + "id": "33e88c7994fa4cf79a1265e5105b93b2", + "customFields": null, + "apiAlias": "cms_page" + }, + "apiAlias": "pwa_page_result" + }, + { + "resourceType": "frontend.presentation.page", + "resourceIdentifier": "45a2b8ad0bb544e48f61eab564a2171c", + "cmsPage": { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": { + "name": "Default Digital Sales Rooms product detail page", + "customFields": [] + }, + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "name": "Default Digital Sales Rooms product detail page", + "type": "presentation_product_detail", + "entity": null, + "sections": [ + { + "extensions": { + "translations": [] + }, + "translated": [], + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "type": "default", + "blocks": [ + { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": [], + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "type": "product-heading", + "slots": [ + { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": { + "config": [], + "customFields": [] + }, + "createdAt": "2023-08-03T17:24:09.000+00:00", + "updatedAt": null, + "type": "like", + "slot": "right", + "block": null, + "blockId": "c0d3daba2e244122947438c28f776d41", + "config": [], + "fieldConfig": null, + "translations": null, + "data": null, + "locked": false, + "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "customFields": null, + "apiAlias": "cms_slot" + }, + { + "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", + "translated": { + "config": { + "content": { + "value": "product.name", + "source": "mapped" + }, + "verticalAlign": { + "value": null, + "source": "static" + } }, "customFields": [] }, @@ -17051,135 +16575,52 @@ "apiAlias": "pwa_page_result" } }, - "PageViewedPayload": { + "AttendeeRespondInvitationResponse": { "type": "object", - "required": [ - "pageId", - "sectionId", - "slideAlias" - ], "properties": { - "pageId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "the id from the page which was viewed" - }, - "sectionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "the id from the section within the page which was viewed" - }, - "slideAlias": { - "type": "number", - "description": "the alias of the slide which was viewed" - }, - "pageNumber": { - "oneOf": [ - { - "type": "integer", - "description": "the number of the page which was viewed" + "appointment": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The appointment id" }, - { - "type": "null" + "accessibleFrom": { + "type": "string", + "format": "date-time", + "description": "The time the client can access the appointment" + }, + "accessibleTo": { + "type": "string", + "format": "date-time", + "description": "The time the appointment will be closed, the client can not access" + }, + "status": { + "anyOf": [ + { + "type": "string", + "enum": [ + "started", + "ended" + ] + }, + { + "type": "null" + } + ], + "description": "The appointment status" } - ] - } - } - }, - "DynamicProductListingPageOpenedPayload": { - "required": [ - "page" - ], - "properties": { - "page": { - "type": "integer", - "description": "Current page position in the pagination" - } - } - }, - "CreateAppointmentRequestBody": { - "type": "object", - "description": "Includes all data you will need to attend to a appointment.", - "required": [ - "salutationId", - "firstName", - "lastName", - "emailAddress", - "subject" - ], - "properties": { - "salutationId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The id of the salutation" - }, - "firstName": { - "type": "string", - "description": "The first name of the requester" - }, - "lastName": { - "type": "string", - "description": "The last name of the requester" - }, - "emailAddress": { - "type": "string", - "format": "email", - "description": "The email address of the requester" - }, - "companyName": { - "type": "string", - "description": "The company name of the requester" - }, - "phoneNumber": { - "type": "string", - "description": "The phone number of the requester" - }, - "subject": { - "type": "string", - "description": "The subject of the appointment" - }, - "message": { - "type": "string", - "description": "The message of the appointment" - } - }, - "example": { - "id": "2d2c358f1ca04098aacf12873c2eed94", - "appointmentId": "3b3c358f1ca04098aacf12873c2eed94", - "salutationId": "5m6c358f1ca04098aacf12873c2eed94", - "firstName": "John", - "lastName": "Doe", - "emailAddress": "john@example.com", - "companyName": "Example Inc.", - "phoneNumber": "+1234567890", - "subject": "Appointment subject", - "message": "Appointment message", - "requestedById": "7b7c358f1ca04098aacf12873c2eed94" - } - }, - "AbstractDynamicPageOpenedPayload": { - "type": "object", - "required": [ - "pageId", - "type" - ], - "properties": { - "pageId": { - "type": "string", - "pattern": "^[a-f0-9]{32}$", - "description": "The id of the current dynamic page" + } }, - "type": { + "answer": { "type": "string", - "description": "The type of the current dynamic page" - }, - "opened": { - "type": "boolean", - "default": true - }, - "position": { - "type": "integer", - "description": "The position of the dynamic page in the list of dynamic pages" + "enum": [ + "accepted", + "maybe", + "declined" + ], + "description": "The invitation status that client responded to" } } }, @@ -17205,126 +16646,135 @@ } } }, - "ClientPresentationStateResponse": { + "ViewModeChangedPayload": { "type": "object", "properties": { - "stateForAll": { - "$ref": "#/components/schemas/StateForAll" - }, - "stateForClients": { - "$ref": "#/components/schemas/StateForClients" + "mode": { + "type": "string", + "description": "The view mode of presentation", + "enum": [ + "onlyYou", + "presentation", + "videoGrid" + ], + "default": "presentation" } - }, - "example": { - "stateForAll": { - "currentGuideProductId": null, - "lastActiveGuideSection": null, - "currentPageId": null, - "currentSectionId": null, - "currentSlideAlias": 0, - "currentDynamicPage": null, - "started": false, - "running": false, - "ended": false, - "startedAt": null, - "endedAt": null, - "accessibleFrom": null, - "accessibleTo": null, - "appointmentMode": "guided", - "videoAudioSettings": "both", - "videoRoomUrl": "", - "attendeeRestrictionType": "open", - "productDetailDefaultPageId": "bea211b5099241719830df8026624f7f", - "quickviewPageId": "182d3f7f988044adbba449b70c8bc472", - "productListingDefaultPageId": "33e88c7994fa4cf79a1265e5105b93b2", - "broadcastMode": false, - "extensions": [] - }, - "stateForClients": { - "videoClientToken": null, - "hoveredElementId": null, - "extensions": [] - }, - "apiAlias": "swag_digital_sales_rooms_content_presentation_state_sales_channel_get_get_client_presentation_state_struct" } }, - "DynamicPageOpenedPayload": { - "allOf": [ - { - "$ref": "#/components/schemas/AbstractDynamicPageOpenedPayload" - } - ] - }, - "DynamicPageClosedPayload": { + "StateForClients": { "type": "object", "properties": { - "pageId": { - "oneOf": [ + "videoClientToken": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "hoveredElementId": { + "anyOf": [ { "type": "string", - "pattern": "^[a-f0-9]{32}$" + "pattern": "^[0-9a-f]{32}$" }, { "type": "null" } - ], - "pattern": "^[a-f0-9]{32}$", - "description": "The id of the page that was closed" + ] }, - "all": { + "extensions": { + "type": "array", + "default": [] + } + } + }, + "ScreenSharingToggledPayload": { + "type": "object", + "required": [ + "active" + ], + "properties": { + "active": { "type": "boolean", - "default": false, - "description": "Whether all pages were closed" + "description": "Whether the screen sharing is active or not" } } }, - "StateForClients": { + "ProductPageResult": { "type": "object", "properties": { - "videoClientToken": { - "anyOf": [ + "cmsPage": { + "$ref": "#/components/schemas/CmsPage" + }, + "product": { + "$ref": "#/components/schemas/Product" + }, + "configurator": { + "oneOf": [ { - "type": "string" + "$ref": "#/components/schemas/PropertyGroup" }, { "type": "null" } ] }, - "hoveredElementId": { + "apiAlias": { + "type": "string" + } + } + }, + "AttendeeProductCollectionResponse": { + "type": "object", + "properties": { + "collection": { + "type": "object", "anyOf": [ { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "object", + "properties": { + "liked": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Product ids from the collection" + } + } + } }, { - "type": "null" + "type": "object", + "properties": { + "disliked": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Product ids from the collection" + } + } + } } ] - }, - "extensions": { - "type": "array", - "default": [] - } - } - }, - "DynamicProductPageOpenedPayload": { - "allOf": [ - { - "$ref": "#/components/schemas/AbstractDynamicPageOpenedPayload" } - ], - "required": [ - "productId" - ], - "properties": { - "productId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "the id from the product which is shown on the dynamic page" + }, + "example": { + "collection": { + "liked": [ + "0015b3d83df441e490da7f6880a9c2da", + "60793d25cbab473f92c405ce0525f3ec" + ] } } }, + "EmptyPayload": { + "type": "object", + "properties": [] + }, "JoinAppointmentResponse": { "type": "object", "description": "Includes all data you will need to attend to a appointment.", @@ -17418,111 +16868,259 @@ }, "isPreview": { "type": "boolean", - "description": "To see if it's a preview appointment" + "description": "To see if it's a preview appointment" + }, + "attendeeName": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The name of the attendee" + }, + "videoUserId": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "The video user id that attendee could use" + }, + "b2bFeatures": { + "type": "object", + "description": "The b2b features that available for the appointment", + "properties": { + "quoteManagement": { + "type": "boolean", + "description": "To know if the quote management is enabled for current customer" + } + } + } + }, + "example": { + "mercureSubscriberTopics": [ + "gs-guide-actions-2d2c358f1ca04098aacf12873c2eed82", + "gs-presentation-state-for-client-2d2c358f1ca04098aacf12873c2eed82", + "gs-presentation-state-for-all-2d2c358f1ca04098aacf12873c2eed82" + ], + "mercurePublisherTopic": "gs-client-actions-2d2c358f1ca04098aacf12873c2eed82", + "JWTMercureSubscriberToken": "jwt token for subscribing to updates", + "mercureHubPublicUrl": "http://localhost:8081/.well-known/mercure", + "JWTMercurePublisherToken": "jwt token for publishing updates", + "attendeeName": "attendee name", + "videoUserId": null, + "b2bFeatures": { + "feature1": false, + "feature2": true + }, + "id": "2d2c358f1ca04098aacf12873c2eed82", + "newContextToken": "new context token to call the other routes", + "attendeeId": "b6358241e4ad4a4e99d0f729d21d63be", + "salesChannelId": "4a791ec7f9ff46b2ad67ae2f562891d3", + "salesChannelName": "Storefront", + "appointmentName": "Test Appointment", + "presentationGuideMode": "guided", + "isPreview": false, + "apiAlias": "swag_digital_sales_rooms_content_appointment_struct_appointment_join_struct" + } + }, + "PageViewedPayload": { + "type": "object", + "required": [ + "pageId", + "sectionId", + "slideAlias" + ], + "properties": { + "pageId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "the id from the page which was viewed" + }, + "sectionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "the id from the section within the page which was viewed" + }, + "slideAlias": { + "type": "number", + "description": "the alias of the slide which was viewed" + }, + "pageNumber": { + "oneOf": [ + { + "type": "integer", + "description": "the number of the page which was viewed" + }, + { + "type": "null" + } + ] + } + } + }, + "StateForAll": { + "type": "object", + "properties": { + "currentGuideProductId": { + "anyOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] + }, + "lastActiveGuideSection": { + "anyOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] + }, + "currentPageId": { + "anyOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] + }, + "currentSectionId": { + "anyOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] + }, + "currentSlideAlias": { + "type": "integer", + "default": 0 + }, + "currentSlideData": { + "anyOf": [ + { + "$ref": "#/components/schemas/DynamicProductListingPageOpenedPayload" + }, + { + "type": "null" + } + ] + }, + "currentDynamicPage": { + "$ref": "#/components/schemas/DynamicPageOpenedPayload" + }, + "started": { + "type": "boolean", + "default": false + }, + "running": { + "type": "boolean", + "default": false + }, + "ended": { + "type": "boolean", + "default": false }, - "attendeeName": { - "oneOf": [ + "startedAt": { + "anyOf": [ { - "type": "string" + "type": "string", + "format": "date-time" }, { "type": "null" } - ], - "description": "The name of the attendee" + ] }, - "videoUserId": { - "oneOf": [ + "endedAt": { + "anyOf": [ { - "type": "string" + "type": "string", + "format": "date-time" }, { "type": "null" } - ], - "description": "The video user id that attendee could use" + ] }, - "b2bFeatures": { - "type": "object", - "description": "The b2b features that available for the appointment", - "properties": { - "quoteManagement": { - "type": "boolean", - "description": "To know if the quote management is enabled for current customer" + "accessibleFrom": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" } - } - } - }, - "example": { - "mercureSubscriberTopics": [ - "gs-guide-actions-2d2c358f1ca04098aacf12873c2eed82", - "gs-presentation-state-for-client-2d2c358f1ca04098aacf12873c2eed82", - "gs-presentation-state-for-all-2d2c358f1ca04098aacf12873c2eed82" - ], - "mercurePublisherTopic": "gs-client-actions-2d2c358f1ca04098aacf12873c2eed82", - "JWTMercureSubscriberToken": "jwt token for subscribing to updates", - "mercureHubPublicUrl": "http://localhost:8081/.well-known/mercure", - "JWTMercurePublisherToken": "jwt token for publishing updates", - "attendeeName": "attendee name", - "videoUserId": null, - "b2bFeatures": { - "feature1": false, - "feature2": true - }, - "id": "2d2c358f1ca04098aacf12873c2eed82", - "newContextToken": "new context token to call the other routes", - "attendeeId": "b6358241e4ad4a4e99d0f729d21d63be", - "salesChannelId": "4a791ec7f9ff46b2ad67ae2f562891d3", - "salesChannelName": "Storefront", - "appointmentName": "Test Appointment", - "presentationGuideMode": "guided", - "isPreview": false, - "apiAlias": "swag_digital_sales_rooms_content_appointment_struct_appointment_join_struct" - } - }, - "PresentationCmsPage": { - "allOf": [ - { - "$ref": "#/components/schemas/DsrPresentationCmsPage" + ] }, - { - "type": "object", - "properties": { - "pickedProductIds": { - "anyOf": [ - { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Product id" - } - }, - { - "type": "null" - } - ], - "description": "The product id is assigned to presentation if it's product listing or instant listing" + "accessibleTo": { + "anyOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" } - } - } - ] - }, - "StateForAll": { - "type": "object", - "properties": { - "currentGuideProductId": { + ] + }, + "appointmentMode": { + "type": "string", + "enum": [ + "guided", + "self" + ] + }, + "videoAudioSettings": { + "type": "string", + "enum": [ + "both", + "none", + "audio-only" + ], + "default": "none" + }, + "videoRoomUrl": { + "type": "string", + "default": "" + }, + "attendeeRestrictionType": { "anyOf": [ { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "enum": [ + "open", + "customer", + "rules" + ] }, { "type": "null" } ] }, - "lastActiveGuideSection": { + "productDetailDefaultPageId": { "anyOf": [ { "type": "string", @@ -17533,7 +17131,7 @@ } ] }, - "currentPageId": { + "quickviewPageId": { "anyOf": [ { "type": "string", @@ -17544,7 +17142,7 @@ } ] }, - "currentSectionId": { + "productListingDefaultPageId": { "anyOf": [ { "type": "string", @@ -17553,222 +17151,350 @@ { "type": "null" } - ] - }, - "currentSlideAlias": { - "type": "integer", - "default": 0 + ] + }, + "broadcastMode": { + "type": "boolean", + "default": false + }, + "viewMode": { + "type": "string", + "enum": [ + "onlyYou", + "presentation", + "videoGrid" + ], + "default": "presentation" + }, + "allowScreenSharing": { + "type": "boolean", + "default": false + }, + "extensions": { + "type": "array", + "default": [] + } + } + }, + "DynamicInteractionBody": { + "oneOf": [ + { + "$ref": "#/components/schemas/EmptyInteraction" + }, + { + "$ref": "#/components/schemas/ProductInteraction" + }, + { + "$ref": "#/components/schemas/DynamicPageOpenedInteraction" + }, + { + "$ref": "#/components/schemas/DynamicPageClosedInteraction" + }, + { + "$ref": "#/components/schemas/DynamicProductPageOpenedInteraction" + }, + { + "$ref": "#/components/schemas/PageViewedInteraction" + }, + { + "$ref": "#/components/schemas/GuideHoveredInteraction" + }, + { + "$ref": "#/components/schemas/ToggleBroadcastModeInteraction" + }, + { + "$ref": "#/components/schemas/ViewModeChangedInteraction" + }, + { + "$ref": "#/components/schemas/ScreenSharingToggledInteraction" + } + ], + "discriminator": { + "propertyName": "name", + "mapping": { + "keep.alive": "#/components/schemas/EmptyInteraction", + "quickview.opened": "#/components/schemas/EmptyInteraction", + "quickview.closed": "#/components/schemas/EmptyInteraction", + "attendee.leave": "#/components/schemas/EmptyInteraction", + "remote.checkout.accepted": "#/components/schemas/EmptyInteraction", + "remote.checkout.denied": "#/components/schemas/EmptyInteraction", + "product.viewed": "#/components/schemas/ProductInteraction", + "attendee.product.collection.liked": "#/components/schemas/ProductInteraction", + "attendee.product.collection.disliked": "#/components/schemas/ProductInteraction", + "attendee.product.collection.removed": "#/components/schemas/ProductInteraction", + "dynamicPage.opened": "#/components/schemas/DynamicPageOpenedInteraction", + "dynamicPage.closed": "#/components/schemas/DynamicPageClosedInteraction", + "dynamicProductPage.opened": "#/components/schemas/DynamicProductPageOpenedInteraction", + "page.viewed": "#/components/schemas/PageViewedInteraction", + "guide.hovered": "#/components/schemas/GuideHoveredInteraction", + "broadcastMode.toggled": "#/components/schemas/ToggleBroadcastModeInteraction", + "viewMode.changed": "#/components/schemas/ViewModeChangedInteraction", + "screenSharing.toggled": "#/components/schemas/ScreenSharingToggledInteraction" + } + } + }, + "BaseInteraction": { + "type": "object", + "properties": { + "triggeredAt": { + "type": "string", + "description": "The time when the interaction was triggered", + "default": "now" + }, + "lifeTimeInSeconds": { + "type": "integer", + "description": "The time in seconds how long the interaction should be stored in the database", + "default": -1 + } + } + }, + "EmptyInteraction": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseInteraction" + }, + { + "type": "object", + "required": [ + "name", + "payload" + ], + "properties": { + "name": { + "type": "string" + }, + "payload": { + "type": "object", + "additionalProperties": false, + "minProperties": 0, + "maxProperties": 0 + } + } + } + ] + }, + "ProductInteraction": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseInteraction" }, - "currentSlideData": { - "anyOf": [ - { - "$ref": "#/components/schemas/DynamicProductListingPageOpenedPayload" + { + "type": "object", + "required": [ + "name", + "payload" + ], + "properties": { + "name": { + "type": "string" }, - { - "type": "null" + "payload": { + "$ref": "#/components/schemas/ProductPayload" } - ] - }, - "currentDynamicPage": { - "$ref": "#/components/schemas/DynamicPageOpenedPayload" - }, - "started": { - "type": "boolean", - "default": false - }, - "running": { - "type": "boolean", - "default": false - }, - "ended": { - "type": "boolean", - "default": false + } + } + ] + }, + "DynamicPageOpenedInteraction": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseInteraction" }, - "startedAt": { - "anyOf": [ - { - "type": "string", - "format": "date-time" + { + "type": "object", + "required": [ + "name", + "payload" + ], + "properties": { + "name": { + "type": "string" }, - { - "type": "null" + "payload": { + "$ref": "#/components/schemas/DynamicPageOpenedPayload" } - ] + } + } + ] + }, + "DynamicProductPageOpenedInteraction": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseInteraction" }, - "endedAt": { - "anyOf": [ - { - "type": "string", - "format": "date-time" + { + "type": "object", + "required": [ + "name", + "payload" + ], + "properties": { + "name": { + "type": "string" }, - { - "type": "null" + "payload": { + "$ref": "#/components/schemas/DynamicProductPageOpenedPayload" } - ] + } + } + ] + }, + "DynamicPageClosedInteraction": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseInteraction" }, - "accessibleFrom": { - "anyOf": [ - { - "type": "string", - "format": "date-time" + { + "type": "object", + "required": [ + "name", + "payload" + ], + "properties": { + "name": { + "type": "string" }, - { - "type": "null" + "payload": { + "$ref": "#/components/schemas/DynamicPageClosedPayload" } - ] + } + } + ] + }, + "PageViewedInteraction": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseInteraction" }, - "accessibleTo": { - "anyOf": [ - { - "type": "string", - "format": "date-time" + { + "type": "object", + "required": [ + "name", + "payload" + ], + "properties": { + "name": { + "type": "string" }, - { - "type": "null" + "payload": { + "$ref": "#/components/schemas/PageViewedPayload" } - ] - }, - "appointmentMode": { - "type": "string", - "enum": [ - "guided", - "self" - ] + } + } + ] + }, + "GuideHoveredInteraction": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseInteraction" }, - "videoAudioSettings": { - "type": "string", - "enum": [ - "both", - "none", - "audio-only" + { + "type": "object", + "required": [ + "name", + "payload" ], - "default": "none" - }, - "videoRoomUrl": { - "type": "string", - "default": "" - }, - "attendeeRestrictionType": { - "anyOf": [ - { - "type": "string", - "enum": [ - "open", - "customer", - "rules" - ] + "properties": { + "name": { + "type": "string" }, - { - "type": "null" + "payload": { + "$ref": "#/components/schemas/GuideHoveredPayload" } - ] + } + } + ] + }, + "ToggleBroadcastModeInteraction": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseInteraction" }, - "productDetailDefaultPageId": { - "anyOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + { + "type": "object", + "required": [ + "name", + "payload" + ], + "properties": { + "name": { + "type": "string" }, - { - "type": "null" + "payload": { + "$ref": "#/components/schemas/ToggleBroadcastModePayload" } - ] + } + } + ] + }, + "ViewModeChangedInteraction": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseInteraction" }, - "quickviewPageId": { - "anyOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + { + "type": "object", + "required": [ + "name", + "payload" + ], + "properties": { + "name": { + "type": "string" }, - { - "type": "null" + "payload": { + "$ref": "#/components/schemas/ViewModeChangedPayload" } - ] + } + } + ] + }, + "ScreenSharingToggledInteraction": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseInteraction" }, - "productListingDefaultPageId": { - "anyOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + { + "type": "object", + "required": [ + "name", + "payload" + ], + "properties": { + "name": { + "type": "string" }, - { - "type": "null" + "payload": { + "$ref": "#/components/schemas/ScreenSharingToggledPayload" } - ] - }, - "broadcastMode": { - "type": "boolean", - "default": false - }, - "viewMode": { - "type": "string", - "enum": [ - "onlyYou", - "presentation", - "videoGrid" - ], - "default": "presentation" - }, - "allowScreenSharing": { - "type": "boolean", - "default": false - }, - "extensions": { - "type": "array", - "default": [] + } } - } + ] }, - "ViewModeChangedPayload": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "description": "The view mode of presentation", - "enum": [ - "onlyYou", - "presentation", - "videoGrid" - ], - "default": "presentation" - } - } + "CreateInteractionRequestBody": { + "$ref": "#/components/schemas/DynamicInteractionBody" }, - "ScreenSharingToggledPayload": { + "ProductPayload": { "type": "object", "required": [ - "active" + "productId" ], "properties": { - "active": { - "type": "boolean", - "description": "Whether the screen sharing is active or not" + "productId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "the id from the product which is used in the interaction" } } }, - "AttendeeProductCollectionLastSeenResponse": { - "type": "object", + "DynamicProductListingPageOpenedPayload": { + "required": [ + "page" + ], "properties": { - "collection": { - "type": "object", - "properties": { - "lastSeen": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Product ids from the collection" - } - } - } - } - }, - "example": { - "collection": { - "lastSeen": [ - "0015b3d83df441e490da7f6880a9c2da", - "60793d25cbab473f92c405ce0525f3ec" - ] + "page": { + "type": "integer", + "description": "Current page position in the pagination" } } }, @@ -18216,75 +17942,388 @@ "customFields": null, "apiAlias": "cms_section" } - ], - "translations": null, - "cssClass": null, - "config": null, - "previewMediaId": null, - "previewMedia": null, - "landingPages": null, - "id": "33e88c7994fa4cf79a1265e5105b93b2", - "customFields": null, - "apiAlias": "cms_page" + ], + "translations": null, + "cssClass": null, + "config": null, + "previewMediaId": null, + "previewMedia": null, + "landingPages": null, + "id": "33e88c7994fa4cf79a1265e5105b93b2", + "customFields": null, + "apiAlias": "cms_page" + }, + "category": { + "versionId": null, + "translated": { + "breadcrumb": [] + }, + "createdAt": null, + "updatedAt": null, + "afterCategoryId": null, + "parentId": null, + "mediaId": null, + "name": null, + "breadcrumb": [], + "path": null, + "level": null, + "active": null, + "childCount": null, + "visibleChildCount": 0, + "displayNestedProducts": null, + "parent": null, + "children": null, + "translations": null, + "media": null, + "cmsPageId": null, + "cmsPageIdSwitched": false, + "cmsPage": null, + "linkType": null, + "linkNewTab": null, + "internalLink": null, + "externalLink": null, + "visible": null, + "type": null, + "productAssignmentType": null, + "description": null, + "metaTitle": null, + "metaDescription": null, + "keywords": null, + "seoUrls": null, + "customEntityTypeId": null, + "id": "34f21c5eb6d54a939f10973204aa5f08", + "customFields": null, + "apiAlias": "category" + }, + "apiAlias": "pwa_page_result" + } + }, + "GuideHoveredPayload": { + "type": "object", + "properties": { + "hoveredElementId": { + "anyOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "the id from the product which is used in the interaction" + }, + { + "type": "null" + } + ] + } + } + }, + "AbstractDynamicPageOpenedPayload": { + "type": "object", + "required": [ + "pageId", + "type" + ], + "properties": { + "pageId": { + "type": "string", + "pattern": "^[a-f0-9]{32}$", + "description": "The id of the current dynamic page" + }, + "type": { + "type": "string", + "description": "The type of the current dynamic page" + }, + "opened": { + "type": "boolean", + "default": true + }, + "position": { + "type": "integer", + "description": "The position of the dynamic page in the list of dynamic pages" + } + } + }, + "UpdateAttendeeRequestBody": { + "type": "object", + "properties": { + "attendeeName": { + "type": "string", + "description": "Name of the attendee" + }, + "videoUserId": { + "type": "string", + "description": "Id of the attendee in the video chat tool" + } + } + }, + "CreateAppointmentRequestBody": { + "type": "object", + "description": "Includes all data you will need to attend to a appointment.", + "required": [ + "salutationId", + "firstName", + "lastName", + "emailAddress", + "subject" + ], + "properties": { + "salutationId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The id of the salutation" + }, + "firstName": { + "type": "string", + "description": "The first name of the requester" + }, + "lastName": { + "type": "string", + "description": "The last name of the requester" + }, + "emailAddress": { + "type": "string", + "format": "email", + "description": "The email address of the requester" + }, + "companyName": { + "type": "string", + "description": "The company name of the requester" + }, + "phoneNumber": { + "type": "string", + "description": "The phone number of the requester" + }, + "subject": { + "type": "string", + "description": "The subject of the appointment" + }, + "message": { + "type": "string", + "description": "The message of the appointment" + } + }, + "example": { + "id": "2d2c358f1ca04098aacf12873c2eed94", + "appointmentId": "3b3c358f1ca04098aacf12873c2eed94", + "salutationId": "5m6c358f1ca04098aacf12873c2eed94", + "firstName": "John", + "lastName": "Doe", + "emailAddress": "john@example.com", + "companyName": "Example Inc.", + "phoneNumber": "+1234567890", + "subject": "Appointment subject", + "message": "Appointment message", + "requestedById": "7b7c358f1ca04098aacf12873c2eed94" + } + }, + "DynamicPageOpenedPayload": { + "allOf": [ + { + "$ref": "#/components/schemas/AbstractDynamicPageOpenedPayload" + } + ] + }, + "ToggleBroadcastModePayload": { + "type": "object", + "required": [ + "active" + ], + "properties": { + "active": { + "type": "boolean", + "description": "Status if the mode is toggled to active or inactive" + } + } + }, + "DynamicProductPageOpenedPayload": { + "allOf": [ + { + "$ref": "#/components/schemas/AbstractDynamicPageOpenedPayload" + } + ], + "required": [ + "productId" + ], + "properties": { + "productId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "the id from the product which is shown on the dynamic page" + } + } + }, + "AppointmentBasicSettingResponse": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "description": "The API alias of the appointment basic setting" + }, + "mode": { + "type": "string", + "description": "The mode of the interaction", + "enum": [ + "guided", + "self" + ] + }, + "attendeeRestrictionType": { + "type": "string", + "description": "The type of attendee restriction", + "enum": [ + "open", + "customer", + "rules" + ] + }, + "videoAudioSettings": { + "type": "string", + "description": "The video and audio settings", + "enum": [ + "none", + "both", + "audio-only" + ] + }, + "canSendRequestEmail": { + "type": "boolean", + "description": "Indicates if request emails can be sent", + "default": false + }, + "canBookAppointment": { + "type": "boolean", + "description": "Indicates if appointments can be booked", + "default": false + }, + "enableWishlist": { + "type": "boolean", + "description": "Indicates if the wishlist is enabled", + "default": false + }, + "bookingLink": { + "description": "The booking link", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] }, - "category": { - "versionId": null, - "translated": { - "breadcrumb": [] - }, - "createdAt": null, - "updatedAt": null, - "afterCategoryId": null, - "parentId": null, - "mediaId": null, - "name": null, - "breadcrumb": [], - "path": null, - "level": null, - "active": null, - "childCount": null, - "visibleChildCount": 0, - "displayNestedProducts": null, - "parent": null, - "children": null, - "translations": null, - "media": null, - "cmsPageId": null, - "cmsPageIdSwitched": false, - "cmsPage": null, - "linkType": null, - "linkNewTab": null, - "internalLink": null, - "externalLink": null, - "visible": null, - "type": null, - "productAssignmentType": null, - "description": null, - "metaTitle": null, - "metaDescription": null, - "keywords": null, - "seoUrls": null, - "customEntityTypeId": null, - "id": "34f21c5eb6d54a939f10973204aa5f08", - "customFields": null, - "apiAlias": "category" + "appointmentName": { + "type": "string", + "description": "The name of the appointment" }, - "apiAlias": "pwa_page_result" + "salesChannelName": { + "type": "string", + "description": "The name of the sales channel" + } + }, + "example": { + "apiAlias": "appointment_basic_setting", + "mode": "self", + "attendeeRestrictionType": "open", + "videoAudioSettings": "none", + "canSendRequestEmail": false, + "canBookAppointment": false, + "enableWishlist": false, + "bookingLink": null, + "appointmentName": "dsr11", + "salesChannelName": "Storefront" + } + }, + "ClientPresentationStateResponse": { + "type": "object", + "properties": { + "stateForAll": { + "$ref": "#/components/schemas/StateForAll" + }, + "stateForClients": { + "$ref": "#/components/schemas/StateForClients" + } + }, + "example": { + "stateForAll": { + "currentGuideProductId": null, + "lastActiveGuideSection": null, + "currentPageId": null, + "currentSectionId": null, + "currentSlideAlias": 0, + "currentDynamicPage": null, + "started": false, + "running": false, + "ended": false, + "startedAt": null, + "endedAt": null, + "accessibleFrom": null, + "accessibleTo": null, + "appointmentMode": "guided", + "videoAudioSettings": "both", + "videoRoomUrl": "", + "attendeeRestrictionType": "open", + "productDetailDefaultPageId": "bea211b5099241719830df8026624f7f", + "quickviewPageId": "182d3f7f988044adbba449b70c8bc472", + "productListingDefaultPageId": "33e88c7994fa4cf79a1265e5105b93b2", + "broadcastMode": false, + "extensions": [] + }, + "stateForClients": { + "videoClientToken": null, + "hoveredElementId": null, + "extensions": [] + }, + "apiAlias": "swag_digital_sales_rooms_content_presentation_state_sales_channel_get_get_client_presentation_state_struct" } }, - "GuideHoveredPayload": { + "PresentationCmsPage": { + "allOf": [ + { + "$ref": "#/components/schemas/DsrPresentationCmsPage" + }, + { + "type": "object", + "properties": { + "pickedProductIds": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Product id" + } + }, + { + "type": "null" + } + ], + "description": "The product id is assigned to presentation if it's product listing or instant listing" + } + } + } + ] + }, + "AttendeeProductCollectionLastSeenResponse": { "type": "object", "properties": { - "hoveredElementId": { - "anyOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "the id from the product which is used in the interaction" - }, - { - "type": "null" + "collection": { + "type": "object", + "properties": { + "lastSeen": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Product ids from the collection" + } } + } + } + }, + "example": { + "collection": { + "lastSeen": [ + "0015b3d83df441e490da7f6880a9c2da", + "60793d25cbab473f92c405ce0525f3ec" ] } } @@ -18423,34 +18462,65 @@ } } }, - "204": { - "description": "No Content" - }, - "CurrencyListResponse": { - "description": "Entity search result containing currencies.", + "429": { + "description": "Too Many Requests", "content": { + "application/vnd.api+json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "429", + "title": "Too Many Requests", + "description": "Rate limit exceeded. Please wait before retrying." + } + ] + } + }, "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Currency" - } + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "429", + "title": "Too Many Requests", + "description": "Rate limit exceeded. Please wait before retrying." + } + ] } } } }, - "SalutationListResponse": { - "description": "Entity search result containing salutations.", + "204": { + "description": "No Content" + }, + "ShippingMethodListResponse": { + "description": "Entity search result containing shipping methods.", "content": { "application/json": { "schema": { "allOf": [ { + "required": [ + "elements" + ], "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Salutation" + "$ref": "#/components/schemas/ShippingMethod" } } }, @@ -18464,57 +18534,50 @@ } } }, - "ContextTokenResponse": { - "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", - "headers": { - "sw-context-token": { - "description": "Contains sw-context-token value", - "schema": { - "type": "string" - } - } - }, + "CountryStateListResponse": { + "description": "Entity search result containing countries.", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "description": "Define the URL which browser will be redirected to", - "type": "string" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CountryState" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" } - } + ] } } } }, - "ShippingMethodListResponse": { - "description": "Entity search result containing shipping methods.", + "SeoUrlListResponse": { + "description": "Entity search result containing seo urls.", "content": { "application/json": { "schema": { "allOf": [ { - "required": [ - "elements" - ], "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/ShippingMethod" + "$ref": "#/components/schemas/SeoUrl" } } }, - "type": "object" + "type": "object", + "required": [ + "elements" + ] }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -18524,6 +18587,32 @@ } } }, + "PaymentMethodListResponse": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentMethod" + } + } + }, + "type": "object" + } + } + } + }, "OpenApi3": { "description": "Returns information about the store API.", "content": { @@ -18713,22 +18802,22 @@ } } }, - "CountryStateListResponse": { - "description": "Entity search result containing countries.", + "CategoryListResponse": { + "description": "Entity search result containing categories.", "content": { "application/json": { "schema": { "allOf": [ { + "type": "object", "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/CountryState" + "$ref": "#/components/schemas/Category" } } - }, - "type": "object" + } }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -18738,76 +18827,46 @@ } } }, - "PaymentMethodListResponse": { - "description": "", - "content": { - "application/json": { + "ContextTokenResponse": { + "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", + "headers": { + "sw-context-token": { + "description": "Contains sw-context-token value", "schema": { - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PaymentMethod" - } - } - }, - "type": "object" + "type": "string" } } - } - }, - "SeoUrlListResponse": { - "description": "Entity search result containing seo urls.", + }, "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } - } - }, - "type": "object", - "required": [ - "elements" - ] - }, - { - "$ref": "#/components/schemas/EntitySearchResult" + "type": "object", + "properties": { + "redirectUrl": { + "description": "Define the URL which browser will be redirected to", + "type": "string" } - ] + } } } } }, - "CategoryListResponse": { - "description": "Entity search result containing categories.", + "SalutationListResponse": { + "description": "Entity search result containing salutations.", "content": { "application/json": { "schema": { "allOf": [ { - "type": "object", "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Category" + "$ref": "#/components/schemas/Salutation" } } - } + }, + "type": "object" }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -18845,21 +18904,31 @@ } } }, - "ProductListResponse": { - "description": "Entity search result containing products", + "CurrencyListResponse": { + "description": "Entity search result containing currencies.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Currency" + } + } + } + } + }, + "CountryListResponse": { + "description": "Entity search result containing countries.", "content": { "application/json": { "schema": { "allOf": [ { - "required": [ - "elements" - ], "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Product" + "$ref": "#/components/schemas/Country" } } }, @@ -18873,18 +18942,21 @@ } } }, - "CountryListResponse": { - "description": "Entity search result containing countries.", + "ProductListResponse": { + "description": "Entity search result containing products", "content": { "application/json": { "schema": { "allOf": [ { + "required": [ + "elements" + ], "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Country" + "$ref": "#/components/schemas/Product" } } }, @@ -18930,38 +19002,6 @@ "pattern": "^[0-9a-f]{32}$" } }, - "noAggregations": { - "name": "no-aggregations", - "in": "query", - "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", - "required": false, - "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "onlyAggregations": { - "name": "only-aggregations", - "in": "query", - "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", - "required": false, - "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, "criteriaPage": { "name": "page", "in": "query", @@ -19158,6 +19198,38 @@ "format": "base64url", "example": "H4sIAAAAAAAAA6tWykpNzFGyqlbKz8lPTSxRslJKSi0pzSsFAGcQr7sHAAAA" } + }, + "noAggregations": { + "name": "no-aggregations", + "in": "query", + "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", + "required": false, + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "onlyAggregations": { + "name": "only-aggregations", + "in": "query", + "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", + "required": false, + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } } }, "securitySchemes": { @@ -19181,82 +19253,26 @@ } ], "paths": { - "/dsr/product-listing": { + "/dsr/account/update-default-info": { "post": { "tags": [ - "Product" + "Customer account" ], - "summary": "Fetch a product listing by criteria", - "description": "Fetches a product listing for a given criteria. It also provides filters, sortings and property aggregations, analogous to the /product-listing endpoint.", - "operationId": "dsrProductListing", + "summary": "Update customer default info", + "description": "Mark the customer who was created by admin from DSR has already updated the default info when the customer first login", + "operationId": "dsrAccountUpdateDefaultInfo", "parameters": [ { "$ref": "#/components/parameters/swLanguageId" } ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ], - "anyOf": [ - { - "properties": { - "interaction": { - "type": "boolean", - "default": false, - "description": "Load interaction (like & dislike) to product of attendee. It will be added into product extensions named interaction" - }, - "useIdSorting": { - "type": "boolean", - "default": false, - "description": "Use id sorting instead of other sorting fields" - }, - "loadVariants": { - "type": "boolean", - "default": false, - "description": "load all variants following the main products" - }, - "loadAllIds": { - "type": "boolean", - "default": false, - "description": "Load all product ids, you can access it from `extensions.allIds` of the response" - } - } - } - ] - } - } - } - }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { - "type": "object", - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -19270,24 +19286,15 @@ ] } }, - "/dsr/product/{productId}": { - "get": { + "/dsr/customer/wishlist-product-ids": { + "post": { "tags": [ - "Shop pages" + "Wishlist" ], - "summary": "Load product detail page", - "description": "Load product detail page with product id", - "operationId": "dsrReadProductDetailPage", + "summary": "Load customer wishlist product ids", + "description": "Load customer wishlist product ids", + "operationId": "dsrLoadCustomerWishlistProductIds", "parameters": [ - { - "name": "productId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, { "$ref": "#/components/parameters/swLanguageId" } @@ -19298,7 +19305,29 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductPageResult" + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "default": "array_struct" + }, + "wishlistProductIds": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "example": { + "apiAlias": "array_struct", + "wishlistProductIds": [ + "01951c1b08247366b6c29989c74b048d", + "01951c1b0ad070b689596328fa27568b", + "01951c359620703b833179608409e270", + "01951c3d327b72d59694fc992aac69a5", + "01951c3fe62a71c5a5f0523d87af0800" + ] } } } @@ -19312,56 +19341,79 @@ ] } }, - "/dsr/appointment/{presentationPath}/join-as-client": { + "/dsr/customer/generate-login-token": { "post": { "tags": [ - "Appointment" + "Customer account" ], - "summary": "Join a meeting as a attendee", - "description": "Returns the client join appointment response.", - "operationId": "joinAppointmentAsClient", - "parameters": [ - { - "name": "presentationPath", - "in": "path", - "description": "Presentation path", - "required": true, - "schema": { + "summary": "Generate login token that can be used to login to Storefront from DSR", + "description": "Generate login token that can be used to login to Storefront from DSR", + "operationId": "dsrGenerateLoginToken", + "body": { + "type": "object", + "properties": { + "storefrontUrl": { "type": "string" } - }, - { - "$ref": "#/components/parameters/swLanguageId" } - ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "properties": { - "attendeeName": { - "type": "string", - "required": false, - "description": "The name of the attendee" - }, - "currentAttendeeId": { - "type": "string", - "required": false, - "description": "Identifier of the current attendee you want log in as" + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "default": "dsr.storefront-login.response" + }, + "token": { + "type": "string" + } } } } } } }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/dsr/customer/automatic-login": { + "post": { + "tags": [ + "Customer account" + ], + "summary": "Automatic login from DSR to Storefront", + "description": "Automatic login from DSR to Storefront", + "operationId": "dsrAutomaticLogin", + "body": { + "type": "object", + "properties": { + "token": { + "type": "string" + } + } + }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/JoinAppointmentResponse" + "$ref": "#/components/responses/ContextTokenResponse" } } } @@ -19369,24 +19421,61 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" } ] } }, - "/dsr/appointment/{presentationPath}/basic-setting": { + "/dsr/customer/migrate-visitor-session": { + "post": { + "tags": [ + "Customer account" + ], + "summary": "Migrate visitor session from DSR to Storefront", + "description": "Migrate visitor session from DSR to Storefront", + "operationId": "dsrMigrateVisitorSession", + "body": { + "type": "object", + "properties": { + "contextToken": { + "type": "string" + } + } + }, + "responses": { + "204": [] + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/dsr/shop-pages/{layoutName}": { "get": { "tags": [ - "Appointment" + "Shop pages" ], - "summary": "Get the appointment's basic settings", - "description": "Get all the basic settings of the appointment", - "operationId": "dsrReadAppointmentSettings", + "summary": "Get shop pages", + "description": "Get shop pages by layout name", + "operationId": "dsrReadShopPage", "parameters": [ { - "name": "presentationPath", + "name": "layoutName", "in": "path", - "description": "Presentation path", "required": true, "schema": { "type": "string" @@ -19402,7 +19491,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AppointmentBasicSettingResponse" + "$ref": "#/components/schemas/CmsPage" } } } @@ -19415,14 +19504,14 @@ ] } }, - "/dsr/appointment/collection/last-seen": { + "/dsr/appointment/presentation": { "get": { "tags": [ - "Appointment" + "Presentation" ], - "summary": "Get the last seen products for the current attendee", - "description": "Returns the the last seen products for the requesting client", - "operationId": "getLastSeenProducts", + "summary": "Fetch presentation structure and flat navigation", + "description": "Resolves the presentation structure and navigation by using the attendeeContext information. There will be NO Slot-Data inside call store-api.dsr.presentation-data for that", + "operationId": "getPresentationStructure", "parameters": [ { "$ref": "#/components/parameters/swLanguageId" @@ -19434,7 +19523,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AttendeeProductCollectionLastSeenResponse" + "$ref": "#/components/schemas/PresentationStructure" } } } @@ -19448,32 +19537,29 @@ ] } }, - "/dsr/appointment/collection/{alias}/{productId}": { - "post": { + "/dsr/appointment/presentation/{presentationCmsPageId}/slide/{sectionId}": { + "get": { "tags": [ - "Appointment" + "Presentation" ], - "summary": "Add a product to the attendee product list", - "description": "Add a product with the alias to the product list of the attendee", - "operationId": "attendeeProductCollectionAddProduct", + "summary": "Fetch resolved data for specific slide", + "description": "Gives the resolved slot-data for the given slide index (slot-config)", + "operationId": "getSlideData", "parameters": [ { - "name": "alias", + "name": "presentationCmsPageId", "in": "path", - "description": "The alias of collection you want to add", + "description": "Presentation CMS page id for which the data is requested", "required": true, "schema": { "type": "string", - "enum": [ - "liked", - "disliked" - ] + "pattern": "^[0-9a-f]{32}$" } }, { - "name": "productId", + "name": "sectionId", "in": "path", - "description": "The product id you want to add", + "description": "CMS section id for which the data is requested", "required": true, "schema": { "type": "string", @@ -19485,9 +19571,15 @@ } ], "responses": { - "204": { + "200": { "description": "", - "content": [] + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PresentationSlideData" + } + } + } } }, "security": [ @@ -19496,43 +19588,72 @@ "ContextToken": [] } ] - }, - "delete": { + } + }, + "/dsr/appointment/presentation/{presentationCmsPageId}/slide/{sectionId}/products": { + "post": { "tags": [ - "Appointment" + "Presentation" ], - "summary": "Remove a product with the alias from the for the attendee product collection", - "description": "Removes the product with the matching alias from of the attendee product collection", - "operationId": "attendeeProductCollectionRemoveProduct", + "summary": "Fetch all products for specific slide", + "description": "Fetches all products for a specific slide", + "operationId": "getSlideProducts", "parameters": [ { - "name": "alias", + "name": "presentationCmsPageId", "in": "path", - "description": "The alias of collection you want to remove", + "description": "Presentation CMS page id for which the data is requested", "required": true, "schema": { "type": "string", - "enum": [ - "liked", - "disliked" - ] + "pattern": "^[0-9a-f]{32}$" } }, { - "name": "productId", + "name": "sectionId", "in": "path", - "description": "The product id you want to remove", + "description": "CMS section id for which the data is requested", "required": true, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + }, + { + "type": "object", + "properties": { + "interaction": { + "type": "boolean" + } + } + } + ] + } + } + } + }, "responses": { - "204": { + "200": { "description": "", - "content": [] + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + } } }, "security": [ @@ -19543,28 +19664,15 @@ ] } }, - "/dsr/appointment/collection/{alias}": { + "/dsr/appointment/presentation/state": { "get": { "tags": [ - "Appointment" + "Presentation" ], - "summary": "Get the product ids for the attendee in product collection with the matching alias", - "description": "Returns the product ids for the requesting attendee and matching alias", - "operationId": "getAttendeeProductCollection", + "summary": "Get the current presentation state", + "description": "Returns the presentation state for all and the client", + "operationId": "getClientPresentationState", "parameters": [ - { - "name": "alias", - "in": "path", - "description": "The alias of collection you want to get", - "required": true, - "schema": { - "type": "string", - "enum": [ - "liked", - "disliked" - ] - } - }, { "$ref": "#/components/parameters/swLanguageId" } @@ -19575,7 +19683,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AttendeeProductCollectionResponse" + "$ref": "#/components/schemas/ClientPresentationStateResponse" } } } @@ -19589,19 +19697,19 @@ ] } }, - "/dsr/appointment/{appointmentId}/download-ics": { - "post": { + "/dsr/quickview/{productId}/{cmsPageLayoutId}": { + "get": { "tags": [ - "Appointment" + "Presentation" ], - "summary": "Get the ics file to import to your calendar", - "description": "Returns the calendar file", - "operationId": "getCalendarFile", + "summary": "Fetch a cms page for quickview with product data", + "description": "Takes a product identifier and returns the preconfigured quickview CMS layout (defined in SwagDigitalSalesRooms.config.quickviewPageId ) hydrated with the product specific data", + "operationId": "resolveQuickviewPage", "parameters": [ { - "name": "appointmentId", + "name": "productId", "in": "path", - "description": "The appointment id you want to get the calendar file", + "description": "The product id", "required": true, "schema": { "type": "string", @@ -19609,34 +19717,41 @@ } }, { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "token" - ], - "properties": { - "token": { - "description": "The token will be attached to the invitation response link in the invitation mail", - "type": "string" - } - }, - "type": "object" - } + "name": "cmsPageLayoutId", + "in": "path", + "description": "The cms page id using as product quick view", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } - }, + ], "responses": { "200": { "description": "", "content": { - "text/calendar": { - "example": "BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:-//DIGITAL SALES ROOMS//Calendar//EN\nCALSCALE:GREGORIAN\nMETHOD:REQUEST\nBEGIN:VTIMEZONE\nTZID:UTC\nBEGIN:STANDARD\nDTSTART:20221016T102853Z\nTZOFFSETFROM:+0000\nTZOFFSETTO:+0000\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nUID:95f79a4ecfae4794ae2b65b018330f88@shopware.com\nDTSTAMP:20230713T102853Z\nSUMMARY:test send invitation\nDESCRIPTION:Hello\nLOCATION:https://localhost.test/presentation/95f79a4ecfae47\n 94ae2b65b018330f88\nSTATUS:CANCELLED\nTRANSP:TRANSPARENT\nORGANIZER;CN=Phung Nguyen:MAILTO:p.nguyen@localhost.com\nATTENDEE;CN=p.test;RSVP=TRUE;PARTSTAT=NEEDS-ACTION:MAILTO:p.test@test.\n com\nDTSTART:20230713T121000Z\nDTEND:20230713T123000Z\nEND:VEVENT\nEND:VCALENDAR" + "application/json": { + "schema": { + "type": "object", + "properties": { + "cmsPage": { + "$ref": "#/components/schemas/CmsPage" + }, + "product": { + "$ref": "#/components/schemas/Product" + }, + "configurator": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PropertyGroup" + } + } + } + } } } } @@ -19649,23 +19764,22 @@ ] } }, - "/dsr/appointment/{appointmentId}/attendee/respond-invitation": { - "patch": { + "/dsr/appointment/{presentationPath}/join-as-client": { + "post": { "tags": [ "Appointment" ], - "summary": "Respond the appointment invitation", - "description": "Returns the appointment invitation status", - "operationId": "attendeeRespondInvitation", + "summary": "Join a meeting as a attendee", + "description": "Returns the client join appointment response.", + "operationId": "joinAppointmentAsClient", "parameters": [ { - "name": "appointmentId", + "name": "presentationPath", "in": "path", - "description": "The appointment id you respond to", + "description": "Presentation path", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } }, { @@ -19673,29 +19787,22 @@ } ], "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "required": [ - "token" - ], "properties": { - "token": { - "description": "The token will be attached to the invitation response link in the invitation mail", - "type": "string" + "attendeeName": { + "type": "string", + "required": false, + "description": "The name of the attendee" }, - "answer": { - "description": "The status you respond to", + "currentAttendeeId": { "type": "string", - "enum": [ - "accepted", - "maybe", - "declined" - ] + "required": false, + "description": "Identifier of the current attendee you want log in as" } - }, - "type": "object" + } } } } @@ -19706,7 +19813,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AttendeeRespondInvitationResponse" + "$ref": "#/components/schemas/JoinAppointmentResponse" } } } @@ -19714,62 +19821,40 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/dsr/appointment/attendee": { - "patch": { + "/dsr/appointment/{presentationPath}/basic-setting": { + "get": { "tags": [ "Appointment" ], - "summary": "Update attendee information", - "description": "Update attendee information", - "operationId": "updateAttendee", + "summary": "Get the appointment's basic settings", + "description": "Get all the basic settings of the appointment", + "operationId": "dsrReadAppointmentSettings", "parameters": [ + { + "name": "presentationPath", + "in": "path", + "description": "Presentation path", + "required": true, + "schema": { + "type": "string" + } + }, { "$ref": "#/components/parameters/swLanguageId" } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateAttendeeRequestBody" - } - } - } - }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "default": "dsr.appointment.update-attendee", - "description": "The api alias of the API" - }, - "data": { - "items": { - "type": "string", - "description": "Updated data" - }, - "description": "The data is used to update the attendee information" - } - }, - "example": { - "data": { - "attendeeName": "John Doe", - "videoUserId": "1234567890" - } - } + "$ref": "#/components/schemas/AppointmentBasicSettingResponse" } } } @@ -19777,92 +19862,31 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/dsr/interaction": { - "post": { - "tags": [ - "Appointment" - ], - "summary": "Add a interaction to log", - "description": "Create a interaction log entry in a specific appointment", - "operationId": "addInteraction", - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateInteractionRequestBody" - } - } - } - }, - "responses": { - "200": { - "description": "" - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/dsr/appointment/request": { - "post": { + "/dsr/appointment/collection/last-seen": { + "get": { "tags": [ "Appointment" ], - "summary": "Create appointment request", - "description": "Create a appointment request for a specific appointment", - "operationId": "createAppointmentRequest", + "summary": "Get the last seen products for the current attendee", + "description": "Returns the the last seen products for the requesting client", + "operationId": "getLastSeenProducts", "parameters": [ { "$ref": "#/components/parameters/swLanguageId" } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateAppointmentRequestBody" - } - } - } - }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "default": "dsr.appointment.create-appointment-request", - "description": "The api alias of the API" - }, - "data": { - "type": "array", - "items": { - "type": "string" - }, - "description": "The data is used to create the appointment request" - } - } + "$ref": "#/components/schemas/AttendeeProductCollectionLastSeenResponse" } } } @@ -19876,63 +19900,46 @@ ] } }, - "/dsr/appointment/{appointmentId}/shopping-lists": { - "get": { + "/dsr/appointment/collection/{alias}/{productId}": { + "post": { "tags": [ "Appointment" ], - "summary": "Load line item ids of a shopping lists from appointment cache", - "description": "Load line item ids of a shopping lists from the appointment cache", - "operationId": "getSharingShoppingList", + "summary": "Add a product to the attendee product list", + "description": "Add a product with the alias to the product list of the attendee", + "operationId": "attendeeProductCollectionAddProduct", "parameters": [ { - "name": "appointmentId", + "name": "alias", "in": "path", - "description": "The appointment id you are joining", + "description": "The alias of collection you want to add", "required": true, "schema": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "enum": [ + "liked", + "disliked" + ] } }, { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "default": "dsr.appointment.load-shopping-lists", - "description": "The api alias of the API" - }, - "data": { - "type": "object", - "example": { - "apiAlias": "dsr.appointment.load-shopping-lists", - "data": { - "01938f89c632709ba4d65eb53604bf5b": { - "quantity": "1" - }, - "01938f89c8647036a617b7d88e1e24f5": { - "quantity": "1" - }, - "01938f8a23d47305b1e289163cea5074": { - "quantity": "1" - } - } - } - } - } - } - } + "name": "productId", + "in": "path", + "description": "The product id you want to add", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "responses": { + "204": { + "description": "", + "content": [] } }, "security": [ @@ -19941,31 +19948,43 @@ "ContextToken": [] } ] - } - }, - "/dsr/appointment/presentation": { - "get": { + }, + "delete": { "tags": [ - "Presentation" + "Appointment" ], - "summary": "Fetch presentation structure and flat navigation", - "description": "Resolves the presentation structure and navigation by using the attendeeContext information. There will be NO Slot-Data inside call store-api.dsr.presentation-data for that", - "operationId": "getPresentationStructure", + "summary": "Remove a product with the alias from the for the attendee product collection", + "description": "Removes the product with the matching alias from of the attendee product collection", + "operationId": "attendeeProductCollectionRemoveProduct", "parameters": [ { - "$ref": "#/components/parameters/swLanguageId" + "name": "alias", + "in": "path", + "description": "The alias of collection you want to remove", + "required": true, + "schema": { + "type": "string", + "enum": [ + "liked", + "disliked" + ] + } + }, + { + "name": "productId", + "in": "path", + "description": "The product id you want to remove", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } ], "responses": { - "200": { + "204": { "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PresentationStructure" - } - } - } + "content": [] } }, "security": [ @@ -19976,33 +19995,26 @@ ] } }, - "/dsr/appointment/presentation/{presentationCmsPageId}/slide/{sectionId}": { + "/dsr/appointment/collection/{alias}": { "get": { "tags": [ - "Presentation" + "Appointment" ], - "summary": "Fetch resolved data for specific slide", - "description": "Gives the resolved slot-data for the given slide index (slot-config)", - "operationId": "getSlideData", + "summary": "Get the product ids for the attendee in product collection with the matching alias", + "description": "Returns the product ids for the requesting attendee and matching alias", + "operationId": "getAttendeeProductCollection", "parameters": [ { - "name": "presentationCmsPageId", - "in": "path", - "description": "Presentation CMS page id for which the data is requested", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "sectionId", + "name": "alias", "in": "path", - "description": "CMS section id for which the data is requested", + "description": "The alias of collection you want to get", "required": true, "schema": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "enum": [ + "liked", + "disliked" + ] } }, { @@ -20015,7 +20027,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PresentationSlideData" + "$ref": "#/components/schemas/AttendeeProductCollectionResponse" } } } @@ -20029,29 +20041,19 @@ ] } }, - "/dsr/appointment/presentation/{presentationCmsPageId}/slide/{sectionId}/products": { + "/dsr/appointment/{appointmentId}/download-ics": { "post": { "tags": [ - "Presentation" + "Appointment" ], - "summary": "Fetch all products for specific slide", - "description": "Fetches all products for a specific slide", - "operationId": "getSlideProducts", + "summary": "Get the ics file to import to your calendar", + "description": "Returns the calendar file", + "operationId": "getCalendarFile", "parameters": [ { - "name": "presentationCmsPageId", - "in": "path", - "description": "Presentation CMS page id for which the data is requested", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "sectionId", + "name": "appointmentId", "in": "path", - "description": "CMS section id for which the data is requested", + "description": "The appointment id you want to get the calendar file", "required": true, "schema": { "type": "string", @@ -20063,22 +20065,20 @@ } ], "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - }, - { - "type": "object", - "properties": { - "interaction": { - "type": "boolean" - } - } + "required": [ + "token" + ], + "properties": { + "token": { + "description": "The token will be attached to the invitation response link in the invitation mail", + "type": "string" } - ] + }, + "type": "object" } } } @@ -20087,10 +20087,8 @@ "200": { "description": "", "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProductListingResult" - } + "text/calendar": { + "example": "BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:-//DIGITAL SALES ROOMS//Calendar//EN\nCALSCALE:GREGORIAN\nMETHOD:REQUEST\nBEGIN:VTIMEZONE\nTZID:UTC\nBEGIN:STANDARD\nDTSTART:20221016T102853Z\nTZOFFSETFROM:+0000\nTZOFFSETTO:+0000\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nUID:95f79a4ecfae4794ae2b65b018330f88@shopware.com\nDTSTAMP:20230713T102853Z\nSUMMARY:test send invitation\nDESCRIPTION:Hello\nLOCATION:https://localhost.test/presentation/95f79a4ecfae47\n 94ae2b65b018330f88\nSTATUS:CANCELLED\nTRANSP:TRANSPARENT\nORGANIZER;CN=Phung Nguyen:MAILTO:p.nguyen@localhost.com\nATTENDEE;CN=p.test;RSVP=TRUE;PARTSTAT=NEEDS-ACTION:MAILTO:p.test@test.\n com\nDTSTART:20230713T121000Z\nDTEND:20230713T123000Z\nEND:VEVENT\nEND:VCALENDAR" } } } @@ -20103,26 +20101,64 @@ ] } }, - "/dsr/appointment/presentation/state": { - "get": { + "/dsr/appointment/{appointmentId}/attendee/respond-invitation": { + "patch": { "tags": [ - "Presentation" + "Appointment" ], - "summary": "Get the current presentation state", - "description": "Returns the presentation state for all and the client", - "operationId": "getClientPresentationState", + "summary": "Respond the appointment invitation", + "description": "Returns the appointment invitation status", + "operationId": "attendeeRespondInvitation", "parameters": [ + { + "name": "appointmentId", + "in": "path", + "description": "The appointment id you respond to", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, { "$ref": "#/components/parameters/swLanguageId" } ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "token" + ], + "properties": { + "token": { + "description": "The token will be attached to the invitation response link in the invitation mail", + "type": "string" + }, + "answer": { + "description": "The status you respond to", + "type": "string", + "enum": [ + "accepted", + "maybe", + "declined" + ] + } + }, + "type": "object" + } + } + } + }, "responses": { "200": { "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ClientPresentationStateResponse" + "$ref": "#/components/schemas/AttendeeRespondInvitationResponse" } } } @@ -20136,39 +20172,29 @@ ] } }, - "/dsr/quickview/{productId}/{cmsPageLayoutId}": { - "get": { + "/dsr/appointment/attendee": { + "patch": { "tags": [ - "Presentation" + "Appointment" ], - "summary": "Fetch a cms page for quickview with product data", - "description": "Takes a product identifier and returns the preconfigured quickview CMS layout (defined in SwagDigitalSalesRooms.config.quickviewPageId ) hydrated with the product specific data", - "operationId": "resolveQuickviewPage", + "summary": "Update attendee information", + "description": "Update attendee information", + "operationId": "updateAttendee", "parameters": [ - { - "name": "productId", - "in": "path", - "description": "The product id", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "cmsPageLayoutId", - "in": "path", - "description": "The cms page id using as product quick view", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, { "$ref": "#/components/parameters/swLanguageId" } ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateAttendeeRequestBody" + } + } + } + }, "responses": { "200": { "description": "", @@ -20177,17 +20203,23 @@ "schema": { "type": "object", "properties": { - "cmsPage": { - "$ref": "#/components/schemas/CmsPage" - }, - "product": { - "$ref": "#/components/schemas/Product" + "apiAlias": { + "type": "string", + "default": "dsr.appointment.update-attendee", + "description": "The api alias of the API" }, - "configurator": { - "type": "array", + "data": { "items": { - "$ref": "#/components/schemas/PropertyGroup" - } + "type": "string", + "description": "Updated data" + }, + "description": "The data is used to update the attendee information" + } + }, + "example": { + "data": { + "attendeeName": "John Doe", + "videoUserId": "1234567890" } } } @@ -20203,31 +20235,34 @@ ] } }, - "/dsr/account/update-default-info": { + "/dsr/interaction": { "post": { "tags": [ - "Customer account" + "Appointment" ], - "summary": "Update customer default info", - "description": "Mark the customer who was created by admin from DSR has already updated the default info when the customer first login", - "operationId": "dsrAccountUpdateDefaultInfo", + "summary": "Add a interaction to log", + "description": "Create a interaction log entry in a specific appointment", + "operationId": "addInteraction", "parameters": [ { "$ref": "#/components/parameters/swLanguageId" } ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateInteractionRequestBody" } } } }, + "responses": { + "200": { + "description": "" + } + }, "security": [ { "ApiKey": [], @@ -20236,19 +20271,29 @@ ] } }, - "/dsr/customer/wishlist-product-ids": { + "/dsr/appointment/request": { "post": { "tags": [ - "Wishlist" + "Appointment" ], - "summary": "Load customer wishlist product ids", - "description": "Load customer wishlist product ids", - "operationId": "dsrLoadCustomerWishlistProductIds", + "summary": "Create appointment request", + "description": "Create a appointment request for a specific appointment", + "operationId": "createAppointmentRequest", "parameters": [ { "$ref": "#/components/parameters/swLanguageId" } ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateAppointmentRequestBody" + } + } + } + }, "responses": { "200": { "description": "", @@ -20259,25 +20304,17 @@ "properties": { "apiAlias": { "type": "string", - "default": "array_struct" + "default": "dsr.appointment.create-appointment-request", + "description": "The api alias of the API" }, - "wishlistProductIds": { + "data": { "type": "array", "items": { "type": "string" - } + }, + "description": "The data is used to create the appointment request" } } - }, - "example": { - "apiAlias": "array_struct", - "wishlistProductIds": [ - "01951c1b08247366b6c29989c74b048d", - "01951c1b0ad070b689596328fa27568b", - "01951c359620703b833179608409e270", - "01951c3d327b72d59694fc992aac69a5", - "01951c3fe62a71c5a5f0523d87af0800" - ] } } } @@ -20291,22 +20328,29 @@ ] } }, - "/dsr/customer/generate-login-token": { - "post": { + "/dsr/appointment/{appointmentId}/shopping-lists": { + "get": { "tags": [ - "Customer account" + "Appointment" ], - "summary": "Generate login token that can be used to login to Storefront from DSR", - "description": "Generate login token that can be used to login to Storefront from DSR", - "operationId": "dsrGenerateLoginToken", - "body": { - "type": "object", - "properties": { - "storefrontUrl": { - "type": "string" + "summary": "Load line item ids of a shopping lists from appointment cache", + "description": "Load line item ids of a shopping lists from the appointment cache", + "operationId": "getSharingShoppingList", + "parameters": [ + { + "name": "appointmentId", + "in": "path", + "description": "The appointment id you are joining", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } - }, + ], "responses": { "200": { "description": "", @@ -20317,10 +20361,25 @@ "properties": { "apiAlias": { "type": "string", - "default": "dsr.storefront-login.response" + "default": "dsr.appointment.load-shopping-lists", + "description": "The api alias of the API" }, - "token": { - "type": "string" + "data": { + "type": "object", + "example": { + "apiAlias": "dsr.appointment.load-shopping-lists", + "data": { + "01938f89c632709ba4d65eb53604bf5b": { + "quantity": "1" + }, + "01938f89c8647036a617b7d88e1e24f5": { + "quantity": "1" + }, + "01938f8a23d47305b1e289163cea5074": { + "quantity": "1" + } + } + } } } } @@ -20333,27 +20392,59 @@ "ApiKey": [], "ContextToken": [] } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } ] } }, - "/dsr/customer/automatic-login": { + "/dsr/product-listing": { "post": { "tags": [ - "Customer account" + "Product" ], - "summary": "Automatic login from DSR to Storefront", - "description": "Automatic login from DSR to Storefront", - "operationId": "dsrAutomaticLogin", - "body": { - "type": "object", - "properties": { - "token": { - "type": "string" + "summary": "Fetch a product listing by criteria", + "description": "Fetches a product listing for a given criteria. It also provides filters, sortings and property aggregations, analogous to the /product-listing endpoint.", + "operationId": "dsrProductListing", + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ], + "anyOf": [ + { + "properties": { + "interaction": { + "type": "boolean", + "default": false, + "description": "Load interaction (like & dislike) to product of attendee. It will be added into product extensions named interaction" + }, + "useIdSorting": { + "type": "boolean", + "default": false, + "description": "Use id sorting instead of other sorting fields" + }, + "loadVariants": { + "type": "boolean", + "default": false, + "description": "load all variants following the main products" + }, + "loadAllIds": { + "type": "boolean", + "default": false, + "description": "Load all product ids, you can access it from `extensions.allIds` of the response" + } + } + } + ] + } } } }, @@ -20363,7 +20454,23 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/responses/ContextTokenResponse" + "type": "object", + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -20374,61 +20481,25 @@ "ApiKey": [], "ContextToken": [] } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } - ] - } - }, - "/dsr/customer/migrate-visitor-session": { - "post": { - "tags": [ - "Customer account" - ], - "summary": "Migrate visitor session from DSR to Storefront", - "description": "Migrate visitor session from DSR to Storefront", - "operationId": "dsrMigrateVisitorSession", - "body": { - "type": "object", - "properties": { - "contextToken": { - "type": "string" - } - } - }, - "responses": { - "204": [] - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } ] } }, - "/dsr/shop-pages/{layoutName}": { + "/dsr/product/{productId}": { "get": { "tags": [ "Shop pages" ], - "summary": "Get shop pages", - "description": "Get shop pages by layout name", - "operationId": "dsrReadShopPage", + "summary": "Load product detail page", + "description": "Load product detail page with product id", + "operationId": "dsrReadProductDetailPage", "parameters": [ { - "name": "layoutName", + "name": "productId", "in": "path", "required": true, "schema": { - "type": "string" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, { @@ -20441,7 +20512,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CmsPage" + "$ref": "#/components/schemas/ProductPageResult" } } } @@ -20449,7 +20520,8 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } diff --git a/SwagDigitalSalesRooms-storeapi.summary.json b/SwagDigitalSalesRooms-storeapi.summary.json index bd54b8c..c1d892b 100644 --- a/SwagDigitalSalesRooms-storeapi.summary.json +++ b/SwagDigitalSalesRooms-storeapi.summary.json @@ -255,6 +255,7 @@ "SalesChannelAnalytics", "SalesChannelContext", "SalesChannelDomain", + "SalesChannelFile", "SalesChannelTrackingCustomer", "SalesChannelTrackingOrder", "SalesChannelType", From f8ab52b135ca69559bb911039fa2626bf95e90fa Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 25 Jun 2026 16:34:36 +0200 Subject: [PATCH 14/16] [create-pull-request] automated change (#428) Co-authored-by: shopwareBot --- SwagCommercial-storeapi.json | 7106 +++++++++++++------------- SwagCommercial-storeapi.summary.json | 3 + 2 files changed, 3630 insertions(+), 3479 deletions(-) diff --git a/SwagCommercial-storeapi.json b/SwagCommercial-storeapi.json index 03d1208..e9859e8 100644 --- a/SwagCommercial-storeapi.json +++ b/SwagCommercial-storeapi.json @@ -443,6 +443,46 @@ }, "type": "object" }, + "AdvancedSearchCompoundDictionary": { + "required": [ + "id", + "languageId" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "languageId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "wordList": { + "type": "array", + "items": { + "type": "string" + } + }, + "minSubwordSize": { + "type": "integer", + "format": "int64" + }, + "onlyLongestMatch": { + "type": "boolean" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, "AdvancedSearchConfig": { "properties": { "id": { @@ -563,6 +603,42 @@ }, "type": "object" }, + "AdvancedSearchStopwordDictionary": { + "required": [ + "id", + "languageId" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "languageId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "stopwords": { + "type": "array", + "items": { + "type": "string" + } + }, + "extendsBuiltin": { + "type": "boolean" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, "AdvancedSearchSynonym": { "properties": { "id": { @@ -8630,9 +8706,6 @@ }, "readOnly": true }, - "purchasePrices": { - "type": "string" - }, "releaseDate": { "type": "string", "format": "date-time" @@ -10262,6 +10335,11 @@ "description": { "type": "string" }, + "descriptionTeaser": { + "description": "Read-only, HTML-stripped excerpt of the description, derived on write.", + "type": "string", + "readOnly": true + }, "metaTitle": { "type": "string" }, @@ -11593,6 +11671,11 @@ "description": { "type": "string" }, + "descriptionTeaser": { + "description": "Read-only, HTML-stripped excerpt of the description, derived on write.", + "type": "string", + "readOnly": true + }, "metaTitle": { "type": "string" }, @@ -14762,6 +14845,10 @@ "measurementUnits": { "$ref": "#/components/schemas/MeasurementUnits" }, + "businessTimeZone": { + "description": "Business timezone used for sales-channel-specific rendering. Added since version: 6.7.13.0.", + "type": "string" + }, "name": { "type": "string" }, @@ -14940,6 +15027,26 @@ }, "type": "object" }, + "SalesChannelFile": { + "description": "Added since version: 6.7.12.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, "SalesChannelTrackingCustomer": { "description": "Added since version: 6.7.9.0", "properties": { @@ -17391,1630 +17498,737 @@ }, "type": "object" }, - "CookieGroupCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CookieGroup" - } + "NewsletterStatus": { + "type": "string", + "enum": [ + "notSet", + "optIn", + "optOut", + "direct", + "undefined" + ], + "description": "The subscription status. Possible values are: notSet, optIn, optOut, direct, undefined." }, - "CalculatedPrice": { + "Breadcrumb": { "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "unitPrice": { - "type": "number" + "name": { + "type": "string" }, - "quantity": { - "type": "number" + "categoryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "rawTotal": { - "type": "number" + "type": { + "$ref": "#/components/schemas/Category/properties/type" }, - "totalPrice": { - "type": "number" + "translated": { + "type": "object", + "additionalProperties": true, + "properties": { + "customFields": { + "type": "object" + }, + "slotConfig": { + "type": "object" + }, + "linkType": { + "$ref": "#/components/schemas/Category/properties/linkType" + }, + "internalLink": { + "type": "string" + }, + "externalLink": { + "type": "string" + }, + "linkNewTab": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "metaTitle": { + "type": "string" + }, + "metaDescription": { + "type": "string" + }, + "keywords": { + "type": "string" + } + } }, - "taxStatus": { - "type": "string", - "enum": [ - "net", - "tax-free" - ] + "path": { + "type": "string" }, - "calculatedTaxes": { + "seoUrls": { "type": "array", "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] + "$ref": "#/components/schemas/SeoUrl" } }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } + "apiAlias": { + "type": "string", + "enum": [ + "breadcrumb" ] + } + }, + "required": [ + "name", + "categoryId", + "type", + "translated", + "path", + "apiAlias" + ] + }, + "ProductPurchaseLimit": { + "type": "object", + "description": "Current quantity purchase limits for a product.", + "required": [ + "productId", + "minPurchase", + "purchaseSteps", + "maxPurchase", + "stock", + "apiAlias" + ], + "properties": { + "productId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The product ID." }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] + "minPurchase": { + "type": "integer", + "description": "Minimum quantity a customer can purchase." }, - "positionPrice": { - "type": "number" + "purchaseSteps": { + "type": "integer", + "description": "Step increment for quantity selection." }, - "netPrice": { - "type": "number" - }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } - }, - { - "type": "null" - } - ] - }, - "hasRange": { - "type": "boolean" + "maxPurchase": { + "type": "integer", + "description": "Maximum quantity a customer can purchase, reflecting current stock for closeout products." }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } - ] + "stock": { + "type": [ + "integer", + "null" + ], + "description": "Current stock level of the product." }, "apiAlias": { "type": "string", "enum": [ - "calculated_price" + "product_purchase_limit" ] - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } - } - }, - "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "referencePrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitPrice", - "positionPrice", - "netPrice", - "taxRules", - "rawTotal", - "taxStatus" - ] - }, - "MeasurementUnits": { - "type": "object", - "description": "Configuration of the measurement system", - "properties": { - "system": { - "type": "string", - "enum": [ - "metric", - "imperial" - ], - "default": "metric", - "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." - }, - "units": { - "type": "object", - "description": "Units used in the measurement system.", - "properties": { - "length": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm", - "description": "Unit of length." - }, - "weight": { - "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg", - "description": "Unit of weight." - } - } } } }, - "CartListPrice": { + "AggregationMetrics": { "type": "object", - "description": "", "properties": { - "discount": { - "type": "number" - }, - "percentage": { - "type": "number" - }, - "price": { - "type": "number" + "name": { + "type": "string" }, - "apiAlias": { + "type": { "type": "string", "enum": [ - "cart_list_price" + "avg", + "count", + "max", + "min", + "stats", + "sum" ] + }, + "field": { + "type": "string" } }, "required": [ - "apiAlias" + "name", + "type", + "field" ] }, - "CartDeliveryInformation": { + "LineItemType": { + "type": "string", + "deprecated": true, + "enum": [ + "product", + "credit", + "custom", + "promotion", + "discount", + "container", + "quantity" + ] + }, + "LineItem": { "type": "object", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_information" - ] + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } }, - "freeDelivery": { - "type": "boolean" + "cover": { + "$ref": "#/components/schemas/Media" }, - "deliveryTime": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer" - }, - "max": { - "type": "integer" - }, - "unit": { - "type": "string" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_time" - ] - } - } + "dataContextHash": { + "type": "string" }, - "height": { - "type": "integer" + "dataTimestamp": { + "type": "string" }, - "length": { - "type": "integer" + "deliveryInformation": { + "$ref": "#/components/schemas/CartDeliveryInformation" }, - "restockTime": { - "type": "integer" + "description": { + "type": "string" }, - "stock": { - "type": "integer" + "good": { + "type": "boolean" }, - "weight": { - "type": "integer" + "id": { + "type": "string" }, - "width": { - "type": "integer" - } - }, - "required": [ - "apiAlias" - ] - }, - "ProductListingCriteria": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "label": { + "type": "string" }, - { + "modified": { + "type": "boolean" + }, + "modifiedByApp": { + "type": "boolean" + }, + "payload": { + "$ref": "#/components/schemas/ProductJsonApi" + }, + "price": { "type": "object", - "description": "Additional search parameters for product listings", "properties": { - "order": { - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "type": "string" - }, - "limit": { - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "type": "integer", - "minimum": 0 - }, - "p": { - "description": "Search result page", - "type": "integer", - "default": 1 - }, - "manufacturer": { - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", - "type": "string" - }, - "min-price": { - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 - }, - "max-price": { - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 - }, - "rating": { - "description": "Filter products with a minimum average rating.", - "type": "integer" - }, - "shipping-free": { - "description": "Filters products that are marked as shipping-free.", - "type": "boolean", - "default": false - }, - "properties": { - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", - "type": "string" - }, - "manufacturer-filter": { - "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "price-filter": { - "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", - "type": "boolean", - "default": true + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] }, - "rating-filter": { - "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", - "type": "boolean", - "default": true + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } }, - "shipping-free-filter": { - "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", - "type": "boolean", - "default": true + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] }, - "property-filter": { - "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", - "type": "boolean", - "default": true + "quantity": { + "type": "number" }, - "property-whitelist": { - "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", - "type": "string" + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] }, - "reduce-aggregations": { - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "regulationPrice": { "oneOf": [ { - "type": "string" + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } }, { "type": "null" } ] + }, + "totalPrice": { + "type": "number" + }, + "unitPrice": { + "type": "number" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } + } + }, + "required": [ + "apiAlias", + "totalPrice", + "quantity", + "unitPrice" + ] + }, + "priceDefinition": { + "$ref": "#/components/schemas/CartPriceQuantity" + }, + "quantity": { + "type": "number" + }, + "quantityInformation": { + "type": "object", + "properties": { + "maxPurchase": { + "type": "number" + }, + "minPurchase": { + "type": "number" + }, + "purchaseSteps": { + "type": "number" } } - } - ] - }, - "ProductPurchaseLimit": { - "type": "object", - "description": "Current quantity purchase limits for a product.", - "required": [ - "productId", - "minPurchase", - "purchaseSteps", - "maxPurchase", - "stock", - "apiAlias" - ], - "properties": { - "productId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The product ID." }, - "minPurchase": { - "type": "integer", - "description": "Minimum quantity a customer can purchase." + "referencedId": { + "type": "string" }, - "purchaseSteps": { - "type": "integer", - "description": "Step increment for quantity selection." + "removable": { + "type": "boolean" }, - "maxPurchase": { - "type": "integer", - "description": "Maximum quantity a customer can purchase, reflecting current stock for closeout products." + "stackable": { + "type": "boolean" }, - "stock": { - "type": [ - "integer", - "null" - ], - "description": "Current stock level of the product." + "states": { + "deprecated": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "is-physical", + "is-download" + ] + } }, - "apiAlias": { - "type": "string", - "enum": [ - "product_purchase_limit" - ] + "type": { + "$ref": "#/components/schemas/OrderLineItem/properties/type" + }, + "uniqueIdentifier": { + "type": "string" } - } + }, + "required": [ + "id", + "type" + ] }, - "CrossSellingElementCollection": { + "CookieEntryCollection": { "type": "array", "items": { - "$ref": "#/components/schemas/CrossSellingElement" + "$ref": "#/components/schemas/CookieEntry" } }, - "Criteria": { + "ProductMeasurements": { "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", + "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "term": { - "description": "Search term", - "type": "string" - }, - "limit": { - "description": "Number of items per result page", - "type": "integer" - }, - "filter": { - "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" - } - }, - "query": { - "type": "string", - "description": "The query string to search for" - }, - "associations": { - "$ref": "#/components/schemas/Associations" - }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" + "width": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" + }, + "value": { + "type": "number" + } } }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" + "height": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" + }, + "value": { + "type": "number" + } } }, - "fields": { - "type": "array", - "description": "Fields which should be returned in the search result.", - "items": { - "type": "string", - "description": "Name of a field" + "length": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" + }, + "value": { + "type": "number" + } } }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" + "weight": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg" + }, + "value": { + "type": "number" + } } - }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" - }, - "includes": { - "$ref": "#/components/schemas/Includes" - }, - "excludes": { - "$ref": "#/components/schemas/Excludes" } } }, - "NoneFieldsCriteria": { + "CookieGroupCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CookieGroup" + } + }, + "EntitySearchResult": { "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "term": { - "description": "Search term", + "entity": { "type": "string" }, - "limit": { - "description": "Number of items per result page", - "type": "integer" + "total": { + "type": "integer", + "description": "The total number of found entities" }, - "filter": { + "aggregations": { "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] + "type": "object" } }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" - } + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." }, - "query": { + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." + } + } + }, + "Price": { + "type": "object", + "description": "Price object", + "properties": { + "currencyId": { + "description": "Unique identity of the associated currency.", "type": "string", - "description": "The query string to search for" + "pattern": "^[0-9a-f]{32}$" }, - "associations": { - "$ref": "#/components/schemas/Associations" + "gross": { + "description": "Gross price for the associated currency.", + "type": "number" }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } + "net": { + "description": "Net price for the associated currency.", + "type": "number" }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" - } - }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } - }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" - }, - "includes": { - "$ref": "#/components/schemas/Includes" - }, - "excludes": { - "$ref": "#/components/schemas/Excludes" - } - } - }, - "Associations": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Criteria" - } - }, - "Includes": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "Excludes": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "Aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" + "linked": { + "description": "Whether gross and net prices are linked through the tax configuration.", + "type": "boolean" }, - { - "title": "AggregationEntity", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationEntity" + "percentage": { + "description": "Discount percentage relative to the list price for the gross and net amounts. `null` when no list price is set.", + "type": [ + "object", + "null" + ], + "properties": { + "gross": { + "description": "Discount percentage relative to the gross list price.", + "type": "number" }, - { - "$ref": "#/components/schemas/SubAggregations" + "net": { + "description": "Discount percentage relative to the net list price.", + "type": "number" } + }, + "required": [ + "gross", + "net" ] }, - { - "title": "AggregationFilter", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationFilter" + "listPrice": { + "description": "Reference list price for displaying discounts.", + "type": "object", + "properties": { + "currencyId": { + "description": "Unique identity of the associated currency.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationTerms", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationTerms" + "gross": { + "description": "Gross list price for the associated currency.", + "type": "number" }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationHistogram", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationHistogram" + "net": { + "description": "Net list price for the associated currency.", + "type": "number" }, - { - "$ref": "#/components/schemas/SubAggregations" + "linked": { + "description": "Whether gross and net list prices are linked through the tax configuration.", + "type": "boolean" } + }, + "required": [ + "gross", + "net" ] }, - { - "title": "AggregationRange", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationRange" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - } - ] - }, - "SubAggregations": { - "type": "object", - "properties": { - "aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/AggregationFilter" + "regulationPrice": { + "description": "Reference price used for legal price disclosures.", + "type": "object", + "properties": { + "currencyId": { + "description": "Unique identity of the associated currency.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - { - "$ref": "#/components/schemas/AggregationTerms" + "gross": { + "description": "Gross regulation price for the associated currency.", + "type": "number" }, - { - "$ref": "#/components/schemas/AggregationHistogram" + "net": { + "description": "Net regulation price for the associated currency.", + "type": "number" }, - { - "$ref": "#/components/schemas/AggregationRange" + "linked": { + "description": "Whether gross and net regulation prices are linked through the tax configuration.", + "type": "boolean" } + }, + "required": [ + "gross", + "net" ] } - } - }, - "TotalCountMode": { - "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", - "type": "string", - "default": "none", - "enum": [ - "none", - "exact", - "next-pages" + }, + "required": [ + "currencyId", + "gross", + "net" ] }, - "Query": { + "CartItems": { "type": "object", + "required": [ + "items" + ], "properties": { - "score": { - "type": "number" - }, - "query": { - "oneOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } } - }, - "additionalProperties": true + } }, - "Sort": { + "CookieRouteResponse": { "type": "object", + "description": "Response containing cookie groups and their configuration hash.", "properties": { - "field": { - "type": "string" - }, - "order": { + "apiAlias": { "type": "string", "enum": [ - "ASC", - "DESC" + "cookie_groups_hash" ] }, - "naturalSorting": { - "type": "boolean" + "elements": { + "type": "array", + "description": "Collection of cookie groups", + "items": { + "$ref": "#/components/schemas/CookieGroup" + } }, - "type": { - "type": "string" - } - }, - "required": [ - "field", - "order" - ] - }, - "Filters": { - "type": "array", - "items": { - "anyOf": [ + "hash": { + "type": "string", + "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", + "example": "f86b6a872cb83dbd22d838ceda1aa3d4" + }, + "languageId": { + "type": "string", + "format": "uuid", + "description": "The language ID for which the cookie configuration was generated. Used to store hashes per language.", + "example": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" + } + }, + "required": [ + "elements", + "hash", + "languageId", + "apiAlias" + ], + "example": { + "apiAlias": "cookie_groups_hash", + "elements": [ { - "$ref": "#/components/schemas/SimpleFilter" + "isRequired": true, + "description": "Cookies required for this shop to function:", + "name": "Technically required", + "entries": [ + { + "name": "Session", + "hidden": false, + "cookie": "session-", + "apiAlias": "cookie_entry" + }, + { + "name": "Timezone", + "hidden": false, + "cookie": "timezone", + "apiAlias": "cookie_entry" + }, + { + "value": "1", + "expiration": 30, + "name": "Cookie preferences", + "hidden": true, + "cookie": "cookie-preference", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" }, { - "$ref": "#/components/schemas/EqualsFilter" + "isRequired": false, + "description": "Cookies used for statistics and shop performance metrics.", + "name": "Statistics", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "Google Analytics", + "hidden": false, + "cookie": "google-analytics-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" }, { - "$ref": "#/components/schemas/MultiNotFilter" + "isRequired": false, + "description": "Allows Google to collect personal data for online advertising and marketing.", + "name": "Marketing", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "Google Advertising", + "hidden": false, + "cookie": "google-ads-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" }, { - "$ref": "#/components/schemas/RangeFilter" + "isRequired": false, + "name": "Comfort features", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "YouTube video", + "hidden": false, + "cookie": "youtube-video", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" } - ] + ], + "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", + "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" } }, - "SimpleFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "contains", - "equalsAny", - "prefix", - "suffix" - ] - }, - "field": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "required": [ - "type", - "field", - "value" - ] - }, - "EqualsFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "equals" - ] - }, - "field": { - "type": "string" - }, - "value": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "type", - "field", - "value" - ] - }, - "MultiNotFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "multi", - "not" - ] - }, - "operator": { - "type": "string", - "enum": [ - "and", - "or", - "nor", - "nand" - ] - }, - "queries": { - "$ref": "#/components/schemas/Filters" - } - }, - "required": [ - "type", - "operator", - "queries" - ] - }, - "RangeFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "range" - ] - }, - "field": { - "type": "string" - }, - "parameters": { - "type": "object", - "properties": { - "gte": { - "type": "number" - }, - "gt": { - "type": "number" - }, - "lte": { - "type": "number" - }, - "lt": { - "type": "number" - } - } - } - }, - "required": [ - "type", - "field", - "parameters" - ] - }, - "CookieEntryCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CookieEntry" - } - }, - "CartItems": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - } - } - }, - "Association": { - "additionalProperties": { - "$ref": "#/components/schemas/Association" - } - }, - "CartItemsUpdate": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartLineItemUpdate" - } - } - } - }, - "CartLineItemUpdate": { - "type": "object", - "required": [ - "id" - ], - "properties": { - "id": { - "type": "string" - }, - "type": { - "$ref": "#/components/schemas/OrderLineItem/properties/type" - }, - "quantity": { - "type": "integer" - }, - "referencedId": { - "type": "string" - }, - "label": { - "type": "string" - }, - "payload": { - "type": "object" - }, - "stackable": { - "type": "boolean" - }, - "removable": { - "type": "boolean" - }, - "coverId": { - "type": "string" - }, - "priceDefinition": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "price": { - "type": "number" - }, - "percentage": { - "type": "number" - }, - "quantity": { - "type": "integer" - }, - "isCalculated": { - "type": "boolean" - }, - "listPrice": { - "type": "number" - }, - "taxRules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number" - }, - "percentage": { - "type": "number" - } - } - } - } - } - } - } - }, - "AggregationEntity": { - "title": "AggregationEntity", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "entity" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "definition": { - "description": "The entity definition e.g \"product_manufacturer\".", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field", - "definition" - ] - }, - "AggregationFilter": { - "title": "AggregationFilter", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "filter" - ] - }, - "filter": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Filters" - } - } - }, - "required": [ - "name", - "type", - "filter" - ] - }, - "AggregationTerms": { - "title": "AggregationTerms", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "terms" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "limit": { - "description": "The number of terms to return", - "type": "number" - }, - "sort": { - "type": "array", - "description": "Sorting the aggregation result.", - "items": { - "$ref": "#/components/schemas/Sort" - } - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "AggregationHistogram": { - "title": "AggregationHistogram", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "histogram" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "interval": { - "description": "The interval of the histogram", - "type": "number" - }, - "format": { - "description": "The format of the histogram", - "type": "string" - }, - "timeZone": { - "description": "The timezone of the histogram", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "AggregationRange": { - "title": "AggregationRange", - "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "range" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "ranges": { - "description": "The ranges of the aggregation", - "type": "array", - "items": { - "type": "object", - "anyOf": [ - { - "type": "object", - "title": "From and to", - "properties": { - "from": { - "type": "number", - "description": "The lower bound of the range" - }, - "to": { - "type": "number", - "description": "The upper bound of the range" - } - }, - "required": [ - "from", - "to" - ] - }, - { - "type": "object", - "title": "From only", - "properties": { - "from": { - "type": "string", - "description": "The lower bound of the range" - } - }, - "required": [ - "from" - ] - }, - { - "type": "object", - "title": "To only", - "properties": { - "to": { - "type": "string", - "description": "The upper bound of the range" - } - }, - "required": [ - "to" - ] - } - ] - } - } - }, - "required": [ - "name", - "type", - "field", - "ranges" - ] - }, - "Price": { - "type": "object", - "description": "Price object", - "properties": { - "currencyId": { - "description": "Unique identity of the associated currency.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "Gross price for the associated currency.", - "type": "number" - }, - "net": { - "description": "Net price for the associated currency.", - "type": "number" - }, - "linked": { - "description": "Whether gross and net prices are linked through the tax configuration.", - "type": "boolean" - }, - "percentage": { - "description": "Discount percentage relative to the list price for the gross and net amounts. `null` when no list price is set.", - "type": [ - "object", - "null" - ], - "properties": { - "gross": { - "description": "Discount percentage relative to the gross list price.", - "type": "number" - }, - "net": { - "description": "Discount percentage relative to the net list price.", - "type": "number" - } - }, - "required": [ - "gross", - "net" - ] - }, - "listPrice": { - "description": "Reference list price for displaying discounts.", - "type": "object", - "properties": { - "currencyId": { - "description": "Unique identity of the associated currency.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "Gross list price for the associated currency.", - "type": "number" - }, - "net": { - "description": "Net list price for the associated currency.", - "type": "number" - }, - "linked": { - "description": "Whether gross and net list prices are linked through the tax configuration.", - "type": "boolean" - } - }, - "required": [ - "gross", - "net" - ] - }, - "regulationPrice": { - "description": "Reference price used for legal price disclosures.", - "type": "object", - "properties": { - "currencyId": { - "description": "Unique identity of the associated currency.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "Gross regulation price for the associated currency.", - "type": "number" - }, - "net": { - "description": "Net regulation price for the associated currency.", - "type": "number" - }, - "linked": { - "description": "Whether gross and net regulation prices are linked through the tax configuration.", - "type": "boolean" - } - }, - "required": [ - "gross", - "net" - ] - } - }, - "required": [ - "currencyId", - "gross", - "net" - ] - }, - "AggregationMetrics": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "avg", - "count", - "max", - "min", - "stats", - "sum" - ] - }, - "field": { - "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "CartPriceReference": { - "type": "object", - "properties": { - "purchaseUnit": { - "type": "number" - }, - "referenceUnit": { - "type": "number" - }, - "unitName": { - "type": "string" - }, - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_reference" - ] - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] - }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } - }, - { - "type": "null" - } - ] - }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" - ] - }, - "CustomerAddressBody": { - "description": "Added since version: 6.0.0.0", - "required": [ - "countryId", - "firstName", - "lastName", - "city", - "street" - ], - "properties": { - "countryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryStateId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "salutationId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "zipcode": { - "type": "string" - }, - "city": { - "type": "string" - }, - "company": { - "type": "string" - }, - "street": { - "type": "string" - }, - "department": { - "type": "string" - }, - "title": { - "type": "string" - }, - "phoneNumber": { - "type": "string" - }, - "additionalAddressLine1": { - "type": "string" - }, - "additionalAddressLine2": { - "type": "string" - }, - "customFields": { - "type": "object" - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "$ref": "#/components/schemas/CountryState" - }, - "salutation": { - "$ref": "#/components/schemas/Salutation" - } - }, - "type": "object" - }, - "CustomerAddressRead": { - "type": "object", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true - }, - "customerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true - }, - "createdAt": { - "type": "string", - "format": "date-time" - }, - "updatedAt": { - "oneOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "null" - } - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "oneOf": [ - { - "$ref": "#/components/schemas/CountryState" - }, - { - "type": "null" - } - ] - }, - "salutation": { - "$ref": "#/components/schemas/Salutation" - } - }, - "required": [ - "customerId", - "createdAt", - "updatedAt", - "country", - "salutation" - ] - }, - "NavigationRouteResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - }, - "ShippingMethodPageRouteResponse": { + "ShippingMethodPageRouteResponse": { "type": "array", "items": { "type": "object", @@ -19146,7 +18360,11 @@ "maintenance": { "type": "boolean" }, + "maintenanceIpAllowlist": { + "type": "string" + }, "maintenanceIpWhitelist": { + "deprecated": true, "type": "string" }, "mailHeaderFooterId": { @@ -19215,7 +18433,11 @@ "maintenance": { "type": "boolean" }, + "maintenanceIpAllowlist": { + "type": "string" + }, "maintenanceIpWhitelist": { + "deprecated": true, "type": "string" }, "mailHeaderFooterId": { @@ -19341,232 +18563,722 @@ "type": "string" } } - }, - "tags": { - "type": "array", - "items": { + }, + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + } + } + } + } + }, + "CartPriceReference": { + "type": "object", + "properties": { + "purchaseUnit": { + "type": "number" + }, + "referenceUnit": { + "type": "number" + }, + "unitName": { + "type": "string" + }, + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_reference" + ] + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { + "oneOf": [ + { "type": "object", "properties": { - "name": { - "type": "string" + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] } } - } + }, + { + "type": "null" + } + ] + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" + ] + }, + "AggregationEntity": { + "title": "AggregationEntity", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "entity" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "definition": { + "description": "The entity definition e.g \"product_manufacturer\".", + "type": "string" + } + }, + "required": [ + "name", + "type", + "field", + "definition" + ] + }, + "AggregationFilter": { + "title": "AggregationFilter", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "filter" + ] + }, + "filter": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Filters" + } + } + }, + "required": [ + "name", + "type", + "filter" + ] + }, + "AggregationTerms": { + "title": "AggregationTerms", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "terms" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "limit": { + "description": "The number of terms to return", + "type": "number" + }, + "sort": { + "type": "array", + "description": "Sorting the aggregation result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "AggregationHistogram": { + "title": "AggregationHistogram", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "histogram" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "interval": { + "description": "The interval of the histogram", + "type": "number" + }, + "format": { + "description": "The format of the histogram", + "type": "string" + }, + "timeZone": { + "description": "The timezone of the histogram", + "type": "string" + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "AggregationRange": { + "title": "AggregationRange", + "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "range" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "ranges": { + "description": "The ranges of the aggregation", + "type": "array", + "items": { + "type": "object", + "anyOf": [ + { + "type": "object", + "title": "From and to", + "properties": { + "from": { + "type": "number", + "description": "The lower bound of the range" + }, + "to": { + "type": "number", + "description": "The upper bound of the range" + } + }, + "required": [ + "from", + "to" + ] + }, + { + "type": "object", + "title": "From only", + "properties": { + "from": { + "type": "string", + "description": "The lower bound of the range" + } + }, + "required": [ + "from" + ] + }, + { + "type": "object", + "title": "To only", + "properties": { + "to": { + "type": "string", + "description": "The upper bound of the range" + } + }, + "required": [ + "to" + ] + } + ] } } - } + }, + "required": [ + "name", + "type", + "field", + "ranges" + ] }, - "ProductDetailResponse": { + "Cart": { "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "product": { - "$ref": "#/components/schemas/Product" + "name": { + "description": "Name of the cart - for example `guest-cart`", + "type": "string" }, - "configurator": { + "token": { + "description": "Context token identifying the cart and the user session", + "type": "string" + }, + "price": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "lineItems": { + "description": "All items within the cart", "type": "array", - "description": "List of property groups with their corresponding options and information on how to display them.", "items": { - "$ref": "#/components/schemas/PropertyGroup" + "$ref": "#/components/schemas/LineItem" } - } - }, - "required": [ - "product" - ] - }, - "AccountNewsletterRecipient": { - "type": "object", - "properties": { - "status": { - "$ref": "#/components/schemas/NewsletterStatus" }, - "apiAlias": { - "type": "string", - "enum": [ - "account_newsletter_recipient" + "errors": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartError" + } + }, + { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "code": { + "type": "number" + }, + "key": { + "type": "string" + }, + "level": { + "type": "number" + }, + "message": { + "type": "string" + }, + "messageKey": { + "type": "string" + } + }, + "required": [ + "code", + "key", + "level", + "message", + "messageKey" + ] + } + } ] - } - }, - "required": [ - "status", - "apiAlias" - ] - }, - "ReferencePrice": { - "type": "object", - "properties": { - "purchaseUnit": { - "type": "number" }, - "referenceUnit": { - "type": "number" + "deliveries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDelivery" + } }, - "unitName": { - "type": "string" + "transactions": { + "description": "A list of all payment transactions associated with the current cart.", + "type": "array", + "items": { + "type": "object", + "properties": { + "paymentMethodId": { + "type": "string" + }, + "amount": { + "$ref": "#/components/schemas/CalculatedPrice" + } + } + } }, - "price": { - "type": "number" + "modified": { + "type": "boolean" }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_reference" + "customerComment": { + "description": "A comment that can be added to the cart.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } ] }, - "listPrice": { + "affiliateCode": { + "description": "An affiliate tracking code", "oneOf": [ { - "$ref": "#/components/schemas/ListPrice" + "type": "string" }, { "type": "null" } ] }, - "regulationPrice": { + "campaignCode": { + "description": "A campaign tracking code", "oneOf": [ { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } + "type": "string" }, { "type": "null" } ] }, - "hasRange": { + "apiAlias": { + "type": "string", + "enum": [ + "cart" + ] + } + }, + "required": [ + "price", + "apiAlias" + ] + }, + "CartItemsUpdate": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartLineItemUpdate" + } + } + } + }, + "CartLineItemUpdate": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "type": "string" + }, + "type": { + "$ref": "#/components/schemas/OrderLineItem/properties/type" + }, + "quantity": { + "type": "integer" + }, + "referencedId": { + "type": "string" + }, + "label": { + "type": "string" + }, + "payload": { + "type": "object" + }, + "stackable": { "type": "boolean" }, - "variantId": { - "oneOf": [ - { + "removable": { + "type": "boolean" + }, + "coverId": { + "type": "string" + }, + "priceDefinition": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "price": { + "type": "number" + }, + "percentage": { + "type": "number" + }, + "quantity": { + "type": "integer" + }, + "isCalculated": { + "type": "boolean" + }, + "listPrice": { + "type": "number" + }, + "taxRules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number" + }, + "percentage": { + "type": "number" + } + } + } + } + } + } + } + }, + "ContextMeasurementSystemInfo": { + "type": "object", + "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", + "properties": { + "system": { + "type": "string", + "enum": [ + "metric", + "imperial" + ], + "default": "metric", + "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." + }, + "units": { + "type": "object", + "description": "Units used in the measurement system.", + "properties": { + "length": { "type": "string", - "format": "^[0-9a-f]{32}$" + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Unit of length." }, - { - "type": "null" + "weight": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." } - ] + } } - }, - "required": [ - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" - ] + } }, - "CookieEntry": { + "AccountNewsletterRecipient": { "type": "object", "properties": { - "cookie": { - "type": "string" - }, - "value": { - "type": "string" - }, - "expiration": { - "type": "integer" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "hidden": { - "type": "boolean" + "status": { + "$ref": "#/components/schemas/NewsletterStatus" }, "apiAlias": { "type": "string", "enum": [ - "cookie_entry" + "account_newsletter_recipient" ] } }, "required": [ - "cookie", - "hidden", + "status", "apiAlias" ] }, - "FindProductVariantRouteResponse": { - "type": "object", - "properties": { - "foundCombination": { + "ProductListingCriteria": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + }, + { "type": "object", + "description": "Additional search parameters for product listings", "properties": { - "variantId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "order": { + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "type": "string" }, - "options": { - "type": "array", - "items": { - "type": "string" - } + "limit": { + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "type": "integer", + "minimum": 0 + }, + "p": { + "description": "Search result page", + "type": "integer", + "default": 1 + }, + "manufacturer": { + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "type": "string" + }, + "min-price": { + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "max-price": { + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "rating": { + "description": "Filter products with a minimum average rating.", + "type": "integer" + }, + "shipping-free": { + "description": "Filters products that are marked as shipping-free.", + "type": "boolean", + "default": false + }, + "properties": { + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "type": "string" + }, + "manufacturer-filter": { + "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "price-filter": { + "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "rating-filter": { + "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "shipping-free-filter": { + "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-filter": { + "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-whitelist": { + "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", + "type": "string" + }, + "reduce-aggregations": { + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] } } } - } + ] }, - "SalesChannelContext": { + "CartPriceQuantity": { "type": "object", "properties": { - "token": { - "description": "Context the user session", - "type": "string" + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_quantity" + ] }, - "currentCustomerGroup": { - "type": "object", - "description": "Customer group of the current user", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } - } + "isCalculated": { + "type": "boolean" }, - "fallbackCustomerGroup": { - "description": "Fallback group if the default customer group is not applicable", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } - } + "listPrice": { + "$ref": "#/components/schemas/CartListPrice" }, - "currency": { - "$ref": "#/components/schemas/Currency" + "price": { + "type": "number" }, - "salesChannel": { - "$ref": "#/components/schemas/SalesChannel" + "quantity": { + "type": "number" }, - "measurementSystem": { - "$ref": "#/components/schemas/ContextMeasurementSystemInfo" + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + } + }, + "type": "object" }, "taxRules": { "type": "array", - "description": "Currently active tax rules and/or rates", "items": { "type": "object", "properties": { @@ -19578,22 +19290,62 @@ "type": "string" } } - } + } + }, + "type": { + "type": "string" + } + }, + "required": [ + "apiAlias" + ] + }, + "ProductListingFlags": { + "type": "object", + "description": "Additional flags for product listings", + "properties": { + "no-aggregations": { + "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] }, - "customer": { + "only-aggregations": { + "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", "oneOf": [ { - "type": "null" + "type": "string" }, { - "$ref": "#/components/schemas/Customer" + "type": "null" } ] + } + } + }, + "CartDelivery": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } }, - "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethod" - }, - "shippingLocation": { + "location": { "type": "object", "properties": { "apiAlias": { @@ -19607,566 +19359,735 @@ }, "address": { "$ref": "#/components/schemas/CustomerAddress" + }, + "state": { + "$ref": "#/components/schemas/CountryState" } } }, + "positions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDeliveryPosition" + } + }, + "shippingCosts": { + "$ref": "#/components/schemas/CalculatedPrice" + }, "shippingMethod": { "$ref": "#/components/schemas/ShippingMethod" + } + } + }, + "Association": { + "additionalProperties": { + "$ref": "#/components/schemas/Association" + } + }, + "ProductDetailResponse": { + "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", + "properties": { + "product": { + "$ref": "#/components/schemas/Product" }, - "context": { - "description": "Core context with general configuration values and state", - "type": "object", - "properties": { - "versionId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "currencyFactor": { - "type": "integer" - }, - "currencyPrecision": { - "type": "integer", - "format": "int32" - }, - "languageIdChain": { - "type": "array", - "items": { - "type": "string" + "configurator": { + "type": "array", + "description": "List of property groups with their corresponding options and information on how to display them.", + "items": { + "$ref": "#/components/schemas/PropertyGroup" + } + } + }, + "required": [ + "product" + ] + }, + "Criteria": { + "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", + "properties": { + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", + "type": "string" + }, + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } - }, - "scope": { - "type": "string" - }, - "source": { - "type": "object", - "required": [ - "salesChannelId", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "sales-channel", - "shop-api" - ] - }, - "salesChannelId": { - "type": "string" - } + ] + } + }, + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } + }, + "query": { + "type": "string", + "description": "The query string to search for" + }, + "associations": { + "$ref": "#/components/schemas/Associations" + }, + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + }, + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } + }, + "fields": { + "type": "array", + "description": "Fields which should be returned in the search result.", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" + }, + "excludes": { + "$ref": "#/components/schemas/Excludes" + } + } + }, + "NoneFieldsCriteria": { + "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", + "properties": { + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", + "type": "string" + }, + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } - }, - "taxState": { - "type": "string" - }, - "useCache": { - "type": "boolean" - } + ] } }, - "itemRounding": { - "type": "object", - "required": [ - "decimals", - "interval", - "roundForNet", - "apiAlias" - ], - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" - ] - }, - "decimals": { - "type": "integer", - "format": "int32" - }, - "interval": { - "type": "number", - "format": "float" - }, - "roundForNet": { - "type": "boolean" - } + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" } }, - "totalRounding": { - "type": "object", - "required": [ - "decimals", - "interval", - "roundForNet", - "apiAlias" - ], - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" - ] - }, - "decimals": { - "type": "integer", - "format": "int32" - }, - "interval": { - "type": "number", - "format": "float" - }, - "roundForNet": { - "type": "boolean" - } + "query": { + "type": "string", + "description": "The query string to search for" + }, + "associations": { + "$ref": "#/components/schemas/Associations" + }, + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] } }, - "languageInfo": { - "type": "object", - "required": [ - "localeCode", - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "localeCode": { - "type": "string" - } + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" } }, - "apiAlias": { - "type": "string", - "enum": [ - "sales_channel_context" - ] + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } + }, + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" + }, + "excludes": { + "$ref": "#/components/schemas/Excludes" } - }, - "required": [ - "salesChannel", - "apiAlias", - "itemRounding", - "totalRounding", - "languageInfo" - ] + } }, - "NavigationType": { - "type": "string", - "enum": [ - "main-navigation", - "footer-navigation", - "service-navigation" - ] + "Associations": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Criteria" + } }, - "WishlistLoadRouteResponse": { + "Includes": { "type": "object", - "required": [ - "products" - ], - "properties": { - "wishlist": { - "type": "object", - "properties": { - "customerId": { - "type": "string" - }, - "salesChannelId": { - "type": "string" - } - } - }, - "products": { - "$ref": "#/components/schemas/ProductListingResult" + "additionalProperties": { + "type": "array", + "items": { + "type": "string" } } }, - "Breadcrumb": { + "Excludes": { "type": "object", - "properties": { - "name": { + "additionalProperties": { + "type": "array", + "items": { "type": "string" + } + } + }, + "Aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" }, - "categoryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "type": { - "$ref": "#/components/schemas/Category/properties/type" - }, - "translated": { - "type": "object", - "additionalProperties": true, - "properties": { - "customFields": { - "type": "object" - }, - "slotConfig": { - "type": "object" - }, - "linkType": { - "$ref": "#/components/schemas/Category/properties/linkType" - }, - "internalLink": { - "type": "string" - }, - "externalLink": { - "type": "string" - }, - "linkNewTab": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "metaTitle": { - "type": "string" - }, - "metaDescription": { - "type": "string" + { + "title": "AggregationEntity", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationEntity" }, - "keywords": { - "type": "string" + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationFilter", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationFilter" + }, + { + "$ref": "#/components/schemas/SubAggregations" } - } + ] }, - "path": { - "type": "string" + { + "title": "AggregationTerms", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] }, - "seoUrls": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } + { + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] }, - "apiAlias": { - "type": "string", - "enum": [ - "breadcrumb" + { + "title": "AggregationRange", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationRange" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } ] } - }, - "required": [ - "name", - "categoryId", - "type", - "translated", - "path", - "apiAlias" ] }, - "ProductListingFlags": { + "SubAggregations": { "type": "object", - "description": "Additional flags for product listings", "properties": { - "no-aggregations": { - "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", - "oneOf": [ + "aggregation": { + "anyOf": [ { - "type": "string" + "$ref": "#/components/schemas/AggregationMetrics" }, { - "type": "null" - } - ] - }, - "only-aggregations": { - "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", - "oneOf": [ + "$ref": "#/components/schemas/AggregationEntity" + }, { - "type": "string" + "$ref": "#/components/schemas/AggregationFilter" }, { - "type": "null" + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/AggregationRange" } ] } } }, - "LineItemType": { + "TotalCountMode": { + "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", "type": "string", - "deprecated": true, + "default": "none", "enum": [ - "product", - "credit", - "custom", - "promotion", - "discount", - "container", - "quantity" + "none", + "exact", + "next-pages" ] }, - "LineItem": { + "Query": { "type": "object", "properties": { - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - }, - "cover": { - "$ref": "#/components/schemas/Media" - }, - "dataContextHash": { - "type": "string" + "score": { + "type": "number" }, - "dataTimestamp": { + "query": { + "oneOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "additionalProperties": true + }, + "Sort": { + "type": "object", + "properties": { + "field": { "type": "string" }, - "deliveryInformation": { - "$ref": "#/components/schemas/CartDeliveryInformation" - }, - "description": { - "type": "string" + "order": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] }, - "good": { + "naturalSorting": { "type": "boolean" }, - "id": { - "type": "string" - }, - "label": { + "type": { "type": "string" - }, - "modified": { - "type": "boolean" - }, - "modifiedByApp": { - "type": "boolean" - }, - "payload": { - "$ref": "#/components/schemas/ProductJsonApi" - }, - "price": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "calculated_price" - ] - }, - "calculatedTaxes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] - }, - "quantity": { - "type": "number" - }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] - }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } - }, - { - "type": "null" - } - ] + } + }, + "required": [ + "field", + "order" + ] + }, + "Filters": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "SimpleFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "contains", + "equalsAny", + "prefix", + "suffix" + ] + }, + "field": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": [ + "type", + "field", + "value" + ] + }, + "EqualsFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "equals" + ] + }, + "field": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "type": "string" }, - "totalPrice": { + { "type": "number" }, - "unitPrice": { - "type": "number" + { + "type": "boolean" }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } + { + "type": "null" } - }, - "required": [ - "apiAlias", - "totalPrice", - "quantity", - "unitPrice" + ] + } + }, + "required": [ + "type", + "field", + "value" + ] + }, + "MultiNotFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "multi", + "not" ] }, - "priceDefinition": { - "$ref": "#/components/schemas/CartPriceQuantity" + "operator": { + "type": "string", + "enum": [ + "and", + "or", + "nor", + "nand" + ] }, - "quantity": { - "type": "number" + "queries": { + "$ref": "#/components/schemas/Filters" + } + }, + "required": [ + "type", + "operator", + "queries" + ] + }, + "RangeFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "range" + ] }, - "quantityInformation": { + "field": { + "type": "string" + }, + "parameters": { "type": "object", "properties": { - "maxPurchase": { + "gte": { "type": "number" }, - "minPurchase": { + "gt": { "type": "number" }, - "purchaseSteps": { + "lte": { + "type": "number" + }, + "lt": { "type": "number" } } + } + }, + "required": [ + "type", + "field", + "parameters" + ] + }, + "CookieGroup": { + "type": "object", + "properties": { + "isRequired": { + "type": "boolean" }, - "referencedId": { + "name": { "type": "string" }, - "removable": { - "type": "boolean" + "description": { + "type": "string" }, - "stackable": { - "type": "boolean" + "cookie": { + "type": "string" }, - "states": { - "deprecated": true, - "type": "array", - "items": { - "type": "string", - "enum": [ - "is-physical", - "is-download" - ] - } + "value": { + "type": "string" }, - "type": { - "$ref": "#/components/schemas/OrderLineItem/properties/type" + "expiration": { + "type": "integer" }, - "uniqueIdentifier": { - "type": "string" + "entries": { + "$ref": "#/components/schemas/CookieEntryCollection" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cookie_group" + ] } }, + "not": { + "allOf": [ + { + "required": [ + "cookie" + ] + }, + { + "required": [ + "entries" + ] + } + ] + }, "required": [ - "id", - "type" + "name", + "isRequired", + "apiAlias" ] }, - "CartPriceQuantity": { + "CartDeliveryPosition": { "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_quantity" - ] + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } }, - "isCalculated": { - "type": "boolean" + "identifier": { + "type": "string" }, - "listPrice": { - "$ref": "#/components/schemas/CartListPrice" + "lineItem": { + "$ref": "#/components/schemas/LineItem" + }, + "price": { + "$ref": "#/components/schemas/CalculatedPrice" + } + } + }, + "ReferencePrice": { + "type": "object", + "properties": { + "purchaseUnit": { + "type": "number" + }, + "referenceUnit": { + "type": "number" + }, + "unitName": { + "type": "string" }, "price": { "type": "number" }, - "quantity": { - "type": "number" + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_reference" + ] }, - "regulationPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/ListPrice" + }, + { + "type": "null" } - }, - "type": "object" + ] }, - "taxRules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } } + }, + { + "type": "null" } - } + ] }, - "type": { - "type": "string" + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] } }, "required": [ - "apiAlias" + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" ] }, - "NewsletterStatus": { - "type": "string", - "enum": [ - "notSet", - "optIn", - "optOut", - "direct", - "undefined" - ], - "description": "The subscription status. Possible values are: notSet, optIn, optOut, direct, undefined." - }, "OrderRouteResponse": { "type": "object", "properties": { @@ -20204,416 +20125,452 @@ "orders" ] }, - "ProductListingResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EntitySearchResult" - }, - { + "WishlistLoadRouteResponse": { + "type": "object", + "required": [ + "products" + ], + "properties": { + "wishlist": { "type": "object", "properties": { - "currentFilters": { - "type": "object", - "description": "Contains the state of the filters. These can be used to create listing filters.", - "properties": { - "navigationId": { - "type": "string" - }, - "manufacturer": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "price": { - "type": "object", - "properties": { - "min": { - "type": "integer", - "default": 0 - }, - "max": { - "type": "integer", - "default": 0 - } - }, - "required": [ - "min", - "max" - ] - }, - "rating": { - "oneOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "shipping-free": { - "type": "boolean", - "default": false - }, - "properties": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "search": { - "type": "string" - } - }, - "required": [ - "manufacturer", - "navigationId", - "price", - "properties", - "rating", - "shipping-free" - ] - }, - "availableSortings": { - "type": "array", - "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", - "items": { - "type": "object", - "properties": { - "label": { - "type": "string" - }, - "translated": { - "type": "object", - "properties": { - "label": { - "type": "string" - } - }, - "required": [ - "label" - ] - }, - "key": { - "type": "string" - }, - "priority": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_sorting" - ] - } - }, - "required": [ - "label", - "translated", - "key", - "priority", - "apiAlias" - ] - } - }, - "sorting": { + "customerId": { "type": "string" }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - }, - "entity": { - "type": "string", - "enum": [ - "product" - ] - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_listing" - ] + "salesChannelId": { + "type": "string" } - }, - "required": [ - "elements", - "availableSortings", - "currentFilters", - "apiAlias" - ] + } + }, + "products": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + }, + "Sitemap": { + "type": "object", + "properties": { + "filename": { + "type": "string" + }, + "created": { + "type": "string", + "format": "date-time" } + }, + "required": [ + "filename", + "created" ] }, - "CookieRouteResponse": { + "NavigationType": { + "type": "string", + "enum": [ + "main-navigation", + "footer-navigation", + "service-navigation" + ] + }, + "ListPrice": { "type": "object", - "description": "Response containing cookie groups and their configuration hash.", + "description": "", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cookie_groups_hash" - ] + "discount": { + "type": "number" }, - "elements": { - "type": "array", - "description": "Collection of cookie groups", - "items": { - "$ref": "#/components/schemas/CookieGroup" - } + "percentage": { + "type": "number" }, - "hash": { - "type": "string", - "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", - "example": "f86b6a872cb83dbd22d838ceda1aa3d4" + "price": { + "type": "number" }, - "languageId": { + "apiAlias": { "type": "string", - "format": "uuid", - "description": "The language ID for which the cookie configuration was generated. Used to store hashes per language.", - "example": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" + "enum": [ + "cart_list_price" + ] } }, "required": [ - "elements", - "hash", - "languageId", "apiAlias" - ], - "example": { - "apiAlias": "cookie_groups_hash", - "elements": [ - { - "isRequired": true, - "description": "Cookies required for this shop to function:", - "name": "Technically required", - "entries": [ - { - "name": "Session", - "hidden": false, - "cookie": "session-", - "apiAlias": "cookie_entry" - }, - { - "name": "Timezone", - "hidden": false, - "cookie": "timezone", - "apiAlias": "cookie_entry" - }, - { - "value": "1", - "expiration": 30, - "name": "Cookie preferences", - "hidden": true, - "cookie": "cookie-preference", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "description": "Cookies used for statistics and shop performance metrics.", - "name": "Statistics", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "Google Analytics", - "hidden": false, - "cookie": "google-analytics-enabled", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "description": "Allows Google to collect personal data for online advertising and marketing.", - "name": "Marketing", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "Google Advertising", - "hidden": false, - "cookie": "google-ads-enabled", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "name": "Comfort features", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "YouTube video", - "hidden": false, - "cookie": "youtube-video", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - } - ], - "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", - "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" - } + ] }, - "Cart": { + "CalculatedPrice": { "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "name": { - "description": "Name of the cart - for example `guest-cart`", - "type": "string" + "unitPrice": { + "type": "number" }, - "token": { - "description": "Context token identifying the cart and the user session", - "type": "string" + "quantity": { + "type": "number" }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" + "rawTotal": { + "type": "number" }, - "lineItems": { - "description": "All items within the cart", + "totalPrice": { + "type": "number" + }, + "taxStatus": { + "type": "string", + "enum": [ + "net", + "tax-free" + ] + }, + "calculatedTaxes": { "type": "array", "items": { - "$ref": "#/components/schemas/LineItem" + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] } }, - "errors": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "anyOf": [ + "referencePrice": { + "oneOf": [ { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartError" - } + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" }, + { + "type": "null" + } + ] + }, + "positionPrice": { + "type": "number" + }, + "netPrice": { + "type": "number" + }, + "regulationPrice": { + "oneOf": [ { "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "code": { - "type": "number" - }, - "key": { - "type": "string" - }, - "level": { - "type": "number" - }, - "message": { - "type": "string" - }, - "messageKey": { - "type": "string" - } + "properties": { + "price": { + "type": "number" }, - "required": [ - "code", - "key", - "level", - "message", - "messageKey" - ] + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } } + }, + { + "type": "null" + } + ] + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" } ] }, - "deliveries": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDelivery" - } + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] }, - "transactions": { - "description": "A list of all payment transactions associated with the current cart.", + "taxRules": { "type": "array", + "description": "Currently active tax rules and/or rates", "items": { "type": "object", "properties": { - "paymentMethodId": { - "type": "string" + "taxRate": { + "type": "number", + "format": "float" }, - "amount": { - "$ref": "#/components/schemas/CalculatedPrice" + "name": { + "type": "string" } } } + } + }, + "required": [ + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "referencePrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitPrice", + "positionPrice", + "netPrice", + "taxRules", + "rawTotal", + "taxStatus" + ] + }, + "CookieEntry": { + "type": "object", + "properties": { + "cookie": { + "type": "string" }, - "modified": { + "value": { + "type": "string" + }, + "expiration": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "hidden": { "type": "boolean" }, - "customerComment": { - "description": "A comment that can be added to the cart.", - "oneOf": [ - { - "type": "string" + "apiAlias": { + "type": "string", + "enum": [ + "cookie_entry" + ] + } + }, + "required": [ + "cookie", + "hidden", + "apiAlias" + ] + }, + "CartListPrice": { + "type": "object", + "description": "", + "properties": { + "discount": { + "type": "number" + }, + "percentage": { + "type": "number" + }, + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_list_price" + ] + } + }, + "required": [ + "apiAlias" + ] + }, + "CustomerAddressBody": { + "description": "Added since version: 6.0.0.0", + "required": [ + "countryId", + "firstName", + "lastName", + "city", + "street" + ], + "properties": { + "countryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryStateId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "salutationId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "zipcode": { + "type": "string" + }, + "city": { + "type": "string" + }, + "company": { + "type": "string" + }, + "street": { + "type": "string" + }, + "department": { + "type": "string" + }, + "title": { + "type": "string" + }, + "phoneNumber": { + "type": "string" + }, + "additionalAddressLine1": { + "type": "string" + }, + "additionalAddressLine2": { + "type": "string" + }, + "customFields": { + "type": "object" + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "$ref": "#/components/schemas/CountryState" + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" + } + }, + "type": "object" + }, + "MeasurementUnits": { + "type": "object", + "description": "Configuration of the measurement system", + "properties": { + "system": { + "type": "string", + "enum": [ + "metric", + "imperial" + ], + "default": "metric", + "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." + }, + "units": { + "type": "object", + "description": "Units used in the measurement system.", + "properties": { + "length": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Unit of length." }, - { - "type": "null" + "weight": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." } - ] + } + } + } + }, + "CustomerAddressRead": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true }, - "affiliateCode": { - "description": "An affiliate tracking code", + "customerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "updatedAt": { "oneOf": [ { - "type": "string" + "type": "string", + "format": "date-time" }, { "type": "null" } ] }, - "campaignCode": { - "description": "A campaign tracking code", + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { "oneOf": [ { - "type": "string" + "$ref": "#/components/schemas/CountryState" }, { "type": "null" } ] }, - "apiAlias": { - "type": "string", - "enum": [ - "cart" - ] - } - }, - "required": [ - "price", - "apiAlias" - ] - }, - "Sitemap": { - "type": "object", - "properties": { - "filename": { - "type": "string" - }, - "created": { - "type": "string", - "format": "date-time" + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, "required": [ - "filename", - "created" + "customerId", + "createdAt", + "updatedAt", + "country", + "salutation" ] }, "CrossSellingElement": { @@ -20650,349 +20607,507 @@ "apiAlias" ] }, - "ProductMeasurements": { + "SalesChannelContext": { "type": "object", - "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", "properties": { - "width": { + "token": { + "description": "Context the user session", + "type": "string" + }, + "currentCustomerGroup": { "type": "object", + "description": "Customer group of the current user", "properties": { - "unit": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" + "name": { + "type": "string" }, - "value": { - "type": "number" + "displayGross": { + "type": "boolean" } } }, - "height": { + "fallbackCustomerGroup": { + "description": "Fallback group if the default customer group is not applicable", "type": "object", "properties": { - "unit": { + "name": { + "type": "string" + }, + "displayGross": { + "type": "boolean" + } + } + }, + "currency": { + "$ref": "#/components/schemas/Currency" + }, + "salesChannel": { + "$ref": "#/components/schemas/SalesChannel" + }, + "measurementSystem": { + "$ref": "#/components/schemas/ContextMeasurementSystemInfo" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } + }, + "customer": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/Customer" + } + ] + }, + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod" + }, + "shippingLocation": { + "type": "object", + "properties": { + "apiAlias": { "type": "string", "enum": [ - "mm", - "cm", - "m", - "in", - "ft" + "cart_delivery_shipping_location" + ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + } + } + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + }, + "context": { + "description": "Core context with general configuration values and state", + "type": "object", + "properties": { + "versionId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "currencyFactor": { + "type": "integer" + }, + "currencyPrecision": { + "type": "integer", + "format": "int32" + }, + "languageIdChain": { + "type": "array", + "items": { + "type": "string" + } + }, + "scope": { + "type": "string" + }, + "source": { + "type": "object", + "required": [ + "salesChannelId", + "type" ], - "default": "mm" + "properties": { + "type": { + "type": "string", + "enum": [ + "sales-channel", + "shop-api" + ] + }, + "salesChannelId": { + "type": "string" + } + } }, - "value": { - "type": "number" + "taxState": { + "type": "string" + }, + "useCache": { + "type": "boolean" } } }, - "length": { + "itemRounding": { "type": "object", + "required": [ + "decimals", + "interval", + "roundForNet", + "apiAlias" + ], "properties": { - "unit": { + "apiAlias": { "type": "string", "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" + "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" + ] }, - "value": { - "type": "number" + "decimals": { + "type": "integer", + "format": "int32" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" } } }, - "weight": { + "totalRounding": { "type": "object", + "required": [ + "decimals", + "interval", + "roundForNet", + "apiAlias" + ], "properties": { - "unit": { + "apiAlias": { "type": "string", "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg" + "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" + ] + }, + "decimals": { + "type": "integer", + "format": "int32" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" + } + } + }, + "languageInfo": { + "type": "object", + "required": [ + "localeCode", + "name" + ], + "properties": { + "name": { + "type": "string" }, - "value": { - "type": "number" + "localeCode": { + "type": "string" } } - } - } - }, - "CartError": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "key": { - "type": "string" }, - "level": { - "type": "number", + "apiAlias": { + "type": "string", "enum": [ - 0, - 10, - 20 - ], - "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" - }, - "message": { - "type": "string" - }, - "messageKey": { - "type": "string" + "sales_channel_context" + ] } }, "required": [ - "key", - "level", - "message", - "messageKey" + "salesChannel", + "apiAlias", + "itemRounding", + "totalRounding", + "languageInfo" ] }, - "ContextMeasurementSystemInfo": { + "SuccessResponse": { "type": "object", - "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", "properties": { - "system": { - "type": "string", - "enum": [ - "metric", - "imperial" - ], - "default": "metric", - "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." - }, - "units": { - "type": "object", - "description": "Units used in the measurement system.", - "properties": { - "length": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm", - "description": "Unit of length." - }, - "weight": { - "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg", - "description": "Unit of weight." - } - } + "success": { + "type": "boolean" } } }, - "CartDeliveryPosition": { + "NavigationRouteResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + } + }, + "CartDeliveryInformation": { "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "deliveryDate": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_information" + ] + }, + "freeDelivery": { + "type": "boolean" + }, + "deliveryTime": { "type": "object", "properties": { - "earliest": { - "type": "string", - "format": "date-time" + "name": { + "type": "string" }, - "latest": { + "min": { + "type": "integer" + }, + "max": { + "type": "integer" + }, + "unit": { + "type": "string" + }, + "apiAlias": { "type": "string", - "format": "date-time" + "enum": [ + "cart_delivery_time" + ] } } }, - "identifier": { - "type": "string" - }, - "lineItem": { - "$ref": "#/components/schemas/LineItem" - }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" - } - } - }, - "CookieGroup": { - "type": "object", - "properties": { - "isRequired": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "cookie": { - "type": "string" - }, - "value": { - "type": "string" - }, - "expiration": { + "height": { "type": "integer" }, - "entries": { - "$ref": "#/components/schemas/CookieEntryCollection" + "length": { + "type": "integer" }, - "apiAlias": { - "type": "string", - "enum": [ - "cookie_group" - ] - } - }, - "not": { - "allOf": [ - { - "required": [ - "cookie" - ] - }, - { - "required": [ - "entries" - ] - } - ] - }, - "required": [ - "name", - "isRequired", - "apiAlias" - ] - }, - "ListPrice": { - "type": "object", - "description": "", - "properties": { - "discount": { - "type": "number" + "restockTime": { + "type": "integer" }, - "percentage": { - "type": "number" + "stock": { + "type": "integer" }, - "price": { - "type": "number" + "weight": { + "type": "integer" }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_list_price" - ] + "width": { + "type": "integer" } }, "required": [ "apiAlias" ] }, - "CartDelivery": { + "FindProductVariantRouteResponse": { "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" - } - } - }, - "location": { + "foundCombination": { "type": "object", "properties": { - "apiAlias": { + "variantId": { "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" + "pattern": "^[0-9a-f]{32}$" }, - "state": { - "$ref": "#/components/schemas/CountryState" + "options": { + "type": "array", + "items": { + "type": "string" + } } } - }, - "positions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDeliveryPosition" - } - }, - "shippingCosts": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" } } }, - "EntitySearchResult": { + "CrossSellingElementCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrossSellingElement" + } + }, + "CartError": { "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "entity": { + "key": { "type": "string" }, - "total": { - "type": "integer", - "description": "The total number of found entities" - }, - "aggregations": { - "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", - "items": { - "type": "object" - } + "level": { + "type": "number", + "enum": [ + 0, + 10, + 20 + ], + "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." + "message": { + "type": "string" }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." + "messageKey": { + "type": "string" } - } + }, + "required": [ + "key", + "level", + "message", + "messageKey" + ] }, - "SuccessResponse": { - "type": "object", - "properties": { - "success": { - "type": "boolean" + "ProductListingResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EntitySearchResult" + }, + { + "type": "object", + "properties": { + "currentFilters": { + "type": "object", + "description": "Contains the state of the filters. These can be used to create listing filters.", + "properties": { + "navigationId": { + "type": "string" + }, + "manufacturer": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "price": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "default": 0 + }, + "max": { + "type": "integer", + "default": 0 + } + }, + "required": [ + "min", + "max" + ] + }, + "rating": { + "oneOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "shipping-free": { + "type": "boolean", + "default": false + }, + "properties": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "search": { + "type": "string" + } + }, + "required": [ + "manufacturer", + "navigationId", + "price", + "properties", + "rating", + "shipping-free" + ] + }, + "availableSortings": { + "type": "array", + "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", + "items": { + "type": "object", + "properties": { + "label": { + "type": "string" + }, + "translated": { + "type": "object", + "properties": { + "label": { + "type": "string" + } + }, + "required": [ + "label" + ] + }, + "key": { + "type": "string" + }, + "priority": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_sorting" + ] + } + }, + "required": [ + "label", + "translated", + "key", + "priority", + "apiAlias" + ] + } + }, + "sorting": { + "type": "string" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "entity": { + "type": "string", + "enum": [ + "product" + ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_listing" + ] + } + }, + "required": [ + "elements", + "availableSortings", + "currentFilters", + "apiAlias" + ] } - } + ] }, "SearchByImageSearchTermResponse": { "type": "array", @@ -21020,69 +21135,31 @@ } } } - }, - "NaturalLanguageSearchTermResponse": { - "type": "array", - "items": { - "type": "object", - "required": [ - "term", - "reason", - "apiAlias" - ], - "properties": { - "term": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_natural_language_search_term" - ] - } - } - } - }, - "ApprovalRule": { - "properties": { - "id": { - "type": "string", - "format": "uuid" - }, - "businessPartnerCustomerId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "priority": { - "type": "integer" - }, - "description": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "conditions": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "value": { - "type": "string" - } - } + }, + "NaturalLanguageSearchTermResponse": { + "type": "array", + "items": { + "type": "object", + "required": [ + "term", + "reason", + "apiAlias" + ], + "properties": { + "term": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_natural_language_search_term" + ] } } - }, - "type": "object" + } }, "PendingOrder": { "type": "object", @@ -21291,6 +21368,44 @@ } } }, + "ApprovalRule": { + "properties": { + "id": { + "type": "string", + "format": "uuid" + }, + "businessPartnerCustomerId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "priority": { + "type": "integer" + }, + "description": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "conditions": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": { + "type": "string" + } + } + } + } + }, + "type": "object" + }, "ListCategoryRouteResponse": { "type": "object", "properties": { @@ -21477,34 +21592,65 @@ } } }, - "204": { - "description": "No Content" - }, - "CurrencyListResponse": { - "description": "Entity search result containing currencies.", + "429": { + "description": "Too Many Requests", "content": { + "application/vnd.api+json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "429", + "title": "Too Many Requests", + "description": "Rate limit exceeded. Please wait before retrying." + } + ] + } + }, "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Currency" - } + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "429", + "title": "Too Many Requests", + "description": "Rate limit exceeded. Please wait before retrying." + } + ] } } } }, - "SalutationListResponse": { - "description": "Entity search result containing salutations.", + "204": { + "description": "No Content" + }, + "ShippingMethodListResponse": { + "description": "Entity search result containing shipping methods.", "content": { "application/json": { "schema": { "allOf": [ { + "required": [ + "elements" + ], "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Salutation" + "$ref": "#/components/schemas/ShippingMethod" } } }, @@ -21518,57 +21664,50 @@ } } }, - "ContextTokenResponse": { - "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", - "headers": { - "sw-context-token": { - "description": "Contains sw-context-token value", - "schema": { - "type": "string" - } - } - }, + "CountryStateListResponse": { + "description": "Entity search result containing countries.", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "description": "Define the URL which browser will be redirected to", - "type": "string" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CountryState" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" } - } + ] } } } }, - "ShippingMethodListResponse": { - "description": "Entity search result containing shipping methods.", + "SeoUrlListResponse": { + "description": "Entity search result containing seo urls.", "content": { "application/json": { "schema": { "allOf": [ { - "required": [ - "elements" - ], "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/ShippingMethod" + "$ref": "#/components/schemas/SeoUrl" } } }, - "type": "object" + "type": "object", + "required": [ + "elements" + ] }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -21578,6 +21717,32 @@ } } }, + "PaymentMethodListResponse": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentMethod" + } + } + }, + "type": "object" + } + } + } + }, "OpenApi3": { "description": "Returns information about the store API.", "content": { @@ -21767,22 +21932,22 @@ } } }, - "CountryStateListResponse": { - "description": "Entity search result containing countries.", + "CategoryListResponse": { + "description": "Entity search result containing categories.", "content": { "application/json": { "schema": { "allOf": [ { + "type": "object", "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/CountryState" + "$ref": "#/components/schemas/Category" } } - }, - "type": "object" + } }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -21792,76 +21957,46 @@ } } }, - "PaymentMethodListResponse": { - "description": "", - "content": { - "application/json": { + "ContextTokenResponse": { + "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", + "headers": { + "sw-context-token": { + "description": "Contains sw-context-token value", "schema": { - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PaymentMethod" - } - } - }, - "type": "object" + "type": "string" } } - } - }, - "SeoUrlListResponse": { - "description": "Entity search result containing seo urls.", + }, "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } - } - }, - "type": "object", - "required": [ - "elements" - ] - }, - { - "$ref": "#/components/schemas/EntitySearchResult" + "type": "object", + "properties": { + "redirectUrl": { + "description": "Define the URL which browser will be redirected to", + "type": "string" } - ] + } } } } }, - "CategoryListResponse": { - "description": "Entity search result containing categories.", + "SalutationListResponse": { + "description": "Entity search result containing salutations.", "content": { "application/json": { "schema": { "allOf": [ { - "type": "object", "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Category" + "$ref": "#/components/schemas/Salutation" } } - } + }, + "type": "object" }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -21899,21 +22034,31 @@ } } }, - "ProductListResponse": { - "description": "Entity search result containing products", + "CurrencyListResponse": { + "description": "Entity search result containing currencies.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Currency" + } + } + } + } + }, + "CountryListResponse": { + "description": "Entity search result containing countries.", "content": { "application/json": { "schema": { "allOf": [ { - "required": [ - "elements" - ], "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Product" + "$ref": "#/components/schemas/Country" } } }, @@ -21927,18 +22072,21 @@ } } }, - "CountryListResponse": { - "description": "Entity search result containing countries.", + "ProductListResponse": { + "description": "Entity search result containing products", "content": { "application/json": { "schema": { "allOf": [ { + "required": [ + "elements" + ], "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Country" + "$ref": "#/components/schemas/Product" } } }, @@ -21984,38 +22132,6 @@ "pattern": "^[0-9a-f]{32}$" } }, - "noAggregations": { - "name": "no-aggregations", - "in": "query", - "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", - "required": false, - "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - "onlyAggregations": { - "name": "only-aggregations", - "in": "query", - "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", - "required": false, - "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, "criteriaPage": { "name": "page", "in": "query", @@ -22178,63 +22294,244 @@ "schema": { "$ref": "#/components/schemas/Includes" }, - "style": "deepObject", - "explode": true - }, - "criteriaExcludes": { - "name": "excludes", - "in": "query", - "description": "Specify the fields that should be excluded from the response for the given entities. Object key needs to be the entity name, and the list of fields needs to be the value. Note that the exclude fields will only be stripped on the API-Level, consider using the `fields` parameter for performance reasons.", - "schema": { - "$ref": "#/components/schemas/Excludes" + "style": "deepObject", + "explode": true + }, + "criteriaExcludes": { + "name": "excludes", + "in": "query", + "description": "Specify the fields that should be excluded from the response for the given entities. Object key needs to be the entity name, and the list of fields needs to be the value. Note that the exclude fields will only be stripped on the API-Level, consider using the `fields` parameter for performance reasons.", + "schema": { + "$ref": "#/components/schemas/Excludes" + }, + "style": "deepObject", + "explode": true + }, + "CompressedCriteria": { + "name": "_criteria", + "in": "query", + "description": "Compressed and encoded criteria object. Format: base64url(gzip(json_encode(criteria))). This parameter allows passing complex criteria as a single encoded string instead of multiple query parameters. The criteria object should be JSON-encoded, then gzipped, and finally base64url-encoded. The criteria object structure is defined in the Criteria schema (see #/components/schemas/Criteria).", + "required": false, + "schema": { + "type": "string", + "format": "base64url", + "example": "H4sIAAAAAAAAA6tWykpNzFGyqlbKz8lPTSxRslJKSi0pzSsFAGcQr7sHAAAA" + } + }, + "CompressedNoneFieldsCriteria": { + "name": "_criteria", + "in": "query", + "description": "Compressed and encoded criteria object. Format: base64url(gzip(json_encode(criteria))). This parameter allows passing complex criteria as a single encoded string instead of multiple query parameters. The criteria object should be JSON-encoded, then gzipped, and finally base64url-encoded. The criteria object structure is defined in the NoneFieldsCriteria schema (see #/components/schemas/NoneFieldsCriteria).", + "required": false, + "schema": { + "type": "string", + "format": "base64url", + "example": "H4sIAAAAAAAAA6tWykpNzFGyqlbKz8lPTSxRslJKSi0pzSsFAGcQr7sHAAAA" + } + }, + "noAggregations": { + "name": "no-aggregations", + "in": "query", + "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", + "required": false, + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "onlyAggregations": { + "name": "only-aggregations", + "in": "query", + "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", + "required": false, + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + } + }, + "securitySchemes": { + "ApiKey": { + "type": "apiKey", + "description": "Identifies the sales channel you want to access the API through", + "name": "sw-access-key", + "in": "header" + }, + "ContextToken": { + "type": "apiKey", + "description": "Identifies an anonymous or identified user session", + "name": "sw-context-token", + "in": "header" + } + } + }, + "security": [ + { + "ApiKey": [] + } + ], + "paths": { + "/permission": { + "get": { + "tags": [ + "B2B Employee Management" + ], + "summary": "Fetch all available permissions", + "description": "This route is used to fetch all available permissions", + "operationId": "readPermissions", + "responses": { + "200": { + "description": "Permission collection", + "content": { + "application/json": { + "schema": { + "type": "object", + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "type": "object", + "properties": { + "permissionName": { + "type": "string" + }, + "permissionDependencies": { + "type": "array", + "items": { + "type": "string" + } + }, + "permissionGroupName": { + "type": "string" + } + } + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + }, + "post": { + "tags": [ + "B2B Employee Management" + ], + "summary": "Add a new permission", + "description": "This route is used to add a new permissions", + "operationId": "addPermission", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "name": { + "description": "Name of the new permission", + "type": "string" + }, + "group": { + "description": "Group of the new permission", + "type": "string" + }, + "dependencies": { + "description": "Optional dependencies for the new permission", + "type": "array", + "items": { + "type": "string" + } + } + }, + "type": "object" + } + } + } + }, + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "responses": { + "200": { + "description": "Permission collection", + "content": { + "application/json": { + "schema": { + "type": "object", + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "type": "object", + "properties": { + "permissionName": { + "type": "string" + }, + "permissionDependencies": { + "type": "array", + "items": { + "type": "string" + } + }, + "permissionGroupName": { + "type": "string" + } + } + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + } }, - "style": "deepObject", - "explode": true - }, - "CompressedCriteria": { - "name": "_criteria", - "in": "query", - "description": "Compressed and encoded criteria object. Format: base64url(gzip(json_encode(criteria))). This parameter allows passing complex criteria as a single encoded string instead of multiple query parameters. The criteria object should be JSON-encoded, then gzipped, and finally base64url-encoded. The criteria object structure is defined in the Criteria schema (see #/components/schemas/Criteria).", - "required": false, - "schema": { - "type": "string", - "format": "base64url", - "example": "H4sIAAAAAAAAA6tWykpNzFGyqlbKz8lPTSxRslJKSi0pzSsFAGcQr7sHAAAA" - } - }, - "CompressedNoneFieldsCriteria": { - "name": "_criteria", - "in": "query", - "description": "Compressed and encoded criteria object. Format: base64url(gzip(json_encode(criteria))). This parameter allows passing complex criteria as a single encoded string instead of multiple query parameters. The criteria object should be JSON-encoded, then gzipped, and finally base64url-encoded. The criteria object structure is defined in the NoneFieldsCriteria schema (see #/components/schemas/NoneFieldsCriteria).", - "required": false, - "schema": { - "type": "string", - "format": "base64url", - "example": "H4sIAAAAAAAAA6tWykpNzFGyqlbKz8lPTSxRslJKSi0pzSsFAGcQr7sHAAAA" - } + "security": [ + { + "ApiKey": [] + } + ] } }, - "securitySchemes": { - "ApiKey": { - "type": "apiKey", - "description": "Identifies the sales channel you want to access the API through", - "name": "sw-access-key", - "in": "header" - }, - "ContextToken": { - "type": "apiKey", - "description": "Identifies an anonymous or identified user session", - "name": "sw-context-token", - "in": "header" - } - } - }, - "security": [ - { - "ApiKey": [] - } - ], - "paths": { "/role/create": { "post": { "tags": [ @@ -22490,157 +22787,29 @@ "type": "string" }, "permissions": { - "description": "New permissions of the role", - "type": "array", - "items": { - "type": "string" - } - }, - "isDefaultRole": { - "description": "Ability to set the role as default", - "type": "boolean" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Role entity", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/B2bComponentsRole" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - }, - "delete": { - "tags": [ - "B2B Employee Management" - ], - "summary": "Delete one role by id", - "description": "This route is used to delete one role by id", - "operationId": "deleteRole", - "parameters": [ - { - "name": "id", - "in": "path", - "description": "Identifier of the role to be fetched", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], - "responses": { - "204": { - "description": "No content response" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/role/default": { - "post": { - "tags": [ - "B2B Employee Management" - ], - "summary": "Sets the default role Id for new employees", - "description": "This route is used to update the defaultRoleId for new employees", - "operationId": "updateDefaultRoleId", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "properties": { - "id": { - "description": "Id of the roleId to be set as default", - "type": "string" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "204": { - "description": "No content response" - } - }, - "security": [ - { - "ApiKey": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } - ] - } - }, - "/permission": { - "get": { - "tags": [ - "B2B Employee Management" - ], - "summary": "Fetch all available permissions", - "description": "This route is used to fetch all available permissions", - "operationId": "readPermissions", - "responses": { - "200": { - "description": "Permission collection", - "content": { - "application/json": { - "schema": { - "type": "object", - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "type": "object", - "properties": { - "permissionName": { - "type": "string" - }, - "permissionDependencies": { - "type": "array", - "items": { - "type": "string" - } - }, - "permissionGroupName": { - "type": "string" - } - } - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" + "description": "New permissions of the role", + "type": "array", + "items": { + "type": "string" } - ] + }, + "isDefaultRole": { + "description": "Ability to set the role as default", + "type": "boolean" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Role entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/B2bComponentsRole" } } } @@ -22650,40 +22819,56 @@ { "ApiKey": [] } + ] + }, + "delete": { + "tags": [ + "B2B Employee Management" ], + "summary": "Delete one role by id", + "description": "This route is used to delete one role by id", + "operationId": "deleteRole", "parameters": [ { - "$ref": "#/components/parameters/swLanguageId" + "name": "id", + "in": "path", + "description": "Identifier of the role to be fetched", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "responses": { + "204": { + "description": "No content response" + } + }, + "security": [ + { + "ApiKey": [] } ] - }, + } + }, + "/role/default": { "post": { "tags": [ "B2B Employee Management" ], - "summary": "Add a new permission", - "description": "This route is used to add a new permissions", - "operationId": "addPermission", + "summary": "Sets the default role Id for new employees", + "description": "This route is used to update the defaultRoleId for new employees", + "operationId": "updateDefaultRoleId", "requestBody": { "required": true, "content": { "application/json": { "schema": { "properties": { - "name": { - "description": "Name of the new permission", - "type": "string" - }, - "group": { - "description": "Group of the new permission", + "id": { + "description": "Id of the roleId to be set as default", "type": "string" - }, - "dependencies": { - "description": "Optional dependencies for the new permission", - "type": "array", - "items": { - "type": "string" - } } }, "type": "object" @@ -22691,57 +22876,20 @@ } } }, - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } - ], "responses": { - "200": { - "description": "Permission collection", - "content": { - "application/json": { - "schema": { - "type": "object", - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "type": "object", - "properties": { - "permissionName": { - "type": "string" - }, - "permissionDependencies": { - "type": "array", - "items": { - "type": "string" - } - }, - "permissionGroupName": { - "type": "string" - } - } - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } + "204": { + "description": "No content response" } }, "security": [ { "ApiKey": [] } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ] } }, @@ -23833,35 +23981,15 @@ ] } }, - "/approval-rule": { + "/pending-orders/request": { "post": { "tags": [ "B2B Order Approval" ], - "summary": "List all approval rules", - "description": "This route is used to list all approval rules from the store", - "operationId": "listApprovalRules", + "summary": "Request new order approval", + "description": "This route is used to request a new order approval", + "operationId": "requestOrderApproval", "parameters": [ - { - "name": "p", - "in": "query", - "description": "Page number", - "required": false, - "schema": { - "type": "integer", - "default": 1 - } - }, - { - "name": "limit", - "in": "query", - "description": "Number of items per page", - "required": false, - "schema": { - "type": "integer", - "default": 10 - } - }, { "$ref": "#/components/parameters/swLanguageId" } @@ -23871,104 +23999,24 @@ "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "properties": { + "comment": { + "description": "Message content", + "type": "string" } - ] - } - } - } - }, - "responses": { - "200": { - "description": "Entity search result containing approval rules", - "content": { - "application/json": { - "schema": { - "type": "object", - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ApprovalRule" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } + }, + "type": "object" } } } }, - "security": [ - { - "ApiKey": [] - } - ] - }, - "get": { - "tags": [ - "B2B Order Approval" - ], - "summary": "Fetch a list of approval rules", - "description": "This route is used to load approval rules", - "operationId": "readApprovalRules", - "parameters": [ - { - "name": "p", - "in": "query", - "description": "Page number", - "required": false, - "schema": { - "type": "integer", - "default": 1 - } - }, - { - "name": "limit", - "in": "query", - "description": "Number of items per page", - "required": false, - "schema": { - "type": "integer", - "default": 10 - } - }, - { - "$ref": "#/components/parameters/swLanguageId" - } - ], "responses": { "200": { - "description": "Entity search result containing approval rules", + "description": "Pending order entity", "content": { "application/json": { "schema": { - "type": "object", - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ApprovalRule" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/PendingOrder" } } } @@ -23981,76 +24029,46 @@ ] } }, - "/approval-rule/create": { + "/pending-order/{id}": { "post": { "tags": [ "B2B Order Approval" ], - "summary": "Create a new approval rule", - "description": "This route is used to create a new approval rule", - "operationId": "createApprovalRule", + "summary": "Fetch one pending order by id", + "description": "This route is used to fetch a pending order from the store by id", + "operationId": "fetchPendingOrder", "parameters": [ + { + "name": "id", + "in": "path", + "description": "Identifier of the pending order to be fetched", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, { "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "properties": { - "approvalRuleName": { - "description": "Name of the approval rule", - "type": "string" - }, - "approvalRuleApprove": { - "description": "ID of the role that can approve the rule", - "type": "string" - }, - "approvalRuleRole": { - "description": "ID of the role that is affected by the rule", - "type": "string" - }, - "priority": { - "description": "Priority of the approval rule", - "type": "integer" - }, - "description": { - "description": "Description of the approval rule", - "type": "string" - }, - "active": { - "description": "Active status of the approval rule", - "type": "boolean" - }, - "approvalRuleCondition": { - "description": "List of rules", - "type": "object", - "properties": { - "type": { - "description": "Type of the rule", - "type": "string" - }, - "value": { - "description": "Value", - "type": "string" - } - } - } - }, - "type": "object" + "$ref": "#/components/schemas/Criteria" } } } }, "responses": { "200": { - "description": "Approval rule entity", + "description": "Pending order entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApprovalRule" + "$ref": "#/components/schemas/PendingOrder" } } } @@ -24063,19 +24081,19 @@ ] } }, - "/approval-rule/{id}": { - "get": { + "/pending-order/{id}/payment-method": { + "post": { "tags": [ "B2B Order Approval" ], - "summary": "Fetch one approval rule by id", - "description": "This route is used to fetch a approval rule from the store by id", - "operationId": "readApprovalRule", + "summary": "Fetch payment methods of a pending order", + "description": "This route is used to fetch the payment methods of a pending order", + "operationId": "fetchPendingOrderPaymentMethods", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the approval rule to be fetched", + "description": "Identifier of the pending order to be fetched", "required": true, "schema": { "type": "string", @@ -24088,11 +24106,27 @@ ], "responses": { "200": { - "description": "Approval rule entity", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ApprovalRule" + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentMethod" + } + } + }, + "type": "object" } } } @@ -24103,19 +24137,21 @@ "ApiKey": [] } ] - }, - "patch": { + } + }, + "/pending-order/{id}/decline": { + "post": { "tags": [ "B2B Order Approval" ], - "summary": "Update a approval rule by id", - "description": "This route is used to update a approval rule from the store by id", - "operationId": "updateApprovalRule", + "summary": "Decline a pending order by id", + "description": "This route is used to decline a pending order from the store by id", + "operationId": "declinePendingOrder", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the approval rule to be updated", + "description": "Identifier of the pending order to be declined", "required": true, "schema": { "type": "string", @@ -24127,48 +24163,14 @@ } ], "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { "properties": { - "approvalRuleName": { - "description": "Name of the approval rule", - "type": "string" - }, - "approvalRuleApprove": { - "description": "ID of the role that can approve the rule", - "type": "string" - }, - "approvalRuleRole": { - "description": "ID of the role that is affected by the rule", - "type": "string" - }, - "priority": { - "description": "Priority of the approval rule", - "type": "integer" - }, - "description": { - "description": "Description of the approval rule", + "comment": { + "description": "Message content", "type": "string" - }, - "active": { - "description": "Active status of the approval rule", - "type": "boolean" - }, - "approvalRuleCondition": { - "description": "List of rules", - "type": "object", - "properties": { - "type": { - "description": "Type of the rule", - "type": "string" - }, - "value": { - "description": "Value", - "type": "string" - } - } } }, "type": "object" @@ -24177,17 +24179,61 @@ } }, "responses": { - "200": { - "description": "Approval rule entity", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ApprovalRule" - } + "204": { + "description": "No content response" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/pending-order/{id}/approve": { + "post": { + "tags": [ + "B2B Order Approval" + ], + "summary": "Approve a pending order by id", + "description": "This route is used to approve a pending order from the store by id", + "operationId": "approvePendingOrder", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Identifier of the pending order to be approved", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "properties": { + "comment": { + "description": "Message content", + "type": "string" + } + }, + "type": "object" } } } }, + "responses": { + "204": { + "description": "No content response" + } + }, "security": [ { "ApiKey": [] @@ -24195,15 +24241,25 @@ ] } }, - "/pending-orders/request": { + "/pending-order/{id}/checkout/order": { "post": { "tags": [ "B2B Order Approval" ], - "summary": "Request new order approval", - "description": "This route is used to request a new order approval", - "operationId": "requestOrderApproval", + "summary": "Create a order from a pending order", + "description": "This route is used to create a order from a pending order", + "operationId": "createOrderFromPendingOrder", "parameters": [ + { + "name": "id", + "in": "path", + "description": "Identifier of the pending order to be used to create a order", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, { "$ref": "#/components/parameters/swLanguageId" } @@ -24214,7 +24270,7 @@ "application/json": { "schema": { "properties": { - "comment": { + "customerComment": { "description": "Message content", "type": "string" } @@ -24226,11 +24282,11 @@ }, "responses": { "200": { - "description": "Pending order entity", + "description": "Order entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PendingOrder" + "$ref": "#/components/schemas/Order" } } } @@ -24243,23 +24299,33 @@ ] } }, - "/pending-order/{id}": { + "/approval-rule": { "post": { "tags": [ "B2B Order Approval" ], - "summary": "Fetch one pending order by id", - "description": "This route is used to fetch a pending order from the store by id", - "operationId": "fetchPendingOrder", + "summary": "List all approval rules", + "description": "This route is used to list all approval rules from the store", + "operationId": "listApprovalRules", "parameters": [ { - "name": "id", - "in": "path", - "description": "Identifier of the pending order to be fetched", - "required": true, + "name": "p", + "in": "query", + "description": "Page number", + "required": false, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "integer", + "default": 1 + } + }, + { + "name": "limit", + "in": "query", + "description": "Number of items per page", + "required": false, + "schema": { + "type": "integer", + "default": 10 } }, { @@ -24271,18 +24337,38 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Criteria" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] } } } }, "responses": { "200": { - "description": "Pending order entity", + "description": "Entity search result containing approval rules", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PendingOrder" + "type": "object", + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ApprovalRule" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -24293,25 +24379,33 @@ "ApiKey": [] } ] - } - }, - "/pending-order/{id}/payment-method": { - "post": { + }, + "get": { "tags": [ "B2B Order Approval" ], - "summary": "Fetch payment methods of a pending order", - "description": "This route is used to fetch the payment methods of a pending order", - "operationId": "fetchPendingOrderPaymentMethods", + "summary": "Fetch a list of approval rules", + "description": "This route is used to load approval rules", + "operationId": "readApprovalRules", "parameters": [ { - "name": "id", - "in": "path", - "description": "Identifier of the pending order to be fetched", - "required": true, + "name": "p", + "in": "query", + "description": "Page number", + "required": false, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "integer", + "default": 1 + } + }, + { + "name": "limit", + "in": "query", + "description": "Number of items per page", + "required": false, + "schema": { + "type": "integer", + "default": 10 } }, { @@ -24320,27 +24414,27 @@ ], "responses": { "200": { - "description": "", + "description": "Entity search result containing approval rules", "content": { "application/json": { "schema": { - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", + "type": "object", + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ApprovalRule" + } + } + }, "type": "object" }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PaymentMethod" - } + { + "$ref": "#/components/schemas/EntitySearchResult" } - }, - "type": "object" + ] } } } @@ -24353,38 +24447,62 @@ ] } }, - "/pending-order/{id}/decline": { + "/approval-rule/create": { "post": { "tags": [ "B2B Order Approval" ], - "summary": "Decline a pending order by id", - "description": "This route is used to decline a pending order from the store by id", - "operationId": "declinePendingOrder", + "summary": "Create a new approval rule", + "description": "This route is used to create a new approval rule", + "operationId": "createApprovalRule", "parameters": [ - { - "name": "id", - "in": "path", - "description": "Identifier of the pending order to be declined", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, { "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { "properties": { - "comment": { - "description": "Message content", + "approvalRuleName": { + "description": "Name of the approval rule", + "type": "string" + }, + "approvalRuleApprove": { + "description": "ID of the role that can approve the rule", + "type": "string" + }, + "approvalRuleRole": { + "description": "ID of the role that is affected by the rule", + "type": "string" + }, + "priority": { + "description": "Priority of the approval rule", + "type": "integer" + }, + "description": { + "description": "Description of the approval rule", "type": "string" + }, + "active": { + "description": "Active status of the approval rule", + "type": "boolean" + }, + "approvalRuleCondition": { + "description": "List of rules", + "type": "object", + "properties": { + "type": { + "description": "Type of the rule", + "type": "string" + }, + "value": { + "description": "Value", + "type": "string" + } + } } }, "type": "object" @@ -24393,8 +24511,15 @@ } }, "responses": { - "204": { - "description": "No content response" + "200": { + "description": "Approval rule entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApprovalRule" + } + } + } } }, "security": [ @@ -24404,19 +24529,19 @@ ] } }, - "/pending-order/{id}/approve": { - "post": { + "/approval-rule/{id}": { + "get": { "tags": [ "B2B Order Approval" ], - "summary": "Approve a pending order by id", - "description": "This route is used to approve a pending order from the store by id", - "operationId": "approvePendingOrder", + "summary": "Fetch one approval rule by id", + "description": "This route is used to fetch a approval rule from the store by id", + "operationId": "readApprovalRule", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the pending order to be approved", + "description": "Identifier of the approval rule to be fetched", "required": true, "schema": { "type": "string", @@ -24427,47 +24552,36 @@ "$ref": "#/components/parameters/swLanguageId" } ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "properties": { - "comment": { - "description": "Message content", - "type": "string" - } - }, - "type": "object" + "responses": { + "200": { + "description": "Approval rule entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApprovalRule" + } } } } }, - "responses": { - "204": { - "description": "No content response" - } - }, "security": [ { "ApiKey": [] } ] - } - }, - "/pending-order/{id}/checkout/order": { - "post": { + }, + "patch": { "tags": [ "B2B Order Approval" ], - "summary": "Create a order from a pending order", - "description": "This route is used to create a order from a pending order", - "operationId": "createOrderFromPendingOrder", + "summary": "Update a approval rule by id", + "description": "This route is used to update a approval rule from the store by id", + "operationId": "updateApprovalRule", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the pending order to be used to create a order", + "description": "Identifier of the approval rule to be updated", "required": true, "schema": { "type": "string", @@ -24479,14 +24593,48 @@ } ], "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { "properties": { - "customerComment": { - "description": "Message content", + "approvalRuleName": { + "description": "Name of the approval rule", + "type": "string" + }, + "approvalRuleApprove": { + "description": "ID of the role that can approve the rule", + "type": "string" + }, + "approvalRuleRole": { + "description": "ID of the role that is affected by the rule", + "type": "string" + }, + "priority": { + "description": "Priority of the approval rule", + "type": "integer" + }, + "description": { + "description": "Description of the approval rule", "type": "string" + }, + "active": { + "description": "Active status of the approval rule", + "type": "boolean" + }, + "approvalRuleCondition": { + "description": "List of rules", + "type": "object", + "properties": { + "type": { + "description": "Type of the rule", + "type": "string" + }, + "value": { + "description": "Value", + "type": "string" + } + } } }, "type": "object" @@ -24496,11 +24644,11 @@ }, "responses": { "200": { - "description": "Order entity", + "description": "Approval rule entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Order" + "$ref": "#/components/schemas/ApprovalRule" } } } diff --git a/SwagCommercial-storeapi.summary.json b/SwagCommercial-storeapi.summary.json index c2b7dd2..beab522 100644 --- a/SwagCommercial-storeapi.summary.json +++ b/SwagCommercial-storeapi.summary.json @@ -64,10 +64,12 @@ "AdvancedSearchAction", "AdvancedSearchActionSearchTerm", "AdvancedSearchBoosting", + "AdvancedSearchCompoundDictionary", "AdvancedSearchConfig", "AdvancedSearchConfigField", "AdvancedSearchEntityStream", "AdvancedSearchEntityStreamFilter", + "AdvancedSearchStopwordDictionary", "AdvancedSearchSynonym", "Aggregation", "AggregationEntity", @@ -310,6 +312,7 @@ "SalesChannelAnalytics", "SalesChannelContext", "SalesChannelDomain", + "SalesChannelFile", "SalesChannelTrackingCustomer", "SalesChannelTrackingOrder", "SalesChannelType", From a2b23cee788f8a0dc98edca380d931dbd898dd42 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 25 Jun 2026 16:40:03 +0200 Subject: [PATCH 15/16] [create-pull-request] automated change (#429) Co-authored-by: shopwareBot --- storeapi.json | 19059 +++++++++++++++++++++------------------- storeapi.summary.json | 2 + 2 files changed, 9973 insertions(+), 9088 deletions(-) diff --git a/storeapi.json b/storeapi.json index a0e68f1..a9dd749 100644 --- a/storeapi.json +++ b/storeapi.json @@ -6290,9 +6290,6 @@ }, "readOnly": true }, - "purchasePrices": { - "type": "string" - }, "releaseDate": { "type": "string", "format": "date-time" @@ -7728,6 +7725,11 @@ "description": { "type": "string" }, + "descriptionTeaser": { + "description": "Read-only, HTML-stripped excerpt of the description, derived on write.", + "type": "string", + "readOnly": true + }, "metaTitle": { "type": "string" }, @@ -8847,6 +8849,11 @@ "type": "string", "description": "Description of the product." }, + "descriptionTeaser": { + "description": "Read-only, HTML-stripped excerpt of the description, derived on write.", + "type": "string", + "readOnly": true + }, "metaTitle": { "type": "string", "description": "A page title indexed by search engines and appears in search results listings." @@ -10300,6 +10307,10 @@ "measurementUnits": { "$ref": "#/components/schemas/MeasurementUnits" }, + "businessTimeZone": { + "description": "Business timezone used for sales-channel-specific rendering. Added since version: 6.7.13.0.", + "type": "string" + }, "name": { "type": "string", "description": "Name of the sales channel." @@ -10484,6 +10495,26 @@ }, "type": "object" }, + "SalesChannelFile": { + "description": "Added since version: 6.7.12.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, "SalesChannelTrackingCustomer": { "description": "Added since version: 6.7.9.0", "properties": { @@ -12038,1254 +12069,1553 @@ }, "type": "object" }, - "BreadcrumbCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Breadcrumb" - } - }, - "CookieGroupCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CookieGroup" - } + "NewsletterStatus": { + "type": "string", + "enum": [ + "notSet", + "optIn", + "optOut", + "direct", + "undefined" + ], + "description": "The subscription status. Possible values are: notSet, optIn, optOut, direct, undefined." }, - "CalculatedPrice": { + "Breadcrumb": { "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "unitPrice": { - "type": "number" - }, - "quantity": { - "type": "number" - }, - "rawTotal": { - "type": "number" - }, - "totalPrice": { - "type": "number" + "name": { + "type": "string" }, - "taxStatus": { + "categoryId": { "type": "string", - "enum": [ - "net", - "tax-free" - ] + "pattern": "^[0-9a-f]{32}$" }, - "calculatedTaxes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } + "type": { + "$ref": "#/components/schemas/Category/properties/type" }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" + "translated": { + "type": "object", + "additionalProperties": true, + "properties": { + "customFields": { + "type": "object" }, - { - "type": "null" - } - ] - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" + "slotConfig": { + "type": "object" }, - { - "type": "null" - } - ] - }, - "positionPrice": { - "type": "number" - }, - "netPrice": { - "type": "number" - }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } + "linkType": { + "$ref": "#/components/schemas/Category/properties/linkType" }, - { - "type": "null" + "internalLink": { + "type": "string" + }, + "externalLink": { + "type": "string" + }, + "linkNewTab": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "metaTitle": { + "type": "string" + }, + "metaDescription": { + "type": "string" + }, + "keywords": { + "type": "string" } - ] + } }, - "hasRange": { - "type": "boolean" + "path": { + "type": "string" }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } - ] + "seoUrls": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" + } }, "apiAlias": { "type": "string", "enum": [ - "calculated_price" + "breadcrumb" ] - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } } }, "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "referencePrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitPrice", - "positionPrice", - "netPrice", - "taxRules", - "rawTotal", - "taxStatus" + "name", + "categoryId", + "type", + "translated", + "path", + "apiAlias" ] }, - "MeasurementUnits": { + "ProductPurchaseLimit": { "type": "object", - "description": "Configuration of the measurement system", + "description": "Current quantity purchase limits for a product.", + "required": [ + "productId", + "minPurchase", + "purchaseSteps", + "maxPurchase", + "stock", + "apiAlias" + ], "properties": { - "system": { + "productId": { "type": "string", - "enum": [ - "metric", - "imperial" - ], - "default": "metric", - "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." + "pattern": "^[0-9a-f]{32}$", + "description": "The product ID." }, - "units": { - "type": "object", - "description": "Units used in the measurement system.", - "properties": { - "length": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm", - "description": "Unit of length." - }, - "weight": { - "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg", - "description": "Unit of weight." - } - } + "minPurchase": { + "type": "integer", + "description": "Minimum quantity a customer can purchase." + }, + "purchaseSteps": { + "type": "integer", + "description": "Step increment for quantity selection." + }, + "maxPurchase": { + "type": "integer", + "description": "Maximum quantity a customer can purchase, reflecting current stock for closeout products." + }, + "stock": { + "type": [ + "integer", + "null" + ], + "description": "Current stock level of the product." + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_purchase_limit" + ] } } }, - "CartListPrice": { + "AggregationMetrics": { "type": "object", - "description": "", "properties": { - "discount": { - "type": "number" - }, - "percentage": { - "type": "number" - }, - "price": { - "type": "number" + "name": { + "type": "string" }, - "apiAlias": { + "type": { "type": "string", "enum": [ - "cart_list_price" + "avg", + "count", + "max", + "min", + "stats", + "sum" ] + }, + "field": { + "type": "string" } }, "required": [ - "apiAlias" + "name", + "type", + "field" ] }, - "CartDeliveryInformation": { + "LineItemType": { + "type": "string", + "deprecated": true, + "enum": [ + "product", + "credit", + "custom", + "promotion", + "discount", + "container", + "quantity" + ] + }, + "LineItem": { "type": "object", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_information" - ] + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } }, - "freeDelivery": { - "type": "boolean" + "cover": { + "$ref": "#/components/schemas/Media" }, - "deliveryTime": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer" - }, - "max": { - "type": "integer" - }, - "unit": { - "type": "string" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_time" - ] - } - } + "dataContextHash": { + "type": "string" }, - "height": { - "type": "integer" + "dataTimestamp": { + "type": "string" }, - "length": { - "type": "integer" + "deliveryInformation": { + "$ref": "#/components/schemas/CartDeliveryInformation" }, - "restockTime": { - "type": "integer" + "description": { + "type": "string", + "description": "Description of line items in an order." }, - "stock": { - "type": "integer" + "good": { + "type": "boolean", + "description": "When set to true, it indicates the line item is physical else it is virtual." }, - "weight": { - "type": "integer" + "id": { + "type": "string", + "description": "Unique identity of line item." }, - "width": { - "type": "integer" - } - }, - "required": [ - "apiAlias" - ] - }, - "ProductListingCriteria": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "label": { + "type": "string", + "description": "It is a typical product name given to the line item." }, - { + "modified": { + "type": "boolean", + "description": "When boolean value is `true`, line items are said to be modified." + }, + "modifiedByApp": { + "type": "boolean" + }, + "payload": { + "$ref": "#/components/schemas/ProductJsonApi" + }, + "price": { "type": "object", - "description": "Additional search parameters for product listings", "properties": { - "order": { - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "type": "string" + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] }, - "limit": { - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "type": "integer", - "minimum": 0 + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } }, - "p": { - "description": "Search result page", - "type": "integer", - "default": 1 + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] }, - "manufacturer": { - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", - "type": "string" + "quantity": { + "type": "number" }, - "min-price": { - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] }, - "max-price": { - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 - }, - "rating": { - "description": "Filter products with a minimum average rating.", - "type": "integer" - }, - "shipping-free": { - "description": "Filters products that are marked as shipping-free.", - "type": "boolean", - "default": false - }, - "properties": { - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", - "type": "string" - }, - "manufacturer-filter": { - "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "price-filter": { - "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "rating-filter": { - "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "shipping-free-filter": { - "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "property-filter": { - "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "property-whitelist": { - "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", - "type": "string" - }, - "reduce-aggregations": { - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "regulationPrice": { "oneOf": [ { - "type": "string" + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } }, { "type": "null" } ] + }, + "totalPrice": { + "type": "number" + }, + "unitPrice": { + "type": "number" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } + } + }, + "required": [ + "apiAlias", + "totalPrice", + "quantity", + "unitPrice" + ] + }, + "priceDefinition": { + "$ref": "#/components/schemas/CartPriceQuantity" + }, + "quantity": { + "type": "number", + "description": "Number of items of product." + }, + "quantityInformation": { + "type": "object", + "properties": { + "maxPurchase": { + "type": "number" + }, + "minPurchase": { + "type": "number" + }, + "purchaseSteps": { + "type": "number" } } + }, + "referencedId": { + "type": "string", + "description": "Unique identity of type of entity." + }, + "removable": { + "type": "boolean", + "description": "Allows the line item to be removable from the cart when set to true." + }, + "stackable": { + "type": "boolean", + "description": "Allows to change the quantity of the line item when set to true." + }, + "states": { + "deprecated": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "is-physical", + "is-download" + ] + } + }, + "type": { + "$ref": "#/components/schemas/OrderLineItem/properties/type", + "description": "Type refers to the entity type of an item whether it is product or promotion for instance." + }, + "uniqueIdentifier": { + "type": "string" } - ], + }, + "required": [ + "id", + "type" + ] + }, + "CookieEntryCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CookieEntry" + } + }, + "ProductMeasurements": { + "type": "object", + "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", "properties": { - "filter": { + "width": { + "type": "object", "properties": { - "type": { - "description": "To filter the results and aggregations with filter types like ==, >=, etc." - }, - "field": { - "description": "To filter the results and aggregations by field like an property identifier." + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" }, "value": { - "description": "To filter the results and aggregations by value." + "type": "number" } } }, - "sort": { + "height": { + "type": "object", "properties": { - "field": { - "description": "Sort the search results by field like an property identifier." - }, - "order": { - "description": "Sort the search results of orders by ascending or descending." + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" }, - "naturalSorting": { - "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." + "value": { + "type": "number" } } }, - "post-filter": { + "length": { + "type": "object", "properties": { - "type": { - "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" }, - "field": { - "description": "To filter only the results but not the aggregations by field like an property identifier." + "value": { + "type": "number" + } + } + }, + "weight": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg" }, "value": { - "description": "To filter only the results but not the aggregations by value." + "type": "number" } } } } }, - "ProductPurchaseLimit": { + "CookieGroupCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CookieGroup" + } + }, + "EntitySearchResult": { "type": "object", - "description": "Current quantity purchase limits for a product.", - "required": [ - "productId", - "minPurchase", - "purchaseSteps", - "maxPurchase", - "stock", - "apiAlias" - ], "properties": { - "productId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The product ID." + "entity": { + "type": "string" }, - "minPurchase": { + "total": { "type": "integer", - "description": "Minimum quantity a customer can purchase." + "description": "The total number of found entities" }, - "purchaseSteps": { + "aggregations": { + "type": "array", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", + "items": { + "type": "object" + } + }, + "page": { "type": "integer", - "description": "Step increment for quantity selection." + "description": "The actual page. This can be used for pagination." }, - "maxPurchase": { + "limit": { "type": "integer", - "description": "Maximum quantity a customer can purchase, reflecting current stock for closeout products." + "description": "The actual limit. This is used for pagination and goes together with the page." + } + } + }, + "Price": { + "type": "object", + "description": "Price object", + "properties": { + "currencyId": { + "description": "Unique identity of the associated currency.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "stock": { + "gross": { + "description": "Gross price for the associated currency.", + "type": "number" + }, + "net": { + "description": "Net price for the associated currency.", + "type": "number" + }, + "linked": { + "description": "Whether gross and net prices are linked through the tax configuration.", + "type": "boolean" + }, + "percentage": { + "description": "Discount percentage relative to the list price for the gross and net amounts. `null` when no list price is set.", "type": [ - "integer", + "object", "null" ], - "description": "Current stock level of the product." + "properties": { + "gross": { + "description": "Discount percentage relative to the gross list price.", + "type": "number" + }, + "net": { + "description": "Discount percentage relative to the net list price.", + "type": "number" + } + }, + "required": [ + "gross", + "net" + ] }, - "apiAlias": { - "type": "string", - "enum": [ - "product_purchase_limit" + "listPrice": { + "description": "Reference list price for displaying discounts.", + "type": "object", + "properties": { + "currencyId": { + "description": "Unique identity of the associated currency.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "gross": { + "description": "Gross list price for the associated currency.", + "type": "number" + }, + "net": { + "description": "Net list price for the associated currency.", + "type": "number" + }, + "linked": { + "description": "Whether gross and net list prices are linked through the tax configuration.", + "type": "boolean" + } + }, + "required": [ + "gross", + "net" + ] + }, + "regulationPrice": { + "description": "Reference price used for legal price disclosures.", + "type": "object", + "properties": { + "currencyId": { + "description": "Unique identity of the associated currency.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "gross": { + "description": "Gross regulation price for the associated currency.", + "type": "number" + }, + "net": { + "description": "Net regulation price for the associated currency.", + "type": "number" + }, + "linked": { + "description": "Whether gross and net regulation prices are linked through the tax configuration.", + "type": "boolean" + } + }, + "required": [ + "gross", + "net" ] } - } - }, - "CrossSellingElementCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CrossSellingElement" }, - "properties": { - "total": { - "description": "Number of cross selling elements found." - } - } + "required": [ + "currencyId", + "gross", + "net" + ] }, - "Criteria": { + "CartItems": { "type": "object", - "description": "Criteria to query entities.", + "required": [ + "items" + ], "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "term": { - "description": "Search term", - "type": "string" - }, - "limit": { - "description": "Number of items per result page", - "type": "integer" - }, - "filter": { + "items": { "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] + "$ref": "#/components/schemas/LineItem" }, "properties": { - "type": { - "description": "To filter the results and aggregations with filter types like ==, >=, etc." - }, - "field": { - "description": "To filter the results and aggregations by field like an property identifier." + "id": { + "description": "Unique identity of cart item." }, - "value": { - "description": "To filter the results and aggregations by value." + "modified": { + "description": "When boolean value is `true`, the cart is said to be modified." } } + } + } + }, + "CookieRouteResponse": { + "type": "object", + "description": "Response containing cookie groups and their configuration hash.", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cookie_groups_hash" + ] }, - "ids": { + "elements": { "type": "array", - "description": "List of ids to search for", + "description": "Collection of cookie groups", "items": { - "type": "string" + "$ref": "#/components/schemas/CookieGroup" } }, - "query": { + "hash": { "type": "string", - "description": "The query string to search for" - }, - "associations": { - "$ref": "#/components/schemas/Associations" + "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", + "example": "f86b6a872cb83dbd22d838ceda1aa3d4" }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, + "languageId": { + "type": "string", + "format": "uuid", + "description": "The language ID for which the cookie configuration was generated. Used to store hashes per language.", + "example": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" + } + }, + "required": [ + "elements", + "hash", + "languageId", + "apiAlias" + ], + "example": { + "apiAlias": "cookie_groups_hash", + "elements": [ + { + "isRequired": true, + "description": "Cookies required for this shop to function:", + "name": "Technically required", + "entries": [ { - "$ref": "#/components/schemas/EqualsFilter" + "name": "Session", + "hidden": false, + "cookie": "session-", + "apiAlias": "cookie_entry" }, { - "$ref": "#/components/schemas/MultiNotFilter" + "name": "Timezone", + "hidden": false, + "cookie": "timezone", + "apiAlias": "cookie_entry" }, { - "$ref": "#/components/schemas/RangeFilter" + "value": "1", + "expiration": 30, + "name": "Cookie preferences", + "hidden": true, + "cookie": "cookie-preference", + "apiAlias": "cookie_entry" } - ] - }, - "properties": { - "type": { - "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." - }, - "field": { - "description": "To filter only the results but not the aggregations by field like an property identifier." - }, - "value": { - "description": "To filter only the results but not the aggregations by value." - } - } - }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" + ], + "apiAlias": "cookie_group" }, - "properties": { - "field": { - "description": "Sort the search results by field like an property identifier." - }, - "order": { - "description": "Sort the search results of orders by ascending or descending." - }, - "naturalSorting": { - "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." - } - } - }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } - }, - "fields": { - "type": "array", - "description": "Fields which should be returned in the search result.", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" - }, - "includes": { - "$ref": "#/components/schemas/Includes" - }, - "excludes": { - "$ref": "#/components/schemas/Excludes" - } - } - }, - "NoneFieldsCriteria": { - "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", - "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "term": { - "description": "Search term", - "type": "string" - }, - "limit": { - "description": "Number of items per result page", - "type": "integer" - }, - "filter": { - "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, + { + "isRequired": false, + "description": "Cookies used for statistics and shop performance metrics.", + "name": "Statistics", + "entries": [ { - "$ref": "#/components/schemas/EqualsFilter" - }, + "value": "1", + "expiration": 30, + "name": "Google Analytics", + "hidden": false, + "cookie": "google-analytics-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "description": "Allows Google to collect personal data for online advertising and marketing.", + "name": "Marketing", + "entries": [ { - "$ref": "#/components/schemas/MultiNotFilter" - }, + "value": "1", + "expiration": 30, + "name": "Google Advertising", + "hidden": false, + "cookie": "google-ads-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "name": "Comfort features", + "entries": [ { - "$ref": "#/components/schemas/RangeFilter" + "value": "1", + "expiration": 30, + "name": "YouTube video", + "hidden": false, + "cookie": "youtube-video", + "apiAlias": "cookie_entry" } - ] + ], + "apiAlias": "cookie_group" } - }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { + ], + "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", + "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" + } + }, + "ShippingMethodPageRouteResponse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { "type": "string" - } - }, - "query": { - "type": "string", - "description": "The query string to search for" - }, - "associations": { - "$ref": "#/components/schemas/Associations" - }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" + }, + "active": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "deliveryTimeId": { + "type": "string" + }, + "deliveryTime": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - { - "$ref": "#/components/schemas/EqualsFilter" + "min": { + "type": "integer", + "format": "int32" }, - { - "$ref": "#/components/schemas/MultiNotFilter" + "max": { + "type": "integer", + "format": "int32" }, - { - "$ref": "#/components/schemas/RangeFilter" + "unit": { + "type": "string" } - ] - } - }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" - } - }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } - }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" - }, - "includes": { - "$ref": "#/components/schemas/Includes" - }, - "excludes": { - "$ref": "#/components/schemas/Excludes" - } - } - }, - "Associations": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Criteria" - } - }, - "Includes": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "Excludes": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "Aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "title": "AggregationEntity", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/SubAggregations" } - ] - }, - { - "title": "AggregationFilter", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/SubAggregations" + }, + "translations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + } + } } - ] - }, - { - "title": "AggregationTerms", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/SubAggregations" + }, + "orderDeliveries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "orderId": { + "type": "string" + }, + "shippingOrderAddressId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "shippingDateEarliest": { + "type": "string", + "format": "date-time" + }, + "shippingDateLatest": { + "type": "string", + "format": "date-time" + }, + "stateId": { + "type": "string" + } + } } - ] - }, - { - "title": "AggregationHistogram", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/SubAggregations" + }, + "salesChannelDefaultAssignments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpAllowlist": { + "type": "string" + }, + "maintenanceIpWhitelist": { + "deprecated": true, + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } } - ] - }, - { - "title": "AggregationRange", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationRange" - }, - { - "$ref": "#/components/schemas/SubAggregations" + }, + "salesChannels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpAllowlist": { + "type": "string" + }, + "maintenanceIpWhitelist": { + "deprecated": true, + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } } - ] - } - ] - }, - "SubAggregations": { - "type": "object", - "properties": { - "aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/AggregationRange" + }, + "availabilityRule": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "priority": { + "type": "integer", + "format": "int32" + }, + "invalid": { + "type": "boolean" + } } - ] - } - } - }, - "TotalCountMode": { - "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", - "type": "string", - "default": "none", - "enum": [ - "none", - "exact", - "next-pages" - ] - }, - "Query": { - "type": "object", - "properties": { - "score": { - "type": "number" - }, - "query": { - "oneOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" + }, + "availabilityRuleId": { + "type": "string" + }, + "prices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "ruleId": { + "type": "string" + }, + "calculation": { + "type": "integer", + "format": "int32" + }, + "quantityStart": { + "type": "number", + "format": "float" + }, + "quantityEnd": { + "type": "number", + "format": "float" + }, + "price": { + "type": "number", + "format": "float" + }, + "calculationRuleId": { + "type": "string" + } + } } - ] - } - }, - "additionalProperties": true - }, - "Sort": { - "type": "object", - "properties": { - "field": { - "type": "string" - }, - "order": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - }, - "naturalSorting": { - "type": "boolean" - }, - "type": { - "type": "string" - } - }, - "required": [ - "field", - "order" - ] - }, - "Filters": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" }, - { - "$ref": "#/components/schemas/EqualsFilter" + "mediaId": { + "type": "string" }, - { - "$ref": "#/components/schemas/MultiNotFilter" + "media": { + "type": "object", + "properties": { + "userId": { + "type": "string" + }, + "mimeType": { + "type": "string" + }, + "fileExtension": { + "type": "string" + }, + "fileSize": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string" + }, + "metaDataRaw": { + "type": "string" + }, + "mediaTypeRaw": { + "type": "string" + }, + "uploadedAt": { + "type": "string", + "format": "date-time" + }, + "alt": { + "type": "string" + }, + "url": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "mediaFolderId": { + "type": "string" + }, + "private": { + "type": "boolean" + }, + "thumbnailsRo": { + "type": "string" + } + } }, - { - "$ref": "#/components/schemas/RangeFilter" + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + } } - ] - } - }, - "SimpleFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "contains", - "equalsAny", - "prefix", - "suffix" - ] - }, - "field": { - "type": "string" - }, - "value": { - "type": "string" } }, - "required": [ - "type", - "field", - "value" - ] - }, - "EqualsFilter": { - "type": "object", "properties": { - "type": { - "type": "string", - "enum": [ - "equals" - ] + "name": { + "description": "Name of the shipping method." }, - "field": { - "type": "string" + "active": { + "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." }, - "value": { - "oneOf": [ - { - "type": "string" + "description": { + "description": "The order of the tabs of your defined shipping methods in the storefront by entering numerical values like 1,2,3, etc." + }, + "deliveryTimeId": { + "description": "Unique identity of the delivery time." + }, + "deliveryTime": { + "properties": { + "name": { + "description": "Name given to delivery time." }, - { - "type": "number" + "min": { + "description": "Minimum delivery time taken." }, - { - "type": "boolean" + "max": { + "description": "Maximum delivery time taken." }, - { - "type": "null" + "unit": { + "description": "Unit in which the delivery time is defined. For example, days or hours." } - ] - } - }, - "required": [ - "type", - "field", - "value" - ] - }, - "MultiNotFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "multi", - "not" - ] - }, - "operator": { - "type": "string", - "enum": [ - "and", - "or", - "nor", - "nand" - ] - }, - "queries": { - "$ref": "#/components/schemas/Filters" - } - }, - "required": [ - "type", - "operator", - "queries" - ] - }, - "RangeFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "range" - ] - }, - "field": { - "type": "string" + } }, - "parameters": { - "type": "object", + "translations": { "properties": { - "gte": { - "type": "number" - }, - "gt": { - "type": "number" + "shippingMethodId": { + "description": "Unique identity of shipping method." }, - "lte": { - "type": "number" + "name": { + "description": "Name of the shipping method." }, - "lt": { - "type": "number" + "description": { + "description": "A short description of the shipping method." } } - } - }, - "required": [ - "type", - "field", - "parameters" - ] - }, - "CookieEntryCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CookieEntry" - } - }, - "CartItems": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - }, + }, + "orderDeliveries": { "properties": { - "id": { - "description": "Unique identity of cart item." + "orderId": { + "description": "Unique identity of order." }, - "modified": { - "description": "When boolean value is `true`, the cart is said to be modified." + "shippingOrderAddressId": { + "description": "Unique identity of shipping order address." + }, + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "shippingDateEarliest": { + "description": "Date and time of earliest delivery of products." + }, + "shippingDateLatest": { + "description": "Date and time of latest delivery of products." + }, + "stateId": { + "description": "Unique identity of state." } } - } - } - }, - "Association": { - "additionalProperties": { - "$ref": "#/components/schemas/Association" - } - }, - "CartItemsUpdate": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartLineItemUpdate" - } - } - } - }, - "CartLineItemUpdate": { - "type": "object", - "required": [ - "id" - ], - "properties": { - "id": { - "type": "string" - }, - "type": { - "$ref": "#/components/schemas/OrderLineItem/properties/type" - }, - "quantity": { - "type": "integer" - }, - "referencedId": { - "type": "string" - }, - "label": { - "type": "string" - }, - "payload": { - "type": "object" - }, - "stackable": { - "type": "boolean" - }, - "removable": { - "type": "boolean" - }, - "coverId": { - "type": "string" }, - "priceDefinition": { - "type": "object", + "salesChannelDefaultAssignments": { "properties": { - "type": { - "type": "string" + "stateId": { + "description": "Unique identity of state." }, - "price": { - "type": "number" + "languageId": { + "description": "Unique identity of language." }, - "percentage": { - "type": "number" + "currencyId": { + "description": "Unique identity of currency." }, - "quantity": { - "type": "integer" + "paymentMethodId": { + "description": "Unique identity of payment method." }, - "isCalculated": { - "type": "boolean" + "shippingMethodId": { + "description": "Unique identity of shipping method." }, - "listPrice": { - "type": "number" + "countryId": { + "description": "Unique identity of country." }, - "taxRules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number" - }, - "percentage": { - "type": "number" - } - } - } - } - } - } - } - }, - "AggregationEntity": { - "title": "AggregationEntity", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "entity" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "definition": { - "description": "The entity definition e.g \"product_manufacturer\".", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field", - "definition" - ] - }, - "AggregationFilter": { - "title": "AggregationFilter", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" + "navigationCategoryId": { + "description": "Unique identity of navigation category." + }, + "navigationCategoryDepth": { + "description": "It determines the number of levels of subcategories in the storefront category menu." + }, + "footerCategoryId": { + "description": "Unique identity of footer category." + }, + "serviceCategoryId": { + "description": "Unique identity of service category." + }, + "name": { + "description": "Name of the sales channel." + }, + "shortName": { + "description": "A short name for sales channel." + }, + "accessKey": { + "description": "Access key to store api." + }, + "active": { + "description": "When boolean value is `true`, the shipping methods are available for selection in the sales channel's storefront." + }, + "maintenance": { + "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." + }, + "maintenanceIpWhitelist": { + "description": "Array of IP address allowed to access the sales channel." + }, + "mailHeaderFooterId": { + "description": "Unique identity of mail header and footer." + }, + "customerGroupId": { + "description": "Unique identity of customer group." + }, + "hreflangActive": { + "description": "When boolean value is `true`, the sales channel pages are available in different languages." + }, + "hreflangDefaultDomainId": { + "description": "Unique identity of hreflangDefaultDomain." + } + } }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "filter" - ] + "salesChannels": { + "properties": { + "stateId": { + "description": "Unique identity of state." + }, + "languageId": { + "description": "Unique identity of language." + }, + "currencyId": { + "description": "Unique identity of currency." + }, + "paymentMethodId": { + "description": "Unique identity of payment method." + }, + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "countryId": { + "description": "Unique identity of country." + }, + "navigationCategoryId": { + "description": "Unique identity of navigation category." + }, + "navigationCategoryDepth": { + "description": "It determines the number of levels of subcategories in the storefront category menu." + }, + "footerCategoryId": { + "description": "Unique identity of footer category." + }, + "serviceCategoryId": { + "description": "Unique identity of service category." + }, + "name": { + "description": "Name of the sales channel." + }, + "shortName": { + "description": "A short name for sales channel." + }, + "accessKey": { + "description": "Access key to store api." + }, + "active": { + "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." + }, + "maintenance": { + "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." + }, + "maintenanceIpWhitelist": { + "description": "Array of IP address allowed to access the sales channel." + }, + "mailHeaderFooterId": { + "description": "Unique identity of mail header and footer." + }, + "customerGroupId": { + "description": "Unique identity of customer group." + }, + "hreflangActive": { + "description": "When boolean value is `true``, the sales channel pages are available in different languages." + }, + "hreflangDefaultDomainId": { + "description": "Unique identity of hreflangDefaultDomain." + } + } }, - "filter": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Filters" + "availabilityRule": { + "properties": { + "name": { + "description": "Unique name for the rule." + }, + "description": { + "description": "A short description about the rule." + }, + "priority": { + "description": "A numerical value to prioritize one of the rules from the list." + }, + "invalid": { + "description": "When the boolean value is `true`, the rule is no more available for usage." + } + } + }, + "availabilityRuleId": { + "description": "Unique identity of availability rule." + }, + "prices": { + "properties": { + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "currencyId": { + "description": "Unique identity of currency." + }, + "ruleId": { + "description": "Unique identity of rule." + }, + "calculation": { + "description": "Shipping price calculated based on quantity, price, weight or volume of items." + }, + "quantityStart": { + "description": "Starting range of quantity of an item." + }, + "quantityEnd": { + "description": "Ending range of quantity of an item." + }, + "price": { + "description": "Shipping method price after applied rules." + }, + "calculationRuleId": { + "description": "Unique identity of calculation rule." + } + } + }, + "mediaId": { + "description": "Unique identity of media." + }, + "media": { + "properties": { + "userId": { + "description": "Unique identity of user." + }, + "mimeType": { + "description": "A string sent along with a file indicating the type of the file. For example: image/jpeg." + }, + "fileExtension": { + "description": "Type of file indication. For example: jpeg, png." + }, + "fileSize": { + "description": "Size of the file media file uploaded." + }, + "title": { + "description": "Title name give to the media." + }, + "metaDataRaw": { + "description": "Details of the media file uploaded." + }, + "alt": { + "description": "Alternate text for media." + }, + "url": { + "description": "Runtime field, cannot be used as part of the criteria." + }, + "fileName": { + "description": "Name of the media file uploaded." + }, + "mediaFolderId": { + "description": "Unique identity of media folder." + }, + "private": { + "description": "Boolean value is `true` to keep the media display private." + } + } + }, + "tags": { + "properties": { + "name": { + "description": "Name of the tag." + } } } - }, - "required": [ - "name", - "type", - "filter" - ] + } }, - "AggregationTerms": { - "title": "AggregationTerms", + "CartPriceReference": { "type": "object", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", + "purchaseUnit": { + "type": "number" + }, + "referenceUnit": { + "type": "number" + }, + "unitName": { "type": "string" }, - "type": { - "description": "The type of aggregation", + "price": { + "type": "number" + }, + "apiAlias": { "type": "string", "enum": [ - "terms" + "cart_price_reference" ] }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "limit": { - "description": "The number of terms to return", - "type": "number" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] }, - "sort": { - "type": "array", + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" + ] + }, + "AggregationEntity": { + "title": "AggregationEntity", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "entity" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "definition": { + "description": "The entity definition e.g \"product_manufacturer\".", + "type": "string" + } + }, + "required": [ + "name", + "type", + "field", + "definition" + ] + }, + "AggregationFilter": { + "title": "AggregationFilter", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "filter" + ] + }, + "filter": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Filters" + } + } + }, + "required": [ + "name", + "type", + "filter" + ] + }, + "AggregationTerms": { + "title": "AggregationTerms", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "terms" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "limit": { + "description": "The number of terms to return", + "type": "number" + }, + "sort": { + "type": "array", "description": "Sorting the aggregation result.", "items": { "$ref": "#/components/schemas/Sort" @@ -13417,977 +13747,580 @@ "ranges" ] }, - "Price": { + "Cart": { "type": "object", - "description": "Price object", "properties": { - "currencyId": { - "description": "Unique identity of the associated currency.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "name": { + "description": "Name of the cart - for example `guest-cart`", + "type": "string" }, - "gross": { - "description": "Gross price for the associated currency.", - "type": "number" + "token": { + "description": "Context token identifying the cart and the user session", + "type": "string" }, - "net": { - "description": "Net price for the associated currency.", - "type": "number" + "price": { + "$ref": "#/components/schemas/CalculatedPrice" }, - "linked": { - "description": "Whether gross and net prices are linked through the tax configuration.", - "type": "boolean" + "lineItems": { + "description": "All items within the cart", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } }, - "percentage": { - "description": "Discount percentage relative to the list price for the gross and net amounts. `null` when no list price is set.", - "type": [ - "object", - "null" - ], - "properties": { - "gross": { - "description": "Discount percentage relative to the gross list price.", - "type": "number" + "errors": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartError" + } }, - "net": { - "description": "Discount percentage relative to the net list price.", - "type": "number" + { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "code": { + "type": "number" + }, + "key": { + "type": "string" + }, + "level": { + "type": "number" + }, + "message": { + "type": "string" + }, + "messageKey": { + "type": "string" + } + }, + "required": [ + "code", + "key", + "level", + "message", + "messageKey" + ] + } } - }, - "required": [ - "gross", - "net" - ] - }, - "listPrice": { - "description": "Reference list price for displaying discounts.", - "type": "object", + ], "properties": { - "currencyId": { - "description": "Unique identity of the associated currency.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "Gross list price for the associated currency.", - "type": "number" + "key": { + "description": "Unique key for every message." }, - "net": { - "description": "Net list price for the associated currency.", - "type": "number" + "level": { + "description": "Types of level - Notice, warning and error. " }, - "linked": { - "description": "Whether gross and net list prices are linked through the tax configuration.", - "type": "boolean" + "message": { + "description": "A persistent error passed from the shopping cart calculation processes to the user end." } - }, - "required": [ - "gross", - "net" - ] + } }, - "regulationPrice": { - "description": "Reference price used for legal price disclosures.", - "type": "object", - "properties": { - "currencyId": { - "description": "Unique identity of the associated currency.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "Gross regulation price for the associated currency.", - "type": "number" - }, - "net": { - "description": "Net regulation price for the associated currency.", - "type": "number" - }, - "linked": { - "description": "Whether gross and net regulation prices are linked through the tax configuration.", - "type": "boolean" + "deliveries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDelivery" + } + }, + "transactions": { + "description": "A list of all payment transactions associated with the current cart.", + "type": "array", + "items": { + "type": "object", + "properties": { + "paymentMethodId": { + "type": "string" + }, + "amount": { + "$ref": "#/components/schemas/CalculatedPrice" + } } }, - "required": [ - "gross", - "net" - ] - } - }, - "required": [ - "currencyId", - "gross", - "net" - ] - }, - "AggregationMetrics": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "avg", - "count", - "max", - "min", - "stats", - "sum" - ] - }, - "field": { - "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "CartPriceReference": { - "type": "object", - "properties": { - "purchaseUnit": { - "type": "number" - }, - "referenceUnit": { - "type": "number" - }, - "unitName": { - "type": "string" - }, - "price": { - "type": "number" + "properties": { + "paymentMethodId": { + "description": "Unique identity of payment method." + } + } }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_reference" - ] + "modified": { + "type": "boolean", + "description": "It signifies any changes to cart." }, - "listPrice": { + "customerComment": { + "description": "A comment that can be added to the cart.", "oneOf": [ { - "$ref": "#/components/schemas/CartListPrice" + "type": "string" }, { "type": "null" } ] }, - "regulationPrice": { + "affiliateCode": { + "description": "An affiliate tracking code", "oneOf": [ { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } + "type": "string" }, { "type": "null" } ] }, - "hasRange": { - "type": "boolean" - }, - "variantId": { + "campaignCode": { + "description": "A campaign tracking code", "oneOf": [ { - "type": "string", - "format": "^[0-9a-f]{32}$" + "type": "string" }, { "type": "null" } ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart" + ] + }, + "id": { + "description": "Unique identity of cart." } }, "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" + "price", + "apiAlias" ] }, - "CustomerAddressBody": { - "description": "Added since version: 6.0.0.0", + "CartItemsUpdate": { + "type": "object", "required": [ - "countryId", - "firstName", - "lastName", - "city", - "street" + "items" ], "properties": { - "countryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryStateId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "salutationId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "zipcode": { - "type": "string" - }, - "city": { - "type": "string" - }, - "company": { - "type": "string" - }, - "street": { - "type": "string" - }, - "department": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartLineItemUpdate" + } + } + } + }, + "CartLineItemUpdate": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { "type": "string" }, - "title": { - "type": "string" + "type": { + "$ref": "#/components/schemas/OrderLineItem/properties/type" }, - "phoneNumber": { - "type": "string" + "quantity": { + "type": "integer" }, - "additionalAddressLine1": { + "referencedId": { "type": "string" }, - "additionalAddressLine2": { + "label": { "type": "string" }, - "customFields": { + "payload": { "type": "object" }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "$ref": "#/components/schemas/CountryState" - }, - "salutation": { - "$ref": "#/components/schemas/Salutation" - } - }, - "type": "object" - }, - "CustomerAddressRead": { - "type": "object", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true + "stackable": { + "type": "boolean" }, - "customerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true + "removable": { + "type": "boolean" }, - "createdAt": { - "type": "string", - "format": "date-time" + "coverId": { + "type": "string" }, - "updatedAt": { - "oneOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "null" - } - ] - }, - "country": { - "$ref": "#/components/schemas/Country" + "priceDefinition": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "price": { + "type": "number" + }, + "percentage": { + "type": "number" + }, + "quantity": { + "type": "integer" + }, + "isCalculated": { + "type": "boolean" + }, + "listPrice": { + "type": "number" + }, + "taxRules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number" + }, + "percentage": { + "type": "number" + } + } + } + } + } + } + } + }, + "ContextMeasurementSystemInfo": { + "type": "object", + "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", + "properties": { + "system": { + "type": "string", + "enum": [ + "metric", + "imperial" + ], + "default": "metric", + "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." }, - "countryState": { - "oneOf": [ - { - "$ref": "#/components/schemas/CountryState" + "units": { + "type": "object", + "description": "Units used in the measurement system.", + "properties": { + "length": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Unit of length." }, - { - "type": "null" + "weight": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." } - ] + } + } + } + }, + "AccountNewsletterRecipient": { + "type": "object", + "properties": { + "status": { + "$ref": "#/components/schemas/NewsletterStatus" }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "apiAlias": { + "type": "string", + "enum": [ + "account_newsletter_recipient" + ] } }, "required": [ - "customerId", - "createdAt", - "updatedAt", - "country", - "salutation" + "status", + "apiAlias" ] }, - "NavigationRouteResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - }, - "properties": { - "id": { - "description": "Unique identity of navigation route response." - } - } - }, - "ShippingMethodPageRouteResponse": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "deliveryTimeId": { - "type": "string" - }, - "deliveryTime": { - "type": "object", + "ProductListingCriteria": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + }, + { + "type": "object", + "description": "Additional search parameters for product listings", + "properties": { + "order": { + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "type": "string" + }, + "limit": { + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "type": "integer", + "minimum": 0 + }, + "p": { + "description": "Search result page", + "type": "integer", + "default": 1 + }, + "manufacturer": { + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "type": "string" + }, + "min-price": { + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "max-price": { + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "rating": { + "description": "Filter products with a minimum average rating.", + "type": "integer" + }, + "shipping-free": { + "description": "Filters products that are marked as shipping-free.", + "type": "boolean", + "default": false + }, "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer", - "format": "int32" - }, - "max": { - "type": "integer", - "format": "int32" - }, - "unit": { - "type": "string" - } - } - }, - "translations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "name": { + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "type": "string" + }, + "manufacturer-filter": { + "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "price-filter": { + "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "rating-filter": { + "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "shipping-free-filter": { + "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-filter": { + "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-whitelist": { + "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", + "type": "string" + }, + "reduce-aggregations": { + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "oneOf": [ + { "type": "string" }, - "description": { - "type": "string" + { + "type": "null" } - } + ] } - }, - "orderDeliveries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "orderId": { - "type": "string" - }, - "shippingOrderAddressId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "shippingDateEarliest": { - "type": "string", - "format": "date-time" - }, - "shippingDateLatest": { - "type": "string", - "format": "date-time" - }, - "stateId": { - "type": "string" - } - } + } + } + ], + "properties": { + "filter": { + "properties": { + "type": { + "description": "To filter the results and aggregations with filter types like ==, >=, etc." + }, + "field": { + "description": "To filter the results and aggregations by field like an property identifier." + }, + "value": { + "description": "To filter the results and aggregations by value." } - }, - "salesChannelDefaultAssignments": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" - }, - "hreflangDefaultDomainId": { - "type": "string" - } - } + } + }, + "sort": { + "properties": { + "field": { + "description": "Sort the search results by field like an property identifier." + }, + "order": { + "description": "Sort the search results of orders by ascending or descending." + }, + "naturalSorting": { + "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." } - }, - "salesChannels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" - }, - "hreflangDefaultDomainId": { - "type": "string" - } - } + } + }, + "post-filter": { + "properties": { + "type": { + "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." + }, + "field": { + "description": "To filter only the results but not the aggregations by field like an property identifier." + }, + "value": { + "description": "To filter only the results but not the aggregations by value." + } + } + } + } + }, + "CartPriceQuantity": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_quantity" + ] + }, + "isCalculated": { + "type": "boolean" + }, + "listPrice": { + "$ref": "#/components/schemas/CartListPrice" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" } }, - "availabilityRule": { + "type": "object" + }, + "taxRules": { + "type": "array", + "items": { "type": "object", "properties": { - "name": { - "type": "string" + "taxRate": { + "type": "number", + "format": "float" }, - "description": { + "name": { "type": "string" - }, - "priority": { - "type": "integer", - "format": "int32" - }, - "invalid": { - "type": "boolean" - } - } - }, - "availabilityRuleId": { - "type": "string" - }, - "prices": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "ruleId": { - "type": "string" - }, - "calculation": { - "type": "integer", - "format": "int32" - }, - "quantityStart": { - "type": "number", - "format": "float" - }, - "quantityEnd": { - "type": "number", - "format": "float" - }, - "price": { - "type": "number", - "format": "float" - }, - "calculationRuleId": { - "type": "string" - } - } - } - }, - "mediaId": { - "type": "string" - }, - "media": { - "type": "object", - "properties": { - "userId": { - "type": "string" - }, - "mimeType": { - "type": "string" - }, - "fileExtension": { - "type": "string" - }, - "fileSize": { - "type": "integer", - "format": "int32" - }, - "title": { - "type": "string" - }, - "metaDataRaw": { - "type": "string" - }, - "mediaTypeRaw": { - "type": "string" - }, - "uploadedAt": { - "type": "string", - "format": "date-time" - }, - "alt": { - "type": "string" - }, - "url": { - "type": "string" - }, - "fileName": { - "type": "string" - }, - "mediaFolderId": { - "type": "string" - }, - "private": { - "type": "boolean" - }, - "thumbnailsRo": { - "type": "string" - } - } - }, - "tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - } } } } + }, + "type": { + "type": "string" } }, + "required": [ + "apiAlias" + ] + }, + "ProductListingFlags": { + "type": "object", + "description": "Additional flags for product listings", "properties": { - "name": { - "description": "Name of the shipping method." - }, - "active": { - "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." - }, - "description": { - "description": "The order of the tabs of your defined shipping methods in the storefront by entering numerical values like 1,2,3, etc." - }, - "deliveryTimeId": { - "description": "Unique identity of the delivery time." - }, - "deliveryTime": { - "properties": { - "name": { - "description": "Name given to delivery time." - }, - "min": { - "description": "Minimum delivery time taken." - }, - "max": { - "description": "Maximum delivery time taken." + "no-aggregations": { + "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", + "oneOf": [ + { + "type": "string" }, - "unit": { - "description": "Unit in which the delivery time is defined. For example, days or hours." + { + "type": "null" } - } + ] }, - "translations": { - "properties": { - "shippingMethodId": { - "description": "Unique identity of shipping method." + "only-aggregations": { + "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", + "oneOf": [ + { + "type": "string" }, - "name": { - "description": "Name of the shipping method." + { + "type": "null" + } + ] + } + } + }, + "CartDelivery": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" }, - "description": { - "description": "A short description of the shipping method." + "latest": { + "type": "string", + "format": "date-time" } } }, - "orderDeliveries": { + "location": { + "type": "object", "properties": { - "orderId": { - "description": "Unique identity of order." - }, - "shippingOrderAddressId": { - "description": "Unique identity of shipping order address." - }, - "shippingMethodId": { - "description": "Unique identity of shipping method." + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] }, - "shippingDateEarliest": { - "description": "Date and time of earliest delivery of products." + "country": { + "$ref": "#/components/schemas/Country" }, - "shippingDateLatest": { - "description": "Date and time of latest delivery of products." + "address": { + "$ref": "#/components/schemas/CustomerAddress" }, - "stateId": { - "description": "Unique identity of state." + "state": { + "$ref": "#/components/schemas/CountryState" } } }, - "salesChannelDefaultAssignments": { - "properties": { - "stateId": { - "description": "Unique identity of state." - }, - "languageId": { - "description": "Unique identity of language." - }, - "currencyId": { - "description": "Unique identity of currency." - }, - "paymentMethodId": { - "description": "Unique identity of payment method." - }, - "shippingMethodId": { - "description": "Unique identity of shipping method." - }, - "countryId": { - "description": "Unique identity of country." - }, - "navigationCategoryId": { - "description": "Unique identity of navigation category." - }, - "navigationCategoryDepth": { - "description": "It determines the number of levels of subcategories in the storefront category menu." - }, - "footerCategoryId": { - "description": "Unique identity of footer category." - }, - "serviceCategoryId": { - "description": "Unique identity of service category." - }, - "name": { - "description": "Name of the sales channel." - }, - "shortName": { - "description": "A short name for sales channel." - }, - "accessKey": { - "description": "Access key to store api." - }, - "active": { - "description": "When boolean value is `true`, the shipping methods are available for selection in the sales channel's storefront." - }, - "maintenance": { - "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." - }, - "maintenanceIpWhitelist": { - "description": "Array of IP address allowed to access the sales channel." - }, - "mailHeaderFooterId": { - "description": "Unique identity of mail header and footer." - }, - "customerGroupId": { - "description": "Unique identity of customer group." - }, - "hreflangActive": { - "description": "When boolean value is `true`, the sales channel pages are available in different languages." - }, - "hreflangDefaultDomainId": { - "description": "Unique identity of hreflangDefaultDomain." - } - } - }, - "salesChannels": { - "properties": { - "stateId": { - "description": "Unique identity of state." - }, - "languageId": { - "description": "Unique identity of language." - }, - "currencyId": { - "description": "Unique identity of currency." - }, - "paymentMethodId": { - "description": "Unique identity of payment method." - }, - "shippingMethodId": { - "description": "Unique identity of shipping method." - }, - "countryId": { - "description": "Unique identity of country." - }, - "navigationCategoryId": { - "description": "Unique identity of navigation category." - }, - "navigationCategoryDepth": { - "description": "It determines the number of levels of subcategories in the storefront category menu." - }, - "footerCategoryId": { - "description": "Unique identity of footer category." - }, - "serviceCategoryId": { - "description": "Unique identity of service category." - }, - "name": { - "description": "Name of the sales channel." - }, - "shortName": { - "description": "A short name for sales channel." - }, - "accessKey": { - "description": "Access key to store api." - }, - "active": { - "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." - }, - "maintenance": { - "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." - }, - "maintenanceIpWhitelist": { - "description": "Array of IP address allowed to access the sales channel." - }, - "mailHeaderFooterId": { - "description": "Unique identity of mail header and footer." - }, - "customerGroupId": { - "description": "Unique identity of customer group." - }, - "hreflangActive": { - "description": "When boolean value is `true``, the sales channel pages are available in different languages." - }, - "hreflangDefaultDomainId": { - "description": "Unique identity of hreflangDefaultDomain." - } - } - }, - "availabilityRule": { - "properties": { - "name": { - "description": "Unique name for the rule." - }, - "description": { - "description": "A short description about the rule." - }, - "priority": { - "description": "A numerical value to prioritize one of the rules from the list." - }, - "invalid": { - "description": "When the boolean value is `true`, the rule is no more available for usage." - } - } - }, - "availabilityRuleId": { - "description": "Unique identity of availability rule." - }, - "prices": { - "properties": { - "shippingMethodId": { - "description": "Unique identity of shipping method." - }, - "currencyId": { - "description": "Unique identity of currency." - }, - "ruleId": { - "description": "Unique identity of rule." - }, - "calculation": { - "description": "Shipping price calculated based on quantity, price, weight or volume of items." - }, - "quantityStart": { - "description": "Starting range of quantity of an item." - }, - "quantityEnd": { - "description": "Ending range of quantity of an item." - }, - "price": { - "description": "Shipping method price after applied rules." - }, - "calculationRuleId": { - "description": "Unique identity of calculation rule." - } + "positions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDeliveryPosition" } }, - "mediaId": { - "description": "Unique identity of media." - }, - "media": { - "properties": { - "userId": { - "description": "Unique identity of user." - }, - "mimeType": { - "description": "A string sent along with a file indicating the type of the file. For example: image/jpeg." - }, - "fileExtension": { - "description": "Type of file indication. For example: jpeg, png." - }, - "fileSize": { - "description": "Size of the file media file uploaded." - }, - "title": { - "description": "Title name give to the media." - }, - "metaDataRaw": { - "description": "Details of the media file uploaded." - }, - "alt": { - "description": "Alternate text for media." - }, - "url": { - "description": "Runtime field, cannot be used as part of the criteria." - }, - "fileName": { - "description": "Name of the media file uploaded." - }, - "mediaFolderId": { - "description": "Unique identity of media folder." - }, - "private": { - "description": "Boolean value is `true` to keep the media display private." - } - } + "shippingCosts": { + "$ref": "#/components/schemas/CalculatedPrice" }, - "tags": { - "properties": { - "name": { - "description": "Name of the tag." - } - } + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" } } }, + "Association": { + "additionalProperties": { + "$ref": "#/components/schemas/Association" + } + }, "ProductDetailResponse": { "type": "object", "description": "Represents a product along with detailed information required to display a variant selection.", @@ -14428,1692 +14361,1118 @@ "product" ] }, - "AccountNewsletterRecipient": { - "type": "object", - "properties": { - "status": { - "$ref": "#/components/schemas/NewsletterStatus" - }, - "apiAlias": { - "type": "string", - "enum": [ - "account_newsletter_recipient" - ] - } - }, - "required": [ - "status", - "apiAlias" - ] - }, - "ReferencePrice": { + "Criteria": { "type": "object", + "description": "Criteria to query entities.", "properties": { - "purchaseUnit": { - "type": "number" - }, - "referenceUnit": { - "type": "number" + "page": { + "description": "Search result page", + "type": "integer" }, - "unitName": { + "term": { + "description": "Search term", "type": "string" }, - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_reference" - ] + "limit": { + "description": "Number of items per result page", + "type": "integer" }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/ListPrice" + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + }, + "properties": { + "type": { + "description": "To filter the results and aggregations with filter types like ==, >=, etc." }, - { - "type": "null" + "field": { + "description": "To filter the results and aggregations by field like an property identifier." + }, + "value": { + "description": "To filter the results and aggregations by value." } - ] + } }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } + }, + "query": { + "type": "string", + "description": "The query string to search for" + }, + "associations": { + "$ref": "#/components/schemas/Associations" + }, + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } + ] + }, + "properties": { + "type": { + "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." }, - { - "type": "null" + "field": { + "description": "To filter only the results but not the aggregations by field like an property identifier." + }, + "value": { + "description": "To filter only the results but not the aggregations by value." } - ] - }, - "hasRange": { - "type": "boolean" + } }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "^[0-9a-f]{32}$" + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + }, + "properties": { + "field": { + "description": "Sort the search results by field like an property identifier." }, - { - "type": "null" + "order": { + "description": "Sort the search results of orders by ascending or descending." + }, + "naturalSorting": { + "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." } - ] - } - }, - "required": [ - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" - ] - }, - "CookieEntry": { - "type": "object", - "properties": { - "cookie": { - "type": "string" + } }, - "value": { - "type": "string" + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } }, - "expiration": { - "type": "integer" + "fields": { + "type": "array", + "description": "Fields which should be returned in the search result.", + "items": { + "type": "string", + "description": "Name of a field" + } }, - "name": { - "type": "string" + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } }, - "description": { - "type": "string" + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" }, - "hidden": { - "type": "boolean" + "includes": { + "$ref": "#/components/schemas/Includes" }, - "apiAlias": { - "type": "string", - "enum": [ - "cookie_entry" - ] - } - }, - "required": [ - "cookie", - "hidden", - "apiAlias" - ] - }, - "FindProductVariantRouteResponse": { - "type": "object", - "properties": { - "foundCombination": { - "type": "object", - "properties": { - "variantId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of a variant." - }, - "options": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Available product variant options. For example, for variant `Size`, option would be `XS`, `S`, `M`, `L`, `XL`." - } - } + "excludes": { + "$ref": "#/components/schemas/Excludes" } } }, - "SalesChannelContext": { + "NoneFieldsCriteria": { "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "token": { - "description": "Context the user session", + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", "type": "string" }, - "currentCustomerGroup": { - "type": "object", - "description": "Customer group of the current user", - "properties": { - "name": { - "type": "string", - "description": "Name of customer group to which the customer belongs within the specific sales channel they are currently interacting with." - }, - "displayGross": { - "type": "boolean", - "description": "When `true`, product's gross price is displayed for that customer group who belongs to the specific sales channel they are currently interacting with." - } - } + "limit": { + "description": "Number of items per result page", + "type": "integer" }, - "fallbackCustomerGroup": { - "description": "Fallback group if the default customer group is not applicable", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] } }, - "currency": { - "$ref": "#/components/schemas/Currency", - "properties": { - "isoCode": { - "description": "Standard international three digit code to represent currency in a given sales channel. For example, USD." - }, - "factor": { - "description": "Currency exchange rate in a specific sales channel the customer is currently interacting with." - }, - "symbol": { - "description": "A currency symbol is a graphical representation used as shorthand for a currency's name, for example US Dollar - $ in a given sales channel." - }, - "shortName": { - "description": "Acronym for international currencies, for example, USD in a given sales channel." - }, - "name": { - "description": "Full name of the currency in a given sales channel. For example, US-Dollar." - }, - "position": { - "description": "The order of the tabs for multiple currencies defined in a given sales channel." - }, - "decimalPrecision": { - "description": "It defines the round off value for currency to the nearest decimal point in a given sales channel. If set to 2, it rounds off to two significant decimal points." - }, - "isSystemDefault": { - "description": "Runtime field, cannot be used as part of the criteria." - } + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" } }, - "salesChannel": { - "$ref": "#/components/schemas/SalesChannel", - "properties": { - "typeId": { - "description": "Unique identity of a sales channel's type within a specific sales channel." - }, - "languageId": { - "description": "Unique identity of a sales channel's language within a specific sales channel." - }, - "currencyId": { - "description": "Unique identity of a sales channel's currency within a specific sales channel." - }, - "paymentMethodId": { - "description": "Unique identity of a sales channel's payment method within a specific sales channel." - }, - "shippingMethodId": { - "description": "Unique identity of a sales channel's shipping method within a specific sales channel." - }, - "countryId": { - "description": "Unique identity of a sales channel's country within a specific sales channel." - }, - "navigationCategoryId": { - "description": "Unique identity of a sales channel's navigation category within a specific sales channel." - }, - "navigationCategoryDepth": { - "description": "It determines the number of levels of subcategories in the storefront category menu within a specific sales channel." - }, - "footerCategoryId": { - "description": "Unique identity of a sales channel's footer category within a specific sales channel." - }, - "serviceCategoryId": { - "description": "Unique identity of a sales channel's service category within a specific sales channel." - }, - "name": { - "description": "Name of the sales channel." - }, - "shortName": { - "description": "A short name for sales channel." - }, - "accessKey": { - "description": "Access key to store api." - }, - "active": { - "description": "When `true`, the sales channel is enabled." - }, - "maintenance": { - "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." - }, - "maintenanceIpWhitelist": { - "description": "Array of IP address allowed to access the sales channel." - }, - "mailHeaderFooterId": { - "description": "Unique identity of a sales channel's mail header and footer within a specific sales channel." - }, - "customerGroupId": { - "description": "Unique identity of a sales channel's customer group within a specific sales channel." - }, - "hreflangActive": { - "description": "When `true`, the sales channel pages are available in different languages within a specific sales channel." - }, - "hreflangDefaultDomainId": { - "description": "Unique identity of a sales channel's hreflangDefaultDomain within a specific sales channel." - }, - "analyticsId": { - "description": "Unique identity of a sales channel's analytics within a specific sales channel." - } - } + "query": { + "type": "string", + "description": "The query string to search for" }, - "measurementSystem": { - "$ref": "#/components/schemas/ContextMeasurementSystemInfo" + "associations": { + "$ref": "#/components/schemas/Associations" }, - "taxRules": { + "post-filter": { "type": "array", - "description": "Currently active tax rules and/or rates", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "name": { - "type": "string" + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } - } - }, - "properties": { - "taxRate": { - "description": "Rate of tax within a specific sales channel." - }, - "name": { - "description": "Name defined for a Tax within a specific sales channel." - } + ] } }, - "customer": { - "oneOf": [ + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + }, + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } + }, + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" + }, + "excludes": { + "$ref": "#/components/schemas/Excludes" + } + } + }, + "Associations": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Criteria" + } + }, + "Includes": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "Excludes": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "Aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" + }, + { + "title": "AggregationEntity", + "allOf": [ { - "type": "null" + "$ref": "#/components/schemas/AggregationEntity" }, { - "$ref": "#/components/schemas/Customer" + "$ref": "#/components/schemas/SubAggregations" } - ], - "properties": { - "groupId": { - "description": "Unique identity of a customer's group within a specific sales channel." - }, - "defaultPaymentMethodId": { - "description": "Unique identity of a customer's default payment method within a specific sales channel." + ] + }, + { + "title": "AggregationFilter", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationFilter" }, - "salesChannelId": { - "description": "Unique identity of sales channel the customer is currently interacting with." + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationTerms", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationTerms" }, - "languageId": { - "description": "Unique identity of language within a specific sales channel the customer is interacting." + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" }, - "lastPaymentMethodId": { - "description": "Unique identity of customer's last payment method within a specific sales channel." + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationRange", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationRange" }, - "defaultBillingAddressId": { - "description": "Unique identity of customer's default billing address within a specific sales channel." + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + } + ] + }, + "SubAggregations": { + "type": "object", + "properties": { + "aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" }, - "defaultShippingAddressId": { - "description": "Unique identity of customer's default shipping address within a specific sales channel." + { + "$ref": "#/components/schemas/AggregationEntity" }, - "customerNumber": { - "description": "Name of the customer within a specific sales channel the customer is interacting." + { + "$ref": "#/components/schemas/AggregationFilter" }, - "salutationId": { - "description": "Unique identity of customer's default shipping address within a specific sales channel." + { + "$ref": "#/components/schemas/AggregationTerms" }, - "firstName": { - "description": "First name of the customer within a specific sales channel." + { + "$ref": "#/components/schemas/AggregationHistogram" }, - "lastName": { - "description": "Last name of the customer within a specific sales channel." - }, - "company": { - "description": "Company name of the customer within a specific sales channel." - }, - "password": { - "description": "Password of the customer within a specific sales channel." - }, - "email": { - "description": "Email of the customer within a specific sales channel." - }, - "title": { - "description": "Customer's title or honorifics like Mr, Mrs, etc within a specific sales channel." - }, - "affiliateCode": { - "description": "An affiliate code is an identification option with which website operators can mark outgoing links within a specific sales channel." - }, - "campaignCode": { - "description": "A unique identifier for a campaign within a specific sales channel." - }, - "active": { - "description": "When `true`, the status of the customer is set active within a specific sales channel." - }, - "doubleOptInRegistration": { - "description": "When `true`, user subscriptions to an email marketing list is allowed within a specific sales channel." - }, - "doubleOptInEmailSentDate": { - "description": "Date and time when the double opt-in email was sent within a specific sales channel." - }, - "doubleOptInConfirmDate": { - "description": "Date and time when the double opt-in email was confirmed within a specific sales channel." - }, - "hash": { - "description": "Password hash for account recovery within a specific sales channel." - }, - "guest": { - "description": "Boolean value is `true` for a guest account within a specific sales channel." - }, - "firstLogin": { - "description": "Captures date and time of customer's first login within a specific sales channel." - }, - "lastLogin": { - "description": "Captures date and time of customer's last login within a specific sales channel." - }, - "newsletter": { - "description": "When `true`, then the customer gets subscribe to the newsletter" - }, - "birthday": { - "description": "Captures customer's birthday details within a specific sales channel." - }, - "lastOrderDate": { - "description": "Captures customer's last order date within a specific sales channel." - }, - "orderCount": { - "description": "Captures the number of orders placed by a customer within a specific sales channel." - }, - "legacyEncoder": { - "description": "encapsulates shop credentials when needed to migrate shop system from old instance to new instance" - }, - "legacyPassword": { - "description": "Hashed password of the old shop system" - }, - "autoIncrement": { - "description": "Internal field. " - }, - "remoteAddress": { - "description": "Anonymous IP address of the customer for last session." + { + "$ref": "#/components/schemas/AggregationRange" } - } + ] + } + } + }, + "TotalCountMode": { + "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", + "type": "string", + "default": "none", + "enum": [ + "none", + "exact", + "next-pages" + ] + }, + "Query": { + "type": "object", + "properties": { + "score": { + "type": "number" }, - "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethod", - "properties": { - "pluginId": { - "description": "Unique identity of payment plugin within a specific sales channel." - }, - "handlerIdentifier": { - "description": "Internal field that contains system identifier details for payment methods like Paypal." - }, - "name": { - "description": "Name of the payment method within a specific sales channel." - }, - "description": { - "description": "A short description about the payment method within a specific sales channel." - }, - "position": { - "description": "The order of the tabs of your defined payment methods in the storefront by entering numerical values like 1,2,3, etc within a specific sales channel." - }, - "active": { - "description": "When `true`, the payment method is available for usage within a specific sales channel." + "query": { + "oneOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "availabilityRuleId": { - "description": "Unique identity of the rule for the payment method." + { + "$ref": "#/components/schemas/EqualsFilter" }, - "mediaId": { - "description": "Unique identity of media used in payment method within a specific sales channel." + { + "$ref": "#/components/schemas/MultiNotFilter" }, - "formattedHandlerIdentifier": { - "description": "Internal field that contains system identifier details for payment methods like Paypal." + { + "$ref": "#/components/schemas/RangeFilter" } - } + ] + } + }, + "additionalProperties": true + }, + "Sort": { + "type": "object", + "properties": { + "field": { + "type": "string" }, - "shippingLocation": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" - } + "order": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + }, + "naturalSorting": { + "type": "boolean" + }, + "type": { + "type": "string" + } + }, + "required": [ + "field", + "order" + ] + }, + "Filters": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } + ] + } + }, + "SimpleFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "contains", + "equalsAny", + "prefix", + "suffix" + ] }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod", - "properties": { - "name": { - "description": "Name of the shipping method within a specific sales channel." - }, - "active": { - "description": "When `true`, the shipping method is available for usage within a specific sales channel." - }, - "description": { - "description": "A short description about the shipping method within a specific sales channel." - }, - "trackingUrl": { - "description": "URL that allows to track packages for a specific sales channel." + "field": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": [ + "type", + "field", + "value" + ] + }, + "EqualsFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "equals" + ] + }, + "field": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "type": "string" }, - "deliveryTimeId": { - "description": "Unique identity of deliveryTime within a specific sales channel." + { + "type": "number" }, - "availabilityRuleId": { - "description": "Unique identity of the rule for the payment method." + { + "type": "boolean" }, - "mediaId": { - "description": "Unique identity of media used in shipping method within a specific sales channel." + { + "type": "null" } - } - }, - "context": { - "description": "Core context with general configuration values and state", - "type": "object", - "properties": { - "versionId": { - "type": "string", - "description": "Unique identity of context's version in a specific sales channel." - }, - "currencyId": { - "type": "string", - "description": "Unique identity of currency context in a specific sales channel." - }, - "currencyFactor": { - "type": "integer", - "description": "Unique identity of currency factor context in a specific sales channel." - }, - "currencyPrecision": { - "type": "integer", - "format": "int32", - "description": "It defines the round off value of currency to the nearest decimal point. If set to 2, it rounds off to two significant decimal points." - }, - "languageIdChain": { - "type": "array", - "items": { - "type": "string" - } - }, - "scope": { - "type": "string", - "description": "Scope defines if its related to system or user context." - }, - "source": { - "type": "object", - "required": [ - "salesChannelId", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "sales-channel", - "shop-api" - ] - }, - "salesChannelId": { - "type": "string" - } - }, - "description": "When context is related to user in the source, then there is userId." - }, - "taxState": { - "type": "string", - "description": "Tax state can either be `gross` or `net`." - }, - "useCache": { - "type": "boolean", - "description": "When boolean value is `true`, caching is used." - } - } + ] + } + }, + "required": [ + "type", + "field", + "value" + ] + }, + "MultiNotFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "multi", + "not" + ] }, - "itemRounding": { - "type": "object", - "required": [ - "decimals", - "interval", - "roundForNet", - "apiAlias" - ], - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" - ] - }, - "decimals": { - "type": "integer", - "format": "int32" - }, - "interval": { - "type": "number", - "format": "float" - }, - "roundForNet": { - "type": "boolean" - } - } + "operator": { + "type": "string", + "enum": [ + "and", + "or", + "nor", + "nand" + ] }, - "totalRounding": { + "queries": { + "$ref": "#/components/schemas/Filters" + } + }, + "required": [ + "type", + "operator", + "queries" + ] + }, + "RangeFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "range" + ] + }, + "field": { + "type": "string" + }, + "parameters": { "type": "object", - "required": [ - "decimals", - "interval", - "roundForNet", - "apiAlias" - ], "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" - ] + "gte": { + "type": "number" }, - "decimals": { - "type": "integer", - "format": "int32" + "gt": { + "type": "number" }, - "interval": { - "type": "number", - "format": "float" + "lte": { + "type": "number" }, - "roundForNet": { - "type": "boolean" + "lt": { + "type": "number" } } + } + }, + "required": [ + "type", + "field", + "parameters" + ] + }, + "CookieGroup": { + "type": "object", + "properties": { + "isRequired": { + "type": "boolean" }, - "languageInfo": { - "type": "object", - "required": [ - "localeCode", - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "localeCode": { - "type": "string" - } - } + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "cookie": { + "type": "string" + }, + "value": { + "type": "string" + }, + "expiration": { + "type": "integer" + }, + "entries": { + "$ref": "#/components/schemas/CookieEntryCollection" }, "apiAlias": { "type": "string", "enum": [ - "sales_channel_context" + "cookie_group" ] } }, + "not": { + "allOf": [ + { + "required": [ + "cookie" + ] + }, + { + "required": [ + "entries" + ] + } + ] + }, "required": [ - "salesChannel", - "apiAlias", - "itemRounding", - "totalRounding", - "languageInfo" - ] - }, - "NavigationType": { - "type": "string", - "enum": [ - "main-navigation", - "footer-navigation", - "service-navigation" + "name", + "isRequired", + "apiAlias" ] }, - "WishlistLoadRouteResponse": { + "CartDeliveryPosition": { "type": "object", - "required": [ - "products" - ], + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "wishlist": { + "deliveryDate": { "type": "object", "properties": { - "customerId": { + "earliest": { "type": "string", - "description": "Unique identity of the customer." + "format": "date-time" }, - "salesChannelId": { + "latest": { "type": "string", - "description": "Unique identity of the sales channel." + "format": "date-time" } } }, - "products": { - "$ref": "#/components/schemas/ProductListingResult" + "identifier": { + "type": "string" + }, + "lineItem": { + "$ref": "#/components/schemas/LineItem" + }, + "price": { + "$ref": "#/components/schemas/CalculatedPrice" } } }, - "Breadcrumb": { + "ReferencePrice": { "type": "object", "properties": { - "name": { + "purchaseUnit": { + "type": "number" + }, + "referenceUnit": { + "type": "number" + }, + "unitName": { "type": "string" }, - "categoryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "price": { + "type": "number" }, - "type": { - "$ref": "#/components/schemas/Category/properties/type" + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_reference" + ] }, - "translated": { - "type": "object", - "additionalProperties": true, - "properties": { - "customFields": { - "type": "object" - }, - "slotConfig": { - "type": "object" - }, - "linkType": { - "$ref": "#/components/schemas/Category/properties/linkType" - }, - "internalLink": { - "type": "string" - }, - "externalLink": { - "type": "string" - }, - "linkNewTab": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "metaTitle": { - "type": "string" - }, - "metaDescription": { - "type": "string" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/ListPrice" }, - "keywords": { - "type": "string" + { + "type": "null" } - } + ] }, - "path": { - "type": "string" + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] }, - "seoUrls": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } + "hasRange": { + "type": "boolean" }, - "apiAlias": { - "type": "string", - "enum": [ - "breadcrumb" + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } ] } }, "required": [ - "name", - "categoryId", - "type", - "translated", - "path", - "apiAlias" + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" ] }, - "ProductListingFlags": { + "OrderRouteResponse": { "type": "object", - "description": "Additional flags for product listings", "properties": { - "no-aggregations": { - "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", - "oneOf": [ + "orders": { + "type": "object", + "allOf": [ { - "type": "string" + "type": "object", + "required": [ + "elements" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" + } + } + } }, { - "type": "null" + "$ref": "#/components/schemas/EntitySearchResult" } ] }, - "only-aggregations": { - "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", - "oneOf": [ - { - "type": "string" + "paymentChangeable": { + "type": "object", + "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", + "additionalProperties": { + "type": "boolean" + } + } + }, + "required": [ + "orders" + ] + }, + "WishlistLoadRouteResponse": { + "type": "object", + "required": [ + "products" + ], + "properties": { + "wishlist": { + "type": "object", + "properties": { + "customerId": { + "type": "string", + "description": "Unique identity of the customer." }, - { - "type": "null" + "salesChannelId": { + "type": "string", + "description": "Unique identity of the sales channel." } - ] + } + }, + "products": { + "$ref": "#/components/schemas/ProductListingResult" } } }, - "LineItemType": { + "Sitemap": { + "type": "object", + "properties": { + "filename": { + "type": "string", + "description": "Name of the file which holds a list of all URL's." + }, + "created": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "filename", + "created" + ] + }, + "NavigationType": { "type": "string", - "deprecated": true, "enum": [ - "product", - "credit", - "custom", - "promotion", - "discount", - "container", - "quantity" + "main-navigation", + "footer-navigation", + "service-navigation" ] }, - "LineItem": { + "ListPrice": { "type": "object", + "description": "", "properties": { - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - }, - "cover": { - "$ref": "#/components/schemas/Media" - }, - "dataContextHash": { - "type": "string" - }, - "dataTimestamp": { - "type": "string" - }, - "deliveryInformation": { - "$ref": "#/components/schemas/CartDeliveryInformation" + "discount": { + "type": "number" }, - "description": { - "type": "string", - "description": "Description of line items in an order." + "percentage": { + "type": "number" }, - "good": { - "type": "boolean", - "description": "When set to true, it indicates the line item is physical else it is virtual." + "price": { + "type": "number" }, - "id": { + "apiAlias": { "type": "string", - "description": "Unique identity of line item." - }, - "label": { - "type": "string", - "description": "It is a typical product name given to the line item." - }, - "modified": { - "type": "boolean", - "description": "When boolean value is `true`, line items are said to be modified." - }, - "modifiedByApp": { - "type": "boolean" - }, - "payload": { - "$ref": "#/components/schemas/ProductJsonApi" - }, - "price": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "calculated_price" - ] - }, - "calculatedTaxes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] - }, - "quantity": { - "type": "number" - }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] - }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } - }, - { - "type": "null" - } - ] - }, - "totalPrice": { - "type": "number" - }, - "unitPrice": { - "type": "number" - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } - } - }, - "required": [ - "apiAlias", - "totalPrice", - "quantity", - "unitPrice" + "enum": [ + "cart_list_price" ] - }, - "priceDefinition": { - "$ref": "#/components/schemas/CartPriceQuantity" - }, - "quantity": { - "type": "number", - "description": "Number of items of product." - }, - "quantityInformation": { - "type": "object", - "properties": { - "maxPurchase": { - "type": "number" - }, - "minPurchase": { - "type": "number" - }, - "purchaseSteps": { - "type": "number" - } - } - }, - "referencedId": { - "type": "string", - "description": "Unique identity of type of entity." - }, - "removable": { - "type": "boolean", - "description": "Allows the line item to be removable from the cart when set to true." - }, - "stackable": { - "type": "boolean", - "description": "Allows to change the quantity of the line item when set to true." - }, - "states": { - "deprecated": true, - "type": "array", - "items": { - "type": "string", - "enum": [ - "is-physical", - "is-download" - ] - } - }, - "type": { - "$ref": "#/components/schemas/OrderLineItem/properties/type", - "description": "Type refers to the entity type of an item whether it is product or promotion for instance." - }, - "uniqueIdentifier": { - "type": "string" } }, "required": [ - "id", - "type" + "apiAlias" ] }, - "CartPriceQuantity": { + "CalculatedPrice": { "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_quantity" - ] - }, - "isCalculated": { - "type": "boolean" + "unitPrice": { + "type": "number" }, - "listPrice": { - "$ref": "#/components/schemas/CartListPrice" + "quantity": { + "type": "number" }, - "price": { + "rawTotal": { "type": "number" }, - "quantity": { + "totalPrice": { "type": "number" }, - "regulationPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - } - }, - "type": "object" + "taxStatus": { + "type": "string", + "enum": [ + "net", + "tax-free" + ] }, - "taxRules": { + "calculatedTaxes": { "type": "array", "items": { "type": "object", "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, "taxRate": { - "type": "number", - "format": "float" + "type": "number" }, - "name": { - "type": "string" + "price": { + "type": "number" } - } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] } }, - "type": { - "type": "string" - } - }, - "required": [ - "apiAlias" - ] - }, - "NewsletterStatus": { - "type": "string", - "enum": [ - "notSet", - "optIn", - "optOut", - "direct", - "undefined" - ], - "description": "The subscription status. Possible values are: notSet, optIn, optOut, direct, undefined." - }, - "OrderRouteResponse": { - "type": "object", - "properties": { - "orders": { - "type": "object", - "allOf": [ + "referencePrice": { + "oneOf": [ { - "type": "object", - "required": [ - "elements" - ], - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order" - } - } - } + "$ref": "#/components/schemas/CartPriceReference" }, { - "$ref": "#/components/schemas/EntitySearchResult" + "type": "null" } ] }, - "paymentChangeable": { - "type": "object", - "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", - "additionalProperties": { - "type": "boolean" - } - } - }, - "required": [ - "orders" - ] - }, - "ProductListingResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EntitySearchResult" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] }, - { - "type": "object", - "properties": { - "currentFilters": { + "positionPrice": { + "type": "number" + }, + "netPrice": { + "type": "number" + }, + "regulationPrice": { + "oneOf": [ + { "type": "object", - "description": "Contains the state of the filters. These can be used to create listing filters.", "properties": { - "navigationId": { - "type": "string" - }, - "manufacturer": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, "price": { - "type": "object", - "properties": { - "min": { - "type": "integer", - "default": 0 - }, - "max": { - "type": "integer", - "default": 0 - } - }, - "required": [ - "min", - "max" - ] + "type": "number" }, - "rating": { - "oneOf": [ - { - "type": "integer" - }, - { - "type": "null" - } + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" ] - }, - "shipping-free": { - "type": "boolean", - "default": false - }, - "properties": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "search": { - "type": "string" } - }, - "required": [ - "manufacturer", - "navigationId", - "price", - "properties", - "rating", - "shipping-free" - ] - }, - "availableSortings": { - "type": "array", - "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", - "items": { - "type": "object", - "properties": { - "label": { - "type": "string" - }, - "translated": { - "type": "object", - "properties": { - "label": { - "type": "string" - } - }, - "required": [ - "label" - ] - }, - "key": { - "type": "string" - }, - "priority": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_sorting" - ] - } - }, - "required": [ - "label", - "translated", - "key", - "priority", - "apiAlias" - ] - } - }, - "sorting": { - "type": "string" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" } }, - "entity": { + { + "type": "null" + } + ] + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { "type": "string", - "enum": [ - "product" - ] + "format": "^[0-9a-f]{32}$" }, - "apiAlias": { - "type": "string", - "enum": [ - "product_listing" - ] + { + "type": "null" } - }, - "required": [ - "elements", - "availableSortings", - "currentFilters", - "apiAlias" ] - } - ] - }, - "CookieRouteResponse": { - "type": "object", - "description": "Response containing cookie groups and their configuration hash.", - "properties": { + }, "apiAlias": { "type": "string", "enum": [ - "cookie_groups_hash" + "calculated_price" ] }, - "elements": { + "taxRules": { "type": "array", - "description": "Collection of cookie groups", + "description": "Currently active tax rules and/or rates", "items": { - "$ref": "#/components/schemas/CookieGroup" + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } } - }, - "hash": { - "type": "string", - "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", - "example": "f86b6a872cb83dbd22d838ceda1aa3d4" - }, - "languageId": { - "type": "string", - "format": "uuid", - "description": "The language ID for which the cookie configuration was generated. Used to store hashes per language.", - "example": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" } }, "required": [ - "elements", - "hash", - "languageId", - "apiAlias" - ], - "example": { - "apiAlias": "cookie_groups_hash", - "elements": [ - { - "isRequired": true, - "description": "Cookies required for this shop to function:", - "name": "Technically required", - "entries": [ - { - "name": "Session", - "hidden": false, - "cookie": "session-", - "apiAlias": "cookie_entry" - }, - { - "name": "Timezone", - "hidden": false, - "cookie": "timezone", - "apiAlias": "cookie_entry" - }, - { - "value": "1", - "expiration": 30, - "name": "Cookie preferences", - "hidden": true, - "cookie": "cookie-preference", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "description": "Cookies used for statistics and shop performance metrics.", - "name": "Statistics", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "Google Analytics", - "hidden": false, - "cookie": "google-analytics-enabled", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "description": "Allows Google to collect personal data for online advertising and marketing.", - "name": "Marketing", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "Google Advertising", - "hidden": false, - "cookie": "google-ads-enabled", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "name": "Comfort features", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "YouTube video", - "hidden": false, - "cookie": "youtube-video", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - } - ], - "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", - "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" - } + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "referencePrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitPrice", + "positionPrice", + "netPrice", + "taxRules", + "rawTotal", + "taxStatus" + ] }, - "Cart": { + "CookieEntry": { "type": "object", "properties": { - "name": { - "description": "Name of the cart - for example `guest-cart`", + "cookie": { "type": "string" }, - "token": { - "description": "Context token identifying the cart and the user session", + "value": { "type": "string" }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "lineItems": { - "description": "All items within the cart", - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - }, - "errors": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "anyOf": [ - { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartError" - } - }, - { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "code": { - "type": "number" - }, - "key": { - "type": "string" - }, - "level": { - "type": "number" - }, - "message": { - "type": "string" - }, - "messageKey": { - "type": "string" - } - }, - "required": [ - "code", - "key", - "level", - "message", - "messageKey" - ] - } - } - ], - "properties": { - "key": { - "description": "Unique key for every message." - }, - "level": { - "description": "Types of level - Notice, warning and error. " - }, - "message": { - "description": "A persistent error passed from the shopping cart calculation processes to the user end." - } - } - }, - "deliveries": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDelivery" - } - }, - "transactions": { - "description": "A list of all payment transactions associated with the current cart.", - "type": "array", - "items": { - "type": "object", - "properties": { - "paymentMethodId": { - "type": "string" - }, - "amount": { - "$ref": "#/components/schemas/CalculatedPrice" - } - } - }, - "properties": { - "paymentMethodId": { - "description": "Unique identity of payment method." - } - } - }, - "modified": { - "type": "boolean", - "description": "It signifies any changes to cart." + "expiration": { + "type": "integer" }, - "customerComment": { - "description": "A comment that can be added to the cart.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] + "name": { + "type": "string" }, - "affiliateCode": { - "description": "An affiliate tracking code", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] + "description": { + "type": "string" }, - "campaignCode": { - "description": "A campaign tracking code", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] + "hidden": { + "type": "boolean" }, "apiAlias": { "type": "string", "enum": [ - "cart" + "cookie_entry" ] - }, - "id": { - "description": "Unique identity of cart." } }, "required": [ - "price", + "cookie", + "hidden", "apiAlias" ] }, - "Sitemap": { + "CartListPrice": { "type": "object", + "description": "", "properties": { - "filename": { - "type": "string", - "description": "Name of the file which holds a list of all URL's." + "discount": { + "type": "number" }, - "created": { + "percentage": { + "type": "number" + }, + "price": { + "type": "number" + }, + "apiAlias": { "type": "string", - "format": "date-time" + "enum": [ + "cart_list_price" + ] } }, "required": [ - "filename", - "created" + "apiAlias" ] }, - "CrossSellingElement": { - "type": "object", + "CustomerAddressBody": { + "description": "Added since version: 6.0.0.0", + "required": [ + "countryId", + "firstName", + "lastName", + "city", + "street" + ], "properties": { - "crossSelling": { - "$ref": "#/components/schemas/ProductCrossSelling" - }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - }, - "total": { - "type": "integer", - "format": "int32" + "countryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "streamId": { + "countryStateId": { "type": "string", - "format": "uuid" + "pattern": "^[0-9a-f]{32}$" }, - "apiAlias": { + "salutationId": { "type": "string", - "enum": [ - "cross_selling_element" - ] - } - }, - "required": [ - "crossSelling", - "products", - "total", - "apiAlias" - ] - }, - "ProductMeasurements": { - "type": "object", - "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", - "properties": { - "width": { - "type": "object", - "properties": { - "unit": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" - }, - "value": { - "type": "number" - } - } + "pattern": "^[0-9a-f]{32}$" }, - "height": { - "type": "object", - "properties": { - "unit": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" - }, - "value": { - "type": "number" - } - } + "firstName": { + "type": "string" }, - "length": { - "type": "object", - "properties": { - "unit": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" - }, - "value": { - "type": "number" - } - } + "lastName": { + "type": "string" }, - "weight": { - "type": "object", - "properties": { - "unit": { - "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg" - }, - "value": { - "type": "number" - } - } - } - } - }, - "CartError": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "key": { + "zipcode": { "type": "string" }, - "level": { - "type": "number", - "enum": [ - 0, - 10, - 20 - ], - "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" + "city": { + "type": "string" }, - "message": { + "company": { "type": "string" }, - "messageKey": { + "street": { + "type": "string" + }, + "department": { + "type": "string" + }, + "title": { + "type": "string" + }, + "phoneNumber": { + "type": "string" + }, + "additionalAddressLine1": { "type": "string" + }, + "additionalAddressLine2": { + "type": "string" + }, + "customFields": { + "type": "object" + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "$ref": "#/components/schemas/CountryState" + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, - "required": [ - "key", - "level", - "message", - "messageKey" - ] + "type": "object" }, - "ContextMeasurementSystemInfo": { + "MeasurementUnits": { "type": "object", - "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", + "description": "Configuration of the measurement system", "properties": { "system": { "type": "string", @@ -16155,1312 +15514,1589 @@ } } }, - "CartDeliveryPosition": { + "CustomerAddressRead": { "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true + }, + "customerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "updatedAt": { + "oneOf": [ + { "type": "string", "format": "date-time" }, - "latest": { - "type": "string", - "format": "date-time" + { + "type": "null" } - } + ] }, - "identifier": { - "type": "string" + "country": { + "$ref": "#/components/schemas/Country" }, - "lineItem": { - "$ref": "#/components/schemas/LineItem" + "countryState": { + "oneOf": [ + { + "$ref": "#/components/schemas/CountryState" + }, + { + "type": "null" + } + ] }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" + "salutation": { + "$ref": "#/components/schemas/Salutation" } - } + }, + "required": [ + "customerId", + "createdAt", + "updatedAt", + "country", + "salutation" + ] }, - "CookieGroup": { + "CrossSellingElement": { "type": "object", "properties": { - "isRequired": { - "type": "boolean" - }, - "name": { - "type": "string" + "crossSelling": { + "$ref": "#/components/schemas/ProductCrossSelling" }, - "description": { - "type": "string" - }, - "cookie": { - "type": "string" - }, - "value": { - "type": "string" - }, - "expiration": { - "type": "integer" - }, - "entries": { - "$ref": "#/components/schemas/CookieEntryCollection" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cookie_group" - ] - } - }, - "not": { - "allOf": [ - { - "required": [ - "cookie" - ] - }, - { - "required": [ - "entries" - ] + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" } - ] - }, - "required": [ - "name", - "isRequired", - "apiAlias" - ] - }, - "ListPrice": { - "type": "object", - "description": "", - "properties": { - "discount": { - "type": "number" }, - "percentage": { - "type": "number" + "total": { + "type": "integer", + "format": "int32" }, - "price": { - "type": "number" + "streamId": { + "type": "string", + "format": "uuid" }, "apiAlias": { "type": "string", "enum": [ - "cart_list_price" + "cross_selling_element" ] } }, "required": [ + "crossSelling", + "products", + "total", "apiAlias" ] }, - "CartDelivery": { + "SalesChannelContext": { "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "deliveryDate": { + "token": { + "description": "Context the user session", + "type": "string" + }, + "currentCustomerGroup": { "type": "object", + "description": "Customer group of the current user", "properties": { - "earliest": { + "name": { "type": "string", - "format": "date-time" + "description": "Name of customer group to which the customer belongs within the specific sales channel they are currently interacting with." }, - "latest": { - "type": "string", - "format": "date-time" + "displayGross": { + "type": "boolean", + "description": "When `true`, product's gross price is displayed for that customer group who belongs to the specific sales channel they are currently interacting with." } } }, - "location": { + "fallbackCustomerGroup": { + "description": "Fallback group if the default customer group is not applicable", "type": "object", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" + "name": { + "type": "string" }, - "state": { - "$ref": "#/components/schemas/CountryState" + "displayGross": { + "type": "boolean" } } }, - "positions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDeliveryPosition" - } - }, - "shippingCosts": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "EntitySearchResult": { - "type": "object", - "properties": { - "entity": { - "type": "string" - }, - "total": { - "type": "integer", - "description": "The total number of found entities" - }, - "aggregations": { - "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", - "items": { - "type": "object" - } - }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." - }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." - } - } - }, - "SuccessResponse": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - } - } - }, - "AccountNewsletterRecipientResult": { - "properties": { - "status": { - "description": "Status indicates if the customer has subscribed to the news letter or not." - } - } - }, - "OrderProductWarehouse": { - "properties": { - "id": { - "description": "Unique identity of order's product warehouse." - } - } - }, - "OrderReturn": { - "properties": { - "id": { - "description": "Unique identity of order return." - }, - "versionId": { - "description": "Unique identity of order return's version." - }, - "orderId": { - "description": "Unique identity of order." - }, - "orderVersionId": { - "description": "Unique identity of order return version." - }, - "price": { + "currency": { + "$ref": "#/components/schemas/Currency", "properties": { - "netPrice": { - "description": "Net price of the product." + "isoCode": { + "description": "Standard international three digit code to represent currency in a given sales channel. For example, USD." }, - "totalPrice": { - "description": "Gross price of the product." + "factor": { + "description": "Currency exchange rate in a specific sales channel the customer is currently interacting with." }, - "calculatedTaxes": { - "description": "Contains calculated tax on order delivery price." + "symbol": { + "description": "A currency symbol is a graphical representation used as shorthand for a currency's name, for example US Dollar - $ in a given sales channel." }, - "taxRules": { - "description": "Pricing based on multiple taxes." + "shortName": { + "description": "Acronym for international currencies, for example, USD in a given sales channel." }, - "positionPrice": { - "description": "Price of each line item in the cart multiplied by its quantity excluding charges like shipping cost, rules, taxes etc." + "name": { + "description": "Full name of the currency in a given sales channel. For example, US-Dollar." }, - "rawTotal": { - "description": "The total value before rounding off." + "position": { + "description": "The order of the tabs for multiple currencies defined in a given sales channel." }, - "taxStatus": { - "description": "TaxStatus takes `Free`, `Net` or `Gross` as values." + "decimalPrecision": { + "description": "It defines the round off value for currency to the nearest decimal point in a given sales channel. If set to 2, it rounds off to two significant decimal points." + }, + "isSystemDefault": { + "description": "Runtime field, cannot be used as part of the criteria." } } }, - "shippingCosts": { + "salesChannel": { + "$ref": "#/components/schemas/SalesChannel", "properties": { - "unitPrice": { - "description": "Shipping cost of product per item (where, quantity=1)." + "typeId": { + "description": "Unique identity of a sales channel's type within a specific sales channel." }, - "totalPrice": { - "description": "Shipping cost of product based on quantity." + "languageId": { + "description": "Unique identity of a sales channel's language within a specific sales channel." }, - "quantity": { - "description": "Number of items of each product." + "currencyId": { + "description": "Unique identity of a sales channel's currency within a specific sales channel." }, - "calculatedTaxes": { - "description": "Contains calculated taxes based on shipping costs/methods." + "paymentMethodId": { + "description": "Unique identity of a sales channel's payment method within a specific sales channel." }, - "taxRules": { - "description": "Pricing based on multiple taxes." + "shippingMethodId": { + "description": "Unique identity of a sales channel's shipping method within a specific sales channel." }, - "referencePrice": { - "description": "Original cost price of the product." + "countryId": { + "description": "Unique identity of a sales channel's country within a specific sales channel." }, - "listPrice": { - "properties": { - "price": { - "description": "Price of each line item." - }, - "discount": { - "description": "Absolute discount on each line item." - }, - "percentage": { - "description": "Discount in percentage." - } - } + "navigationCategoryId": { + "description": "Unique identity of a sales channel's navigation category within a specific sales channel." }, - "regulationPrice": { - "properties": { - "price": { - "description": "Contains cheapest price from last 30 days as per EU law." - } - } + "navigationCategoryDepth": { + "description": "It determines the number of levels of subcategories in the storefront category menu within a specific sales channel." + }, + "footerCategoryId": { + "description": "Unique identity of a sales channel's footer category within a specific sales channel." + }, + "serviceCategoryId": { + "description": "Unique identity of a sales channel's service category within a specific sales channel." + }, + "name": { + "description": "Name of the sales channel." + }, + "shortName": { + "description": "A short name for sales channel." + }, + "accessKey": { + "description": "Access key to store api." + }, + "active": { + "description": "When `true`, the sales channel is enabled." + }, + "maintenance": { + "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." + }, + "maintenanceIpWhitelist": { + "description": "Array of IP address allowed to access the sales channel." + }, + "mailHeaderFooterId": { + "description": "Unique identity of a sales channel's mail header and footer within a specific sales channel." + }, + "customerGroupId": { + "description": "Unique identity of a sales channel's customer group within a specific sales channel." + }, + "hreflangActive": { + "description": "When `true`, the sales channel pages are available in different languages within a specific sales channel." + }, + "hreflangDefaultDomainId": { + "description": "Unique identity of a sales channel's hreflangDefaultDomain within a specific sales channel." + }, + "analyticsId": { + "description": "Unique identity of a sales channel's analytics within a specific sales channel." } } }, - "stateId": { - "description": "Unique identity of state." - }, - "returnNumber": { - "description": "Reference number for returning order." - }, - "requestedAt": { - "description": "Date and time when the order return was requested." - }, - "amountTotal": { - "description": "Gross price of the order." + "measurementSystem": { + "$ref": "#/components/schemas/ContextMeasurementSystemInfo" }, - "amountNet": { - "description": "Net price of the order." - } - } - }, - "OrderReturnLineItem": { - "properties": { - "id": { - "description": "Unique identity of order return line item." + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + }, + "properties": { + "taxRate": { + "description": "Rate of tax within a specific sales channel." + }, + "name": { + "description": "Name defined for a Tax within a specific sales channel." + } + } }, - "versionId": { - "description": "Unique identity of order return line item's version." + "customer": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/Customer" + } + ], + "properties": { + "groupId": { + "description": "Unique identity of a customer's group within a specific sales channel." + }, + "defaultPaymentMethodId": { + "description": "Unique identity of a customer's default payment method within a specific sales channel." + }, + "salesChannelId": { + "description": "Unique identity of sales channel the customer is currently interacting with." + }, + "languageId": { + "description": "Unique identity of language within a specific sales channel the customer is interacting." + }, + "lastPaymentMethodId": { + "description": "Unique identity of customer's last payment method within a specific sales channel." + }, + "defaultBillingAddressId": { + "description": "Unique identity of customer's default billing address within a specific sales channel." + }, + "defaultShippingAddressId": { + "description": "Unique identity of customer's default shipping address within a specific sales channel." + }, + "customerNumber": { + "description": "Name of the customer within a specific sales channel the customer is interacting." + }, + "salutationId": { + "description": "Unique identity of customer's default shipping address within a specific sales channel." + }, + "firstName": { + "description": "First name of the customer within a specific sales channel." + }, + "lastName": { + "description": "Last name of the customer within a specific sales channel." + }, + "company": { + "description": "Company name of the customer within a specific sales channel." + }, + "password": { + "description": "Password of the customer within a specific sales channel." + }, + "email": { + "description": "Email of the customer within a specific sales channel." + }, + "title": { + "description": "Customer's title or honorifics like Mr, Mrs, etc within a specific sales channel." + }, + "affiliateCode": { + "description": "An affiliate code is an identification option with which website operators can mark outgoing links within a specific sales channel." + }, + "campaignCode": { + "description": "A unique identifier for a campaign within a specific sales channel." + }, + "active": { + "description": "When `true`, the status of the customer is set active within a specific sales channel." + }, + "doubleOptInRegistration": { + "description": "When `true`, user subscriptions to an email marketing list is allowed within a specific sales channel." + }, + "doubleOptInEmailSentDate": { + "description": "Date and time when the double opt-in email was sent within a specific sales channel." + }, + "doubleOptInConfirmDate": { + "description": "Date and time when the double opt-in email was confirmed within a specific sales channel." + }, + "hash": { + "description": "Password hash for account recovery within a specific sales channel." + }, + "guest": { + "description": "Boolean value is `true` for a guest account within a specific sales channel." + }, + "firstLogin": { + "description": "Captures date and time of customer's first login within a specific sales channel." + }, + "lastLogin": { + "description": "Captures date and time of customer's last login within a specific sales channel." + }, + "newsletter": { + "description": "When `true`, then the customer gets subscribe to the newsletter" + }, + "birthday": { + "description": "Captures customer's birthday details within a specific sales channel." + }, + "lastOrderDate": { + "description": "Captures customer's last order date within a specific sales channel." + }, + "orderCount": { + "description": "Captures the number of orders placed by a customer within a specific sales channel." + }, + "legacyEncoder": { + "description": "encapsulates shop credentials when needed to migrate shop system from old instance to new instance" + }, + "legacyPassword": { + "description": "Hashed password of the old shop system" + }, + "autoIncrement": { + "description": "Internal field. " + }, + "remoteAddress": { + "description": "Anonymous IP address of the customer for last session." + } + } }, - "orderReturnId": { - "description": "Unique identity of order return." + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod", + "properties": { + "pluginId": { + "description": "Unique identity of payment plugin within a specific sales channel." + }, + "handlerIdentifier": { + "description": "Internal field that contains system identifier details for payment methods like Paypal." + }, + "name": { + "description": "Name of the payment method within a specific sales channel." + }, + "description": { + "description": "A short description about the payment method within a specific sales channel." + }, + "position": { + "description": "The order of the tabs of your defined payment methods in the storefront by entering numerical values like 1,2,3, etc within a specific sales channel." + }, + "active": { + "description": "When `true`, the payment method is available for usage within a specific sales channel." + }, + "availabilityRuleId": { + "description": "Unique identity of the rule for the payment method." + }, + "mediaId": { + "description": "Unique identity of media used in payment method within a specific sales channel." + }, + "formattedHandlerIdentifier": { + "description": "Internal field that contains system identifier details for payment methods like Paypal." + } + } }, - "orderReturnVersionId": { - "description": "Unique identity of order return version." + "shippingLocation": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + } + } }, - "orderLineItemId": { - "description": "Unique identity of order line item." - }, - "orderLineItemVersionId": { - "description": "Unique identity of order line items's version." - }, - "reasonId": { - "description": "Unique identity of reason for return." + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod", + "properties": { + "name": { + "description": "Name of the shipping method within a specific sales channel." + }, + "active": { + "description": "When `true`, the shipping method is available for usage within a specific sales channel." + }, + "description": { + "description": "A short description about the shipping method within a specific sales channel." + }, + "trackingUrl": { + "description": "URL that allows to track packages for a specific sales channel." + }, + "deliveryTimeId": { + "description": "Unique identity of deliveryTime within a specific sales channel." + }, + "availabilityRuleId": { + "description": "Unique identity of the rule for the payment method." + }, + "mediaId": { + "description": "Unique identity of media used in shipping method within a specific sales channel." + } + } }, - "quantity": { - "description": "Number of line items returned." + "context": { + "description": "Core context with general configuration values and state", + "type": "object", + "properties": { + "versionId": { + "type": "string", + "description": "Unique identity of context's version in a specific sales channel." + }, + "currencyId": { + "type": "string", + "description": "Unique identity of currency context in a specific sales channel." + }, + "currencyFactor": { + "type": "integer", + "description": "Unique identity of currency factor context in a specific sales channel." + }, + "currencyPrecision": { + "type": "integer", + "format": "int32", + "description": "It defines the round off value of currency to the nearest decimal point. If set to 2, it rounds off to two significant decimal points." + }, + "languageIdChain": { + "type": "array", + "items": { + "type": "string" + } + }, + "scope": { + "type": "string", + "description": "Scope defines if its related to system or user context." + }, + "source": { + "type": "object", + "required": [ + "salesChannelId", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "sales-channel", + "shop-api" + ] + }, + "salesChannelId": { + "type": "string" + } + }, + "description": "When context is related to user in the source, then there is userId." + }, + "taxState": { + "type": "string", + "description": "Tax state can either be `gross` or `net`." + }, + "useCache": { + "type": "boolean", + "description": "When boolean value is `true`, caching is used." + } + } }, - "refundAmount": { - "description": "Amount to be refunded." + "itemRounding": { + "type": "object", + "required": [ + "decimals", + "interval", + "roundForNet", + "apiAlias" + ], + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" + ] + }, + "decimals": { + "type": "integer", + "format": "int32" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" + } + } }, - "restockQuantity": { - "description": "Update of stock quantity after the return of certain line items are initiated." + "totalRounding": { + "type": "object", + "required": [ + "decimals", + "interval", + "roundForNet", + "apiAlias" + ], + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" + ] + }, + "decimals": { + "type": "integer", + "format": "int32" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" + } + } }, - "customFields": { - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + "languageInfo": { + "type": "object", + "required": [ + "localeCode", + "name" + ], + "properties": { + "name": { + "type": "string" + }, + "localeCode": { + "type": "string" + } + } }, - "stateId": { - "description": "Unique identity of state." + "apiAlias": { + "type": "string", + "enum": [ + "sales_channel_context" + ] } - } + }, + "required": [ + "salesChannel", + "apiAlias", + "itemRounding", + "totalRounding", + "languageInfo" + ] }, - "OrderReturnLineItemReason": { + "SuccessResponse": { + "type": "object", "properties": { - "id": { - "description": "Unique identity for reason of return." - }, - "reasonKey": { - "description": "Unique key associated with reason for the order return. " - }, - "content": { - "description": "Description of the reason of return." - }, - "translated": { - "description": "Contains the translations of all translated fields." + "success": { + "type": "boolean" } } }, - "OrderWarehouseGroup": { + "NavigationRouteResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + }, "properties": { "id": { - "description": "Unique identity of order warehouse group." + "description": "Unique identity of navigation route response." } } }, - "ProductReviewSummary": { + "CartDeliveryInformation": { + "type": "object", "properties": { - "id": { - "description": "Unique identity of products's review summary." + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_information" + ] }, - "productId": { - "description": "Unique identity of products." + "freeDelivery": { + "type": "boolean" }, - "salesChannelId": { - "description": "Unique identity of sales channel." + "deliveryTime": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "min": { + "type": "integer" + }, + "max": { + "type": "integer" + }, + "unit": { + "type": "string" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_time" + ] + } + } }, - "summary": { - "description": "Unique identity of products's review summary." + "height": { + "type": "integer" }, - "visible": { - "description": "When boolean value is `true`, the review is displayed to the customer." + "length": { + "type": "integer" }, - "translated": { - "description": "Contains the translations of all translated fields." - } - } - }, - "ProductWarehouse": { - "properties": { - "id": { - "description": "Unique identity of warehouse of product." - } - } - }, - "Subscription": { - "properties": { - "id": { - "description": "Unique identity of subscription." - }, - "convertedOrder": { - "description": "An array loaded with persistent information related to cart data." - }, - "subscriptionNumber": { - "description": "Unique number associated with subscription." - }, - "nextSchedule": { - "description": "Date and time of next scheduled subscription for example: `yyyy-mm-dd hh:mm:ss` - `2023-08-15 15:25:32`." - }, - "salesChannelId": { - "description": "Unique identity of sales channel." - }, - "subscriptionPlanId": { - "description": "Unique identity of subscription plan." - }, - "subscriptionPlanName": { - "description": "Unique name for subscription plan." - }, - "subscriptionIntervalId": { - "description": "Unique identity for subscription interval." - }, - "subscriptionIntervalName": { - "description": "Unique name for subscription interval." - }, - "dateInterval": { - "description": "Relative interval data. For example, `every 3 days`, `every 2 months`, etc." - }, - "cronInterval": { - "description": "Absolute interval data. For example, `only on January`, `only on Mondays`, etc." - }, - "billingAddressId": { - "description": "Unique identity of billing address." - }, - "shippingAddressId": { - "description": "Unique identity of shipping address." - }, - "shippingMethodId": { - "description": "Unique identity of shipping method." - }, - "paymentMethodId": { - "description": "Unique identity of payment method." + "restockTime": { + "type": "integer" }, - "currencyId": { - "description": "Unique identity of currency." + "stock": { + "type": "integer" }, - "languageId": { - "description": "Unique identity of language." + "weight": { + "type": "integer" }, - "customFields": { - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + "width": { + "type": "integer" } - } + }, + "required": [ + "apiAlias" + ] }, - "SubscriptionAddress": { + "FindProductVariantRouteResponse": { + "type": "object", "properties": { - "id": { - "description": "Unique identity of subscription address." - }, - "countryId": { - "description": "Unique identity of country." - }, - "subscriptionId": { - "description": "Unique identity of subscription." - }, - "countryStateId": { - "description": "Unique identity of state of the country." - }, - "salutationId": { - "description": "Unique identity of salutation." - }, - "firstName": { - "description": "First name of the subscribed customer." - }, - "lastName": { - "description": "Last name of the subscribed customer." - }, - "street": { - "description": "Street address" - }, - "zipcode": { - "description": "Zip code of the country." - }, - "company": { - "description": "Name of the company." - }, - "department": { - "description": "Name of the department." - }, - "title": { - "description": "Title name given to customer's order address." - }, - "vatId": { - "description": "Unique identity of VAT." - }, - "phoneNumber": { - "description": "Phone number of the customer." - }, - "additionalAddressLine1": { - "description": "Additional address input if necessary." - }, - "additionalAddressLine2": { - "description": "Additional address input if necessary." - }, - "customFields": { - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "email": { - "description": "Last name of the subscribed customer. " + "foundCombination": { + "type": "object", + "properties": { + "variantId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of a variant." + }, + "options": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Available product variant options. For example, for variant `Size`, option would be `XS`, `S`, `M`, `L`, `XL`." + } + } } } }, - "SubscriptionCustomer": { + "CrossSellingElementCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrossSellingElement" + }, "properties": { - "id": { - "description": "Unique identity of subscription customer." - }, - "customerId": { - "description": "Unique identity of the customer." - }, - "salutationId": { - "description": "Unique identity of salutation." - }, - "firstName": { - "description": "Email address of the subscribed customer." - }, - "lastName": { - "description": "Last name of the subscribed customer. " - }, - "company": { - "description": "Name of the customer's company." - }, - "title": { - "description": "Title name given to customer's order address." - }, - "customerNumber": { - "description": "Unique number for subscribed customer." - }, - "vatId": { - "description": "Unique identity of VAT." - }, - "customFields": { - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + "total": { + "description": "Number of cross selling elements found." } } }, - "SubscriptionInterval": { + "CartError": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "id": { - "description": "Unique identity of subscription interval." - }, - "name": { - "description": "Name of the subscription interval." - }, - "active": { - "description": "When `true`, the defined subscription interval is available for selection in storefront." - }, - "dateInterval": { - "description": "Relative interval data. For example, `every 3 days`, `every 2 months`, etc." + "key": { + "type": "string" }, - "cronInterval": { - "description": "Absolute interval data. For example, `only on January`, `only on Mondays`, etc." + "level": { + "type": "number", + "enum": [ + 0, + 10, + 20 + ], + "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" }, - "availabilityRuleId": { - "description": "Unique identity of rule." + "message": { + "type": "string" }, - "translated": { - "description": "Contains the translations of all translated fields." + "messageKey": { + "type": "string" } - } + }, + "required": [ + "key", + "level", + "message", + "messageKey" + ] }, - "SubscriptionPlan": { - "properties": { - "id": { - "description": "Unique identity of subscription plan." - }, - "name": { - "description": "Name of the subscription plan." - }, - "description": { - "description": "A short description about the subscription plan." - }, - "active": { - "description": "When `true`, the subscription plan is available for selection in storefront." - }, - "activeStorefrontLabel": { - "description": "When boolean value id `true`, the label overrides the plan name." - }, - "availabilityRuleId": { - "description": "Unique identity of rule." - }, - "label": { - "description": "Label that can overwrite the active plan name. " + "ProductListingResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EntitySearchResult" }, - "translated": { - "description": "Contains the translations of all translated fields." - } - } - }, - "SubscriptionPlanIntervalMapping": { - "properties": { - "id": { - "description": "Unique identity of subscription plan interval mapping." - }, - "subscriptionIntervalId": { - "description": "Unique identity of subscription interval." - }, - "subscriptionPlanId": { - "description": "Unique identity of subscription plan." - } - } - }, - "SubscriptionPlanProductMapping": { - "properties": { - "id": { - "description": "Unique identity of subscription plan for product mapping." - }, - "productId": { - "description": "Unique identity of product." - }, - "productVersionId": { - "description": "Unique identity of product's version." - }, - "subscriptionPlanId": { - "description": "Unique identity of subscription plan." - } - } - }, - "SubscriptionTagMapping": { - "properties": { - "id": { - "description": "Unique identity of subscription tag." - }, - "subscriptionId": { - "description": "Unique identity of subscription." - }, - "tagId": { - "description": "Unique identity of subscription tag." + { + "type": "object", + "properties": { + "currentFilters": { + "type": "object", + "description": "Contains the state of the filters. These can be used to create listing filters.", + "properties": { + "navigationId": { + "type": "string" + }, + "manufacturer": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "price": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "default": 0 + }, + "max": { + "type": "integer", + "default": 0 + } + }, + "required": [ + "min", + "max" + ] + }, + "rating": { + "oneOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "shipping-free": { + "type": "boolean", + "default": false + }, + "properties": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "search": { + "type": "string" + } + }, + "required": [ + "manufacturer", + "navigationId", + "price", + "properties", + "rating", + "shipping-free" + ] + }, + "availableSortings": { + "type": "array", + "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", + "items": { + "type": "object", + "properties": { + "label": { + "type": "string" + }, + "translated": { + "type": "object", + "properties": { + "label": { + "type": "string" + } + }, + "required": [ + "label" + ] + }, + "key": { + "type": "string" + }, + "priority": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_sorting" + ] + } + }, + "required": [ + "label", + "translated", + "key", + "priority", + "apiAlias" + ] + } + }, + "sorting": { + "type": "string" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "entity": { + "type": "string", + "enum": [ + "product" + ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_listing" + ] + } + }, + "required": [ + "elements", + "availableSortings", + "currentFilters", + "apiAlias" + ] } - } + ] }, - "SwagDelayAction": { - "properties": { - "id": { - "description": "Unique identity of swag delay action for flow builder" - }, - "orderId": { - "description": "Unique identity of order." - }, - "customerId": { - "description": "Unique identity of customer." - } + "BreadcrumbCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Breadcrumb" } }, - "Warehouse": { + "AccountNewsletterRecipientResult": { "properties": { - "id": { - "description": "Unique identity of warehouse." + "status": { + "description": "Status indicates if the customer has subscribed to the news letter or not." } } }, - "WarehouseGroup": { + "OrderProductWarehouse": { "properties": { "id": { - "description": "Unique identity of warehouse group." + "description": "Unique identity of order's product warehouse." } } }, - "CustomPrice": { + "OrderReturn": { "properties": { "id": { - "description": "Unique identity of the custom price." - }, - "productId": { - "description": "Unique identity of the product." + "description": "Unique identity of order return." }, - "productVersionId": { - "description": "Unique identity of the product's version." + "versionId": { + "description": "Unique identity of order return's version." }, - "customerId": { - "description": "Unique identity of the customer." + "orderId": { + "description": "Unique identity of order." }, - "customerGroupId": { - "description": "Unique identity of the customer's group." + "orderVersionId": { + "description": "Unique identity of order return version." }, "price": { - "description": "Detailed information of price." - } - } - }, - "CustomerSpecificFeatures": { - "properties": { - "id": { - "description": "Unique identity of the customer specific features." + "properties": { + "netPrice": { + "description": "Net price of the product." + }, + "totalPrice": { + "description": "Gross price of the product." + }, + "calculatedTaxes": { + "description": "Contains calculated tax on order delivery price." + }, + "taxRules": { + "description": "Pricing based on multiple taxes." + }, + "positionPrice": { + "description": "Price of each line item in the cart multiplied by its quantity excluding charges like shipping cost, rules, taxes etc." + }, + "rawTotal": { + "description": "The total value before rounding off." + }, + "taxStatus": { + "description": "TaxStatus takes `Free`, `Net` or `Gross` as values." + } + } }, - "customerId": { - "description": "Unique identity of the customer." + "shippingCosts": { + "properties": { + "unitPrice": { + "description": "Shipping cost of product per item (where, quantity=1)." + }, + "totalPrice": { + "description": "Shipping cost of product based on quantity." + }, + "quantity": { + "description": "Number of items of each product." + }, + "calculatedTaxes": { + "description": "Contains calculated taxes based on shipping costs/methods." + }, + "taxRules": { + "description": "Pricing based on multiple taxes." + }, + "referencePrice": { + "description": "Original cost price of the product." + }, + "listPrice": { + "properties": { + "price": { + "description": "Price of each line item." + }, + "discount": { + "description": "Absolute discount on each line item." + }, + "percentage": { + "description": "Discount in percentage." + } + } + }, + "regulationPrice": { + "properties": { + "price": { + "description": "Contains cheapest price from last 30 days as per EU law." + } + } + } + } + }, + "stateId": { + "description": "Unique identity of state." + }, + "returnNumber": { + "description": "Reference number for returning order." + }, + "requestedAt": { + "description": "Date and time when the order return was requested." + }, + "amountTotal": { + "description": "Gross price of the order." + }, + "amountNet": { + "description": "Net price of the order." } } }, - "MediaAiTag": { + "OrderReturnLineItem": { "properties": { "id": { - "description": "Unique identity of the AI media tag." + "description": "Unique identity of order return line item." }, - "tag": { - "description": "Tag that indicates if the media is made by AI or not." + "versionId": { + "description": "Unique identity of order return line item's version." }, - "translated": { - "description": "Contains the translations of all translated fields." - } - } - } - }, - "responses": { - "404": { - "description": "Not Found", - "content": { - "application/vnd.api+json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "404", - "title": "Not Found", - "description": "Resource with given parameter was not found." - } - ] - } + "orderReturnId": { + "description": "Unique identity of order return." }, - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "404", - "title": "Not Found", - "description": "Resource with given parameter was not found." - } - ] - } + "orderReturnVersionId": { + "description": "Unique identity of order return version." + }, + "orderLineItemId": { + "description": "Unique identity of order line item." + }, + "orderLineItemVersionId": { + "description": "Unique identity of order line items's version." + }, + "reasonId": { + "description": "Unique identity of reason for return." + }, + "quantity": { + "description": "Number of line items returned." + }, + "refundAmount": { + "description": "Amount to be refunded." + }, + "restockQuantity": { + "description": "Update of stock quantity after the return of certain line items are initiated." + }, + "customFields": { + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "stateId": { + "description": "Unique identity of state." } } }, - "403": { - "description": "Forbidden", - "content": { - "application/vnd.api+json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "403", - "title": "Forbidden", - "description": "This operation is restricted to logged in users." - } - ] - } + "OrderReturnLineItemReason": { + "properties": { + "id": { + "description": "Unique identity for reason of return." }, - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "403", - "title": "Forbidden", - "description": "This operation is restricted to logged in users." - } - ] - } + "reasonKey": { + "description": "Unique key associated with reason for the order return. " + }, + "content": { + "description": "Description of the reason of return." + }, + "translated": { + "description": "Contains the translations of all translated fields." } } }, - "401": { - "description": "Unauthorized", - "content": { - "application/vnd.api+json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "401", - "title": "Unauthorized", - "description": "Authorization information is missing or invalid." - } - ] - } - }, - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "401", - "title": "Unauthorized", - "description": "Authorization information is missing or invalid." - } - ] - } + "OrderWarehouseGroup": { + "properties": { + "id": { + "description": "Unique identity of order warehouse group." } } }, - "400": { - "description": "Bad Request", - "content": { - "application/vnd.api+json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "400", - "title": "Bad Request", - "description": "Bad parameters for this endpoint. See documentation for the correct ones." - } - ] - } + "ProductReviewSummary": { + "properties": { + "id": { + "description": "Unique identity of products's review summary." }, - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "400", - "title": "Bad Request", - "description": "Bad parameters for this endpoint. See documentation for the correct ones." - } - ] - } + "productId": { + "description": "Unique identity of products." + }, + "salesChannelId": { + "description": "Unique identity of sales channel." + }, + "summary": { + "description": "Unique identity of products's review summary." + }, + "visible": { + "description": "When boolean value is `true`, the review is displayed to the customer." + }, + "translated": { + "description": "Contains the translations of all translated fields." } } }, - "204": { - "description": "No Content" - }, - "CurrencyListResponse": { - "description": "Entity search result containing currencies.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Currency" - } - } + "ProductWarehouse": { + "properties": { + "id": { + "description": "Unique identity of warehouse of product." } } }, - "SalutationListResponse": { - "description": "Entity search result containing salutations.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Salutation" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } + "Subscription": { + "properties": { + "id": { + "description": "Unique identity of subscription." + }, + "convertedOrder": { + "description": "An array loaded with persistent information related to cart data." + }, + "subscriptionNumber": { + "description": "Unique number associated with subscription." + }, + "nextSchedule": { + "description": "Date and time of next scheduled subscription for example: `yyyy-mm-dd hh:mm:ss` - `2023-08-15 15:25:32`." + }, + "salesChannelId": { + "description": "Unique identity of sales channel." + }, + "subscriptionPlanId": { + "description": "Unique identity of subscription plan." + }, + "subscriptionPlanName": { + "description": "Unique name for subscription plan." + }, + "subscriptionIntervalId": { + "description": "Unique identity for subscription interval." + }, + "subscriptionIntervalName": { + "description": "Unique name for subscription interval." + }, + "dateInterval": { + "description": "Relative interval data. For example, `every 3 days`, `every 2 months`, etc." + }, + "cronInterval": { + "description": "Absolute interval data. For example, `only on January`, `only on Mondays`, etc." + }, + "billingAddressId": { + "description": "Unique identity of billing address." + }, + "shippingAddressId": { + "description": "Unique identity of shipping address." + }, + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "paymentMethodId": { + "description": "Unique identity of payment method." + }, + "currencyId": { + "description": "Unique identity of currency." + }, + "languageId": { + "description": "Unique identity of language." + }, + "customFields": { + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." } } }, - "ContextTokenResponse": { - "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", - "headers": { - "sw-context-token": { - "description": "Contains sw-context-token value", - "schema": { - "type": "string" - } + "SubscriptionAddress": { + "properties": { + "id": { + "description": "Unique identity of subscription address." + }, + "countryId": { + "description": "Unique identity of country." + }, + "subscriptionId": { + "description": "Unique identity of subscription." + }, + "countryStateId": { + "description": "Unique identity of state of the country." + }, + "salutationId": { + "description": "Unique identity of salutation." + }, + "firstName": { + "description": "First name of the subscribed customer." + }, + "lastName": { + "description": "Last name of the subscribed customer." + }, + "street": { + "description": "Street address" + }, + "zipcode": { + "description": "Zip code of the country." + }, + "company": { + "description": "Name of the company." + }, + "department": { + "description": "Name of the department." + }, + "title": { + "description": "Title name given to customer's order address." + }, + "vatId": { + "description": "Unique identity of VAT." + }, + "phoneNumber": { + "description": "Phone number of the customer." + }, + "additionalAddressLine1": { + "description": "Additional address input if necessary." + }, + "additionalAddressLine2": { + "description": "Additional address input if necessary." + }, + "customFields": { + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "email": { + "description": "Last name of the subscribed customer. " } - }, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "description": "Define the URL which browser will be redirected to", - "type": "string" - } - } - } + } + }, + "SubscriptionCustomer": { + "properties": { + "id": { + "description": "Unique identity of subscription customer." + }, + "customerId": { + "description": "Unique identity of the customer." + }, + "salutationId": { + "description": "Unique identity of salutation." + }, + "firstName": { + "description": "Email address of the subscribed customer." + }, + "lastName": { + "description": "Last name of the subscribed customer. " + }, + "company": { + "description": "Name of the customer's company." + }, + "title": { + "description": "Title name given to customer's order address." + }, + "customerNumber": { + "description": "Unique number for subscribed customer." + }, + "vatId": { + "description": "Unique identity of VAT." + }, + "customFields": { + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." } } }, - "ShippingMethodListResponse": { - "description": "Entity search result containing shipping methods.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "required": [ - "elements" - ], - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } + "SubscriptionInterval": { + "properties": { + "id": { + "description": "Unique identity of subscription interval." + }, + "name": { + "description": "Name of the subscription interval." + }, + "active": { + "description": "When `true`, the defined subscription interval is available for selection in storefront." + }, + "dateInterval": { + "description": "Relative interval data. For example, `every 3 days`, `every 2 months`, etc." + }, + "cronInterval": { + "description": "Absolute interval data. For example, `only on January`, `only on Mondays`, etc." + }, + "availabilityRuleId": { + "description": "Unique identity of rule." + }, + "translated": { + "description": "Contains the translations of all translated fields." } } }, - "OpenApi3": { - "description": "Returns information about the store API.", - "content": { - "application/json": { - "schema": { - "properties": { - "openapi": { - "type": "string" - }, - "info": { - "type": "object", - "properties": { - "title": { - "type": "string" - }, - "summary": { - "type": "string" - }, - "description": { - "type": "string" - }, - "termsOfService": { - "type": "string", - "format": "uri" - }, - "contact": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "url": { - "type": "string", - "format": "uri" - }, - "email": { - "type": "string", - "format": "email" - } - } - }, - "license": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "identifier": { - "type": "string" - }, - "url": { - "type": "string", - "format": "uri" - } - }, - "required": [ - "name" - ] - }, - "version": { - "type": "string" - } - }, - "required": [ - "title", - "version" - ] - }, - "jsonSchemaDialect": { - "type": "string" - }, - "webhooks": { - "type": "object" - }, - "servers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "url": { - "type": "string" - } - }, - "required": [ - "url" - ] - } - }, - "components": { - "type": "object", - "properties": { - "schemas": { - "type": "object" - }, - "responses": { - "type": "object" - }, - "parameters": { - "type": "object" - }, - "examples": { - "type": "object" - }, - "requestBodies": { - "type": "object" - }, - "headers": { - "type": "object" - }, - "securitySchemes": { - "type": "object" - }, - "links": { - "type": "object" - }, - "callbacks": { - "type": "object" - }, - "pathItems": { - "type": "object" - } - } - }, - "security": { - "type": "array", - "items": { - "type": "object" - } - }, - "paths": { - "type": "object" - }, - "tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "externalDocs": { - "type": "object", - "properties": { - "description": { - "type": "string" - }, - "url": { - "type": "string", - "format": "uri" - } - }, - "required": [ - "url" - ] - } - }, - "required": [ - "name" - ] - } - }, - "externalDocs": { - "type": "object", - "properties": { - "description": { - "type": "string" - }, - "url": { - "type": "string", - "format": "uri" - } - }, - "required": [ - "url" - ] - } - }, - "type": "object", - "required": [ - "openapi", - "info" - ] - } + "SubscriptionPlan": { + "properties": { + "id": { + "description": "Unique identity of subscription plan." + }, + "name": { + "description": "Name of the subscription plan." + }, + "description": { + "description": "A short description about the subscription plan." + }, + "active": { + "description": "When `true`, the subscription plan is available for selection in storefront." + }, + "activeStorefrontLabel": { + "description": "When boolean value id `true`, the label overrides the plan name." + }, + "availabilityRuleId": { + "description": "Unique identity of rule." + }, + "label": { + "description": "Label that can overwrite the active plan name. " + }, + "translated": { + "description": "Contains the translations of all translated fields." } } }, - "CountryStateListResponse": { - "description": "Entity search result containing countries.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CountryState" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } + "SubscriptionPlanIntervalMapping": { + "properties": { + "id": { + "description": "Unique identity of subscription plan interval mapping." + }, + "subscriptionIntervalId": { + "description": "Unique identity of subscription interval." + }, + "subscriptionPlanId": { + "description": "Unique identity of subscription plan." } } }, - "PaymentMethodListResponse": { - "description": "", - "content": { - "application/json": { - "schema": { - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PaymentMethod" - } - } - }, - "type": "object" - } + "SubscriptionPlanProductMapping": { + "properties": { + "id": { + "description": "Unique identity of subscription plan for product mapping." + }, + "productId": { + "description": "Unique identity of product." + }, + "productVersionId": { + "description": "Unique identity of product's version." + }, + "subscriptionPlanId": { + "description": "Unique identity of subscription plan." } } }, - "SeoUrlListResponse": { - "description": "Entity search result containing seo urls.", + "SubscriptionTagMapping": { + "properties": { + "id": { + "description": "Unique identity of subscription tag." + }, + "subscriptionId": { + "description": "Unique identity of subscription." + }, + "tagId": { + "description": "Unique identity of subscription tag." + } + } + }, + "SwagDelayAction": { + "properties": { + "id": { + "description": "Unique identity of swag delay action for flow builder" + }, + "orderId": { + "description": "Unique identity of order." + }, + "customerId": { + "description": "Unique identity of customer." + } + } + }, + "Warehouse": { + "properties": { + "id": { + "description": "Unique identity of warehouse." + } + } + }, + "WarehouseGroup": { + "properties": { + "id": { + "description": "Unique identity of warehouse group." + } + } + }, + "CustomPrice": { + "properties": { + "id": { + "description": "Unique identity of the custom price." + }, + "productId": { + "description": "Unique identity of the product." + }, + "productVersionId": { + "description": "Unique identity of the product's version." + }, + "customerId": { + "description": "Unique identity of the customer." + }, + "customerGroupId": { + "description": "Unique identity of the customer's group." + }, + "price": { + "description": "Detailed information of price." + } + } + }, + "CustomerSpecificFeatures": { + "properties": { + "id": { + "description": "Unique identity of the customer specific features." + }, + "customerId": { + "description": "Unique identity of the customer." + } + } + }, + "MediaAiTag": { + "properties": { + "id": { + "description": "Unique identity of the AI media tag." + }, + "tag": { + "description": "Tag that indicates if the media is made by AI or not." + }, + "translated": { + "description": "Contains the translations of all translated fields." + } + } + } + }, + "responses": { + "404": { + "description": "Not Found", "content": { - "application/json": { + "application/vnd.api+json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } - } - }, - "type": "object", - "required": [ - "elements" - ] - }, + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ { - "$ref": "#/components/schemas/EntitySearchResult" + "status": "404", + "title": "Not Found", + "description": "Resource with given parameter was not found." } ] } - } - } - }, - "CategoryListResponse": { - "description": "Entity search result containing categories.", - "content": { + }, "application/json": { "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - } - } - }, + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ { - "$ref": "#/components/schemas/EntitySearchResult" + "status": "404", + "title": "Not Found", + "description": "Resource with given parameter was not found." } ] } } } }, - "LanguageListResponse": { - "description": "Entity search result containing languages.", + "403": { + "description": "Forbidden", "content": { - "application/json": { + "application/vnd.api+json": { "schema": { - "allOf": [ + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Language" - } - } - }, - "required": [ - "elements" - ], - "type": "object" - }, + "status": "403", + "title": "Forbidden", + "description": "This operation is restricted to logged in users." + } + ] + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ { - "$ref": "#/components/schemas/EntitySearchResult" + "status": "403", + "title": "Forbidden", + "description": "This operation is restricted to logged in users." } ] } } } }, - "ProductListResponse": { - "description": "Entity search result containing products", + "401": { + "description": "Unauthorized", "content": { - "application/json": { + "application/vnd.api+json": { "schema": { - "allOf": [ + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ { - "required": [ - "elements" - ], - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - } - }, - "type": "object" - }, + "status": "401", + "title": "Unauthorized", + "description": "Authorization information is missing or invalid." + } + ] + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ { - "$ref": "#/components/schemas/EntitySearchResult" + "status": "401", + "title": "Unauthorized", + "description": "Authorization information is missing or invalid." } ] } } } }, - "CountryListResponse": { - "description": "Entity search result containing countries.", + "400": { + "description": "Bad Request", "content": { - "application/json": { + "application/vnd.api+json": { "schema": { - "allOf": [ + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ { + "status": "400", + "title": "Bad Request", + "description": "Bad parameters for this endpoint. See documentation for the correct ones." + } + ] + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "400", + "title": "Bad Request", + "description": "Bad parameters for this endpoint. See documentation for the correct ones." + } + ] + } + } + } + }, + "429": { + "description": "Too Many Requests", + "content": { + "application/vnd.api+json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "429", + "title": "Too Many Requests", + "description": "Rate limit exceeded. Please wait before retrying." + } + ] + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "429", + "title": "Too Many Requests", + "description": "Rate limit exceeded. Please wait before retrying." + } + ] + } + } + } + }, + "204": { + "description": "No Content" + }, + "ShippingMethodListResponse": { + "description": "Entity search result containing shipping methods.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "required": [ + "elements" + ], "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Country" + "$ref": "#/components/schemas/ShippingMethod" } } }, @@ -17473,246 +17109,650 @@ } } } - } - }, - "parameters": { - "contentType": { - "name": "Content-Type", - "in": "header", - "description": "Content type of the request", - "required": true, - "schema": { - "type": "string", - "default": "application/json" - } - }, - "accept": { - "name": "Accept", - "in": "header", - "description": "Accepted response content types", - "required": true, - "schema": { - "type": "string", - "default": "application/json" - } - }, - "swLanguageId": { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } }, - "noAggregations": { - "name": "no-aggregations", - "in": "query", - "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", - "required": false, - "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" + "CountryStateListResponse": { + "description": "Entity search result containing countries.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CountryState" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } - ] + } } }, - "onlyAggregations": { - "name": "only-aggregations", - "in": "query", - "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", - "required": false, - "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" + "SeoUrlListResponse": { + "description": "Entity search result containing seo urls.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" + } + } + }, + "type": "object", + "required": [ + "elements" + ] + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } - ] - } - }, - "criteriaPage": { - "name": "page", - "in": "query", - "description": "Search result page", - "schema": { - "type": "integer" - } - }, - "criteriaLimit": { - "name": "limit", - "in": "query", - "description": "Number of items per result page", - "schema": { - "type": "integer" - } - }, - "criteriaTerm": { - "name": "term", - "in": "query", - "description": "Search term", - "schema": { - "type": "string" - } - }, - "criteriaFilter": { - "name": "filter[]", - "in": "query", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "schema": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] } } }, - "criteriaIds": { - "name": "ids[]", - "in": "query", - "description": "List of ids to search for", - "schema": { - "type": "array", - "items": { - "type": "string" + "PaymentMethodListResponse": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentMethod" + } + } + }, + "type": "object" + } } } }, - "criteriaQuery": { - "name": "query", - "in": "query", - "description": "The query string to search for", - "schema": { - "type": "string" - } - }, - "criteriaAssociations": { - "name": "associations", - "in": "query", - "description": "", - "schema": { - "$ref": "#/components/schemas/Associations" - }, - "style": "deepObject", - "explode": true - }, - "criteriaPostFilter": { - "name": "post-filter[]", - "in": "query", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "schema": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" + "OpenApi3": { + "description": "Returns information about the store API.", + "content": { + "application/json": { + "schema": { + "properties": { + "openapi": { + "type": "string" + }, + "info": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "description": { + "type": "string" + }, + "termsOfService": { + "type": "string", + "format": "uri" + }, + "contact": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "email": { + "type": "string", + "format": "email" + } + } + }, + "license": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "identifier": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "name" + ] + }, + "version": { + "type": "string" + } + }, + "required": [ + "title", + "version" + ] + }, + "jsonSchemaDialect": { + "type": "string" + }, + "webhooks": { + "type": "object" + }, + "servers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + } + }, + "required": [ + "url" + ] + } + }, + "components": { + "type": "object", + "properties": { + "schemas": { + "type": "object" + }, + "responses": { + "type": "object" + }, + "parameters": { + "type": "object" + }, + "examples": { + "type": "object" + }, + "requestBodies": { + "type": "object" + }, + "headers": { + "type": "object" + }, + "securitySchemes": { + "type": "object" + }, + "links": { + "type": "object" + }, + "callbacks": { + "type": "object" + }, + "pathItems": { + "type": "object" + } + } + }, + "security": { + "type": "array", + "items": { + "type": "object" + } + }, + "paths": { + "type": "object" + }, + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "externalDocs": { + "type": "object", + "properties": { + "description": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "url" + ] + } + }, + "required": [ + "name" + ] + } + }, + "externalDocs": { + "type": "object", + "properties": { + "description": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "url" + ] + } }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] + "type": "object", + "required": [ + "openapi", + "info" + ] + } } } }, - "criteriaSort": { - "name": "sort[]", - "in": "query", - "description": "Sorting in the search result.", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Sort" + "CategoryListResponse": { + "description": "Entity search result containing categories.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + } + } + } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } } } }, - "criteriaAggregations": { - "name": "aggregations[]", - "in": "query", - "description": "", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" + "ContextTokenResponse": { + "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", + "headers": { + "sw-context-token": { + "description": "Contains sw-context-token value", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redirectUrl": { + "description": "Define the URL which browser will be redirected to", + "type": "string" + } + } + } } } }, - "criteriaFields": { - "name": "fields[]", + "SalutationListResponse": { + "description": "Entity search result containing salutations.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Salutation" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + }, + "LanguageListResponse": { + "description": "Entity search result containing languages.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + } + } + }, + "required": [ + "elements" + ], + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + }, + "CurrencyListResponse": { + "description": "Entity search result containing currencies.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Currency" + } + } + } + } + }, + "CountryListResponse": { + "description": "Entity search result containing countries.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Country" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + }, + "ProductListResponse": { + "description": "Entity search result containing products", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "required": [ + "elements" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + } + }, + "parameters": { + "contentType": { + "name": "Content-Type", + "in": "header", + "description": "Content type of the request", + "required": true, + "schema": { + "type": "string", + "default": "application/json" + } + }, + "accept": { + "name": "Accept", + "in": "header", + "description": "Accepted response content types", + "required": true, + "schema": { + "type": "string", + "default": "application/json" + } + }, + "swLanguageId": { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "criteriaPage": { + "name": "page", "in": "query", - "description": "Fields which should be returned in the search result.", + "description": "Search result page", + "schema": { + "type": "integer" + } + }, + "criteriaLimit": { + "name": "limit", + "in": "query", + "description": "Number of items per result page", + "schema": { + "type": "integer" + } + }, + "criteriaTerm": { + "name": "term", + "in": "query", + "description": "Search term", + "schema": { + "type": "string" + } + }, + "criteriaFilter": { + "name": "filter[]", + "in": "query", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", "schema": { "type": "array", "items": { - "type": "string", - "description": "Name of a field" + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] } } }, - "criteriaGrouping": { - "name": "grouping[]", + "criteriaIds": { + "name": "ids[]", "in": "query", - "description": "Perform groupings over certain fields", + "description": "List of ids to search for", "schema": { "type": "array", "items": { - "type": "string", - "description": "Name of a field" + "type": "string" } } }, - "criteriaTotalCountMode": { - "name": "total-count-mode", + "criteriaQuery": { + "name": "query", "in": "query", - "description": "", + "description": "The query string to search for", "schema": { - "$ref": "#/components/schemas/TotalCountMode" + "type": "string" } }, - "criteriaIncludes": { - "name": "includes", + "criteriaAssociations": { + "name": "associations", "in": "query", - "description": "Specify the fields that should be returned for the given entities. Object key needs to be the entity name, and the list of fields needs to be the value. Fields will not be included, if they are also specified in the excludes. Note that the include fields will only be stripped on the API-Level, consider using the `fields` parameter for performance reasons.", + "description": "", "schema": { - "$ref": "#/components/schemas/Includes" + "$ref": "#/components/schemas/Associations" }, "style": "deepObject", "explode": true }, - "criteriaExcludes": { - "name": "excludes", + "criteriaPostFilter": { + "name": "post-filter[]", "in": "query", - "description": "Specify the fields that should be excluded from the response for the given entities. Object key needs to be the entity name, and the list of fields needs to be the value. Note that the exclude fields will only be stripped on the API-Level, consider using the `fields` parameter for performance reasons.", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", "schema": { - "$ref": "#/components/schemas/Excludes" - }, - "style": "deepObject", - "explode": true - }, + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + } + }, + "criteriaSort": { + "name": "sort[]", + "in": "query", + "description": "Sorting in the search result.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Sort" + } + } + }, + "criteriaAggregations": { + "name": "aggregations[]", + "in": "query", + "description": "", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } + } + }, + "criteriaFields": { + "name": "fields[]", + "in": "query", + "description": "Fields which should be returned in the search result.", + "schema": { + "type": "array", + "items": { + "type": "string", + "description": "Name of a field" + } + } + }, + "criteriaGrouping": { + "name": "grouping[]", + "in": "query", + "description": "Perform groupings over certain fields", + "schema": { + "type": "array", + "items": { + "type": "string", + "description": "Name of a field" + } + } + }, + "criteriaTotalCountMode": { + "name": "total-count-mode", + "in": "query", + "description": "", + "schema": { + "$ref": "#/components/schemas/TotalCountMode" + } + }, + "criteriaIncludes": { + "name": "includes", + "in": "query", + "description": "Specify the fields that should be returned for the given entities. Object key needs to be the entity name, and the list of fields needs to be the value. Fields will not be included, if they are also specified in the excludes. Note that the include fields will only be stripped on the API-Level, consider using the `fields` parameter for performance reasons.", + "schema": { + "$ref": "#/components/schemas/Includes" + }, + "style": "deepObject", + "explode": true + }, + "criteriaExcludes": { + "name": "excludes", + "in": "query", + "description": "Specify the fields that should be excluded from the response for the given entities. Object key needs to be the entity name, and the list of fields needs to be the value. Note that the exclude fields will only be stripped on the API-Level, consider using the `fields` parameter for performance reasons.", + "schema": { + "$ref": "#/components/schemas/Excludes" + }, + "style": "deepObject", + "explode": true + }, "CompressedCriteria": { "name": "_criteria", "in": "query", @@ -17734,6 +17774,38 @@ "format": "base64url", "example": "H4sIAAAAAAAAA6tWykpNzFGyqlbKz8lPTSxRslJKSi0pzSsFAGcQr7sHAAAA" } + }, + "noAggregations": { + "name": "no-aggregations", + "in": "query", + "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", + "required": false, + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "onlyAggregations": { + "name": "only-aggregations", + "in": "query", + "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", + "required": false, + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } } }, "securitySchemes": { @@ -17757,22 +17829,23 @@ } ], "paths": { - "/search-suggest": { + "/navigation/{activeId}/{rootId}": { "post": { "tags": [ - "Product" + "Category", + "Endpoints supporting Criteria " ], - "summary": "Search for products (suggest)", - "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", - "operationId": "searchSuggest", + "summary": "Fetch a navigation menu", + "description": "This endpoint returns categories that can be used as a page navigation. You can either return them as a tree or as a flat list. You can also control the depth of the tree.\n\n Instead of passing uuids, you can also use one of the following aliases for the activeId and rootId parameters to get the respective navigations of your sales channel.\n\n * main-navigation\n * service-navigation\n * footer-navigation", + "operationId": "readNavigation", "parameters": [ { - "name": "p", - "in": "query", - "description": "The page number to fetch.", + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", "required": false, "schema": { - "type": "integer" + "type": "boolean" } }, { @@ -17789,6 +17862,40 @@ "default": "1" } }, + { + "name": "activeId", + "in": "path", + "description": "Identifier of the active category in the navigation tree (if not used, just set to the same as rootId).", + "required": true, + "schema": { + "oneOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "$ref": "#/components/schemas/NavigationType" + } + ] + } + }, + { + "name": "rootId", + "in": "path", + "description": "Identifier of the root category for your desired navigation tree. You can use it to fetch sub-trees of your navigation tree.", + "required": true, + "schema": { + "oneOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "$ref": "#/components/schemas/NavigationType" + } + ] + } + }, { "$ref": "#/components/parameters/swLanguageId" } @@ -17800,22 +17907,24 @@ "schema": { "allOf": [ { - "required": [ - "search" - ], + "$ref": "#/components/schemas/NoneFieldsCriteria" + }, + { "properties": { - "search": { - "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", - "type": "string" + "depth": { + "description": "Determines the depth of fetched navigation levels.", + "type": "integer", + "format": "int32" + }, + "buildTree": { + "description": "Return the categories as a tree or as a flat list.", + "type": "array", + "items": { + "type": "object" + } } }, "type": "object" - }, - { - "$ref": "#/components/schemas/ProductListingCriteria" - }, - { - "$ref": "#/components/schemas/ProductListingFlags" } ] } @@ -17824,11 +17933,11 @@ }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", + "description": "All available navigations", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "$ref": "#/components/schemas/NavigationRouteResponse" } } } @@ -17842,162 +17951,124 @@ }, "get": { "tags": [ - "Product" + "Category", + "Endpoints supporting Criteria " ], - "summary": "Search for products (suggest)", - "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", - "operationId": "searchSuggestGet", + "summary": "Fetch a navigation menu", + "description": "This endpoint returns categories that can be used as a page navigation. You can either return them as a tree or as a flat list. You can also control the depth of the tree.\n\n Instead of passing uuids, you can also use one of the following aliases for the activeId and rootId parameters to get the respective navigations of your sales channel.\n\n * main-navigation\n * service-navigation\n * footer-navigation", + "operationId": "readNavigationGet", "parameters": [ { - "name": "search", - "in": "query", - "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", - "required": true, + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, "schema": { - "type": "string" + "type": "boolean" } }, { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "name": "limit", - "in": "query", - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "name": "activeId", + "in": "path", + "description": "Identifier of the active category in the navigation tree (if not used, just set to the same as rootId).", + "required": true, "schema": { - "type": "integer", - "minimum": 0 + "oneOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "$ref": "#/components/schemas/NavigationType" + } + ] } }, { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" + "name": "rootId", + "in": "path", + "description": "Identifier of the root category for your desired navigation tree. You can use it to fetch sub-trees of your navigation tree.", + "required": true, + "schema": { + "oneOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "$ref": "#/components/schemas/NavigationType" + } + ] + } }, { - "$ref": "#/components/parameters/criteriaAggregations" + "name": "depth", + "in": "query", + "description": "Determines the depth of fetched navigation levels.", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } }, { - "$ref": "#/components/parameters/criteriaFields" + "name": "buildTree", + "in": "query", + "description": "Return the categories as a tree or as a flat list.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "object" + } + }, + "style": "deepObject", + "explode": true }, { - "$ref": "#/components/parameters/criteriaGrouping" + "$ref": "#/components/parameters/criteriaPage" }, { - "$ref": "#/components/parameters/criteriaTotalCountMode" + "$ref": "#/components/parameters/criteriaLimit" }, { - "$ref": "#/components/parameters/criteriaIncludes" + "$ref": "#/components/parameters/criteriaTerm" }, { - "$ref": "#/components/parameters/criteriaExcludes" + "$ref": "#/components/parameters/criteriaFilter" }, { - "name": "order", - "in": "query", - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/criteriaIds" }, { - "name": "p", - "in": "query", - "description": "Search result page", - "schema": { - "type": "integer", - "default": 1 - } + "$ref": "#/components/parameters/criteriaQuery" }, { - "name": "manufacturer", - "in": "query", - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/criteriaAssociations" }, { - "name": "min-price", - "in": "query", - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } + "$ref": "#/components/parameters/criteriaPostFilter" }, { - "name": "max-price", - "in": "query", - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } + "$ref": "#/components/parameters/criteriaSort" }, { - "name": "rating", - "in": "query", - "description": "Filter products with a minimum average rating.", - "schema": { - "type": "integer" - } + "$ref": "#/components/parameters/criteriaAggregations" }, { - "name": "shipping-free", - "in": "query", - "description": "Filters products that are marked as shipping-free.", - "schema": { - "type": "boolean", - "default": false - } + "$ref": "#/components/parameters/criteriaGrouping" }, { - "name": "properties", - "in": "query", - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/criteriaTotalCountMode" }, { - "name": "reduce-aggregations", - "in": "query", - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", - "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } + "$ref": "#/components/parameters/criteriaIncludes" }, { - "$ref": "#/components/parameters/noAggregations" + "$ref": "#/components/parameters/criteriaExcludes" }, { - "$ref": "#/components/parameters/onlyAggregations" + "$ref": "#/components/parameters/CompressedNoneFieldsCriteria" }, { "$ref": "#/components/parameters/swLanguageId" @@ -18005,11 +18076,11 @@ ], "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", + "description": "All available navigations", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "$ref": "#/components/schemas/NavigationRouteResponse" } } } @@ -18022,30 +18093,65 @@ ] } }, - "/newsletter/confirm": { + "/revocation-request-form": { "post": { "tags": [ - "Newsletter" + "Content" + ], + "summary": "Submit a revocation request form message", + "description": "Used for submitting revocation request forms. Be aware that there can be more required fields, depending on the system settings.", + "operationId": "sendRevocationRequestMail", + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ], - "summary": "Confirm a newsletter registration", - "description": "You have to use the hash from the link sent out via email to confirm the user registration.", - "operationId": "confirmNewsletter", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "hash", - "em" + "email", + "contractNumber" ], "properties": { - "hash": { - "description": "Hash parameter from link the in the confirmation mail", + "firstName": { + "description": "First name. This field may be required depending on the system settings.", "type": "string" }, - "em": { - "description": "Email hash parameter from the link in the confirmation mail", + "lastName": { + "description": "Last name. This field may be required depending on the system settings.", + "type": "string" + }, + "email": { + "description": "Email address.", + "type": "string" + }, + "contractNumber": { + "description": "The number of the contract.", + "type": "string" + }, + "comment": { + "description": "The message of the revocation request form.", + "type": "string" + }, + "navigationId": { + "description": "Identifier of the navigation page. Can be used to override the configuration.\nTake a look at the settings of a category containing a revocation form in the administration.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "slotId": { + "description": "Identifier of the cms element.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "cmsPageType": { + "description": "Type of the content management page.", + "type": "string" + }, + "entityName": { + "description": "Entity name for slot config.", "type": "string" } }, @@ -18056,241 +18162,60 @@ }, "responses": { "200": { - "description": "The newsletter confirmation was successful.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } - }, - "400": { - "$ref": "#/components/responses/400" + "description": "Message sent successfully." } }, "security": [ { "ApiKey": [] } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } ] } }, - "/newsletter/subscribe": { + "/payment-method": { "post": { "tags": [ - "Newsletter" + "Payment Method", + "Endpoints supporting Criteria " + ], + "summary": "Loads all available payment methods", + "operationId": "readPaymentMethod", + "parameters": [ + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } ], - "summary": "Create or remove a newsletter subscription", - "description": "This route is used to create/remove/confirm a newsletter subscription.\n\nThe `option` property controls what should happen:\n* `direct`: The subscription is directly active and does not need a confirmation.\n* `subscribe`: An email will be send to the provided email address containing a link to the /newsletter/confirm route.\nThe subscription is only successful, if the /newsletter/confirm route is called with the generated hashes.\n* `unsubscribe`: The email address will be removed from the newsletter subscriptions.\n* `confirmSubscribe`: Confirms the newsletter subscription for the provided email address.", - "operationId": "subscribeToNewsletter", "requestBody": { "required": true, "content": { "application/json": { "schema": { - "required": [ - "email", - "option", - "storefrontUrl" - ], - "properties": { - "email": { - "description": "Email address that will receive the confirmation and the newsletter.", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" }, - "option": { - "description": "Defines what should be done.", - "type": "string" - }, - "storefrontUrl": { - "description": "Url of the storefront of the shop. This will be used for generating the link to the /newsletter/confirm inside the confirm email.", - "type": "string" - }, - "salutationId": { - "description": "Identifier of the salutation.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "description": "First name", - "type": "string" - }, - "lastName": { - "description": "Last name", - "type": "string" - }, - "street": { - "description": "Street", - "type": "string" - }, - "city": { - "description": "City", - "type": "string" - }, - "zipCode": { - "description": "Zip code", - "type": "string" - }, - "languageId": { - "description": "Identifier of the language.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "customFields": { - "description": "Custom field data that should be added to the subscription.", - "type": "string" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "required": [ - "success", - "status" - ], - "properties": { - "success": { - "description": "Indicates whether the subscribe request was successful.", - "type": "boolean" - }, - "status": { - "$ref": "#/components/schemas/NewsletterStatus" - } - }, - "type": "object" - } - } - } - }, - "400": { - "$ref": "#/components/responses/400" - } - }, - "security": [ - { - "ApiKey": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } - ] - } - }, - "/newsletter/unsubscribe": { - "post": { - "tags": [ - "Newsletter" - ], - "summary": "Remove a newsletter subscription", - "description": "Removes a newsletter recipient from the mailing lists.", - "operationId": "unsubscribeToNewsletter", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "email" - ], - "properties": { - "email": { - "description": "Email address that should be removed from the mailing lists.", - "type": "string" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Unsubscribing was successful.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } - }, - "400": { - "$ref": "#/components/responses/400" - } - }, - "security": [ - { - "ApiKey": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } - ] - } - }, - "/country-state/{countryId}": { - "post": { - "tags": [ - "System & Context", - "Endpoints supporting Criteria " - ], - "summary": "Fetch the states of a country", - "description": "Perform a filtered search the states for a country", - "operationId": "readCountryState", - "parameters": [ - { - "name": "countryId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } - }, - { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ { - "$ref": "#/components/schemas/Criteria" + "properties": { + "onlyAvailable": { + "description": "List only available", + "type": "boolean" + } + }, + "type": "object" } ] } @@ -18299,7 +18224,7 @@ }, "responses": { "200": { - "$ref": "#/components/responses/CountryStateListResponse" + "$ref": "#/components/responses/PaymentMethodListResponse" } }, "security": [ @@ -18310,22 +18235,12 @@ }, "get": { "tags": [ - "System & Context", + "Payment Method", "Endpoints supporting Criteria " ], - "summary": "Fetch the states of a country", - "description": "Perform a filtered search the states for a country", - "operationId": "readCountryStateGet", + "summary": "Loads all available payment methods", + "operationId": "readPaymentMethodGet", "parameters": [ - { - "name": "countryId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, { "$ref": "#/components/parameters/criteriaPage" }, @@ -18380,7 +18295,7 @@ ], "responses": { "200": { - "$ref": "#/components/responses/CountryStateListResponse" + "$ref": "#/components/responses/PaymentMethodListResponse" } }, "security": [ @@ -18390,115 +18305,59 @@ ] } }, - "/salutation": { - "post": { + "/sitemap": { + "get": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Sitemap & Routes" ], - "summary": "Fetch salutations", - "description": "Fetches salutations with a criteria obj.", - "operationId": "readSalutation", + "summary": "Fetch sitemaps", + "description": "Fetches a list of compressed sitemap files, which are often used by search engines.", + "operationId": "readSitemap", "parameters": [ - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } - }, { "$ref": "#/components/parameters/swLanguageId" } ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } - } - } - }, "responses": { "200": { - "$ref": "#/components/responses/SalutationListResponse" - } - }, + "description": "Returns a list of available sitemaps.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Sitemap" + } + } + } + } + } + }, "security": [ { "ApiKey": [] } ] - }, + } + }, + "/sitemap/{filePath}": { "get": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Sitemap & Routes" ], - "summary": "Fetch salutations", - "description": "Perform a filtered search for salutations.", - "operationId": "readSalutationGet", + "summary": "Download sitemap file", + "description": "Downloads the sitemap file from the configured sitemap storage.", + "operationId": "getSitemapFile", "parameters": [ { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaFields" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "$ref": "#/components/parameters/CompressedCriteria" + "name": "filePath", + "in": "path", + "description": "The path to the sitemap file", + "required": true, + "schema": { + "type": "string", + "pattern": ".*\\.(xml|gz)$" + } }, { "$ref": "#/components/parameters/swLanguageId" @@ -18506,7 +18365,21 @@ ], "responses": { "200": { - "$ref": "#/components/responses/SalutationListResponse" + "description": "Returns the blob to download.", + "content": { + "application/xml": { + "schema": { + "type": "string", + "format": "binary" + } + }, + "application/gzip": { + "schema": { + "type": "string", + "format": "binary" + } + } + } } }, "security": [ @@ -18516,16 +18389,24 @@ ] } }, - "/shipping-method": { + "/search-suggest": { "post": { "tags": [ - "Payment & Shipping", - "Endpoints supporting Criteria " + "Product" ], - "summary": "Fetch shipping methods", - "description": "Perform a filtered search for shipping methods.\n\n**Available Associations:**\n- `prices` - Shipping method price configurations (based on current cart and context)\n- `deliveryTime` - Delivery time information (min/max days, unit)\n- `media` - Media/images associated with the shipping method (loaded by default)\n- `availabilityRule` - Availability rule determining when this method is available\n- `tax` - Tax configuration for the shipping method\n\n**Example with associations:**\n```json\n{\n \"associations\": {\n \"prices\": {},\n \"deliveryTime\": {}\n }\n}\n```\n\nNote: The `prices` association is essential for accessing shipping cost configurations.", - "operationId": "readShippingMethod", + "summary": "Search for products (suggest)", + "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", + "operationId": "searchSuggest", "parameters": [ + { + "name": "p", + "in": "query", + "description": "The page number to fetch.", + "required": false, + "schema": { + "type": "integer" + } + }, { "name": "sw-include-search-info", "in": "header", @@ -18540,26 +18421,33 @@ "default": "1" } }, - { - "name": "onlyAvailable", - "in": "query", - "description": "List only available shipping methods. This filters shipping methods methods which can not be used in the actual context because of their availability rule.", - "schema": { - "type": "boolean" - } - }, { "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/Criteria" + "required": [ + "search" + ], + "properties": { + "search": { + "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/ProductListingCriteria" + }, + { + "$ref": "#/components/schemas/ProductListingFlags" } ] } @@ -18568,37 +18456,11 @@ }, "responses": { "200": { - "description": "", + "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", "content": { "application/json": { "schema": { - "allOf": [ - { - "required": [ - "elements" - ], - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/ProductListingResult" } } } @@ -18612,18 +18474,32 @@ }, "get": { "tags": [ - "Payment & Shipping", - "Endpoints supporting Criteria " + "Product" ], - "summary": "Fetch shipping methods", - "description": "Perform a filtered search for shipping methods.\n\n**Available Associations:**\n- `prices` - Shipping method price configurations (graduated prices, quantity-based pricing)\n- `deliveryTime` - Delivery time information (min/max days, unit)\n- `media` - Media/images associated with the shipping method (loaded by default)\n- `availabilityRule` - Availability rule determining when this method is available\n- `tax` - Tax configuration for the shipping method\n\nNote: The `prices` association is essential for accessing shipping cost configurations.", - "operationId": "readShippingMethodGet", + "summary": "Search for products (suggest)", + "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", + "operationId": "searchSuggestGet", "parameters": [ + { + "name": "search", + "in": "query", + "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", + "required": true, + "schema": { + "type": "string" + } + }, { "$ref": "#/components/parameters/criteriaPage" }, { - "$ref": "#/components/parameters/criteriaLimit" + "name": "limit", + "in": "query", + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "schema": { + "type": "integer", + "minimum": 0 + } }, { "$ref": "#/components/parameters/criteriaTerm" @@ -18665,133 +18541,95 @@ "$ref": "#/components/parameters/criteriaExcludes" }, { - "$ref": "#/components/parameters/CompressedCriteria" + "name": "order", + "in": "query", + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "schema": { + "type": "string" + } }, { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/ShippingMethodListResponse" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/language": { - "post": { - "tags": [ - "System & Context", - "Endpoints supporting Criteria " - ], - "summary": "Fetch languages", - "description": "Perform a filtered search for languages.\n\n**Available Associations:**\n- `locale` - Locale defining regional settings (date, time, number formats)\n- `translationCode` - Locale used for translating content\n- `children` - Child languages inheriting from this parent language", - "operationId": "readLanguages", - "parameters": [ + "name": "p", + "in": "query", + "description": "Search result page", + "schema": { + "type": "integer", + "default": 1 + } + }, { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, + "name": "manufacturer", + "in": "query", + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" + "type": "string" } }, { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } + "name": "min-price", + "in": "query", + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 } - } - }, - "responses": { - "200": { - "$ref": "#/components/responses/LanguageListResponse" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - }, - "get": { - "tags": [ - "System & Context", - "Endpoints supporting Criteria " - ], - "summary": "Fetch languages", - "description": "Perform a filtered search for languages.\n\n**Available Associations:**\n- `locale` - Locale defining regional settings (date, time, number formats)\n- `translationCode` - Locale used for translating content\n- `children` - Child languages inheriting from this parent language", - "operationId": "readLanguagesGet", - "parameters": [ - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" }, { - "$ref": "#/components/parameters/criteriaAggregations" + "name": "max-price", + "in": "query", + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } }, { - "$ref": "#/components/parameters/criteriaFields" + "name": "rating", + "in": "query", + "description": "Filter products with a minimum average rating.", + "schema": { + "type": "integer" + } }, { - "$ref": "#/components/parameters/criteriaGrouping" + "name": "shipping-free", + "in": "query", + "description": "Filters products that are marked as shipping-free.", + "schema": { + "type": "boolean", + "default": false + } }, { - "$ref": "#/components/parameters/criteriaTotalCountMode" + "name": "properties", + "in": "query", + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "schema": { + "type": "string" + } }, { - "$ref": "#/components/parameters/criteriaIncludes" + "name": "reduce-aggregations", + "in": "query", + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } }, { - "$ref": "#/components/parameters/criteriaExcludes" + "$ref": "#/components/parameters/noAggregations" }, { - "$ref": "#/components/parameters/CompressedCriteria" + "$ref": "#/components/parameters/onlyAggregations" }, { "$ref": "#/components/parameters/swLanguageId" @@ -18799,7 +18637,14 @@ ], "responses": { "200": { - "$ref": "#/components/responses/LanguageListResponse" + "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + } } }, "security": [ @@ -18809,79 +18654,84 @@ ] } }, - "/product/{productId}/cross-selling": { + "/media": { "post": { "tags": [ - "Product" + "Content" ], - "summary": "Fetch cross-selling groups of a product", - "description": "This route is used to load the cross sellings for a product. A product has several cross selling definitions in which several products are linked. The route returns the cross sellings together with the linked products", - "operationId": "readProductCrossSellings", - "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Product ID", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, - "schema": { - "type": "boolean" + "summary": "Fetch and resolve Media Entities", + "description": "Fetch one or multiple Media Entities with the corresponding Identifier.", + "operationId": "readMedia", + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "ids": { + "description": "Identifier (UUID) of the media entity to be fetched.", + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + }, + "type": "object", + "required": [ + "ids" + ] + } } - }, - { - "$ref": "#/components/parameters/swLanguageId" } - ], + }, "responses": { "200": { - "description": "Found cross sellings", + "description": "The loaded MediaCollection containing the requested Media Entities.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CrossSellingElementCollection" + "type": "array", + "items": { + "$ref": "#/components/schemas/Media" + } } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ { "ApiKey": [] } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ] }, "get": { "tags": [ - "Product" + "Content" ], - "summary": "Fetch cross-selling groups of a product", - "description": "This route is used to load the cross sellings for a product. A product has several cross selling definitions in which several products are linked. The route returns the cross sellings together with the linked products", - "operationId": "readProductCrossSellingsGet", + "summary": "Fetch and resolve Media Entities", + "description": "Fetch one or multiple Media Entities with the corresponding Identifier.", + "operationId": "readMediaGet", "parameters": [ { - "name": "productId", - "in": "path", - "description": "Product ID", + "name": "ids[]", + "in": "query", + "description": "Identifier (UUID) of the media entity to be fetched.", "required": true, "schema": { - "type": "string" - } - }, - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, - "schema": { - "type": "boolean" + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } }, { @@ -18890,14 +18740,20 @@ ], "responses": { "200": { - "description": "Found cross sellings", + "description": "The loaded MediaCollection containing the requested Media Entities.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CrossSellingElementCollection" + "type": "array", + "items": { + "$ref": "#/components/schemas/Media" + } } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -18907,203 +18763,65 @@ ] } }, - "/product/{productId}": { - "post": { + "/_info/openapi3.json": { + "get": { "tags": [ - "Product" + "System Info & Health Check" ], - "summary": "Fetch a single product", - "description": "This route is used to load a single product with the corresponding details. In addition to loading the data, the best variant of the product is determined when a parent id is passed.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", - "operationId": "readProductDetail", + "summary": "Get OpenAPI Specification", + "description": "Get information about the store API in OpenAPI format.", + "operationId": "api-info", "parameters": [ { - "name": "productId", - "in": "path", - "description": "Product ID", - "required": true, + "name": "type", + "in": "query", + "description": "Type of the api", "schema": { "type": "string", - "pattern": "^[0-9a-f]{32}$'" + "enum": [ + "jsonapi", + "json" + ] } - }, - { - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "in": "header", - "name": "sw-include-seo-urls", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } - }, - { - "description": "Instructs Shopware to skip loading the configurator data", - "in": "query", - "name": "skipConfigurator", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Instructs Shopware to skip loading the CMS page data", - "in": "query", - "name": "skipCmsPage", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "$ref": "#/components/parameters/swLanguageId" } ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/NoneFieldsCriteria" - } - ] - } - } - } - }, "responses": { "200": { - "description": "Product information along with variant groups and options", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProductDetailResponse" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] + "$ref": "#/components/responses/OpenApi3" } - ] - }, - "get": { + } + } + }, + "/customer/wishlist/add/{productId}": { + "post": { "tags": [ - "Product" + "Wishlist" ], - "summary": "Fetch a single product", - "description": "This route is used to load a single product with the corresponding details. In addition to loading the data, the best variant of the product is determined when a parent id is passed.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", - "operationId": "readProductDetailGet", + "summary": "Add a product to a wishlist", + "description": "Adds a product to a customers wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "addProductOnWishlist", "parameters": [ { "name": "productId", "in": "path", - "description": "Product ID", + "description": "Identifier of the product to be added.", "required": true, "schema": { "type": "string", - "pattern": "^[0-9a-f]{32}$'" - } - }, - { - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "in": "header", - "name": "sw-include-seo-urls", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Instructs Shopware to skip loading the configurator data", - "in": "query", - "name": "skipConfigurator", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "description": "Instructs Shopware to skip loading the CMS page data", - "in": "query", - "name": "skipCmsPage", - "required": false, - "schema": { - "type": "boolean" + "pattern": "^[0-9a-f]{32}$" } }, - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "$ref": "#/components/parameters/CompressedNoneFieldsCriteria" - }, { "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "description": "Product information along with variant groups and options", + "description": "Returns a success response.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductDetailResponse" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -19111,20 +18829,21 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/product": { + "/customer/wishlist": { "post": { "tags": [ - "Product", + "Wishlist", "Endpoints supporting Criteria " ], - "summary": "Fetch a list of products", - "description": "List products that match the given criteria. For performance reasons a limit should always be set.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", - "operationId": "readProduct", + "summary": "Fetch a wishlist", + "description": "Fetch a customer's wishlist. Products on the wishlist can be filtered using a criteria object.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "readCustomerWishlist", "parameters": [ { "name": "sw-include-search-info", @@ -19160,36 +18879,202 @@ }, "responses": { "200": { - "$ref": "#/components/responses/ProductListResponse" + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WishlistLoadRouteResponse" + } + } + } } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] - }, - "get": { + } + }, + "/customer/wishlist/merge": { + "post": { "tags": [ - "Product", - "Endpoints supporting Criteria " + "Wishlist" ], - "summary": "Fetch a list of products", - "description": "List products that match the given criteria. For performance reasons a limit should always be set.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", - "operationId": "readProductGet", - "parameters": [ - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, + "summary": "Create a wishlist for a customer", + "description": "Create a new wishlist for a logged in customer or extend the existing wishlist given a set of products.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * A customer can only have a single wishlist.\n * The wishlist feature has to be activated.", + "operationId": "mergeProductOnWishlist", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "productIds": { + "description": "List product id", + "type": "array", + "items": { + "description": "product id", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Returns a success response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } + } + }, + "security": [ { - "$ref": "#/components/parameters/criteriaFilter" - }, + "ApiKey": [], + "ContextToken": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/customer/wishlist/delete/{productId}": { + "delete": { + "tags": [ + "Wishlist" + ], + "summary": "Remove a product from a wishlist", + "description": "Removes a product from a customer's wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "deleteProductOnWishlist", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "The identifier of the product to be removed from the wishlist.", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "responses": { + "200": { + "description": "Returns a success response indicating a successful removal.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } + }, + "404": { + "description": "The removal of the product failed. Probably because the product could not be found on the wishlist.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + } + } + } + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/category": { + "post": { + "tags": [ + "Category", + "Endpoints supporting Criteria " + ], + "summary": "Fetch a list of categories", + "description": "Perform a filtered search for categories.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", + "operationId": "readCategoryList", + "parameters": [ + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } + } + } + }, + "responses": { + "200": { + "$ref": "#/components/responses/CategoryListResponse" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + }, + "get": { + "tags": [ + "Category", + "Endpoints supporting Criteria " + ], + "summary": "Fetch a list of categories", + "description": "Perform a filtered search for categories.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", + "operationId": "readCategoryListGet", + "parameters": [ + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, { "$ref": "#/components/parameters/criteriaIds" }, @@ -19232,7 +19117,7 @@ ], "responses": { "200": { - "$ref": "#/components/responses/ProductListResponse" + "$ref": "#/components/responses/CategoryListResponse" } }, "security": [ @@ -19242,23 +19127,23 @@ ] } }, - "/product/{productId}/reviews": { + "/category/{navigationId}": { "post": { "tags": [ - "Product", + "Category", "Endpoints supporting Criteria " ], - "summary": "Fetch product reviews", - "description": "Perform a filtered search for product reviews.", - "operationId": "readProductReviews", + "summary": "Fetch a single category", + "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", + "operationId": "readCategory", "parameters": [ { - "name": "productId", - "in": "path", - "description": "Identifier of the product.", - "required": true, + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, "schema": { - "type": "string" + "type": "boolean" } }, { @@ -19275,18 +19160,35 @@ "default": "1" } }, + { + "name": "navigationId", + "in": "path", + "description": "Identifier of the category to be fetched", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "slots", + "in": "query", + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", + "schema": { + "type": "string" + } + }, { "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { - "required": false, "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/Criteria" + "$ref": "#/components/schemas/ProductListingCriteria" } ] } @@ -19295,26 +19197,11 @@ }, "responses": { "200": { - "description": "Entity search result containing product reviews", + "description": "The loaded category with cms page", "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductReview" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/Category" } } } @@ -19328,18 +19215,36 @@ }, "get": { "tags": [ - "Product", + "Category", "Endpoints supporting Criteria " ], - "summary": "Fetch product reviews", - "description": "Perform a filtered search for product reviews.", - "operationId": "readProductReviewsGet", + "summary": "Fetch a single category", + "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", + "operationId": "readCategoryGet", "parameters": [ { - "name": "productId", + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "navigationId", "in": "path", - "description": "Identifier of the product.", + "description": "Identifier of the category to be fetched", "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "slots", + "in": "query", + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", "schema": { "type": "string" } @@ -19348,7 +19253,13 @@ "$ref": "#/components/parameters/criteriaPage" }, { - "$ref": "#/components/parameters/criteriaLimit" + "name": "limit", + "in": "query", + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "schema": { + "type": "integer", + "minimum": 0 + } }, { "$ref": "#/components/parameters/criteriaTerm" @@ -19390,139 +19301,88 @@ "$ref": "#/components/parameters/criteriaExcludes" }, { - "$ref": "#/components/parameters/CompressedCriteria" + "name": "order", + "in": "query", + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "schema": { + "type": "string" + } }, { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "responses": { - "200": { - "description": "Entity search result containing product reviews", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductReview" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } + "name": "p", + "in": "query", + "description": "Search result page", + "schema": { + "type": "integer", + "default": 1 } - } - }, - "security": [ + }, { - "ApiKey": [] - } - ] - } - }, - "/product/{productId}/review": { - "post": { - "tags": [ - "Product" - ], - "summary": "Save a product review", - "description": "Saves a review for a product. Reviews have to be activated in the settings.", - "operationId": "saveProductReview", - "parameters": [ + "name": "manufacturer", + "in": "query", + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, { - "name": "productId", - "in": "path", - "description": "Identifier of the product which is reviewed.", - "required": true, + "name": "min-price", + "in": "query", + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "integer", + "minimum": 0, + "default": 0 } }, { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "required": [ - "title", - "content", - "points" - ], - "properties": { - "name": { - "description": "The name of the review author. If not set, the first name of the customer is chosen.", - "type": "string" - }, - "email": { - "description": "The email address of the review author. If not set, the email of the customer is chosen.", - "type": "string" - }, - "title": { - "description": "The title of the review.", - "type": "string" - }, - "content": { - "description": "The content of review.", - "type": "string" - }, - "points": { - "description": "The review rating for the product.", - "type": "number", - "format": "double" - } - }, - "type": "object" - } + "name": "max-price", + "in": "query", + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 } - } - }, - "responses": { - "200": { - "description": "Success response indicating the review was saved successfully." - } - }, - "security": [ + }, { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/product/purchase-limit": { - "get": { - "tags": [ - "Product" - ], - "summary": "Fetch current purchase quantity limits for products", - "description": "Returns the current min/max/step purchase constraints for the given products, reflecting live stock or configured limitations. Intended for use on PDP to show actual values on product pages.", - "operationId": "readProductsPurchaseLimit", - "parameters": [ + "name": "rating", + "in": "query", + "description": "Filter products with a minimum average rating.", + "schema": { + "type": "integer" + } + }, { - "name": "ids[]", + "name": "shipping-free", "in": "query", - "description": "List of product IDs to fetch quantity limits for.", - "required": true, + "description": "Filters products that are marked as shipping-free.", "schema": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "type": "boolean", + "default": false + } + }, + { + "name": "properties", + "in": "query", + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "reduce-aggregations", + "in": "query", + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] } }, { @@ -19531,20 +19391,14 @@ ], "responses": { "200": { - "description": "Current quantity limits for the requested products", + "description": "The loaded category with cms page", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductPurchaseLimit" - } + "$ref": "#/components/schemas/Category" } } } - }, - "400": { - "$ref": "#/components/responses/400" } }, "security": [ @@ -19554,22 +19408,28 @@ ] } }, - "/product/{productId}/find-variant": { + "/seo-url": { "post": { "tags": [ - "Product" + "Sitemap & Routes", + "Endpoints supporting Criteria " ], - "summary": "Search for a matching variant by product options.", - "description": "Performs a search for product variants and returns the best matching variant.", - "operationId": "searchProductVariantIds", + "summary": "Fetch SEO routes", + "description": "Perform a filtered search for seo urls.", + "operationId": "readSeoUrl", "parameters": [ { - "name": "productId", - "in": "path", - "description": "Product ID", - "required": true, + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, "schema": { - "type": "string" + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" } }, { @@ -19577,51 +19437,25 @@ } ], "requestBody": { + "required": false, "content": { "application/json": { "schema": { - "required": [ - "options" - ], - "properties": { - "options": { - "oneOf": [ - { - "description": "The options parameter for the variant to find.", - "type": "array", - "items": { - "type": "string" - } - }, - { - "description": "The options parameter as a map of groupId => optionId.", - "type": "object", - "additionalProperties": { - "type": "string" - } - } - ] - }, - "switchedGroup": { - "description": "The id of the option group that has been switched.", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Returns an FoundCombination struct containing the ids matching the search.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/FindProductVariantRouteResponse" - } - } - } + "$ref": "#/components/responses/SeoUrlListResponse" + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -19632,126 +19466,12 @@ }, "get": { "tags": [ - "Product" + "Sitemap & Routes", + "Endpoints supporting Criteria " ], - "summary": "Search for a matching variant by product options.", - "description": "Performs a search for product variants and returns the best matching variant.", - "operationId": "searchProductVariantIdsGet", - "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Product ID", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "options[]", - "in": "query", - "description": "The options parameter for the variant to find. Array of option IDs.", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "switchedGroup", - "in": "query", - "description": "The id of the option group that has been switched.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "responses": { - "200": { - "description": "Returns an FoundCombination struct containing the ids matching the search.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/FindProductVariantRouteResponse" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/currency": { - "post": { - "tags": [ - "System & Context", - "Endpoints supporting Criteria " - ], - "summary": "Fetch currencies", - "description": "Perform a filtered search for currencies.", - "operationId": "readCurrency", - "parameters": [ - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } - }, - { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/NoneFieldsCriteria" - } - ] - } - } - } - }, - "responses": { - "200": { - "$ref": "#/components/responses/CurrencyListResponse" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - }, - "get": { - "tags": [ - "System & Context", - "Endpoints supporting Criteria " - ], - "summary": "Fetch currencies", - "description": "Perform a filtered search for currencies.", - "operationId": "readCurrencyGet", + "summary": "Fetch SEO routes", + "description": "Perform a filtered search for seo urls.", + "operationId": "readSeoUrlGet", "parameters": [ { "$ref": "#/components/parameters/criteriaPage" @@ -19783,6 +19503,9 @@ { "$ref": "#/components/parameters/criteriaAggregations" }, + { + "$ref": "#/components/parameters/criteriaFields" + }, { "$ref": "#/components/parameters/criteriaGrouping" }, @@ -19796,7 +19519,7 @@ "$ref": "#/components/parameters/criteriaExcludes" }, { - "$ref": "#/components/parameters/CompressedNoneFieldsCriteria" + "$ref": "#/components/parameters/CompressedCriteria" }, { "$ref": "#/components/parameters/swLanguageId" @@ -19804,7 +19527,10 @@ ], "responses": { "200": { - "$ref": "#/components/responses/CurrencyListResponse" + "$ref": "#/components/responses/SeoUrlListResponse" + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -19814,62 +19540,37 @@ ] } }, - "/product-export/{accessKey}/{fileName}": { - "get": { + "/product-listing/{categoryId}": { + "post": { "tags": [ "Product" ], - "summary": "Export product export", - "operationId": "readProductExport", + "summary": "Fetch a product listing by category", + "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", + "operationId": "readProductListing", "parameters": [ { - "name": "accessKey", + "name": "categoryId", "in": "path", - "description": "Access Key", + "description": "Identifier of a category.", "required": true, "schema": { "type": "string" } }, { - "name": "fileName", - "in": "path", - "description": "File Name", - "required": true, + "name": "p", + "in": "query", + "description": "The page number to fetch.", + "required": false, "schema": { - "type": "string" + "type": "integer" } }, - { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "responses": { - "200": { - "description": "" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/navigation/{activeId}/{rootId}": { - "post": { - "tags": [ - "Category", - "Endpoints supporting Criteria " - ], - "summary": "Fetch a navigation menu", - "description": "This endpoint returns categories that can be used as a page navigation. You can either return them as a tree or as a flat list. You can also control the depth of the tree.\n\n Instead of passing uuids, you can also use one of the following aliases for the activeId and rootId parameters to get the respective navigations of your sales channel.\n\n * main-navigation\n * service-navigation\n * footer-navigation", - "operationId": "readNavigation", - "parameters": [ { "name": "sw-include-seo-urls", "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "description": "Determines if the response must contain a SeoUrl entity for a product entity", "required": false, "schema": { "type": "boolean" @@ -19889,69 +19590,20 @@ "default": "1" } }, - { - "name": "activeId", - "in": "path", - "description": "Identifier of the active category in the navigation tree (if not used, just set to the same as rootId).", - "required": true, - "schema": { - "oneOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "$ref": "#/components/schemas/NavigationType" - } - ] - } - }, - { - "name": "rootId", - "in": "path", - "description": "Identifier of the root category for your desired navigation tree. You can use it to fetch sub-trees of your navigation tree.", - "required": true, - "schema": { - "oneOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "$ref": "#/components/schemas/NavigationType" - } - ] - } - }, { "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { - "required": true, "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/NoneFieldsCriteria" + "$ref": "#/components/schemas/ProductListingCriteria" }, { - "properties": { - "depth": { - "description": "Determines the depth of fetched navigation levels.", - "type": "integer", - "format": "int32" - }, - "buildTree": { - "description": "Return the categories as a tree or as a flat list.", - "type": "array", - "items": { - "type": "object" - } - } - }, - "type": "object" + "$ref": "#/components/schemas/ProductListingFlags" } ] } @@ -19960,11 +19612,11 @@ }, "responses": { "200": { - "description": "All available navigations", + "description": "Returns a product listing containing all products and additional fields to display a listing.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NavigationRouteResponse" + "$ref": "#/components/schemas/ProductListingResult" } } } @@ -19978,86 +19630,42 @@ }, "get": { "tags": [ - "Category", - "Endpoints supporting Criteria " + "Product" ], - "summary": "Fetch a navigation menu", - "description": "This endpoint returns categories that can be used as a page navigation. You can either return them as a tree or as a flat list. You can also control the depth of the tree.\n\n Instead of passing uuids, you can also use one of the following aliases for the activeId and rootId parameters to get the respective navigations of your sales channel.\n\n * main-navigation\n * service-navigation\n * footer-navigation", - "operationId": "readNavigationGet", + "summary": "Fetch a product listing by category", + "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", + "operationId": "readProductListingGet", "parameters": [ + { + "name": "categoryId", + "in": "path", + "description": "Identifier of a category.", + "required": true, + "schema": { + "type": "string" + } + }, { "name": "sw-include-seo-urls", "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "description": "Determines if the response must contain a SeoUrl entity for a product entity", "required": false, "schema": { "type": "boolean" } }, { - "name": "activeId", - "in": "path", - "description": "Identifier of the active category in the navigation tree (if not used, just set to the same as rootId).", - "required": true, - "schema": { - "oneOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "$ref": "#/components/schemas/NavigationType" - } - ] - } - }, - { - "name": "rootId", - "in": "path", - "description": "Identifier of the root category for your desired navigation tree. You can use it to fetch sub-trees of your navigation tree.", - "required": true, - "schema": { - "oneOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "$ref": "#/components/schemas/NavigationType" - } - ] - } + "$ref": "#/components/parameters/criteriaPage" }, { - "name": "depth", + "name": "limit", "in": "query", - "description": "Determines the depth of fetched navigation levels.", - "required": false, + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", "schema": { "type": "integer", - "format": "int32" + "minimum": 0 } }, - { - "name": "buildTree", - "in": "query", - "description": "Return the categories as a tree or as a flat list.", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "object" - } - }, - "style": "deepObject", - "explode": true - }, - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, { "$ref": "#/components/parameters/criteriaTerm" }, @@ -20082,6 +19690,9 @@ { "$ref": "#/components/parameters/criteriaAggregations" }, + { + "$ref": "#/components/parameters/criteriaFields" + }, { "$ref": "#/components/parameters/criteriaGrouping" }, @@ -20095,7 +19706,98 @@ "$ref": "#/components/parameters/criteriaExcludes" }, { - "$ref": "#/components/parameters/CompressedNoneFieldsCriteria" + "name": "order", + "in": "query", + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "schema": { + "type": "string" + } + }, + { + "name": "p", + "in": "query", + "description": "Search result page", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "manufacturer", + "in": "query", + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "min-price", + "in": "query", + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "max-price", + "in": "query", + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "rating", + "in": "query", + "description": "Filter products with a minimum average rating.", + "schema": { + "type": "integer" + } + }, + { + "name": "shipping-free", + "in": "query", + "description": "Filters products that are marked as shipping-free.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "properties", + "in": "query", + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "reduce-aggregations", + "in": "query", + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + { + "$ref": "#/components/parameters/noAggregations" + }, + { + "$ref": "#/components/parameters/onlyAggregations" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" }, { "$ref": "#/components/parameters/swLanguageId" @@ -20103,11 +19805,11 @@ ], "responses": { "200": { - "description": "All available navigations", + "description": "Returns a product listing containing all products and additional fields to display a listing.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NavigationRouteResponse" + "$ref": "#/components/schemas/ProductListingResult" } } } @@ -20120,37 +19822,33 @@ ] } }, - "/handle-payment": { + "/app-system/{name}/generate-token": { "post": { "tags": [ - "Payment & Shipping" + "App system" + ], + "summary": "Generate JWT token for app system backend", + "description": "Generate JWT token for authenticated communication with the app server", + "operationId": "generateJWTAppSystemAppServer", + "parameters": [ + { + "in": "path", + "name": "name", + "required": true, + "description": "Name of the app", + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } ], - "summary": "Initiate a payment for an order", - "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order.", - "operationId": "handlePaymentMethod", "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "required": [ - "orderId" - ], - "properties": { - "orderId": { - "description": "Identifier of an order", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "finishUrl": { - "description": "URL to which the client should be redirected after successful payment", - "type": "string" - }, - "errorUrl": { - "description": "URL to which the client should be redirected after erroneous payment", - "type": "string" - } - }, "type": "object" } } @@ -20158,19 +19856,23 @@ }, "responses": { "200": { - "description": "Redirect to external payment provider", + "description": "", "content": { "application/json": { "schema": { "type": "object", "properties": { - "redirectUrl": { + "token": { + "type": "string" + }, + "expires": { + "type": "string", + "format": "date-time" + }, + "shopId": { "type": "string" } - }, - "required": [ - "redirectUrl" - ] + } } } } @@ -20180,95 +19882,118 @@ { "ApiKey": [] } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } ] - }, - "get": { + } + }, + "/country": { + "post": { "tags": [ - "Payment & Shipping" + "System & Context", + "Endpoints supporting Criteria " ], - "summary": "Initiate a payment for an order", - "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order. Please prefer the POST version of this endpoint.", - "operationId": "handlePaymentMethodGet", + "summary": "Fetch countries", + "description": "Perform a filtered search for countries\n\n**Available Associations:**\n- `states` - States/provinces/regions within the country", + "operationId": "readCountry", "parameters": [ { - "name": "orderId", - "in": "query", - "required": true, - "description": "Identifier of an order", + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, "schema": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "finishUrl", - "in": "query", - "description": "URL to which the client should be redirected after successful payment", - "schema": { - "type": "string" - } - }, - { - "name": "errorUrl", - "in": "query", - "description": "URL to which the client should be redirected after erroneous payment", - "schema": { - "type": "string" + "enum": [ + "0", + "1" + ], + "default": "1" } }, { "$ref": "#/components/parameters/swLanguageId" } ], - "responses": { - "200": { - "description": "Redirect to external payment provider", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "type": "string" - } - }, - "required": [ - "redirectUrl" - ] - } + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] } } } }, + "responses": { + "200": { + "$ref": "#/components/responses/CountryListResponse" + } + }, "security": [ { "ApiKey": [] } ] - } - }, - "/customer-group-registration/config/{customerGroupId}": { + }, "get": { "tags": [ - "Login & Registration" + "System & Context", + "Endpoints supporting Criteria " ], - "summary": "Fetch registration settings for customer group", - "operationId": "getCustomerGroupRegistrationInfo", + "summary": "Fetch countries", + "description": "Perform a filtered search for countries\n\n**Available Associations:**\n- `states` - States/provinces/regions within the country", + "operationId": "readCountryGet", "parameters": [ { - "name": "customerGroupId", - "in": "path", - "description": "Customer group id", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" }, { "$ref": "#/components/parameters/swLanguageId" @@ -20276,16 +20001,98 @@ ], "responses": { "200": { - "description": "Returns the customer group including registration settings.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomerGroup" - } + "$ref": "#/components/responses/CountryListResponse" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/contact-form": { + "post": { + "tags": [ + "Content" + ], + "summary": "Submit a contact form message", + "description": "Used for submitting contact forms. Be aware that there can be more required fields, depending on the system settings.", + "operationId": "sendContactMail", + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "email", + "subject", + "comment" + ], + "properties": { + "salutationId": { + "description": "Identifier of the salutation. Use `/api/salutation` endpoint to fetch possible values.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "firstName": { + "description": "Firstname. This field may be required depending on the system settings.", + "type": "string" + }, + "lastName": { + "description": "Lastname. This field may be required depending on the system settings.", + "type": "string" + }, + "email": { + "description": "Email address", + "type": "string" + }, + "phone": { + "description": "Phone. This field may be required depending on the system settings.", + "type": "string" + }, + "subject": { + "description": "The subject of the contact form.", + "type": "string" + }, + "comment": { + "description": "The message of the contact form", + "type": "string" + }, + "navigationId": { + "description": "Identifier of the navigation page. Can be used to override the configuration.\nTake a look at the settings of a category containing a concat form in the administration.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "slotId": { + "description": "Identifier of the cms element", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "cmsPageType": { + "description": "Type of the content management page", + "type": "string" + }, + "entityName": { + "description": "Entity name for slot config", + "type": "string" + } + }, + "type": "object" } } } }, + "responses": { + "200": { + "description": "Message sent successful." + } + }, "security": [ { "ApiKey": [] @@ -20293,23 +20100,31 @@ ] } }, - "/landing-page/{landingPageId}": { + "/search": { "post": { "tags": [ - "Content", - "Endpoints supporting Criteria " + "Product" ], - "summary": "Fetch a landing page with the resolved CMS page", - "description": "Loads a landing page by its identifier and resolves the CMS page.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `cmsPage` - CMS page layout for the landing page\n- `seoUrls` - SEO-friendly URLs for the landing page across different sales channels", - "operationId": "readLandingPage", + "summary": "Search for products", + "description": "Performs a search for products which can be used to display a product listing.", + "operationId": "searchPage", "parameters": [ { - "name": "landingPageId", - "in": "path", - "description": "Identifier of the landing page.", - "required": true, + "name": "p", + "in": "query", + "description": "The page number to fetch.", + "required": false, "schema": { - "type": "string" + "type": "integer" + } + }, + { + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "in": "header", + "name": "sw-include-seo-urls", + "required": false, + "schema": { + "type": "boolean" } }, { @@ -20336,23 +20151,19 @@ "schema": { "allOf": [ { - "$ref": "#/components/schemas/Criteria" + "properties": { + "search": { + "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", + "type": "string" + } + }, + "type": "object" }, { - "allOf": [ - { - "properties": { - "slots": { - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/ProductListingCriteria" - } - ] + "$ref": "#/components/schemas/ProductListingCriteria" + }, + { + "$ref": "#/components/schemas/ProductListingFlags" } ] } @@ -20361,17 +20172,14 @@ }, "responses": { "200": { - "description": "The loaded landing page with cms page", + "description": "Returns a product listing containing all products and additional fields to display a listing.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LandingPage" + "$ref": "#/components/schemas/ProductListingResult" } } } - }, - "404": { - "$ref": "#/components/responses/404" } }, "security": [ @@ -20382,34 +20190,28 @@ }, "get": { "tags": [ - "Content", - "Endpoints supporting Criteria " + "Product" ], - "summary": "Fetch a landing page with the resolved CMS page", - "description": "Loads a landing page by its identifier and resolves the CMS page.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `cmsPage` - CMS page layout for the landing page\n- `seoUrls` - SEO-friendly URLs for the landing page across different sales channels", - "operationId": "readLandingPageGet", + "summary": "Search for products", + "description": "Performs a search for products which can be used to display a product listing.", + "operationId": "searchPageGet", "parameters": [ { - "name": "landingPageId", - "in": "path", - "description": "Identifier of the landing page.", - "required": true, + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "in": "header", + "name": "sw-include-seo-urls", + "required": false, "schema": { - "type": "string" + "type": "boolean" } }, { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "name": "search", + "in": "query", + "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", "required": false, "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" + "type": "string" } }, { @@ -20548,23 +20350,26 @@ ] } }, + { + "$ref": "#/components/parameters/noAggregations" + }, + { + "$ref": "#/components/parameters/onlyAggregations" + }, { "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "description": "The loaded landing page with cms page", + "description": "Returns a product listing containing all products and additional fields to display a listing.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LandingPage" + "$ref": "#/components/schemas/ProductListingResult" } } } - }, - "404": { - "$ref": "#/components/responses/404" } }, "security": [ @@ -20574,34 +20379,25 @@ ] } }, - "/order/state/cancel": { + "/account/newsletter-recipient": { "post": { "tags": [ - "Order" - ], - "summary": "Cancel an order", - "description": "Cancels an order. The order state will be set to 'cancelled'.", - "operationId": "cancelOrder", - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } + "Profile", + "Newsletter", + "Endpoints supporting Criteria" ], + "summary": "Fetch newsletter recipients", + "description": "Perform a filtered search for newsletter recipients.", + "operationId": "readNewsletterRecipient", "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "properties": { - "orderId": { - "description": "The identifier of the order to be canceled.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object", - "required": [ - "orderId" ] } } @@ -20609,11 +20405,11 @@ }, "responses": { "200": { - "description": "Returns the state of the state machine\n\n example: More information about the state machine can be found in the corresponding guide: [Using the state machine](https://developer.shopware.com/docs/guides/plugins/plugins/checkout/order/using-the-state-machine)", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/StateMachineState" + "$ref": "#/components/schemas/AccountNewsletterRecipient" } } } @@ -20624,18 +20420,7 @@ "ApiKey": [], "ContextToken": [] } - ] - } - }, - "/order": { - "post": { - "tags": [ - "Order", - "Endpoints supporting Criteria " ], - "summary": "Fetch a list of orders", - "description": "List orders of a customer.\n\n**Available Associations:**\n- `stateMachineState` - Current order state (e.g., open, in_progress, completed, cancelled)\n- `primaryOrderDelivery` - Primary delivery information for the order\n- `primaryOrderTransaction` - Primary payment transaction for the order\n- `orderCustomer` - Customer information associated with the order\n- `currency` - Currency used for the order\n- `language` - Language used when placing the order\n- `addresses` - All addresses associated with the order (billing and shipping)\n- `billingAddress` - Billing address for the order\n- `deliveries` - Delivery information including shipping address and tracking\n- `lineItems` - Order line items (products, discounts, fees)\n- `transactions` - Payment transactions for the order\n- `documents` - Generated documents (invoices, delivery notes, credit notes)\n- `tags` - Tags assigned to the order for organization and filtering", - "operationId": "readOrder", "parameters": [ { "name": "sw-include-search-info", @@ -20654,70 +20439,103 @@ { "$ref": "#/components/parameters/swLanguageId" } + ] + } + }, + "/account/change-profile": { + "post": { + "tags": [ + "Profile" ], + "summary": "Change the customer's information", + "description": "Make changes to a customer's account, like changing their name, salutation or title.", + "operationId": "changeProfile", "requestBody": { "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/NoneFieldsCriteria" + "type": "object", + "required": [ + "firstName", + "lastName" + ], + "properties": { + "salutationId": { + "description": "Id of the salutation for the customer account. Fetch options using `salutation` endpoint.", + "type": "string" + }, + "title": { + "description": "(Academic) title of the customer", + "type": "string" + }, + "firstName": { + "description": "Customer first name. Value will be reused for shipping and billing address if not provided explicitly.", + "type": "string" + }, + "lastName": { + "description": "Customer last name. Value will be reused for shipping and billing address if not provided explicitly.", + "type": "string" }, + "birthdayDay": { + "description": "Birthday day", + "type": "integer" + }, + "birthdayMonth": { + "description": "Birthday month", + "type": "integer" + }, + "birthdayYear": { + "description": "Birthday year", + "type": "integer" + } + }, + "oneOf": [ { "properties": { - "checkPromotion": { - "description": "Check if the payment method of the order is still changeable.", - "type": "boolean" + "accountType": { + "description": "Type of the customer account. Default value is 'private'.", + "type": "string", + "enum": [ + "private" + ], + "default": "private" }, - "filter": { - "type": "array", - "description": "Pass the deepLinkCode criteria filter to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", - "items": { - "allOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "equals" - ] - }, - "field": { - "type": "string", - "enum": [ - "deepLinkCode" - ] - }, - "value": { - "type": "string" - } - }, - "required": [ - "type", - "field", - "value" - ] - } - ] - } + "company": { + "type": "null" }, - "email": { - "description": "The email address of the customer. Pass this value to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", + "vatIds": { + "type": "null" + } + } + }, + { + "required": [ + "accountType", + "company", + "vatIds" + ], + "properties": { + "accountType": { + "description": "Type of the customer account. Can be `private` or `business`.", "type": "string", - "format": "email" + "enum": [ + "business" + ] }, - "zipcode": { - "description": "The zip/postal code of the billing address of the customer. Pass this value to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", + "company": { + "description": "Company of the customer. Only required when `accountType` is `business`.", "type": "string" }, - "login": { - "description": "If set and when handling a guest order, a context token will be returned in the response header with a logged-in session.", - "type": "boolean" + "vatIds": { + "description": "VAT IDs of the customer's company. Only valid when `accountType` is `business`.", + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 } - }, - "type": "object" + } } ] } @@ -20726,19 +20544,11 @@ }, "responses": { "200": { - "description": "An array of orders and an indicator if the payment of the order can be changed.", - "headers": { - "sw-context-token": { - "description": "Contains sw-context-token value, if login parameter is set to true and a guest order was found and the correct credentials were provided.", - "schema": { - "type": "string" - } - } - }, + "description": "Returns a success response indicating a successful update", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OrderRouteResponse" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -20749,41 +20559,44 @@ "ApiKey": [], "ContextToken": [] } - ] - } - }, - "/order/payment": { - "post": { - "tags": [ - "Order" ], - "summary": "Update the payment method of an order", - "description": "Changes the payment method of a specific order. You can use the /order route to find out if the payment method of an order can be changed - take a look at the `paymentChangeable`- array in the response.", - "operationId": "orderSetPayment", "parameters": [ { "$ref": "#/components/parameters/swLanguageId" } + ] + } + }, + "/account/change-email": { + "post": { + "tags": [ + "Profile" ], + "summary": "Change the customer's email address", + "description": "Changes a customer's email address to a new email address, using their current password as a validation.", + "operationId": "changeEmail", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "paymentMethodId", - "orderId" + "email", + "emailConfirmation", + "password" ], "properties": { - "paymentMethodId": { - "description": "The identifier of the paymentMethod to be set", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "email": { + "description": "New email address. Has to be unique amongst all customers", + "type": "string" }, - "orderId": { - "description": "The identifier of the order.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "emailConfirmation": { + "description": "Confirmation of the new email address.", + "type": "string" + }, + "password": { + "description": "Customer's current password", + "type": "string" } }, "type": "object" @@ -20793,7 +20606,7 @@ }, "responses": { "200": { - "description": "Successfully updated the payment method of the order.", + "description": "Returns a success response indicating a successful update", "content": { "application/json": { "schema": { @@ -20808,48 +20621,48 @@ "ApiKey": [], "ContextToken": [] } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ] } }, - "/order/download/{orderId}/{downloadId}": { - "get": { + "/account/change-language": { + "post": { "tags": [ - "Order" + "Profile" ], - "summary": "Download a purchased file", - "description": "Download a file included in the given order and with the given id. Access must be granted.", - "operationId": "orderDownloadFile", - "parameters": [ - { - "name": "orderId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "downloadId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "summary": "Change the customer's language.", + "description": "Changes the language of the logged in customer", + "operationId": "changeLanguage", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "languageId" + ], + "properties": { + "language": { + "description": "New languageId", + "type": "string" + } + }, + "type": "object" + } } - }, - { - "$ref": "#/components/parameters/swLanguageId" } - ], + }, "responses": { "200": { - "description": "An arbitrary binary file.", + "description": "Returns a success response indicating a successful update", "content": { - "application/octet-stream": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -20860,65 +20673,67 @@ "ApiKey": [], "ContextToken": [] } - ] - } - }, - "/_info/openapi3.json": { - "get": { - "tags": [ - "System Info & Health Check" ], - "summary": "Get OpenAPI Specification", - "description": "Get information about the store API in OpenAPI format.", - "operationId": "api-info", "parameters": [ { - "name": "type", - "in": "query", - "description": "Type of the api", - "schema": { - "type": "string", - "enum": [ - "jsonapi", - "json" - ] - } - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/OpenApi3" + "$ref": "#/components/parameters/swLanguageId" } - } + ] } }, - "/cookie-groups": { - "get": { + "/account/change-password": { + "post": { "tags": [ - "Experimental", - "Cookies" + "Profile" ], - "summary": "Fetch all cookie groups", - "description": "Fetch all cookie groups available in the system with configuration hash. Experimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", - "operationId": "readCookieGroups", + "summary": "Change the customer's password", + "description": "Changes a customer's password using their current password as a validation.", + "operationId": "changePassword", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "password", + "newPassword", + "newPasswordConfirm" + ], + "properties": { + "password": { + "description": "Current password of the customer", + "type": "string" + }, + "newPassword": { + "description": "New Password for the customer", + "type": "string" + }, + "newPasswordConfirm": { + "description": "Confirmation of the new password", + "type": "string" + } + }, + "type": "object" + } + } + } + }, "responses": { "200": { - "description": "Successful response with a collection of cookie groups and their configuration hash.", + "description": "Returns a success response indicating a successful update.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CookieRouteResponse" + "$ref": "#/components/schemas/SuccessResponse" } } } - }, - "400": { - "$ref": "#/components/responses/400" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ], "parameters": [ @@ -20928,161 +20743,161 @@ ] } }, - "/seo-url": { + "/account/convert-guest": { "post": { "tags": [ - "Sitemap & Routes", - "Endpoints supporting Criteria " - ], - "summary": "Fetch SEO routes", - "description": "Perform a filtered search for seo urls.", - "operationId": "readSeoUrl", - "parameters": [ - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } - }, - { - "$ref": "#/components/parameters/swLanguageId" - } + "Profile" ], + "summary": "Convert a guest customer to a registered customer", + "description": "Takes a password to convert a guest customer to a registered customer. The customer can then log in with the provided password in the future.", + "operationId": "convertGuest", "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "password" + ], + "properties": { + "password": { + "description": "New Password for the customer", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "$ref": "#/components/responses/SeoUrlListResponse" - }, - "404": { - "$ref": "#/components/responses/404" + "description": "Returns a success response indicating a successful update.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } - ] - }, - "get": { - "tags": [ - "Sitemap & Routes", - "Endpoints supporting Criteria " ], - "summary": "Fetch SEO routes", - "description": "Perform a filtered search for seo urls.", - "operationId": "readSeoUrlGet", "parameters": [ - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaFields" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "$ref": "#/components/parameters/CompressedCriteria" - }, { "$ref": "#/components/parameters/swLanguageId" } + ] + } + }, + "/account/customer-recovery-is-expired": { + "post": { + "tags": [ + "Profile" ], + "summary": "Checks if the customer recovery entry for a given hash is expired.", + "description": "This can be used to validate a provided hash has a valid and not expired customer recovery hash.", + "operationId": "getCustomerRecoveryIsExpired", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "hash" + ], + "properties": { + "hash": { + "description": "Parameter from the link in the confirmation mail sent in Step 1", + "type": "string" + } + }, + "type": "object" + } + } + } + }, "responses": { "200": { - "$ref": "#/components/responses/SeoUrlListResponse" - }, - "404": { - "$ref": "#/components/responses/404" + "description": "Returns a CustomerRecoveryIsExpiredResponse that indicates if the hash is expired or not.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "isExpired": { + "type": "boolean" + } + }, + "required": [ + "isExpired" + ] + } + }, + "apiAlias": { + "enum": [ + "array_struct" + ], + "type": "string" + } + } + } + } + } } }, "security": [ { "ApiKey": [] } - ] - } - }, - "/sitemap": { - "get": { - "tags": [ - "Sitemap & Routes" ], - "summary": "Fetch sitemaps", - "description": "Fetches a list of compressed sitemap files, which are often used by search engines.", - "operationId": "readSitemap", "parameters": [ { "$ref": "#/components/parameters/swLanguageId" } + ] + } + }, + "/account/customer": { + "post": { + "tags": [ + "Profile", + "Endpoints supporting Criteria " ], + "summary": "Get information about current customer", + "description": "Returns information about the current customer.\n\n**Available Associations:**\n- `group` - Customer group determining pricing and permissions\n- `language` - Preferred language for customer communication\n- `lastPaymentMethod` - Last used payment method by the customer\n- `defaultBillingAddress` - Default billing address for the customer\n- `activeBillingAddress` - Currently active billing address in the session\n- `defaultShippingAddress` - Default shipping address for the customer\n- `activeShippingAddress` - Currently active shipping address in the session\n- `salutation` - Customer salutation (e.g., Mr., Mrs., Ms.)\n- `addresses` - All addresses saved for the customer\n- `tags` - Tags assigned to the customer for organization and segmentation", + "operationId": "readCustomer", + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/NoneFieldsCriteria" + } + ] + } + } + } + }, "responses": { "200": { - "description": "Returns a list of available sitemaps.", + "description": "Returns the logged in customer, also for guest sessions. Check for the value of `guest` field to see whether the customer is a guest.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Sitemap" - } + "$ref": "#/components/schemas/Customer" } } } @@ -21090,246 +20905,189 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } - ] - } - }, - "/sitemap/{filePath}": { - "get": { - "tags": [ - "Sitemap & Routes" ], - "summary": "Download sitemap file", - "description": "Downloads the sitemap file from the configured sitemap storage.", - "operationId": "getSitemapFile", "parameters": [ { - "name": "filePath", - "in": "path", - "description": "The path to the sitemap file", - "required": true, + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, "schema": { "type": "string", - "pattern": ".*\\.(xml|gz)$" + "enum": [ + "0", + "1" + ], + "default": "1" } }, { "$ref": "#/components/parameters/swLanguageId" } + ] + }, + "delete": { + "tags": [ + "Profile" ], + "summary": "Delete the customer's profile", + "description": "Deletes a customer profile along with their addresses, wishlists and associated data. Created orders and their payment/shipping information (addresses) and reviews are not deleted.", + "operationId": "deleteCustomer", "responses": { - "200": { - "description": "Returns the blob to download.", - "content": { - "application/xml": { - "schema": { - "type": "string", - "format": "binary" - } - }, - "application/gzip": { - "schema": { - "type": "string", - "format": "binary" - } - } - } + "204": { + "description": "Returns a no content response indicating a successful removal of the customer profile" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/shipping-cost/product/{productId}": { - "get": { + "/account/address/{addressId}": { + "delete": { "tags": [ - "Cart", - "Endpoints supporting Criteria " + "Address" ], - "summary": "Calculate shipping costs for a product", - "description": "Calculates shipping costs for a single product using criteria-based shipping method selection.", - "operationId": "readShippingCostByProduct", + "summary": "Delete an address of a customer", + "description": "Delete an address of customer.\n\n Only addresses which are not set as default addresses for shipping or billing can be deleted. You can check the current default addresses of your customer using the profile information endpoint and change them using the default address endpoint.\n\n **A customer must have at least one address (which can be used for shipping and billing).**\n\n An automatic fallback is not applied.", + "operationId": "deleteCustomerAddress", "parameters": [ { - "name": "productId", + "name": "addressId", "in": "path", - "description": "The product identifier.", + "description": "ID of the address to be deleted.", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } + } + ], + "responses": { + "204": { + "description": "No Content response, when the address has been deleted" }, + "400": { + "description": "Response containing a list of errors, most likely due to the address being in use" + } + }, + "security": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "ApiKey": [], + "ContextToken": [] + } + ] + }, + "patch": { + "tags": [ + "Address" + ], + "summary": "Modify an address of a customer", + "description": "Modifies an existing address of a customer.", + "operationId": "updateCustomerAddress", + "parameters": [ + { + "name": "addressId", + "in": "path", + "description": "Address ID", + "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } }, { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaFields" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "$ref": "#/components/parameters/CompressedCriteria" + "$ref": "#/components/parameters/swLanguageId" } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomerAddressBody" + } + } + } + }, "responses": { "200": { - "description": "The calculated shipping costs.", + "description": "", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "type": "object", - "required": [ - "shippingCost", - "deliveryDate", - "shippingMethod" - ], - "properties": { - "shippingCost": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" - } - } - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" - } + "allOf": [ + { + "$ref": "#/components/schemas/CustomerAddress" + }, + { + "$ref": "#/components/schemas/CustomerAddressRead" } - } + ] } } } - }, - "400": { - "$ref": "#/components/responses/400" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/shipping-cost/cart": { - "get": { + "/account/list-address": { + "post": { "tags": [ - "Cart" + "Address", + "Endpoints supporting Criteria " ], - "summary": "Calculate shipping costs for the cart", - "description": "Calculates shipping costs for the current cart across available shipping methods.", - "operationId": "readShippingCostsByCart", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "summary": "Fetch addresses of a customer", + "description": "Lists all addresses of the current customer and allows filtering them based on a criteria.", + "operationId": "listAddress", + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } } } - ], + }, "responses": { "200": { - "description": "The calculated shipping costs.", + "description": "", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "type": "object", - "required": [ - "shippingCost", - "deliveryDate", - "shippingMethod" - ], - "properties": { - "shippingCost": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" + "allOf": [ + { + "type": "object", + "required": [ + "elements" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomerAddress" } } - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" } - } + ] } } } @@ -21337,56 +21095,73 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } - ] - } - }, - "/checkout/cart": { - "get": { - "tags": [ - "Cart" ], - "summary": "Fetch or create a cart", - "description": "Used to fetch the current cart or for creating a new one.", - "operationId": "readCart", "parameters": [ + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, { "$ref": "#/components/parameters/swLanguageId" } + ] + } + }, + "/account/login": { + "post": { + "tags": [ + "Login & Registration" ], - "responses": { - "200": { - "description": "Cart", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Cart" - } + "summary": "Log in a customer", + "description": "Logs in customers given their credentials.", + "operationId": "loginCustomer", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "username", + "password" + ], + "properties": { + "username": { + "description": "Email", + "type": "string" + }, + "password": { + "description": "Password", + "type": "string" + } + }, + "type": "object" } } } }, - "security": [ - { - "ApiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Cart" - ], - "summary": "Delete a cart", - "description": "This route deletes the cart of the customer.", - "operationId": "deleteCart", "responses": { - "204": { - "description": "Successfully deleted the cart", + "200": { + "$ref": "#/components/responses/ContextTokenResponse" + }, + "401": { + "description": "If credentials are incorrect an error is returned", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/failure" } } } @@ -21396,163 +21171,132 @@ { "ApiKey": [] } - ] - } - }, - "/checkout/cart/line-item": { - "post": { - "tags": [ - "Cart" ], - "summary": "Add items to the cart", - "description": "This route adds items to the cart. An item can be a product or promotion for example. They are referenced by the `referencedId`-parameter.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#adding-new-items-to-the-cart)", - "operationId": "addLineItem", "parameters": [ { "$ref": "#/components/parameters/swLanguageId" } + ] + } + }, + "/account/login/imitate-customer": { + "post": { + "tags": [ + "Login & Registration" ], + "summary": "Imitate the log in as a customer", + "description": "Imitate the log in as a customer given a generated token.", + "operationId": "imitateCustomerLogin", "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CartItems" + "required": [ + "token", + "customerId", + "userId" + ], + "properties": { + "token": { + "description": "Generated customer impersonation token", + "type": "string" + }, + "customerId": { + "description": "ID of the customer", + "type": "string" + }, + "userId": { + "description": "ID of the user who generated the token", + "type": "string" + } + }, + "type": "object" } } } }, "responses": { "200": { - "description": "The updated cart.", + "$ref": "#/components/responses/ContextTokenResponse" + }, + "400": { + "description": "If the token is incorrect an error is returned", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "$ref": "#/components/schemas/failure" } } } - }, - "400": { - "$ref": "#/components/responses/400" } }, "security": [ { "ApiKey": [] } - ] - }, - "delete": { - "tags": [ - "Cart" ], - "summary": "Remove items from the cart", - "description": "DEPRECATED: use removeLineItem instead. This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", - "operationId": "removeLineItemDeprecated", - "deprecated": true, "parameters": [ { - "name": "ids", - "in": "query", - "description": "A list of product identifiers.", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } + "$ref": "#/components/parameters/swLanguageId" } + ] + } + }, + "/account/logout": { + "post": { + "tags": [ + "Login & Registration" ], + "summary": "Log out a customer", + "description": "Logs out a customer.", + "operationId": "logoutCustomer", "responses": { "200": { - "description": "The updated cart.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Cart" - } - } - } + "$ref": "#/components/responses/ContextTokenResponse" + }, + "403": { + "$ref": "#/components/responses/403" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } - ] - }, - "patch": { - "tags": [ - "Cart" ], - "summary": "Update items in the cart", - "description": "This route updates items in the cart. A typical example is updating the quantity of an item.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#updating-items-in-the-cart)", - "operationId": "updateLineItem", "parameters": [ { "$ref": "#/components/parameters/swLanguageId" } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CartItemsUpdate" - } - } - } - }, - "responses": { - "200": { - "description": "The updated cart.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Cart" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } ] } }, - "/checkout/cart/line-item/delete": { + "/account/register-confirm": { "post": { "tags": [ - "Cart" - ], - "summary": "Remove items from the cart", - "description": "This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", - "operationId": "removeLineItem", - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } + "Login & Registration" ], + "summary": "Confirm a customer registration", + "description": "Confirms a customer registration when double opt-in is activated.\n\nLearn more about double opt-in registration in our guide \"Register a customer\".", + "operationId": "registerConfirm", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "ids" + "hash", + "em" ], "properties": { - "ids": { - "description": "A list of product identifiers.", - "type": "array", - "minItems": 1, - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "hash": { + "description": "Hash from the email received", + "type": "string" + }, + "em": { + "description": "Email hash from the email received", + "type": "string" } }, "type": "object" @@ -21562,153 +21306,178 @@ }, "responses": { "200": { - "description": "The updated cart.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Cart" - } - } - } + "description": "Returns the logged in customer. The customer is automatically logged in with the `sw-context-token` header provided, which can be reused for subsequent requests." + }, + "404": { + "description": "No hash provided" + }, + "412": { + "description": "The customer has already been confirmed" } }, "security": [ { "ApiKey": [] } - ] - } - }, - "/checkout/order": { - "post": { - "tags": [ - "Order" ], - "summary": "Create an order from a cart", - "description": "Creates a new order from the current cart and deletes the cart.\n\nIf you are using the [prepared payment flow](https://developer.shopware.com/docs/concepts/commerce/checkout-concept/payments#2.1-prepare-payment-optional), this endpoint also receives additional transaction details. The exact name of the parameters depends on the implementation of the corresponding *payment handler*.", - "operationId": "createOrder", "parameters": [ { "$ref": "#/components/parameters/swLanguageId" } + ] + } + }, + "/account/register": { + "post": { + "tags": [ + "Login & Registration" ], + "summary": "Register a customer", + "description": "Registers a customer. Used both for normal customers and guest customers.See the Guide \"Register a customer\" for more information on customer registration.", + "operationId": "register", "requestBody": { - "description": "Contains additional metadata which is stored together with the order. It can also contain payment transaction details.", + "required": true, "content": { "application/json": { "schema": { "properties": { - "customerComment": { - "description": "Adds a comment from the customer to the order.", + "email": { + "description": "Email of the customer. Has to be unique, unless `guest` is `true`", "type": "string" }, - "affiliateCode": { - "description": "The affiliate code can be used to track which referrer the customer came through. An example could be `Price-comparison-company-XY`.", + "password": { + "description": "Password for the customer. Required, unless `guest` is `true`", "type": "string" }, - "campaignCode": { - "description": "The campaign code is used to track which action the customer came from. An example could be `Summer-Deals`", + "salutationId": { + "description": "Id of the salutation for the customer account. Fetch options using `salutation` endpoint.", "type": "string" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Order", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Order" - } - } - } - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/checkout/gateway": { - "get": { - "tags": [ - "Gateway" - ], - "summary": "Call the checkout gateway", - "description": "Call the checkout gateway, which is used to manipulate certain aspects of the checkout process (e.g. available payment methods).", - "operationId": "checkoutGateway", - "responses": { - "200": { - "description": "Checkout gateway response", - "content": { - "application/json": { - "schema": { - "properties": { - "paymentMethods": { - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PaymentMethod" - } - } + }, + "firstName": { + "description": "Customer first name. Value will be reused for shipping and billing address if not provided explicitly.", + "type": "string" + }, + "lastName": { + "description": "Customer last name. Value will be reused for shipping and billing address if not provided explicitly.", + "type": "string" + }, + "acceptedDataProtection": { + "description": "Flag indicating accepted data protection", + "type": "boolean" + }, + "storefrontUrl": { + "description": "URL of the storefront for that registration. Used in confirmation emails. Has to be one of the configured domains of the sales channel.", + "type": "string" + }, + "requestedGroupId": { + "description": "Optional customer group registration request. The customer is created in the current sales channel group and this field stores the requested target group. The group must be available for registration in the current sales channel.", + "type": "string" + }, + "billingAddress": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "shippingAddress": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "guest": { + "description": "If set, will create a guest customer. Guest customers can re-use an email address and don't need a password.", + "type": "boolean", + "default": false + }, + "birthdayDay": { + "description": "Birthday day", + "type": "integer" + }, + "birthdayMonth": { + "description": "Birthday month", + "type": "integer" + }, + "birthdayYear": { + "description": "Birthday year", + "type": "integer" + }, + "title": { + "description": "(Academic) title of the customer", + "type": "string" + }, + "affiliateCode": { + "description": "Field can be used to store an affiliate tracking code", + "type": "string" + }, + "campaignCode": { + "description": "Field can be used to store a campaign tracking code", + "type": "string" + } + }, + "required": [ + "email", + "password", + "firstName", + "lastName", + "acceptedDataProtection", + "storefrontUrl", + "billingAddress" + ], + "oneOf": [ + { + "properties": { + "accountType": { + "description": "Type of the customer account. Default value is 'private'.", + "type": "string", + "enum": [ + "private" + ], + "default": "private" }, - "type": "object" - }, - "shippingMethods": { - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ShippingMethod" - } - } + "company": { + "type": "null" }, - "type": "object" - }, - "errors": { - "type": "array", - "items": { - "properties": { - "code": { - "description": "Error code", - "type": "string" - }, - "detail": { - "description": "Error detail", - "type": "string" - }, - "blocking": { - "description": "If the error is blocking", - "type": "boolean" - } - } + "vatIds": { + "type": "null" + } + } + }, + { + "required": [ + "accountType", + "company", + "vatIds" + ], + "properties": { + "accountType": { + "description": "Type of the customer account. Can be `private` or `business`.", + "type": "string", + "enum": [ + "business" + ] + }, + "company": { + "description": "Company of the customer. Only required when `accountType` is `business`.", + "type": "string" + }, + "vatIds": { + "description": "VAT IDs of the customer's company. Only valid when `accountType` is `business`.", + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 } } } + ], + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Customer" } } } @@ -21726,135 +21495,75 @@ ] } }, - "/breadcrumb/{id}": { - "get": { + "/account/recovery-password-confirm": { + "post": { "tags": [ - "Experimental", - "Breadcrumb" + "Profile" ], - "summary": "Fetch a breadcrumb", - "description": "Perform search to get category or product breadcrumb. \n\nExperimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", - "operationId": "readBreadcrumb", - "parameters": [ - { - "name": "id", - "in": "path", - "description": "UUID for product or category", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "type", - "in": "query", - "description": "Type: category or product (optional - default: product)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "product", - "category" - ] - } - }, - { - "name": "referrerCategoryId", - "in": "query", - "description": "UUID for referrer category only used for product breadcrumb", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "summary": "Reset a password with recovery credentials", + "description": "This operation is Step 2 of the password reset flow. It is required to conduct Step 1 \"Send a password recovery mail\" in order to obtain the required credentials for this step.Resets a customer's password using credentials from a password recovery mail as a validation.", + "operationId": "recoveryPassword", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "hash", + "newPassword", + "newPasswordConfirm" + ], + "properties": { + "hash": { + "description": "Parameter from the link in the confirmation mail sent in Step 1", + "type": "string" + }, + "newPassword": { + "description": "New password for the customer", + "type": "string" + }, + "newPasswordConfirm": { + "description": "Confirmation of the new password", + "type": "string" + } + }, + "type": "object" + } } - }, - { - "$ref": "#/components/parameters/swLanguageId" } - ], + }, "responses": { "200": { - "description": "Search result containing SeoUrl\\'s to be used as breadcrumb.", + "description": "Returns a success response indicating a successful update.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BreadcrumbCollection" + "$ref": "#/components/schemas/SuccessResponse" } } } - }, - "400": { - "$ref": "#/components/responses/400" } }, "security": [ { "ApiKey": [] } - ] - } - }, - "/_info/routes": { - "get": { - "summary": "Get API routes", - "operationId": "getRoutes", - "tags": [ - "System Info & Health Check" ], - "responses": { - "200": { - "description": "Successful operation", - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "endpoints" - ], - "properties": { - "endpoints": { - "type": "array", - "items": { - "type": "object", - "required": [ - "methods", - "path" - ], - "properties": { - "methods": { - "type": "array", - "items": { - "type": "string" - } - }, - "path": { - "type": "string" - } - } - } - } - } - } - } - } + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" } - } + ] } }, - "/revocation-request-form": { + "/account/recovery-password": { "post": { "tags": [ - "Content" - ], - "summary": "Submit a revocation request form message", - "description": "Used for submitting revocation request forms. Be aware that there can be more required fields, depending on the system settings.", - "operationId": "sendRevocationRequestMail", - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } + "Profile" ], + "summary": "Send a password recovery mail", + "description": "This operation is Step 1 of the password reset flow. Make sure to implement Step 2 \"Reset password with recovery credentials\" in order to allow for the complete flow in your application. Sends a recovery mail containing a link with credentials that allows a customer to reset their password.", + "operationId": "sendRecoveryMail", "requestBody": { "required": true, "content": { @@ -21862,45 +21571,15 @@ "schema": { "required": [ "email", - "contractNumber" + "storefrontUrl" ], "properties": { - "firstName": { - "description": "First name. This field may be required depending on the system settings.", - "type": "string" - }, - "lastName": { - "description": "Last name. This field may be required depending on the system settings.", - "type": "string" - }, "email": { - "description": "Email address.", - "type": "string" - }, - "contractNumber": { - "description": "The number of the contract.", - "type": "string" - }, - "comment": { - "description": "The message of the revocation request form.", - "type": "string" - }, - "navigationId": { - "description": "Identifier of the navigation page. Can be used to override the configuration.\nTake a look at the settings of a category containing a revocation form in the administration.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "slotId": { - "description": "Identifier of the cms element.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "cmsPageType": { - "description": "Type of the content management page.", + "description": "E-Mail address to identify the customer", "type": "string" }, - "entityName": { - "description": "Entity name for slot config.", + "storefrontUrl": { + "description": "URL of the storefront to use for the generated reset link. It has to be a domain that is configured in the sales channel domain settings.", "type": "string" } }, @@ -21911,125 +21590,80 @@ }, "responses": { "200": { - "description": "Message sent successfully." + "description": "If email corresponds to an existing customer, a mail will be sent out to that customer containing a link assembled using the following schema:\n\nReturns a success indicating a successful initialisation of the reset flow.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } } }, "security": [ { "ApiKey": [] } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ] } }, - "/country": { - "post": { + "/account/address/default-shipping/{addressId}": { + "patch": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Address" ], - "summary": "Fetch countries", - "description": "Perform a filtered search for countries\n\n**Available Associations:**\n- `states` - States/provinces/regions within the country", - "operationId": "readCountry", + "summary": "Change a customer's default shipping address", + "description": "Updates the default (preselected) shipping addresses of a customer.", + "operationId": "defaultShippingAddress", "parameters": [ { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, + "name": "addressId", + "in": "path", + "description": "Address ID", + "required": true, "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" + "type": "string" } }, { "$ref": "#/components/parameters/swLanguageId" } ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } - } - } - }, "responses": { "200": { - "$ref": "#/components/responses/CountryListResponse" + "description": "" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] - }, - "get": { + } + }, + "/account/address/default-billing/{addressId}": { + "patch": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Address" ], - "summary": "Fetch countries", - "description": "Perform a filtered search for countries\n\n**Available Associations:**\n- `states` - States/provinces/regions within the country", - "operationId": "readCountryGet", + "summary": "Change a customer's default billing address", + "description": "Updates the default (preselected) billing addresses of a customer.", + "operationId": "defaultBillingAddress", "parameters": [ { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaFields" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "$ref": "#/components/parameters/CompressedCriteria" + "name": "addressId", + "in": "path", + "description": "Address ID", + "required": true, + "schema": { + "type": "string" + } }, { "$ref": "#/components/parameters/swLanguageId" @@ -22037,36 +21671,30 @@ ], "responses": { "200": { - "$ref": "#/components/responses/CountryListResponse" + "description": "" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/account/newsletter-recipient": { + "/account/address": { "post": { "tags": [ - "Profile", - "Newsletter", - "Endpoints supporting Criteria" + "Address" ], - "summary": "Fetch newsletter recipients", - "description": "Perform a filtered search for newsletter recipients.", - "operationId": "readNewsletterRecipient", + "summary": "Create a new address for a customer", + "description": "Creates a new address for a customer.", + "operationId": "createCustomerAddress", "requestBody": { - "required": false, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] + "$ref": "#/components/schemas/CustomerAddressBody" } } } @@ -22077,9 +21705,16 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AccountNewsletterRecipient" - } - } + "allOf": [ + { + "$ref": "#/components/schemas/CustomerAddress" + }, + { + "$ref": "#/components/schemas/CustomerAddressRead" + } + ] + } + } } } }, @@ -22091,194 +21726,229 @@ ], "parameters": [ { - "name": "sw-include-search-info", + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/shipping-cost/product/{productId}": { + "get": { + "tags": [ + "Cart", + "Endpoints supporting Criteria " + ], + "summary": "Calculate shipping costs for a product", + "description": "Calculates shipping costs for a single product using criteria-based shipping method selection.", + "operationId": "readShippingCostByProduct", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "The product identifier.", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "sw-language-id", "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "description": "Instructs Shopware to return the response in the given language.", "required": false, "schema": { "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" + "pattern": "^[0-9a-f]{32}$" } }, { - "$ref": "#/components/parameters/swLanguageId" + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" } - ] - } - }, - "/account/change-profile": { - "post": { - "tags": [ - "Profile" ], - "summary": "Change the customer's information", - "description": "Make changes to a customer's account, like changing their name, salutation or title.", - "operationId": "changeProfile", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "firstName", - "lastName" - ], - "properties": { - "salutationId": { - "description": "Id of the salutation for the customer account. Fetch options using `salutation` endpoint.", - "type": "string" - }, - "title": { - "description": "(Academic) title of the customer", - "type": "string" - }, - "firstName": { - "description": "Customer first name. Value will be reused for shipping and billing address if not provided explicitly.", - "type": "string" - }, - "lastName": { - "description": "Customer last name. Value will be reused for shipping and billing address if not provided explicitly.", - "type": "string" - }, - "birthdayDay": { - "description": "Birthday day", - "type": "integer" - }, - "birthdayMonth": { - "description": "Birthday month", - "type": "integer" - }, - "birthdayYear": { - "description": "Birthday year", - "type": "integer" - } - }, - "oneOf": [ - { - "properties": { - "accountType": { - "description": "Type of the customer account. Default value is 'private'.", - "type": "string", - "enum": [ - "private" - ], - "default": "private" - }, - "company": { - "type": "null" - }, - "vatIds": { - "type": "null" - } - } - }, - { + "responses": { + "200": { + "description": "The calculated shipping costs.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", "required": [ - "accountType", - "company", - "vatIds" + "shippingCost", + "deliveryDate", + "shippingMethod" ], "properties": { - "accountType": { - "description": "Type of the customer account. Can be `private` or `business`.", - "type": "string", - "enum": [ - "business" - ] + "shippingCost": { + "$ref": "#/components/schemas/CalculatedPrice" }, - "company": { - "description": "Company of the customer. Only required when `accountType` is `business`.", - "type": "string" + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } }, - "vatIds": { - "description": "VAT IDs of the customer's company. Only valid when `accountType` is `business`.", - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" } } } - ] - } - } - } - }, - "responses": { - "200": { - "description": "Returns a success response indicating a successful update", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" } } } + }, + "400": { + "$ref": "#/components/responses/400" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" + "ApiKey": [] } ] } }, - "/account/change-email": { - "post": { + "/shipping-cost/cart": { + "get": { "tags": [ - "Profile" + "Cart" ], - "summary": "Change the customer's email address", - "description": "Changes a customer's email address to a new email address, using their current password as a validation.", - "operationId": "changeEmail", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "email", - "emailConfirmation", - "password" - ], - "properties": { - "email": { - "description": "New email address. Has to be unique amongst all customers", - "type": "string" - }, - "emailConfirmation": { - "description": "Confirmation of the new email address.", - "type": "string" - }, - "password": { - "description": "Customer's current password", - "type": "string" + "summary": "Calculate shipping costs for the cart", + "description": "Calculates shipping costs for the current cart across available shipping methods.", + "operationId": "readShippingCostsByCart", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "responses": { + "200": { + "description": "The calculated shipping costs.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "type": "object", + "required": [ + "shippingCost", + "deliveryDate", + "shippingMethod" + ], + "properties": { + "shippingCost": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + } + } } - }, - "type": "object" + } } } } }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/checkout/cart": { + "get": { + "tags": [ + "Cart" + ], + "summary": "Fetch or create a cart", + "description": "Used to fetch the current cart or for creating a new one.", + "operationId": "readCart", + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ], "responses": { "200": { - "description": "Returns a success response indicating a successful update", + "description": "Cart", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/Cart" } } } @@ -22286,113 +21956,109 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } + ] + }, + "delete": { + "tags": [ + "Cart" ], - "parameters": [ + "summary": "Delete a cart", + "description": "This route deletes the cart of the customer.", + "operationId": "deleteCart", + "responses": { + "204": { + "description": "Successfully deleted the cart", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } + } + }, + "security": [ { - "$ref": "#/components/parameters/swLanguageId" + "ApiKey": [] } ] } }, - "/account/change-language": { + "/checkout/cart/line-item": { "post": { "tags": [ - "Profile" + "Cart" + ], + "summary": "Add items to the cart", + "description": "This route adds items to the cart. An item can be a product or promotion for example. They are referenced by the `referencedId`-parameter.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#adding-new-items-to-the-cart)", + "operationId": "addLineItem", + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ], - "summary": "Change the customer's language.", - "description": "Changes the language of the logged in customer", - "operationId": "changeLanguage", "requestBody": { - "required": true, "content": { "application/json": { "schema": { - "required": [ - "languageId" - ], - "properties": { - "language": { - "description": "New languageId", - "type": "string" - } - }, - "type": "object" + "$ref": "#/components/schemas/CartItems" } } } }, "responses": { "200": { - "description": "Returns a success response indicating a successful update", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/Cart" } } } + }, + "400": { + "$ref": "#/components/responses/400" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" + "ApiKey": [] } ] - } - }, - "/account/change-password": { - "post": { + }, + "delete": { "tags": [ - "Profile" + "Cart" ], - "summary": "Change the customer's password", - "description": "Changes a customer's password using their current password as a validation.", - "operationId": "changePassword", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "password", - "newPassword", - "newPasswordConfirm" - ], - "properties": { - "password": { - "description": "Current password of the customer", - "type": "string" - }, - "newPassword": { - "description": "New Password for the customer", - "type": "string" - }, - "newPasswordConfirm": { - "description": "Confirmation of the new password", - "type": "string" - } - }, - "type": "object" + "summary": "Remove items from the cart", + "description": "DEPRECATED: use removeLineItem instead. This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", + "operationId": "removeLineItemDeprecated", + "deprecated": true, + "parameters": [ + { + "name": "ids", + "in": "query", + "description": "A list of product identifiers.", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } } - }, + ], "responses": { "200": { - "description": "Returns a success response indicating a successful update.", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/Cart" } } } @@ -22400,51 +22066,38 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } + ] + }, + "patch": { + "tags": [ + "Cart" ], + "summary": "Update items in the cart", + "description": "This route updates items in the cart. A typical example is updating the quantity of an item.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#updating-items-in-the-cart)", + "operationId": "updateLineItem", "parameters": [ { "$ref": "#/components/parameters/swLanguageId" } - ] - } - }, - "/account/convert-guest": { - "post": { - "tags": [ - "Profile" ], - "summary": "Convert a guest customer to a registered customer", - "description": "Takes a password to convert a guest customer to a registered customer. The customer can then log in with the provided password in the future.", - "operationId": "convertGuest", "requestBody": { - "required": true, "content": { "application/json": { "schema": { - "required": [ - "password" - ], - "properties": { - "password": { - "description": "New Password for the customer", - "type": "string" - } - }, - "type": "object" + "$ref": "#/components/schemas/CartItemsUpdate" } } } }, "responses": { "200": { - "description": "Returns a success response indicating a successful update.", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/Cart" } } } @@ -22452,37 +22105,41 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" + "ApiKey": [] } ] } }, - "/account/customer-recovery-is-expired": { + "/checkout/cart/line-item/delete": { "post": { "tags": [ - "Profile" + "Cart" + ], + "summary": "Remove items from the cart", + "description": "This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", + "operationId": "removeLineItem", + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ], - "summary": "Checks if the customer recovery entry for a given hash is expired.", - "description": "This can be used to validate a provided hash has a valid and not expired customer recovery hash.", - "operationId": "getCustomerRecoveryIsExpired", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "hash" + "ids" ], "properties": { - "hash": { - "description": "Parameter from the link in the confirmation mail sent in Step 1", - "type": "string" + "ids": { + "description": "A list of product identifiers.", + "type": "array", + "minItems": 1, + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } }, "type": "object" @@ -22492,33 +22149,11 @@ }, "responses": { "200": { - "description": "Returns a CustomerRecoveryIsExpiredResponse that indicates if the hash is expired or not.", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "isExpired": { - "type": "boolean" - } - }, - "required": [ - "isExpired" - ] - } - }, - "apiAlias": { - "enum": [ - "array_struct" - ], - "type": "string" - } - } + "$ref": "#/components/schemas/Cart" } } } @@ -22528,44 +22163,53 @@ { "ApiKey": [] } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } ] } }, - "/account/customer": { + "/checkout/order": { "post": { "tags": [ - "Profile", - "Endpoints supporting Criteria " + "Order" + ], + "summary": "Create an order from a cart", + "description": "Creates a new order from the current cart and deletes the cart.\n\nIf you are using the [prepared payment flow](https://developer.shopware.com/docs/concepts/commerce/checkout-concept/payments#2.1-prepare-payment-optional), this endpoint also receives additional transaction details. The exact name of the parameters depends on the implementation of the corresponding *payment handler*.", + "operationId": "createOrder", + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ], - "summary": "Get information about current customer", - "description": "Returns information about the current customer.\n\n**Available Associations:**\n- `group` - Customer group determining pricing and permissions\n- `language` - Preferred language for customer communication\n- `lastPaymentMethod` - Last used payment method by the customer\n- `defaultBillingAddress` - Default billing address for the customer\n- `activeBillingAddress` - Currently active billing address in the session\n- `defaultShippingAddress` - Default shipping address for the customer\n- `activeShippingAddress` - Currently active shipping address in the session\n- `salutation` - Customer salutation (e.g., Mr., Mrs., Ms.)\n- `addresses` - All addresses saved for the customer\n- `tags` - Tags assigned to the customer for organization and segmentation", - "operationId": "readCustomer", "requestBody": { - "required": false, + "description": "Contains additional metadata which is stored together with the order. It can also contain payment transaction details.", "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/NoneFieldsCriteria" + "properties": { + "customerComment": { + "description": "Adds a comment from the customer to the order.", + "type": "string" + }, + "affiliateCode": { + "description": "The affiliate code can be used to track which referrer the customer came through. An example could be `Price-comparison-company-XY`.", + "type": "string" + }, + "campaignCode": { + "description": "The campaign code is used to track which action the customer came from. An example could be `Summer-Deals`", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "Returns the logged in customer, also for guest sessions. Check for the value of `guest` field to see whether the customer is a guest.", + "description": "Order", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Customer" + "$ref": "#/components/schemas/Order" } } } @@ -22576,8 +22220,118 @@ "ApiKey": [], "ContextToken": [] } + ] + } + }, + "/checkout/gateway": { + "get": { + "tags": [ + "Gateway" + ], + "summary": "Call the checkout gateway", + "description": "Call the checkout gateway, which is used to manipulate certain aspects of the checkout process (e.g. available payment methods).", + "operationId": "checkoutGateway", + "responses": { + "200": { + "description": "Checkout gateway response", + "content": { + "application/json": { + "schema": { + "properties": { + "paymentMethods": { + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentMethod" + } + } + }, + "type": "object" + }, + "shippingMethods": { + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingMethod" + } + } + }, + "type": "object" + }, + "errors": { + "type": "array", + "items": { + "properties": { + "code": { + "description": "Error code", + "type": "string" + }, + "detail": { + "description": "Error detail", + "type": "string" + }, + "blocking": { + "description": "If the error is blocking", + "type": "boolean" + } + } + } + } + } + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/country-state/{countryId}": { + "post": { + "tags": [ + "System & Context", + "Endpoints supporting Criteria " ], + "summary": "Fetch the states of a country", + "description": "Perform a filtered search the states for a country", + "operationId": "readCountryState", "parameters": [ + { + "name": "countryId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, { "name": "sw-include-search-info", "in": "header", @@ -22595,105 +22349,164 @@ { "$ref": "#/components/parameters/swLanguageId" } - ] - }, - "delete": { - "tags": [ - "Profile" ], - "summary": "Delete the customer's profile", - "description": "Deletes a customer profile along with their addresses, wishlists and associated data. Created orders and their payment/shipping information (addresses) and reviews are not deleted.", - "operationId": "deleteCustomer", + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } + } + } + }, "responses": { - "204": { - "description": "Returns a no content response indicating a successful removal of the customer profile" + "200": { + "$ref": "#/components/responses/CountryStateListResponse" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] - } - }, - "/account/address/{addressId}": { - "delete": { + }, + "get": { "tags": [ - "Address" + "System & Context", + "Endpoints supporting Criteria " ], - "summary": "Delete an address of a customer", - "description": "Delete an address of customer.\n\n Only addresses which are not set as default addresses for shipping or billing can be deleted. You can check the current default addresses of your customer using the profile information endpoint and change them using the default address endpoint.\n\n **A customer must have at least one address (which can be used for shipping and billing).**\n\n An automatic fallback is not applied.", - "operationId": "deleteCustomerAddress", + "summary": "Fetch the states of a country", + "description": "Perform a filtered search the states for a country", + "operationId": "readCountryStateGet", "parameters": [ { - "name": "addressId", + "name": "countryId", "in": "path", - "description": "ID of the address to be deleted.", "required": true, "schema": { - "type": "string" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { - "204": { - "description": "No Content response, when the address has been deleted" - }, - "400": { - "description": "Response containing a list of errors, most likely due to the address being in use" + "200": { + "$ref": "#/components/responses/CountryStateListResponse" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] - }, - "patch": { + } + }, + "/handle-payment": { + "post": { "tags": [ - "Address" - ], - "summary": "Modify an address of a customer", - "description": "Modifies an existing address of a customer.", - "operationId": "updateCustomerAddress", - "parameters": [ - { - "name": "addressId", - "in": "path", - "description": "Address ID", - "required": true, - "schema": { - "type": "string" - } - }, - { - "$ref": "#/components/parameters/swLanguageId" - } + "Payment & Shipping" ], + "summary": "Initiate a payment for an order", + "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order.", + "operationId": "handlePaymentMethod", "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerAddressBody" + "required": [ + "orderId" + ], + "properties": { + "orderId": { + "description": "Identifier of an order", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "finishUrl": { + "description": "URL to which the client should be redirected after successful payment", + "type": "string" + }, + "errorUrl": { + "description": "URL to which the client should be redirected after erroneous payment", + "type": "string" + } + }, + "type": "object" } } } }, "responses": { "200": { - "description": "", + "description": "Redirect to external payment provider", "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/CustomerAddress" - }, - { - "$ref": "#/components/schemas/CustomerAddressRead" + "type": "object", + "properties": { + "redirectUrl": { + "type": "string" } + }, + "required": [ + "redirectUrl" ] } } @@ -22702,59 +22515,67 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" } ] - } - }, - "/account/list-address": { - "post": { + }, + "get": { "tags": [ - "Address", - "Endpoints supporting Criteria " + "Payment & Shipping" ], - "summary": "Fetch addresses of a customer", - "description": "Lists all addresses of the current customer and allows filtering them based on a criteria.", - "operationId": "listAddress", - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } + "summary": "Initiate a payment for an order", + "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order. Please prefer the POST version of this endpoint.", + "operationId": "handlePaymentMethodGet", + "parameters": [ + { + "name": "orderId", + "in": "query", + "required": true, + "description": "Identifier of an order", + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "finishUrl", + "in": "query", + "description": "URL to which the client should be redirected after successful payment", + "schema": { + "type": "string" + } + }, + { + "name": "errorUrl", + "in": "query", + "description": "URL to which the client should be redirected after erroneous payment", + "schema": { + "type": "string" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } - }, + ], "responses": { "200": { - "description": "", + "description": "Redirect to external payment provider", "content": { "application/json": { "schema": { - "allOf": [ - { - "type": "object", - "required": [ - "elements" - ], - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CustomerAddress" - } - } - } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" + "type": "object", + "properties": { + "redirectUrl": { + "type": "string" } + }, + "required": [ + "redirectUrl" ] } } @@ -22763,10 +22584,20 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } + ] + } + }, + "/currency": { + "post": { + "tags": [ + "System & Context", + "Endpoints supporting Criteria " ], + "summary": "Fetch currencies", + "description": "Perform a filtered search for currencies.", + "operationId": "readCurrency", "parameters": [ { "name": "sw-include-search-info", @@ -22785,115 +22616,131 @@ { "$ref": "#/components/parameters/swLanguageId" } - ] - } - }, - "/account/login": { - "post": { - "tags": [ - "Login & Registration" ], - "summary": "Log in a customer", - "description": "Logs in customers given their credentials.", - "operationId": "loginCustomer", "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "required": [ - "username", - "password" - ], - "properties": { - "username": { - "description": "Email", - "type": "string" - }, - "password": { - "description": "Password", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/NoneFieldsCriteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "401": { - "description": "If credentials are incorrect an error is returned", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - } - } - } + "$ref": "#/components/responses/CurrencyListResponse" } }, "security": [ { "ApiKey": [] } + ] + }, + "get": { + "tags": [ + "System & Context", + "Endpoints supporting Criteria " ], + "summary": "Fetch currencies", + "description": "Perform a filtered search for currencies.", + "operationId": "readCurrencyGet", "parameters": [ + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedNoneFieldsCriteria" + }, { "$ref": "#/components/parameters/swLanguageId" } + ], + "responses": { + "200": { + "$ref": "#/components/responses/CurrencyListResponse" + } + }, + "security": [ + { + "ApiKey": [] + } ] } }, - "/account/login/imitate-customer": { - "post": { + "/customer-group-registration/config/{customerGroupId}": { + "get": { "tags": [ "Login & Registration" ], - "summary": "Imitate the log in as a customer", - "description": "Imitate the log in as a customer given a generated token.", - "operationId": "imitateCustomerLogin", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "token", - "customerId", - "userId" - ], - "properties": { - "token": { - "description": "Generated customer impersonation token", - "type": "string" - }, - "customerId": { - "description": "ID of the customer", - "type": "string" - }, - "userId": { - "description": "ID of the user who generated the token", - "type": "string" - } - }, - "type": "object" - } + "summary": "Fetch registration settings for customer group", + "operationId": "getCustomerGroupRegistrationInfo", + "parameters": [ + { + "name": "customerGroupId", + "in": "path", + "description": "Customer group id", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } - }, + ], "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "400": { - "description": "If the token is incorrect an error is returned", + "description": "Returns the customer group including registration settings.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/failure" + "$ref": "#/components/schemas/CustomerGroup" } } } @@ -22903,249 +22750,263 @@ { "ApiKey": [] } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } ] } }, - "/account/logout": { - "post": { + "/_info/routes": { + "get": { + "summary": "Get API routes", + "operationId": "getRoutes", "tags": [ - "Login & Registration" + "System Info & Health Check" ], - "summary": "Log out a customer", - "description": "Logs out a customer.", - "operationId": "logoutCustomer", "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "403": { - "$ref": "#/components/responses/403" - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] + "description": "Successful operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "endpoints" + ], + "properties": { + "endpoints": { + "type": "array", + "items": { + "type": "object", + "required": [ + "methods", + "path" + ], + "properties": { + "methods": { + "type": "array", + "items": { + "type": "string" + } + }, + "path": { + "type": "string" + } + } + } + } + } + } + } + } } + } + } + }, + "/shipping-method": { + "post": { + "tags": [ + "Payment & Shipping", + "Endpoints supporting Criteria " ], + "summary": "Fetch shipping methods", + "description": "Perform a filtered search for shipping methods.\n\n**Available Associations:**\n- `prices` - Shipping method price configurations (based on current cart and context)\n- `deliveryTime` - Delivery time information (min/max days, unit)\n- `media` - Media/images associated with the shipping method (loaded by default)\n- `availabilityRule` - Availability rule determining when this method is available\n- `tax` - Tax configuration for the shipping method\n\n**Example with associations:**\n```json\n{\n \"associations\": {\n \"prices\": {},\n \"deliveryTime\": {}\n }\n}\n```\n\nNote: The `prices` association is essential for accessing shipping cost configurations.", + "operationId": "readShippingMethod", "parameters": [ + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, + { + "name": "onlyAvailable", + "in": "query", + "description": "List only available shipping methods. This filters shipping methods methods which can not be used in the actual context because of their availability rule.", + "schema": { + "type": "boolean" + } + }, { "$ref": "#/components/parameters/swLanguageId" } - ] - } - }, - "/account/register-confirm": { - "post": { - "tags": [ - "Login & Registration" ], - "summary": "Confirm a customer registration", - "description": "Confirms a customer registration when double opt-in is activated.\n\nLearn more about double opt-in registration in our guide \"Register a customer\".", - "operationId": "registerConfirm", "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "required": [ - "hash", - "em" - ], - "properties": { - "hash": { - "description": "Hash from the email received", - "type": "string" - }, - "em": { - "description": "Email hash from the email received", - "type": "string" - } - }, - "type": "object" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] } } } }, "responses": { "200": { - "description": "Returns the logged in customer. The customer is automatically logged in with the `sw-context-token` header provided, which can be reused for subsequent requests." - }, - "404": { - "description": "No hash provided" - }, - "412": { - "description": "The customer has already been confirmed" + "description": "", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "required": [ + "elements" + ], + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingMethod" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } } }, "security": [ { "ApiKey": [] } + ] + }, + "get": { + "tags": [ + "Payment & Shipping", + "Endpoints supporting Criteria " ], + "summary": "Fetch shipping methods", + "description": "Perform a filtered search for shipping methods.\n\n**Available Associations:**\n- `prices` - Shipping method price configurations (graduated prices, quantity-based pricing)\n- `deliveryTime` - Delivery time information (min/max days, unit)\n- `media` - Media/images associated with the shipping method (loaded by default)\n- `availabilityRule` - Availability rule determining when this method is available\n- `tax` - Tax configuration for the shipping method\n\nNote: The `prices` association is essential for accessing shipping cost configurations.", + "operationId": "readShippingMethodGet", "parameters": [ + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" + }, { "$ref": "#/components/parameters/swLanguageId" } + ], + "responses": { + "200": { + "$ref": "#/components/responses/ShippingMethodListResponse" + } + }, + "security": [ + { + "ApiKey": [] + } ] } }, - "/account/register": { + "/order/state/cancel": { "post": { "tags": [ - "Login & Registration" + "Order" + ], + "summary": "Cancel an order", + "description": "Cancels an order. The order state will be set to 'cancelled'.", + "operationId": "cancelOrder", + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ], - "summary": "Register a customer", - "description": "Registers a customer. Used both for normal customers and guest customers.See the Guide \"Register a customer\" for more information on customer registration.", - "operationId": "register", "requestBody": { "required": true, "content": { "application/json": { "schema": { "properties": { - "email": { - "description": "Email of the customer. Has to be unique, unless `guest` is `true`", - "type": "string" - }, - "password": { - "description": "Password for the customer. Required, unless `guest` is `true`", - "type": "string" - }, - "salutationId": { - "description": "Id of the salutation for the customer account. Fetch options using `salutation` endpoint.", - "type": "string" - }, - "firstName": { - "description": "Customer first name. Value will be reused for shipping and billing address if not provided explicitly.", - "type": "string" - }, - "lastName": { - "description": "Customer last name. Value will be reused for shipping and billing address if not provided explicitly.", - "type": "string" - }, - "acceptedDataProtection": { - "description": "Flag indicating accepted data protection", - "type": "boolean" - }, - "storefrontUrl": { - "description": "URL of the storefront for that registration. Used in confirmation emails. Has to be one of the configured domains of the sales channel.", - "type": "string" - }, - "requestedGroupId": { - "description": "Optional customer group registration request. The customer is created in the current sales channel group and this field stores the requested target group. The group must be available for registration in the current sales channel.", - "type": "string" - }, - "billingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "shippingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "guest": { - "description": "If set, will create a guest customer. Guest customers can re-use an email address and don't need a password.", - "type": "boolean", - "default": false - }, - "birthdayDay": { - "description": "Birthday day", - "type": "integer" - }, - "birthdayMonth": { - "description": "Birthday month", - "type": "integer" - }, - "birthdayYear": { - "description": "Birthday year", - "type": "integer" - }, - "title": { - "description": "(Academic) title of the customer", - "type": "string" - }, - "affiliateCode": { - "description": "Field can be used to store an affiliate tracking code", - "type": "string" - }, - "campaignCode": { - "description": "Field can be used to store a campaign tracking code", - "type": "string" + "orderId": { + "description": "The identifier of the order to be canceled.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, + "type": "object", "required": [ - "email", - "password", - "firstName", - "lastName", - "acceptedDataProtection", - "storefrontUrl", - "billingAddress" - ], - "oneOf": [ - { - "properties": { - "accountType": { - "description": "Type of the customer account. Default value is 'private'.", - "type": "string", - "enum": [ - "private" - ], - "default": "private" - }, - "company": { - "type": "null" - }, - "vatIds": { - "type": "null" - } - } - }, - { - "required": [ - "accountType", - "company", - "vatIds" - ], - "properties": { - "accountType": { - "description": "Type of the customer account. Can be `private` or `business`.", - "type": "string", - "enum": [ - "business" - ] - }, - "company": { - "description": "Company of the customer. Only required when `accountType` is `business`.", - "type": "string" - }, - "vatIds": { - "description": "VAT IDs of the customer's company. Only valid when `accountType` is `business`.", - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - } - } - } - ], - "type": "object" + "orderId" + ] } } } }, "responses": { "200": { - "description": "Success", + "description": "Returns the state of the state machine\n\n example: More information about the state machine can be found in the corresponding guide: [Using the state machine](https://developer.shopware.com/docs/guides/plugins/plugins/checkout/order/using-the-state-machine)", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Customer" + "$ref": "#/components/schemas/StateMachineState" } } } @@ -23153,60 +23014,124 @@ }, "security": [ { - "ApiKey": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" + "ApiKey": [], + "ContextToken": [] } ] } }, - "/account/recovery-password-confirm": { + "/order": { "post": { "tags": [ - "Profile" + "Order", + "Endpoints supporting Criteria " + ], + "summary": "Fetch a list of orders", + "description": "List orders of a customer.\n\n**Available Associations:**\n- `stateMachineState` - Current order state (e.g., open, in_progress, completed, cancelled)\n- `primaryOrderDelivery` - Primary delivery information for the order\n- `primaryOrderTransaction` - Primary payment transaction for the order\n- `orderCustomer` - Customer information associated with the order\n- `currency` - Currency used for the order\n- `language` - Language used when placing the order\n- `addresses` - All addresses associated with the order (billing and shipping)\n- `billingAddress` - Billing address for the order\n- `deliveries` - Delivery information including shipping address and tracking\n- `lineItems` - Order line items (products, discounts, fees)\n- `transactions` - Payment transactions for the order\n- `documents` - Generated documents (invoices, delivery notes, credit notes)\n- `tags` - Tags assigned to the order for organization and filtering", + "operationId": "readOrder", + "parameters": [ + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } ], - "summary": "Reset a password with recovery credentials", - "description": "This operation is Step 2 of the password reset flow. It is required to conduct Step 1 \"Send a password recovery mail\" in order to obtain the required credentials for this step.Resets a customer's password using credentials from a password recovery mail as a validation.", - "operationId": "recoveryPassword", "requestBody": { "required": true, "content": { "application/json": { "schema": { - "required": [ - "hash", - "newPassword", - "newPasswordConfirm" - ], - "properties": { - "hash": { - "description": "Parameter from the link in the confirmation mail sent in Step 1", - "type": "string" - }, - "newPassword": { - "description": "New password for the customer", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/NoneFieldsCriteria" }, - "newPasswordConfirm": { - "description": "Confirmation of the new password", - "type": "string" + { + "properties": { + "checkPromotion": { + "description": "Check if the payment method of the order is still changeable.", + "type": "boolean" + }, + "filter": { + "type": "array", + "description": "Pass the deepLinkCode criteria filter to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "equals" + ] + }, + "field": { + "type": "string", + "enum": [ + "deepLinkCode" + ] + }, + "value": { + "type": "string" + } + }, + "required": [ + "type", + "field", + "value" + ] + } + ] + } + }, + "email": { + "description": "The email address of the customer. Pass this value to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", + "type": "string", + "format": "email" + }, + "zipcode": { + "description": "The zip/postal code of the billing address of the customer. Pass this value to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", + "type": "string" + }, + "login": { + "description": "If set and when handling a guest order, a context token will be returned in the response header with a logged-in session.", + "type": "boolean" + } + }, + "type": "object" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Returns a success response indicating a successful update.", + "description": "An array of orders and an indicator if the payment of the order can be changed.", + "headers": { + "sw-context-token": { + "description": "Contains sw-context-token value, if login parameter is set to true and a guest order was found and the correct credentials were provided.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/OrderRouteResponse" } } } @@ -23214,41 +23139,44 @@ }, "security": [ { - "ApiKey": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" + "ApiKey": [], + "ContextToken": [] } ] } }, - "/account/recovery-password": { + "/order/payment": { "post": { "tags": [ - "Profile" + "Order" + ], + "summary": "Update the payment method of an order", + "description": "Changes the payment method of a specific order. You can use the /order route to find out if the payment method of an order can be changed - take a look at the `paymentChangeable`- array in the response.", + "operationId": "orderSetPayment", + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ], - "summary": "Send a password recovery mail", - "description": "This operation is Step 1 of the password reset flow. Make sure to implement Step 2 \"Reset password with recovery credentials\" in order to allow for the complete flow in your application. Sends a recovery mail containing a link with credentials that allows a customer to reset their password.", - "operationId": "sendRecoveryMail", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "email", - "storefrontUrl" + "paymentMethodId", + "orderId" ], "properties": { - "email": { - "description": "E-Mail address to identify the customer", - "type": "string" + "paymentMethodId": { + "description": "The identifier of the paymentMethod to be set", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "storefrontUrl": { - "description": "URL of the storefront to use for the generated reset link. It has to be a domain that is configured in the sales channel domain settings.", - "type": "string" + "orderId": { + "description": "The identifier of the order.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, "type": "object" @@ -23258,7 +23186,7 @@ }, "responses": { "200": { - "description": "If email corresponds to an existing customer, a mail will be sent out to that customer containing a link assembled using the following schema:\n\nReturns a success indicating a successful initialisation of the reset flow.", + "description": "Successfully updated the payment method of the order.", "content": { "application/json": { "schema": { @@ -23270,67 +23198,37 @@ }, "security": [ { - "ApiKey": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" + "ApiKey": [], + "ContextToken": [] } ] } }, - "/account/address/default-shipping/{addressId}": { - "patch": { + "/order/download/{orderId}/{downloadId}": { + "get": { "tags": [ - "Address" + "Order" ], - "summary": "Change a customer's default shipping address", - "description": "Updates the default (preselected) shipping addresses of a customer.", - "operationId": "defaultShippingAddress", + "summary": "Download a purchased file", + "description": "Download a file included in the given order and with the given id. Access must be granted.", + "operationId": "orderDownloadFile", "parameters": [ { - "name": "addressId", + "name": "orderId", "in": "path", - "description": "Address ID", "required": true, "schema": { - "type": "string" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "responses": { - "200": { - "description": "" - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/account/address/default-billing/{addressId}": { - "patch": { - "tags": [ - "Address" - ], - "summary": "Change a customer's default billing address", - "description": "Updates the default (preselected) billing addresses of a customer.", - "operationId": "defaultBillingAddress", - "parameters": [ - { - "name": "addressId", + "name": "downloadId", "in": "path", - "description": "Address ID", "required": true, "schema": { - "type": "string" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, { @@ -23339,7 +23237,15 @@ ], "responses": { "200": { - "description": "" + "description": "An arbitrary binary file.", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } } }, "security": [ @@ -23350,271 +23256,39 @@ ] } }, - "/account/address": { - "post": { + "/cookie-groups": { + "get": { "tags": [ - "Address" - ], - "summary": "Create a new address for a customer", - "description": "Creates a new address for a customer.", - "operationId": "createCustomerAddress", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomerAddressBody" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/CustomerAddress" - }, - { - "$ref": "#/components/schemas/CustomerAddressRead" - } - ] - } - } - } - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } - ] - } - }, - "/script/{hook}": { - "get": { - "tags": [ - "API", - "Script", - "App" - ], - "summary": "Access point for different api logics which are provided by apps over script hooks", - "operationId": "getScriptStoreApiRoute", - "parameters": [ - { - "name": "hook", - "in": "path", - "description": "Dynamic hook which used to build the hook name", - "required": true, - "schema": { - "type": "string" - } - }, - { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "responses": { - "200": { - "description": "Returns different structures of results based on the called script.", - "content": { - "application/json": { - "schema": { - "oneOf": [ - { - "type": "object", - "additionalProperties": true - }, - { - "type": "null" - } - ] - } - }, - "application/vnd.api+json": { - "schema": { - "oneOf": [ - { - "type": "object", - "additionalProperties": true - }, - { - "type": "null" - } - ] - } - } - } - }, - "204": { - "description": "No data by default" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - }, - "post": { - "tags": [ - "API", - "Script", - "App" - ], - "summary": "Access point for different api logics which are provided by apps over script hooks", - "operationId": "postScriptStoreApiRoute", - "parameters": [ - { - "name": "hook", - "in": "path", - "description": "Dynamic hook which used to build the hook name", - "required": true, - "schema": { - "type": "string" - } - }, - { - "$ref": "#/components/parameters/swLanguageId" - } + "Experimental", + "Cookies" ], + "summary": "Fetch all cookie groups", + "description": "Fetch all cookie groups available in the system with configuration hash. Experimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", + "operationId": "readCookieGroups", "responses": { "200": { - "description": "Returns different structures of results based on the called script.", + "description": "Successful response with a collection of cookie groups and their configuration hash.", "content": { "application/json": { "schema": { - "oneOf": [ - { - "type": "object", - "additionalProperties": true - }, - { - "type": "null" - } - ] - } - }, - "application/vnd.api+json": { - "schema": { - "oneOf": [ - { - "type": "object", - "additionalProperties": true - }, - { - "type": "null" - } - ] + "$ref": "#/components/schemas/CookieRouteResponse" } } } }, - "204": { - "description": "No data by default" + "400": { + "$ref": "#/components/responses/400" } }, "security": [ { "ApiKey": [] } - ] - } - }, - "/contact-form": { - "post": { - "tags": [ - "Content" ], - "summary": "Submit a contact form message", - "description": "Used for submitting contact forms. Be aware that there can be more required fields, depending on the system settings.", - "operationId": "sendContactMail", "parameters": [ { "$ref": "#/components/parameters/swLanguageId" } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "email", - "subject", - "comment" - ], - "properties": { - "salutationId": { - "description": "Identifier of the salutation. Use `/api/salutation` endpoint to fetch possible values.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "description": "Firstname. This field may be required depending on the system settings.", - "type": "string" - }, - "lastName": { - "description": "Lastname. This field may be required depending on the system settings.", - "type": "string" - }, - "email": { - "description": "Email address", - "type": "string" - }, - "phone": { - "description": "Phone. This field may be required depending on the system settings.", - "type": "string" - }, - "subject": { - "description": "The subject of the contact form.", - "type": "string" - }, - "comment": { - "description": "The message of the contact form", - "type": "string" - }, - "navigationId": { - "description": "Identifier of the navigation page. Can be used to override the configuration.\nTake a look at the settings of a category containing a concat form in the administration.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "slotId": { - "description": "Identifier of the cms element", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "cmsPageType": { - "description": "Type of the content management page", - "type": "string" - }, - "entityName": { - "description": "Entity name for slot config", - "type": "string" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Message sent successful." - } - }, - "security": [ - { - "ApiKey": [] - } ] } }, @@ -23886,151 +23560,16 @@ ] } }, - "/media": { + "/salutation": { "post": { "tags": [ - "Content" + "System & Context", + "Endpoints supporting Criteria " ], - "summary": "Fetch and resolve Media Entities", - "description": "Fetch one or multiple Media Entities with the corresponding Identifier.", - "operationId": "readMedia", - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "ids": { - "description": "Identifier (UUID) of the media entity to be fetched.", - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - }, - "type": "object", - "required": [ - "ids" - ] - } - } - } - }, - "responses": { - "200": { - "description": "The loaded MediaCollection containing the requested Media Entities.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Media" - } - } - } - } - }, - "404": { - "$ref": "#/components/responses/404" - } - }, - "security": [ - { - "ApiKey": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } - ] - }, - "get": { - "tags": [ - "Content" - ], - "summary": "Fetch and resolve Media Entities", - "description": "Fetch one or multiple Media Entities with the corresponding Identifier.", - "operationId": "readMediaGet", - "parameters": [ - { - "name": "ids[]", - "in": "query", - "description": "Identifier (UUID) of the media entity to be fetched.", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - }, - { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "responses": { - "200": { - "description": "The loaded MediaCollection containing the requested Media Entities.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Media" - } - } - } - } - }, - "404": { - "$ref": "#/components/responses/404" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/product-listing/{categoryId}": { - "post": { - "tags": [ - "Product" - ], - "summary": "Fetch a product listing by category", - "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", - "operationId": "readProductListing", + "summary": "Fetch salutations", + "description": "Fetches salutations with a criteria obj.", + "operationId": "readSalutation", "parameters": [ - { - "name": "categoryId", - "in": "path", - "description": "Identifier of a category.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "p", - "in": "query", - "description": "The page number to fetch.", - "required": false, - "schema": { - "type": "integer" - } - }, - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Determines if the response must contain a SeoUrl entity for a product entity", - "required": false, - "schema": { - "type": "boolean" - } - }, { "name": "sw-include-search-info", "in": "header", @@ -24050,15 +23589,13 @@ } ], "requestBody": { + "required": false, "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/ProductListingCriteria" - }, - { - "$ref": "#/components/schemas/ProductListingFlags" + "$ref": "#/components/schemas/Criteria" } ] } @@ -24067,14 +23604,7 @@ }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProductListingResult" - } - } - } + "$ref": "#/components/responses/SalutationListResponse" } }, "security": [ @@ -24085,41 +23615,18 @@ }, "get": { "tags": [ - "Product" + "System & Context", + "Endpoints supporting Criteria " ], - "summary": "Fetch a product listing by category", - "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", - "operationId": "readProductListingGet", + "summary": "Fetch salutations", + "description": "Perform a filtered search for salutations.", + "operationId": "readSalutationGet", "parameters": [ - { - "name": "categoryId", - "in": "path", - "description": "Identifier of a category.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Determines if the response must contain a SeoUrl entity for a product entity", - "required": false, - "schema": { - "type": "boolean" - } - }, { "$ref": "#/components/parameters/criteriaPage" }, { - "name": "limit", - "in": "query", - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "schema": { - "type": "integer", - "minimum": 0 - } + "$ref": "#/components/parameters/criteriaLimit" }, { "$ref": "#/components/parameters/criteriaTerm" @@ -24161,113 +23668,1673 @@ "$ref": "#/components/parameters/criteriaExcludes" }, { - "name": "order", - "in": "query", - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "schema": { - "type": "string" - } - }, - { - "name": "p", - "in": "query", - "description": "Search result page", - "schema": { - "type": "integer", - "default": 1 - } + "$ref": "#/components/parameters/CompressedCriteria" }, { - "name": "manufacturer", - "in": "query", - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", - "schema": { - "type": "string" - } - }, + "$ref": "#/components/parameters/swLanguageId" + } + ], + "responses": { + "200": { + "$ref": "#/components/responses/SalutationListResponse" + } + }, + "security": [ { - "name": "min-price", - "in": "query", - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, + "ApiKey": [] + } + ] + } + }, + "/script/{hook}": { + "get": { + "tags": [ + "API", + "Script", + "App" + ], + "summary": "Access point for different api logics which are provided by apps over script hooks", + "operationId": "getScriptStoreApiRoute", + "parameters": [ { - "name": "max-price", - "in": "query", - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "name": "hook", + "in": "path", + "description": "Dynamic hook which used to build the hook name", + "required": true, "schema": { - "type": "integer", - "minimum": 0, - "default": 0 + "type": "string" } }, { - "name": "rating", - "in": "query", - "description": "Filter products with a minimum average rating.", - "schema": { - "type": "integer" + "$ref": "#/components/parameters/swLanguageId" + } + ], + "responses": { + "200": { + "description": "Returns different structures of results based on the called script.", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "type": "object", + "additionalProperties": true + }, + { + "type": "null" + } + ] + } + }, + "application/vnd.api+json": { + "schema": { + "oneOf": [ + { + "type": "object", + "additionalProperties": true + }, + { + "type": "null" + } + ] + } + } } }, + "204": { + "description": "No data by default" + } + }, + "security": [ { - "name": "shipping-free", - "in": "query", - "description": "Filters products that are marked as shipping-free.", + "ApiKey": [] + } + ] + }, + "post": { + "tags": [ + "API", + "Script", + "App" + ], + "summary": "Access point for different api logics which are provided by apps over script hooks", + "operationId": "postScriptStoreApiRoute", + "parameters": [ + { + "name": "hook", + "in": "path", + "description": "Dynamic hook which used to build the hook name", + "required": true, "schema": { - "type": "boolean", - "default": false + "type": "string" } }, { - "name": "properties", - "in": "query", - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", - "schema": { - "type": "string" + "$ref": "#/components/parameters/swLanguageId" + } + ], + "responses": { + "200": { + "description": "Returns different structures of results based on the called script.", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "type": "object", + "additionalProperties": true + }, + { + "type": "null" + } + ] + } + }, + "application/vnd.api+json": { + "schema": { + "oneOf": [ + { + "type": "object", + "additionalProperties": true + }, + { + "type": "null" + } + ] + } + } } }, + "204": { + "description": "No data by default" + } + }, + "security": [ { - "name": "reduce-aggregations", - "in": "query", - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "ApiKey": [] + } + ] + } + }, + "/language": { + "post": { + "tags": [ + "System & Context", + "Endpoints supporting Criteria " + ], + "summary": "Fetch languages", + "description": "Perform a filtered search for languages.\n\n**Available Associations:**\n- `locale` - Locale defining regional settings (date, time, number formats)\n- `translationCode` - Locale used for translating content\n- `children` - Child languages inheriting from this parent language", + "operationId": "readLanguages", + "parameters": [ + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } + } + } + }, + "responses": { + "200": { + "$ref": "#/components/responses/LanguageListResponse" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + }, + "get": { + "tags": [ + "System & Context", + "Endpoints supporting Criteria " + ], + "summary": "Fetch languages", + "description": "Perform a filtered search for languages.\n\n**Available Associations:**\n- `locale` - Locale defining regional settings (date, time, number formats)\n- `translationCode` - Locale used for translating content\n- `children` - Child languages inheriting from this parent language", + "operationId": "readLanguagesGet", + "parameters": [ + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "responses": { + "200": { + "$ref": "#/components/responses/LanguageListResponse" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/context": { + "get": { + "tags": [ + "System & Context" + ], + "summary": "Fetch the current context", + "description": "Fetches the current context. This includes for example the `customerGroup`, `currency`, `taxRules` and many more.", + "operationId": "readContext", + "responses": { + "200": { + "description": "Returns the current context.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SalesChannelContext" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + }, + "patch": { + "tags": [ + "System & Context" + ], + "summary": "Modify the current context", + "description": "Used for switching the context. A typical example would be changing the language or changing the currency.", + "operationId": "updateContext", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "currencyId": { + "description": "Currency", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "languageId": { + "description": "Language", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "billingAddressId": { + "description": "Billing Address", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingAddressId": { + "description": "Shipping Address", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "paymentMethodId": { + "description": "Payment Method", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingMethodId": { + "description": "Shipping Method", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryId": { + "description": "Country", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryStateId": { + "description": "Country State", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "$ref": "#/components/responses/ContextTokenResponse" + } + }, + "security": [ + { + "ApiKey": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/context/gateway": { + "post": { + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "appName" + ], + "properties": { + "appName": { + "type": "string" + }, + "data": { + "type": "object" + } + }, + "type": "object" + } + } + } + }, + "tags": [ + "Gateway" + ], + "summary": "Call the context gateway", + "description": "Call the context gateway, which is used to manipulate certain aspects of context (e.g. selected payment methods, register customer, etc.).", + "operationId": "contextGateway", + "responses": { + "200": { + "$ref": "#/components/responses/ContextTokenResponse" + }, + "400": { + "description": "App server communication error" + }, + "422": { + "description": "Error provided by App Server with message to show customer" + } + }, + "security": [ + { + "ApiKey": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + }, + "get": { + "tags": [ + "Gateway" + ], + "summary": "Call the context gateway", + "description": "Call the context gateway, which is used to manipulate certain aspects of context (e.g. selected payment methods, register customer, etc.). Please prefer using the POST version of this endpoint.", + "operationId": "contextGatewayGet", + "parameters": [ + { + "name": "appName", + "in": "query", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "data", + "in": "query", + "schema": { + "type": "object" + }, + "style": "deepObject" + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "responses": { + "200": { + "$ref": "#/components/responses/ContextTokenResponse" + }, + "400": { + "description": "App server communication error" + }, + "422": { + "description": "Error provided by App Server with message to show customer" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/breadcrumb/{id}": { + "get": { + "tags": [ + "Experimental", + "Breadcrumb" + ], + "summary": "Fetch a breadcrumb", + "description": "Perform search to get category or product breadcrumb. \n\nExperimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", + "operationId": "readBreadcrumb", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "UUID for product or category", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "type", + "in": "query", + "description": "Type: category or product (optional - default: product)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "product", + "category" + ] + } + }, + { + "name": "referrerCategoryId", + "in": "query", + "description": "UUID for referrer category only used for product breadcrumb", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "responses": { + "200": { + "description": "Search result containing SeoUrl\\'s to be used as breadcrumb.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BreadcrumbCollection" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/document/download/{documentId}/{deepLinkCode}": { + "post": { + "tags": [ + "Document" + ], + "summary": "Download generated document", + "description": "Returns generated document to download.", + "operationId": "download", + "parameters": [ + { + "name": "documentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "deepLinkCode", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "email": { + "type": "string" + }, + "zipcode": { + "type": "string" + } + }, + "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "application/pdf": { + "schema": { + "type": "string", + "format": "binary" + } + }, + "text/html": { + "schema": { + "type": "string" + } + }, + "application/xml": { + "schema": { + "type": "string" + } + } + } + }, + "204": { + "description": "DEPRECATED: Returns a no content response when no document is found. Will be changed in v6.8.0.0 and returns a 404 response instead." + }, + "403": { + "description": "Forbidden." + }, + "404": { + "description": "Document not found." + }, + "406": { + "description": "The requested mime type is not supported." + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + }, + "get": { + "tags": [ + "Document" + ], + "summary": "Download generated document", + "description": "Returns generated document to download.", + "operationId": "downloadGet", + "parameters": [ + { + "name": "documentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "deepLinkCode", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "email", + "required": false, + "in": "query", + "schema": { + "type": "string" + }, + "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." + }, + { + "name": "zipcode", + "required": false, + "in": "query", + "schema": { + "type": "string" + }, + "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "responses": { + "200": { + "description": "Success", + "content": { + "application/pdf": { + "schema": { + "type": "string", + "format": "binary" + } + }, + "text/html": { + "schema": { + "type": "string" + } + }, + "application/xml": { + "schema": { + "type": "string" + } + } + } + }, + "204": { + "description": "DEPRECATED: Returns a no content response when no document is found. Will be changed in v6.8.0.0 and returns a 404 response instead." + }, + "403": { + "description": "Forbidden." + }, + "404": { + "description": "Document not found." + }, + "406": { + "description": "The requested mime type is not supported." + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/newsletter/confirm": { + "post": { + "tags": [ + "Newsletter" + ], + "summary": "Confirm a newsletter registration", + "description": "You have to use the hash from the link sent out via email to confirm the user registration.", + "operationId": "confirmNewsletter", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "hash", + "em" + ], + "properties": { + "hash": { + "description": "Hash parameter from link the in the confirmation mail", + "type": "string" + }, + "em": { + "description": "Email hash parameter from the link in the confirmation mail", + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "The newsletter confirmation was successful.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + } + }, + "security": [ + { + "ApiKey": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/newsletter/subscribe": { + "post": { + "tags": [ + "Newsletter" + ], + "summary": "Create or remove a newsletter subscription", + "description": "This route is used to create/remove/confirm a newsletter subscription.\n\nThe `option` property controls what should happen:\n* `direct`: The subscription is directly active and does not need a confirmation.\n* `subscribe`: An email will be send to the provided email address containing a link to the /newsletter/confirm route.\nThe subscription is only successful, if the /newsletter/confirm route is called with the generated hashes.\n* `unsubscribe`: The email address will be removed from the newsletter subscriptions.\n* `confirmSubscribe`: Confirms the newsletter subscription for the provided email address.", + "operationId": "subscribeToNewsletter", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "email", + "option", + "storefrontUrl" + ], + "properties": { + "email": { + "description": "Email address that will receive the confirmation and the newsletter.", + "type": "string" + }, + "option": { + "description": "Defines what should be done.", + "type": "string" + }, + "storefrontUrl": { + "description": "Url of the storefront of the shop. This will be used for generating the link to the /newsletter/confirm inside the confirm email.", + "type": "string" + }, + "salutationId": { + "description": "Identifier of the salutation.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "firstName": { + "description": "First name", + "type": "string" + }, + "lastName": { + "description": "Last name", + "type": "string" + }, + "street": { + "description": "Street", + "type": "string" + }, + "city": { + "description": "City", + "type": "string" + }, + "zipCode": { + "description": "Zip code", + "type": "string" + }, + "languageId": { + "description": "Identifier of the language.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "customFields": { + "description": "Custom field data that should be added to the subscription.", + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "required": [ + "success", + "status" + ], + "properties": { + "success": { + "description": "Indicates whether the subscribe request was successful.", + "type": "boolean" + }, + "status": { + "$ref": "#/components/schemas/NewsletterStatus" + } + }, + "type": "object" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + } + }, + "security": [ + { + "ApiKey": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/newsletter/unsubscribe": { + "post": { + "tags": [ + "Newsletter" + ], + "summary": "Remove a newsletter subscription", + "description": "Removes a newsletter recipient from the mailing lists.", + "operationId": "unsubscribeToNewsletter", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "email" + ], + "properties": { + "email": { + "description": "Email address that should be removed from the mailing lists.", + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Unsubscribing was successful.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + } + }, + "security": [ + { + "ApiKey": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/_mcp": { + "post": { + "tags": [ + "MCP", + "Experimental" + ], + "summary": "MCP JSON-RPC endpoint (Store API)", + "description": "Handles Model Context Protocol (MCP) requests using the Streamable HTTP transport for the Store API. Accepts JSON-RPC 2.0 messages. Requires a valid Store API access key. Streaming responses are delivered as a `text/event-stream` body on this POST operation; a standalone GET SSE stream is not supported. Experimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", + "operationId": "storeApiMcpPost", + "parameters": [ + { + "name": "mcp-session-id", + "in": "header", + "required": false, + "description": "Session ID returned by the server in the `mcp-session-id` response header after a successful `initialize` request. Required for all subsequent requests within the same session.", + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "sw-context-token", + "in": "header", + "required": false, + "description": "Standard Store API context token identifying the customer session. When provided, MCP tools operate in the context of that customer. Same semantics as all other Store API endpoints.", + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "requestBody": { + "required": true, + "description": "A JSON-RPC 2.0 request object. Omit `id` for notifications (no response expected). The `params` shape depends on the `method`; extensions may register additional methods beyond the variants listed here.", + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "jsonrpc", + "method" + ], + "properties": { + "jsonrpc": { + "type": "string", + "enum": [ + "2.0" + ] + }, + "id": { + "description": "Request identifier. Omit for notifications (fire-and-forget). Present for requests that expect a response.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + }, + "method": { + "type": "string", + "description": "MCP method name." + }, + "params": { + "type": "object", + "description": "Method-specific parameters, see the request variants." + } + }, + "oneOf": [ + { + "title": "initialize", + "properties": { + "method": { + "const": "initialize" + }, + "params": { + "type": "object", + "required": [ + "protocolVersion", + "capabilities", + "clientInfo" + ], + "properties": { + "protocolVersion": { + "type": "string", + "description": "MCP protocol version the client supports, e.g. `2025-03-26`." + }, + "capabilities": { + "type": "object", + "description": "Capabilities the client supports.", + "additionalProperties": true + }, + "clientInfo": { + "type": "object", + "required": [ + "name", + "version" + ], + "properties": { + "name": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } + } + } + }, + "required": [ + "params" + ] + }, + { + "title": "tools/list", + "properties": { + "method": { + "const": "tools/list" + }, + "params": { + "type": "object", + "properties": { + "cursor": { + "type": "string", + "description": "Opaque pagination cursor from a previous `tools/list` result." + } + } + } + } + }, + { + "title": "tools/call", + "properties": { + "method": { + "const": "tools/call" + }, + "params": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "description": "Name of the tool to invoke, as returned by `tools/list`." + }, + "arguments": { + "type": "object", + "description": "Tool arguments matching the tool's `inputSchema`.", + "additionalProperties": true + } + } + } + }, + "required": [ + "params" + ] + }, + { + "title": "resources/list", + "properties": { + "method": { + "const": "resources/list" + }, + "params": { + "type": "object", + "properties": { + "cursor": { + "type": "string", + "description": "Opaque pagination cursor from a previous `resources/list` result." + } + } + } + } + }, + { + "title": "resources/read", + "properties": { + "method": { + "const": "resources/read" + }, + "params": { + "type": "object", + "required": [ + "uri" + ], + "properties": { + "uri": { + "type": "string", + "description": "URI of the resource to read, as returned by `resources/list`." + } + } + } + }, + "required": [ + "params" + ] + }, + { + "title": "prompts/list", + "properties": { + "method": { + "const": "prompts/list" + }, + "params": { + "type": "object", + "properties": { + "cursor": { + "type": "string", + "description": "Opaque pagination cursor from a previous `prompts/list` result." + } + } + } + } + }, + { + "title": "prompts/get", + "properties": { + "method": { + "const": "prompts/get" + }, + "params": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "description": "Name of the prompt, as returned by `prompts/list`." + }, + "arguments": { + "type": "object", + "description": "Prompt arguments as string values.", + "additionalProperties": { + "type": "string" + } + } + } + } + }, + "required": [ + "params" + ] + }, + { + "title": "ping", + "properties": { + "method": { + "const": "ping" + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "JSON-RPC response or Server-Sent Events stream for streaming responses. Contains either a `result` (success) or an `error` (failure), never both.", + "headers": { + "mcp-session-id": { + "description": "Session ID assigned by the server. Returned on the `initialize` response and echoed on subsequent responses. Send it as a request header on all following requests.", + "schema": { + "type": "string", + "format": "uuid" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "jsonrpc", + "id" + ], + "properties": { + "jsonrpc": { + "type": "string", + "enum": [ + "2.0" + ] + }, + "id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "oneOf": [ + { + "required": [ + "result" + ], + "properties": { + "result": { + "description": "Method-specific result payload, one of the variants below depending on the requested method.", + "oneOf": [ + { + "title": "initialize result", + "type": "object", + "required": [ + "protocolVersion", + "capabilities", + "serverInfo" + ], + "properties": { + "protocolVersion": { + "type": "string" + }, + "capabilities": { + "type": "object", + "description": "Capabilities the server supports (tools, resources, prompts, logging, ...).", + "additionalProperties": true + }, + "serverInfo": { + "type": "object", + "required": [ + "name", + "version" + ], + "properties": { + "name": { + "type": "string" + }, + "version": { + "type": "string" + } + } + }, + "instructions": { + "type": "string", + "description": "Usage instructions for the client / model." + } + }, + "additionalProperties": true + }, + { + "title": "tools/list result", + "type": "object", + "required": [ + "tools" + ], + "properties": { + "tools": { + "type": "array", + "items": { + "type": "object", + "required": [ + "name", + "inputSchema" + ], + "properties": { + "name": { + "type": "string" + }, + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "inputSchema": { + "type": "object", + "description": "JSON Schema describing the tool arguments.", + "additionalProperties": true + } + }, + "additionalProperties": true + } + }, + "nextCursor": { + "type": "string", + "description": "Pagination cursor for the next page, absent on the last page." + } + }, + "additionalProperties": true + }, + { + "title": "tools/call result", + "type": "object", + "required": [ + "content" + ], + "properties": { + "content": { + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "description": "Content block. `type` is one of `text` (with `text`), `image`/`audio` (with base64 `data` and `mimeType`) or `resource` (with embedded `resource`).", + "properties": { + "type": { + "type": "string", + "enum": [ + "text", + "image", + "audio", + "resource" + ] + }, + "text": { + "type": "string" + }, + "data": { + "type": "string" + }, + "mimeType": { + "type": "string" + }, + "resource": { + "type": "object", + "additionalProperties": true + } + }, + "additionalProperties": true + } + }, + "structuredContent": { + "type": "object", + "description": "Structured tool output matching the tool's declared output schema.", + "additionalProperties": true + }, + "isError": { + "type": "boolean", + "description": "True when the tool execution failed; error details are in `content`." + } + }, + "additionalProperties": true + }, + { + "title": "resources/list result", + "type": "object", + "required": [ + "resources" + ], + "properties": { + "resources": { + "type": "array", + "items": { + "type": "object", + "required": [ + "uri", + "name" + ], + "properties": { + "uri": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "mimeType": { + "type": "string" + } + }, + "additionalProperties": true + } + }, + "nextCursor": { + "type": "string", + "description": "Pagination cursor for the next page, absent on the last page." + } + }, + "additionalProperties": true + }, + { + "title": "resources/read result", + "type": "object", + "required": [ + "contents" + ], + "properties": { + "contents": { + "type": "array", + "items": { + "type": "object", + "required": [ + "uri" + ], + "description": "Resource content with either `text` or base64 `blob`.", + "properties": { + "uri": { + "type": "string" + }, + "mimeType": { + "type": "string" + }, + "text": { + "type": "string" + }, + "blob": { + "type": "string" + } + }, + "additionalProperties": true + } + } + }, + "additionalProperties": true + }, + { + "title": "prompts/list result", + "type": "object", + "required": [ + "prompts" + ], + "properties": { + "prompts": { + "type": "array", + "items": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string" + }, + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "arguments": { + "type": "array", + "items": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "required": { + "type": "boolean" + } + }, + "additionalProperties": true + } + } + }, + "additionalProperties": true + } + }, + "nextCursor": { + "type": "string", + "description": "Pagination cursor for the next page, absent on the last page." + } + }, + "additionalProperties": true + }, + { + "title": "prompts/get result", + "type": "object", + "required": [ + "messages" + ], + "properties": { + "description": { + "type": "string" + }, + "messages": { + "type": "array", + "items": { + "type": "object", + "required": [ + "role", + "content" + ], + "properties": { + "role": { + "type": "string", + "enum": [ + "user", + "assistant" + ] + }, + "content": { + "type": "object", + "description": "Content block, same shape as in `tools/call` results.", + "additionalProperties": true + } + }, + "additionalProperties": true + } + } + }, + "additionalProperties": true + }, + { + "title": "ping result", + "type": "object", + "description": "Empty object.", + "additionalProperties": false + } + ] + } + } + }, + { + "required": [ + "error" + ], + "properties": { + "error": { + "type": "object", + "required": [ + "code", + "message" + ], + "properties": { + "code": { + "type": "integer", + "description": "JSON-RPC error code, e.g. -32700 parse error, -32600 invalid request, -32601 method not found, -32602 invalid params, -32603 internal error." + }, + "message": { + "type": "string" + }, + "data": { + "description": "Optional additional error information." + } + } + } + } + } + ] + } + }, + "text/event-stream": { + "schema": { + "type": "string", + "description": "Server-Sent Events stream. Each `message` event carries a JSON-RPC response object as defined for `application/json`." + } + } } }, - { - "$ref": "#/components/parameters/noAggregations" - }, - { - "$ref": "#/components/parameters/onlyAggregations" - }, - { - "$ref": "#/components/parameters/CompressedCriteria" + "202": { + "description": "Notification accepted. Returned with an empty body for JSON-RPC notifications (requests without an `id`)." }, - { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "responses": { - "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", + "400": { + "description": "Invalid request, e.g. malformed JSON-RPC payload or malformed `mcp-session-id` header.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "type": "object", + "properties": { + "jsonrpc": { + "type": "string", + "enum": [ + "2.0" + ] + }, + "id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "error": { + "type": "object", + "required": [ + "code", + "message" + ], + "properties": { + "code": { + "type": "integer" + }, + "message": { + "type": "string" + } + } + } + } } } } + }, + "401": { + "$ref": "#/components/responses/401" + }, + "429": { + "$ref": "#/components/responses/429" } }, "security": [ @@ -24275,62 +25342,72 @@ "ApiKey": [] } ] - } - }, - "/app-system/{name}/generate-token": { - "post": { + }, + "delete": { "tags": [ - "App system" + "MCP", + "Experimental" ], - "summary": "Generate JWT token for app system backend", - "description": "Generate JWT token for authenticated communication with the app server", - "operationId": "generateJWTAppSystemAppServer", + "summary": "Close MCP session (Store API)", + "description": "Terminates the active MCP session identified by the `mcp-session-id` header. Experimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", + "operationId": "storeApiMcpDelete", "parameters": [ { - "in": "path", - "name": "name", + "name": "mcp-session-id", + "in": "header", "required": true, - "description": "Name of the app", + "description": "Session ID of the session to close. Obtained from the `mcp-session-id` response header of the `initialize` request.", "schema": { - "type": "string" + "type": "string", + "format": "uuid" } - }, - { - "$ref": "#/components/parameters/swLanguageId" } ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "type": "object" - } - } - } - }, "responses": { "200": { - "description": "", + "description": "Session closed successfully." + }, + "400": { + "description": "Missing or malformed `mcp-session-id` header. Returns a JSON-RPC error object.", "content": { "application/json": { "schema": { "type": "object", "properties": { - "token": { - "type": "string" - }, - "expires": { + "jsonrpc": { "type": "string", - "format": "date-time" + "enum": [ + "2.0" + ] }, - "shopId": { - "type": "string" + "id": { + "type": "null" + }, + "error": { + "type": "object", + "required": [ + "code", + "message" + ], + "properties": { + "code": { + "type": "integer" + }, + "message": { + "type": "string" + } + } } } } } } + }, + "401": { + "$ref": "#/components/responses/401" + }, + "429": { + "$ref": "#/components/responses/429" } }, "security": [ @@ -24338,25 +25415,46 @@ "ApiKey": [] } ] + }, + "options": { + "tags": [ + "MCP", + "Experimental" + ], + "summary": "MCP CORS preflight (Store API)", + "description": "Handles CORS preflight requests for the Store API MCP endpoint. Answered before routing; the response carries the `Access-Control-Allow-*` headers including `mcp-session-id` and `mcp-protocol-version`. Experimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", + "operationId": "storeApiMcpOptions", + "responses": { + "200": { + "description": "CORS preflight accepted." + } + } } }, - "/customer/wishlist/add/{productId}": { - "post": { + "/product-export/{accessKey}/{fileName}": { + "get": { "tags": [ - "Wishlist" + "Product" ], - "summary": "Add a product to a wishlist", - "description": "Adds a product to a customers wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "addProductOnWishlist", + "summary": "Export product export", + "operationId": "readProductExport", "parameters": [ { - "name": "productId", + "name": "accessKey", "in": "path", - "description": "Identifier of the product to be added.", + "description": "Access Key", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" + } + }, + { + "name": "fileName", + "in": "path", + "description": "File Name", + "required": true, + "schema": { + "type": "string" } }, { @@ -24365,122 +25463,54 @@ ], "responses": { "200": { - "description": "Returns a success response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } + "description": "" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/customer/wishlist": { + "/product/{productId}/cross-selling": { "post": { "tags": [ - "Wishlist", - "Endpoints supporting Criteria " + "Product" ], - "summary": "Fetch a wishlist", - "description": "Fetch a customer's wishlist. Products on the wishlist can be filtered using a criteria object.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "readCustomerWishlist", + "summary": "Fetch cross-selling groups of a product", + "description": "This route is used to load the cross sellings for a product. A product has several cross selling definitions in which several products are linked. The route returns the cross sellings together with the linked products", + "operationId": "readProductCrossSellings", "parameters": [ { - "name": "sw-include-search-info", + "name": "productId", + "in": "path", + "description": "Product ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "sw-include-seo-urls", "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", "required": false, "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" + "type": "boolean" } }, { "$ref": "#/components/parameters/swLanguageId" } ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/WishlistLoadRouteResponse" - } - } - } - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/customer/wishlist/merge": { - "post": { - "tags": [ - "Wishlist" - ], - "summary": "Create a wishlist for a customer", - "description": "Create a new wishlist for a logged in customer or extend the existing wishlist given a set of products.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * A customer can only have a single wishlist.\n * The wishlist feature has to be activated.", - "operationId": "mergeProductOnWishlist", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "properties": { - "productIds": { - "description": "List product id", - "type": "array", - "items": { - "description": "product id", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - }, - "type": "object" - } - } - } - }, "responses": { "200": { - "description": "Returns a success response.", + "description": "Found cross sellings", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/CrossSellingElementCollection" } } } @@ -24488,54 +25518,47 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" + "ApiKey": [] } - ] - } - }, - "/customer/wishlist/delete/{productId}": { - "delete": { + ] + }, + "get": { "tags": [ - "Wishlist" + "Product" ], - "summary": "Remove a product from a wishlist", - "description": "Removes a product from a customer's wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "deleteProductOnWishlist", + "summary": "Fetch cross-selling groups of a product", + "description": "This route is used to load the cross sellings for a product. A product has several cross selling definitions in which several products are linked. The route returns the cross sellings together with the linked products", + "operationId": "readProductCrossSellingsGet", "parameters": [ { "name": "productId", "in": "path", - "description": "The identifier of the product to be removed from the wishlist.", + "description": "Product ID", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } + }, + { + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "description": "Returns a success response indicating a successful removal.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } - }, - "404": { - "description": "The removal of the product failed. Probably because the product could not be found on the wishlist.", + "description": "Found cross sellings", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/failure" + "$ref": "#/components/schemas/CrossSellingElementCollection" } } } @@ -24543,22 +25566,39 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/category": { + "/product/{productId}": { "post": { "tags": [ - "Category", - "Endpoints supporting Criteria " + "Product" ], - "summary": "Fetch a list of categories", - "description": "Perform a filtered search for categories.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", - "operationId": "readCategoryList", + "summary": "Fetch a single product", + "description": "This route is used to load a single product with the corresponding details. In addition to loading the data, the best variant of the product is determined when a parent id is passed.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", + "operationId": "readProductDetail", "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Product ID", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$'" + } + }, + { + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "in": "header", + "name": "sw-include-seo-urls", + "required": false, + "schema": { + "type": "boolean" + } + }, { "name": "sw-include-search-info", "in": "header", @@ -24573,6 +25613,24 @@ "default": "1" } }, + { + "description": "Instructs Shopware to skip loading the configurator data", + "in": "query", + "name": "skipConfigurator", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Instructs Shopware to skip loading the CMS page data", + "in": "query", + "name": "skipCmsPage", + "required": false, + "schema": { + "type": "boolean" + } + }, { "$ref": "#/components/parameters/swLanguageId" } @@ -24584,7 +25642,7 @@ "schema": { "allOf": [ { - "$ref": "#/components/schemas/Criteria" + "$ref": "#/components/schemas/NoneFieldsCriteria" } ] } @@ -24593,7 +25651,14 @@ }, "responses": { "200": { - "$ref": "#/components/responses/CategoryListResponse" + "description": "Product information along with variant groups and options", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductDetailResponse" + } + } + } } }, "security": [ @@ -24604,13 +25669,49 @@ }, "get": { "tags": [ - "Category", - "Endpoints supporting Criteria " + "Product" ], - "summary": "Fetch a list of categories", - "description": "Perform a filtered search for categories.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", - "operationId": "readCategoryListGet", + "summary": "Fetch a single product", + "description": "This route is used to load a single product with the corresponding details. In addition to loading the data, the best variant of the product is determined when a parent id is passed.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", + "operationId": "readProductDetailGet", "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Product ID", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$'" + } + }, + { + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "in": "header", + "name": "sw-include-seo-urls", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Instructs Shopware to skip loading the configurator data", + "in": "query", + "name": "skipConfigurator", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Instructs Shopware to skip loading the CMS page data", + "in": "query", + "name": "skipCmsPage", + "required": false, + "schema": { + "type": "boolean" + } + }, { "$ref": "#/components/parameters/criteriaPage" }, @@ -24641,9 +25742,6 @@ { "$ref": "#/components/parameters/criteriaAggregations" }, - { - "$ref": "#/components/parameters/criteriaFields" - }, { "$ref": "#/components/parameters/criteriaGrouping" }, @@ -24657,7 +25755,7 @@ "$ref": "#/components/parameters/criteriaExcludes" }, { - "$ref": "#/components/parameters/CompressedCriteria" + "$ref": "#/components/parameters/CompressedNoneFieldsCriteria" }, { "$ref": "#/components/parameters/swLanguageId" @@ -24665,7 +25763,14 @@ ], "responses": { "200": { - "$ref": "#/components/responses/CategoryListResponse" + "description": "Product information along with variant groups and options", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductDetailResponse" + } + } + } } }, "security": [ @@ -24675,25 +25780,16 @@ ] } }, - "/category/{navigationId}": { + "/product": { "post": { "tags": [ - "Category", + "Product", "Endpoints supporting Criteria " ], - "summary": "Fetch a single category", - "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", - "operationId": "readCategory", + "summary": "Fetch a list of products", + "description": "List products that match the given criteria. For performance reasons a limit should always be set.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", + "operationId": "readProduct", "parameters": [ - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, - "schema": { - "type": "boolean" - } - }, { "name": "sw-include-search-info", "in": "header", @@ -24708,35 +25804,18 @@ "default": "1" } }, - { - "name": "navigationId", - "in": "path", - "description": "Identifier of the category to be fetched", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "slots", - "in": "query", - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", - "schema": { - "type": "string" - } - }, { "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { + "required": false, "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/ProductListingCriteria" + "$ref": "#/components/schemas/Criteria" } ] } @@ -24745,14 +25824,7 @@ }, "responses": { "200": { - "description": "The loaded category with cms page", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Category" - } - } - } + "$ref": "#/components/responses/ProductListResponse" } }, "security": [ @@ -24763,51 +25835,18 @@ }, "get": { "tags": [ - "Category", + "Product", "Endpoints supporting Criteria " ], - "summary": "Fetch a single category", - "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", - "operationId": "readCategoryGet", + "summary": "Fetch a list of products", + "description": "List products that match the given criteria. For performance reasons a limit should always be set.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", + "operationId": "readProductGet", "parameters": [ - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "navigationId", - "in": "path", - "description": "Identifier of the category to be fetched", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "slots", - "in": "query", - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", - "schema": { - "type": "string" - } - }, { "$ref": "#/components/parameters/criteriaPage" }, - { - "name": "limit", - "in": "query", - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "schema": { - "type": "integer", - "minimum": 0 - } + { + "$ref": "#/components/parameters/criteriaLimit" }, { "$ref": "#/components/parameters/criteriaTerm" @@ -24849,89 +25888,7 @@ "$ref": "#/components/parameters/criteriaExcludes" }, { - "name": "order", - "in": "query", - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "schema": { - "type": "string" - } - }, - { - "name": "p", - "in": "query", - "description": "Search result page", - "schema": { - "type": "integer", - "default": 1 - } - }, - { - "name": "manufacturer", - "in": "query", - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", - "schema": { - "type": "string" - } - }, - { - "name": "min-price", - "in": "query", - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "max-price", - "in": "query", - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "rating", - "in": "query", - "description": "Filter products with a minimum average rating.", - "schema": { - "type": "integer" - } - }, - { - "name": "shipping-free", - "in": "query", - "description": "Filters products that are marked as shipping-free.", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "name": "properties", - "in": "query", - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", - "schema": { - "type": "string" - } - }, - { - "name": "reduce-aggregations", - "in": "query", - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", - "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } + "$ref": "#/components/parameters/CompressedCriteria" }, { "$ref": "#/components/parameters/swLanguageId" @@ -24939,14 +25896,7 @@ ], "responses": { "200": { - "description": "The loaded category with cms page", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Category" - } - } - } + "$ref": "#/components/responses/ProductListResponse" } }, "security": [ @@ -24956,15 +25906,25 @@ ] } }, - "/payment-method": { + "/product/{productId}/reviews": { "post": { "tags": [ - "Payment Method", + "Product", "Endpoints supporting Criteria " ], - "summary": "Loads all available payment methods", - "operationId": "readPaymentMethod", + "summary": "Fetch product reviews", + "description": "Perform a filtered search for product reviews.", + "operationId": "readProductReviews", "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Identifier of the product.", + "required": true, + "schema": { + "type": "string" + } + }, { "name": "sw-include-search-info", "in": "header", @@ -24984,22 +25944,13 @@ } ], "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Criteria" - }, - { - "properties": { - "onlyAvailable": { - "description": "List only available", - "type": "boolean" - } - }, - "type": "object" } ] } @@ -25008,7 +25959,29 @@ }, "responses": { "200": { - "$ref": "#/components/responses/PaymentMethodListResponse" + "description": "Entity search result containing product reviews", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductReview" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } } }, "security": [ @@ -25019,12 +25992,22 @@ }, "get": { "tags": [ - "Payment Method", + "Product", "Endpoints supporting Criteria " ], - "summary": "Loads all available payment methods", - "operationId": "readPaymentMethodGet", + "summary": "Fetch product reviews", + "description": "Perform a filtered search for product reviews.", + "operationId": "readProductReviewsGet", "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Identifier of the product.", + "required": true, + "schema": { + "type": "string" + } + }, { "$ref": "#/components/parameters/criteriaPage" }, @@ -25079,31 +26062,26 @@ ], "responses": { "200": { - "$ref": "#/components/responses/PaymentMethodListResponse" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/context": { - "get": { - "tags": [ - "System & Context" - ], - "summary": "Fetch the current context", - "description": "Fetches the current context. This includes for example the `customerGroup`, `currency`, `taxRules` and many more.", - "operationId": "readContext", - "responses": { - "200": { - "description": "Returns the current context.", + "description": "Entity search result containing product reviews", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SalesChannelContext" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductReview" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -25113,65 +26091,62 @@ { "ApiKey": [] } + ] + } + }, + "/product/{productId}/review": { + "post": { + "tags": [ + "Product" ], + "summary": "Save a product review", + "description": "Saves a review for a product. Reviews have to be activated in the settings.", + "operationId": "saveProductReview", "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Identifier of the product which is reviewed.", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, { "$ref": "#/components/parameters/swLanguageId" } - ] - }, - "patch": { - "tags": [ - "System & Context" ], - "summary": "Modify the current context", - "description": "Used for switching the context. A typical example would be changing the language or changing the currency.", - "operationId": "updateContext", "requestBody": { - "required": true, "content": { "application/json": { "schema": { - "properties": { - "currencyId": { - "description": "Currency", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "languageId": { - "description": "Language", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "billingAddressId": { - "description": "Billing Address", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shippingAddressId": { - "description": "Shipping Address", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "required": [ + "title", + "content", + "points" + ], + "properties": { + "name": { + "description": "The name of the review author. If not set, the first name of the customer is chosen.", + "type": "string" }, - "paymentMethodId": { - "description": "Payment Method", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "email": { + "description": "The email address of the review author. If not set, the email of the customer is chosen.", + "type": "string" }, - "shippingMethodId": { - "description": "Shipping Method", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "title": { + "description": "The title of the review.", + "type": "string" }, - "countryId": { - "description": "Country", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "content": { + "description": "The content of review.", + "type": "string" }, - "countryStateId": { - "description": "Country State", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "points": { + "description": "The review rating for the product.", + "type": "number", + "format": "double" } }, "type": "object" @@ -25181,37 +26156,119 @@ }, "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" + "description": "Success response indicating the review was saved successfully." } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } + ] + } + }, + "/product/purchase-limit": { + "get": { + "tags": [ + "Product" ], + "summary": "Fetch current purchase quantity limits for products", + "description": "Returns the current min/max/step purchase constraints for the given products, reflecting live stock or configured limitations. Intended for use on PDP to show actual values on product pages.", + "operationId": "readProductsPurchaseLimit", "parameters": [ + { + "name": "ids[]", + "in": "query", + "description": "List of product IDs to fetch quantity limits for.", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + }, { "$ref": "#/components/parameters/swLanguageId" } + ], + "responses": { + "200": { + "description": "Current quantity limits for the requested products", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductPurchaseLimit" + } + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + } + }, + "security": [ + { + "ApiKey": [] + } ] } }, - "/context/gateway": { + "/product/{productId}/find-variant": { "post": { + "tags": [ + "Product" + ], + "summary": "Search for a matching variant by product options.", + "description": "Performs a search for product variants and returns the best matching variant.", + "operationId": "searchProductVariantIds", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Product ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], "requestBody": { - "required": true, "content": { "application/json": { "schema": { "required": [ - "appName" + "options" ], "properties": { - "appName": { - "type": "string" + "options": { + "oneOf": [ + { + "description": "The options parameter for the variant to find.", + "type": "array", + "items": { + "type": "string" + } + }, + { + "description": "The options parameter as a map of groupId => optionId.", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + ] }, - "data": { - "type": "object" + "switchedGroup": { + "description": "The id of the option group that has been switched.", + "type": "string" } }, "type": "object" @@ -25219,57 +26276,61 @@ } } }, - "tags": [ - "Gateway" - ], - "summary": "Call the context gateway", - "description": "Call the context gateway, which is used to manipulate certain aspects of context (e.g. selected payment methods, register customer, etc.).", - "operationId": "contextGateway", "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "400": { - "description": "App server communication error" - }, - "422": { - "description": "Error provided by App Server with message to show customer" + "description": "Returns an FoundCombination struct containing the ids matching the search.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FindProductVariantRouteResponse" + } + } + } } }, "security": [ { "ApiKey": [] } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } ] }, "get": { "tags": [ - "Gateway" + "Product" ], - "summary": "Call the context gateway", - "description": "Call the context gateway, which is used to manipulate certain aspects of context (e.g. selected payment methods, register customer, etc.). Please prefer using the POST version of this endpoint.", - "operationId": "contextGatewayGet", + "summary": "Search for a matching variant by product options.", + "description": "Performs a search for product variants and returns the best matching variant.", + "operationId": "searchProductVariantIdsGet", "parameters": [ { - "name": "appName", - "in": "query", + "name": "productId", + "in": "path", + "description": "Product ID", "required": true, "schema": { "type": "string" } }, { - "name": "data", + "name": "options[]", + "in": "query", + "description": "The options parameter for the variant to find. Array of option IDs.", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "switchedGroup", "in": "query", + "description": "The id of the option group that has been switched.", + "required": false, "schema": { - "type": "object" - }, - "style": "deepObject" + "type": "string" + } }, { "$ref": "#/components/parameters/swLanguageId" @@ -25277,13 +26338,14 @@ ], "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "400": { - "description": "App server communication error" - }, - "422": { - "description": "Error provided by App Server with message to show customer" + "description": "Returns an FoundCombination struct containing the ids matching the search.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FindProductVariantRouteResponse" + } + } + } } }, "security": [ @@ -25293,31 +26355,23 @@ ] } }, - "/search": { + "/landing-page/{landingPageId}": { "post": { "tags": [ - "Product" + "Content", + "Endpoints supporting Criteria " ], - "summary": "Search for products", - "description": "Performs a search for products which can be used to display a product listing.", - "operationId": "searchPage", + "summary": "Fetch a landing page with the resolved CMS page", + "description": "Loads a landing page by its identifier and resolves the CMS page.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `cmsPage` - CMS page layout for the landing page\n- `seoUrls` - SEO-friendly URLs for the landing page across different sales channels", + "operationId": "readLandingPage", "parameters": [ { - "name": "p", - "in": "query", - "description": "The page number to fetch.", - "required": false, - "schema": { - "type": "integer" - } - }, - { - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "in": "header", - "name": "sw-include-seo-urls", - "required": false, + "name": "landingPageId", + "in": "path", + "description": "Identifier of the landing page.", + "required": true, "schema": { - "type": "boolean" + "type": "string" } }, { @@ -25335,28 +26389,32 @@ } }, { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "search": { - "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", - "type": "string" - } - }, - "type": "object" - }, + "$ref": "#/components/parameters/swLanguageId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "allOf": [ { - "$ref": "#/components/schemas/ProductListingCriteria" + "$ref": "#/components/schemas/Criteria" }, { - "$ref": "#/components/schemas/ProductListingFlags" + "allOf": [ + { + "properties": { + "slots": { + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/ProductListingCriteria" + } + ] } ] } @@ -25365,14 +26423,17 @@ }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", + "description": "The loaded landing page with cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "$ref": "#/components/schemas/LandingPage" } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -25383,28 +26444,34 @@ }, "get": { "tags": [ - "Product" + "Content", + "Endpoints supporting Criteria " ], - "summary": "Search for products", - "description": "Performs a search for products which can be used to display a product listing.", - "operationId": "searchPageGet", + "summary": "Fetch a landing page with the resolved CMS page", + "description": "Loads a landing page by its identifier and resolves the CMS page.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `cmsPage` - CMS page layout for the landing page\n- `seoUrls` - SEO-friendly URLs for the landing page across different sales channels", + "operationId": "readLandingPageGet", "parameters": [ { - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "in": "header", - "name": "sw-include-seo-urls", - "required": false, + "name": "landingPageId", + "in": "path", + "description": "Identifier of the landing page.", + "required": true, "schema": { - "type": "boolean" + "type": "string" } }, { - "name": "search", - "in": "query", - "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", "required": false, "schema": { - "type": "string" + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" } }, { @@ -25543,212 +26610,28 @@ ] } }, - { - "$ref": "#/components/parameters/noAggregations" - }, - { - "$ref": "#/components/parameters/onlyAggregations" - }, { "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", + "description": "The loaded landing page with cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/document/download/{documentId}/{deepLinkCode}": { - "post": { - "tags": [ - "Document" - ], - "summary": "Download generated document", - "description": "Returns generated document to download.", - "operationId": "download", - "parameters": [ - { - "name": "documentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "deepLinkCode", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "email": { - "type": "string" - }, - "zipcode": { - "type": "string" - } - }, - "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." - } - } - } - }, - "responses": { - "200": { - "description": "Success", - "content": { - "application/pdf": { - "schema": { - "type": "string", - "format": "binary" - } - }, - "text/html": { - "schema": { - "type": "string" - } - }, - "application/xml": { - "schema": { - "type": "string" - } - } - } - }, - "204": { - "description": "DEPRECATED: Returns a no content response when no document is found. Will be changed in v6.8.0.0 and returns a 404 response instead." - }, - "403": { - "description": "Forbidden." - }, - "404": { - "description": "Document not found." - }, - "406": { - "description": "The requested mime type is not supported." - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - }, - "get": { - "tags": [ - "Document" - ], - "summary": "Download generated document", - "description": "Returns generated document to download.", - "operationId": "downloadGet", - "parameters": [ - { - "name": "documentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "deepLinkCode", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "email", - "required": false, - "in": "query", - "schema": { - "type": "string" - }, - "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." - }, - { - "name": "zipcode", - "required": false, - "in": "query", - "schema": { - "type": "string" - }, - "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." - }, - { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "responses": { - "200": { - "description": "Success", - "content": { - "application/pdf": { - "schema": { - "type": "string", - "format": "binary" - } - }, - "text/html": { - "schema": { - "type": "string" - } - }, - "application/xml": { - "schema": { - "type": "string" + "$ref": "#/components/schemas/LandingPage" } } } }, - "204": { - "description": "DEPRECATED: Returns a no content response when no document is found. Will be changed in v6.8.0.0 and returns a 404 response instead." - }, - "403": { - "description": "Forbidden." - }, "404": { - "description": "Document not found." - }, - "406": { - "description": "The requested mime type is not supported." + "$ref": "#/components/responses/404" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } diff --git a/storeapi.summary.json b/storeapi.summary.json index db49a8b..cc31123 100644 --- a/storeapi.summary.json +++ b/storeapi.summary.json @@ -2,6 +2,7 @@ "paths": [ "/_info/openapi3.json", "/_info/routes", + "/_mcp", "/account/address", "/account/address/default-billing/{addressId}", "/account/address/default-shipping/{addressId}", @@ -280,6 +281,7 @@ "SalesChannelAnalytics", "SalesChannelContext", "SalesChannelDomain", + "SalesChannelFile", "SalesChannelTrackingCustomer", "SalesChannelTrackingOrder", "SalesChannelType", From bfbb0245701048187dea455c880ab3eb91a31433 Mon Sep 17 00:00:00 2001 From: shopwareBot Date: Wed, 8 Jul 2026 09:49:37 +0000 Subject: [PATCH 16/16] [create-pull-request] automated change --- SwagDigitalSalesRooms-storeapi.json | 20200 +++++++++++++------------- 1 file changed, 10088 insertions(+), 10112 deletions(-) diff --git a/SwagDigitalSalesRooms-storeapi.json b/SwagDigitalSalesRooms-storeapi.json index a9d12ad..c78a48f 100644 --- a/SwagDigitalSalesRooms-storeapi.json +++ b/SwagDigitalSalesRooms-storeapi.json @@ -1074,161 +1074,315 @@ } ] }, - "Category": { + "CountryJsonApi": { + "description": "Added since version: 6.0.0.0", + "allOf": [ + { + "$ref": "#/components/schemas/resource" + }, + { + "required": [ + "id", + "name", + "addressFormat" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "name": { + "type": "string" + }, + "iso": { + "description": "Internationally recognized two-letter country codes. For example, DE, IN, NO, etc.", + "type": "string" + }, + "position": { + "description": "Numerical value that indicates the order in which the defined countries must be displayed in the frontend.", + "type": "integer", + "format": "int64" + }, + "active": { + "description": "When boolean value is `true`, the country is available for selection in the storefront.", + "type": "boolean" + }, + "shippingAvailable": { + "description": "The shipping availability for a country is enabled when boolean value is `true`.", + "type": "boolean" + }, + "iso3": { + "description": "Internationally recognized three-letter country codes. For example, DEU, IND, NOR, etc.", + "type": "string" + }, + "displayStateInRegistration": { + "description": "The country's state is displayed in the address when boolean value is `true`.", + "type": "boolean" + }, + "forceStateInRegistration": { + "description": "State details in the address are force included when boolean value is `true`.", + "type": "boolean" + }, + "checkVatIdPattern": { + "description": "Verify if VAT ID is valid or not.", + "type": "boolean" + }, + "vatIdRequired": { + "description": "Set to true, if VAT ID is to be made mandatory.", + "type": "boolean" + }, + "vatIdPattern": { + "description": "Unique VAT ID with country code and numbers, for example - GB999 9999", + "type": "string" + }, + "customFields": { + "type": "object" + }, + "customerTax": { + "required": [ + "enabled", + "currencyId", + "amount" + ], + "properties": { + "enabled": { + "type": "boolean" + }, + "currencyId": { + "type": "string" + }, + "amount": { + "type": "number", + "format": "float" + } + }, + "type": "object" + }, + "companyTax": { + "required": [ + "enabled", + "currencyId", + "amount" + ], + "properties": { + "enabled": { + "type": "boolean" + }, + "currencyId": { + "type": "string" + }, + "amount": { + "type": "number", + "format": "float" + } + }, + "type": "object" + }, + "postalCodeRequired": { + "description": "The postal code is made mandatory specification in the address, when boolean value is `true`.", + "type": "boolean" + }, + "checkPostalCodePattern": { + "description": "Verify for valid postal code pattern.", + "type": "boolean" + }, + "checkAdvancedPostalCodePattern": { + "description": "Verify for advanced postal code pattern.", + "type": "boolean" + }, + "advancedPostalCodePattern": { + "description": "Wildcard formatted zip codes to allow easy searching in the frontend based on initial constants, for example - 24****, 1856**.", + "type": "string" + }, + "addressFormat": { + "type": "object" + }, + "defaultPostalCodePattern": { + "description": "Default pattern of postal or zip code.", + "type": "string" + }, + "isEu": { + "type": "boolean" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + }, + "relationships": { + "properties": { + "states": { + "description": "States/provinces/regions within the country", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/country/59716c97497eb9694541f7c3d37b1a4d/states" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "country_state" + }, + "id": { + "type": "string", + "example": "34d955a0df5f7af9c9b4e4dccb3c3564" + } + } + } + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + ] + }, + "Country": { "description": "Added since version: 6.0.0.0", "required": [ - "apiAlias", - "breadcrumb", - "children", - "childCount", - "translated", - "type", "id", - "name" + "name", + "addressFormat" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "name": { + "type": "string" }, - "parentId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "iso": { + "description": "Internationally recognized two-letter country codes. For example, DE, IN, NO, etc.", + "type": "string" }, - "parentVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "position": { + "description": "Numerical value that indicates the order in which the defined countries must be displayed in the frontend.", + "type": "integer", + "format": "int64" }, - "afterCategoryId": { - "description": "Unique identity of the category under which the new category is to be created.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "active": { + "description": "When boolean value is `true`, the country is available for selection in the storefront.", + "type": "boolean" }, - "afterCategoryVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "shippingAvailable": { + "description": "The shipping availability for a country is enabled when boolean value is `true`.", + "type": "boolean" }, - "mediaId": { - "description": "Unique identity of media added to identify category.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "iso3": { + "description": "Internationally recognized three-letter country codes. For example, DEU, IND, NOR, etc.", + "type": "string" }, - "displayNestedProducts": { - "description": "Shows nested categories on a product category page.", + "displayStateInRegistration": { + "description": "The country's state is displayed in the address when boolean value is `true`.", "type": "boolean" }, - "breadcrumb": { - "type": "array", - "items": { - "type": "string", - "additionalProperties": false - }, - "readOnly": true + "forceStateInRegistration": { + "description": "State details in the address are force included when boolean value is `true`.", + "type": "boolean" }, - "level": { - "description": "An integer value that denotes the level of nesting of a particular category located in an hierarchical category tree.", - "type": "integer", - "format": "int64", - "readOnly": true + "checkVatIdPattern": { + "description": "Verify if VAT ID is valid or not.", + "type": "boolean" }, - "path": { - "description": "A relative URL to the category.", - "type": "string", - "readOnly": true - }, - "childCount": { - "type": "number", - "format": "int64", - "readOnly": true - }, - "type": { - "description": "Type of categories like `page`, `folder`, `link`.", - "type": "string", - "enum": [ - "page", - "link", - "folder" - ] - }, - "productAssignmentType": { - "description": "Type of product assignment: Dynamic product group as or `product_stream` or Manual assignment as `product`.", - "type": "string" - }, - "visible": { - "description": "Displays categories on category page when true.", - "type": "boolean" - }, - "active": { - "description": "When boolean value is `true`, the category is listed for selection.", + "vatIdRequired": { + "description": "Set to true, if VAT ID is to be made mandatory.", "type": "boolean" }, - "visibleChildCount": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "integer", - "format": "int64" - }, - "name": { + "vatIdPattern": { + "description": "Unique VAT ID with country code and numbers, for example - GB999 9999", "type": "string" }, "customFields": { "type": "object" }, - "linkType": { - "type": "string", - "enum": [ - "category", - "product", - "external", - "landing_page" - ] + "customerTax": { + "required": [ + "enabled", + "currencyId", + "amount" + ], + "properties": { + "enabled": { + "type": "boolean" + }, + "currencyId": { + "type": "string" + }, + "amount": { + "type": "number", + "format": "float" + } + }, + "type": "object" }, - "internalLink": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "companyTax": { + "required": [ + "enabled", + "currencyId", + "amount" + ], + "properties": { + "enabled": { + "type": "boolean" + }, + "currencyId": { + "type": "string" + }, + "amount": { + "type": "number", + "format": "float" + } + }, + "type": "object" }, - "externalLink": { - "type": "string" + "postalCodeRequired": { + "description": "The postal code is made mandatory specification in the address, when boolean value is `true`.", + "type": "boolean" }, - "linkNewTab": { + "checkPostalCodePattern": { + "description": "Verify for valid postal code pattern.", "type": "boolean" }, - "description": { - "type": "string" + "checkAdvancedPostalCodePattern": { + "description": "Verify for advanced postal code pattern.", + "type": "boolean" }, - "metaTitle": { + "advancedPostalCodePattern": { + "description": "Wildcard formatted zip codes to allow easy searching in the frontend based on initial constants, for example - 24****, 1856**.", "type": "string" }, - "metaDescription": { - "type": "string" + "addressFormat": { + "type": "object" }, - "keywords": { + "defaultPostalCodePattern": { + "description": "Default pattern of postal or zip code.", "type": "string" }, - "cmsPageId": { - "description": "Unique identity of CMS page.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "cmsPageVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "customEntityTypeId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "cmsPageIdSwitched": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean", - "deprecated": true - }, - "seoUrl": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "string" + "isEu": { + "type": "boolean" }, "createdAt": { "type": "string", @@ -1241,153 +1395,111 @@ "readOnly": true }, "translated": { - "type": "object", - "additionalProperties": true, - "properties": { - "breadcrumb": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "breadcrumb" - ] - }, - "parent": { - "$ref": "#/components/schemas/Category", - "description": "Unique identity of category." - }, - "children": { - "description": "Child categories within this category for hierarchical navigation", - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - }, - "media": { - "$ref": "#/components/schemas/Media", - "description": "Category image or banner" - }, - "tags": { - "description": "Tags for organizing and filtering categories", - "type": "array", - "items": { - "$ref": "#/components/schemas/Tag" - } - }, - "cmsPage": { - "$ref": "#/components/schemas/CmsPage", - "description": "CMS page layout for the category" + "type": "object" }, - "seoUrls": { - "description": "SEO-friendly URLs for the category across different sales channels", + "states": { + "description": "States/provinces/regions within the country", "type": "array", "items": { - "$ref": "#/components/schemas/SeoUrl" + "$ref": "#/components/schemas/CountryState" } - }, - "apiAlias": { - "type": "string", - "enum": [ - "category" - ] } }, "type": "object" }, - "CmsBlock": { + "CountryStateJsonApi": { + "description": "Added since version: 6.0.0.0", + "allOf": [ + { + "$ref": "#/components/schemas/resource" + }, + { + "required": [ + "id", + "countryId", + "shortCode", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryId": { + "description": "Unique identity of the country.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shortCode": { + "description": "An abbreviation for the country's state.", + "type": "string" + }, + "name": { + "type": "string" + }, + "position": { + "description": "Numerical value that indicates the order in which the defined states must be displayed in the frontend.", + "type": "integer", + "format": "int64" + }, + "active": { + "description": "When boolean value is `true`, the country's state is available for selection in the storefront.", + "type": "boolean" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + } + ] + }, + "CountryState": { "description": "Added since version: 6.0.0.0", "required": [ - "apiAlias", - "slots", "id", - "position", - "type", - "sectionId" + "countryId", + "shortCode", + "name" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "cmsSectionVersionId": { + "countryId": { + "description": "Unique identity of the country.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "position": { - "description": "Order of the block indicated by number like 0, 1, 2,...", - "type": "integer", - "format": "int64" - }, - "type": { - "description": "Type of block can be 'image`, `text`, 'product-listing`, `image-two-column`, etc.", + "shortCode": { + "description": "An abbreviation for the country's state.", "type": "string" }, "name": { - "description": "Unique name of the CMS Block.", - "type": "string" - }, - "sectionPosition": { - "description": "Position of the section. It can either be `main` or `sidebar`.", - "type": "string" - }, - "marginTop": { - "description": "Defines the margin area on the top of an element.", - "type": "string" - }, - "marginBottom": { - "description": "Defines for the margin area on the bottom of an element.", - "type": "string" - }, - "marginLeft": { - "description": "Defines for the margin area on the left of an element.", - "type": "string" - }, - "marginRight": { - "description": "Defines the margin area on the right of an element.", - "type": "string" - }, - "backgroundColor": { - "description": "Defines the background color of an element.", - "type": "string" - }, - "backgroundMediaId": { - "description": "Unique identity of background media.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "backgroundMediaMode": { - "description": "Background media mode accept values `cover`, `auto`, `contain`.", - "type": "string" - }, - "cssClass": { - "description": "One or more CSS classes added and separated by spaces.", "type": "string" }, - "visibility": { - "properties": { - "mobile": { - "type": "boolean" - }, - "desktop": { - "type": "boolean" - }, - "tablet": { - "type": "boolean" - } - }, - "type": "object" + "position": { + "description": "Numerical value that indicates the order in which the defined states must be displayed in the frontend.", + "type": "integer", + "format": "int64" }, - "sectionId": { - "description": "Unique identity of section.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "active": { + "description": "When boolean value is `true`, the country's state is available for selection in the storefront.", + "type": "boolean" }, "customFields": { "type": "object" @@ -1402,72 +1514,225 @@ "format": "date-time", "readOnly": true }, - "backgroundMedia": { - "$ref": "#/components/schemas/Media" - }, - "slots": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CmsSlot" - } - }, - "apiAlias": { - "type": "string", - "enum": [ - "cms_block" - ] + "translated": { + "type": "object" } }, "type": "object" }, - "CmsPage": { + "CurrencyJsonApi": { + "description": "Added since version: 6.0.0.0", + "allOf": [ + { + "$ref": "#/components/schemas/resource" + }, + { + "required": [ + "id", + "factor", + "symbol", + "isoCode", + "itemRounding", + "totalRounding", + "shortName", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "factor": { + "description": "Currency exchange rate.", + "type": "number", + "format": "float" + }, + "symbol": { + "description": "A currency symbol is a graphical representation used as shorthand for a currency's name, for example US Dollar - $", + "type": "string" + }, + "isoCode": { + "description": "Standard international three digit code to represent currency. For example, USD.", + "type": "string" + }, + "shortName": { + "type": "string" + }, + "name": { + "type": "string" + }, + "position": { + "description": "The order of the tabs for multiple currencies defined.", + "type": "integer", + "format": "int64" + }, + "isSystemDefault": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "boolean" + }, + "taxFreeFrom": { + "description": "The value from which the tax must be exempted.", + "type": "number", + "format": "float" + }, + "customFields": { + "type": "object" + }, + "itemRounding": { + "required": [ + "decimals", + "interval", + "roundForNet" + ], + "properties": { + "decimals": { + "type": "integer", + "format": "int64" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" + } + }, + "type": "object" + }, + "totalRounding": { + "required": [ + "decimals", + "interval", + "roundForNet" + ], + "properties": { + "decimals": { + "type": "integer", + "format": "int64" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" + } + }, + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + } + ] + }, + "Currency": { "description": "Added since version: 6.0.0.0", "required": [ - "apiAlias", - "sections", "id", - "type" + "factor", + "symbol", + "isoCode", + "itemRounding", + "totalRounding", + "shortName", + "name" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "factor": { + "description": "Currency exchange rate.", + "type": "number", + "format": "float" }, - "name": { + "symbol": { + "description": "A currency symbol is a graphical representation used as shorthand for a currency's name, for example US Dollar - $", "type": "string" }, - "type": { - "description": "CMS page types can be `landingpage`, `page`, `product_list`, `product_detail`.", + "isoCode": { + "description": "Standard international three digit code to represent currency. For example, USD.", "type": "string" }, - "entity": { - "description": "This field will be implemented in the future.", + "shortName": { "type": "string" }, - "cssClass": { - "description": "One or more CSS classes added and separated by spaces.", + "name": { "type": "string" }, - "config": { - "properties": { - "backgroundColor": { - "type": "string" - } - }, - "type": "object" + "position": { + "description": "The order of the tabs for multiple currencies defined.", + "type": "integer", + "format": "int64" }, - "previewMediaId": { - "description": "Unique identity of media to be previewed.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "isSystemDefault": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "boolean" + }, + "taxFreeFrom": { + "description": "The value from which the tax must be exempted.", + "type": "number", + "format": "float" }, "customFields": { "type": "object" }, + "itemRounding": { + "required": [ + "decimals", + "interval", + "roundForNet" + ], + "properties": { + "decimals": { + "type": "integer", + "format": "int64" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" + } + }, + "type": "object" + }, + "totalRounding": { + "required": [ + "decimals", + "interval", + "roundForNet" + ], + "properties": { + "decimals": { + "type": "integer", + "format": "int64" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" + } + }, + "type": "object" + }, "createdAt": { "type": "string", "format": "date-time", @@ -1480,117 +1745,57 @@ }, "translated": { "type": "object" - }, - "sections": { - "description": "Content sections within the CMS page (layout blocks containing slots)", - "type": "array", - "items": { - "$ref": "#/components/schemas/CmsSection" - } - }, - "previewMedia": { - "$ref": "#/components/schemas/Media", - "description": "Preview image for the CMS page in admin panel and page selection" - }, - "landingPages": { - "description": "Landing pages using this CMS layout", - "type": "array", - "items": { - "$ref": "#/components/schemas/LandingPage" - } - }, - "apiAlias": { - "type": "string", - "enum": [ - "cms_page" - ] } }, "type": "object" }, - "CmsSection": { - "description": "Added since version: 6.0.0.0", - "required": [ - "apiAlias", - "blocks", - "id", - "position", - "type", - "pageId" - ], + "CurrencyCountryRounding": { + "description": "Added since version: 6.4.0.0", "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "cmsPageVersionId": { + "createdAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "position": { - "description": "Position of occurrence of each section denoted by numerical values 0, 1, 2...", - "type": "integer", - "format": "int64" + "format": "date-time", + "readOnly": true }, - "type": { - "description": "Types of sections can be `default` or `sidebar`.", + "updatedAt": { "type": "string", - "enum": [ - "default", - "sidebar" - ] - }, - "name": { - "description": "Name of the CMS section defined.", - "type": "string" - }, - "sizingMode": { - "description": "Sizing mode can be `boxed` or `full_width`.", - "type": "string" - }, - "mobileBehavior": { - "description": "Hides the sidebar on mobile viewports. It can hold values such as 'mobile', 'wrap', any other string or be unset.", - "type": "string" - }, - "backgroundColor": { - "description": "Background color of CMS page.", - "type": "string" - }, - "backgroundMediaId": { - "description": "Unique identity of CMS section's background media.", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "CustomEntity": { + "description": "Added since version: 6.4.9.0", + "properties": { + "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "backgroundMediaMode": { - "description": "Background media mode can be `cover`, `auto` or `contain`.", - "type": "string" - }, - "cssClass": { - "description": "One or more CSS classes added and separated by spaces.", - "type": "string" + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, - "pageId": { - "description": "Unique identity of page where CMS section is defined.", + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "CustomField": { + "description": "Added since version: 6.0.0.0", + "properties": { + "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "visibility": { - "properties": { - "mobile": { - "type": "boolean" - }, - "desktop": { - "type": "boolean" - }, - "tablet": { - "type": "boolean" - } - }, - "type": "object" - }, - "customFields": { - "type": "object" - }, "createdAt": { "type": "string", "format": "date-time", @@ -1600,81 +1805,34 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "page": { - "$ref": "#/components/schemas/CmsPage" - }, - "backgroundMedia": { - "$ref": "#/components/schemas/Media" - }, - "blocks": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CmsBlock" - } - }, - "apiAlias": { - "type": "string", - "enum": [ - "cms_section" - ] } }, "type": "object" }, - "CmsSlot": { + "CustomFieldSet": { "description": "Added since version: 6.0.0.0", - "required": [ - "apiAlias", - "id", - "type", - "slot", - "blockId" - ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { + "createdAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "cmsBlockVersionId": { + "updatedAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "fieldConfig": { - "type": "object" - }, - "type": { - "description": "It indicates the types of content that can be defined within the slot which includes `image`, `text`, `form`, `product-listing`, `category-navigation`, `product-box`, `buy-box`, `sidebar-filter`, etc.", - "type": "string" - }, - "slot": { - "description": "Key-value pair to configure which element to be shown in which slot.", - "type": "string" - }, - "locked": { - "type": "boolean" - }, - "config": { - "type": "object" - }, - "customFields": { - "type": "object", - "properties": { - "_uniqueIdentifier": { - "type": "string" - } - } - }, - "data": { - "type": "object", + "format": "date-time", "readOnly": true - }, - "blockId": { - "description": "Unique identity of CMS block where slot is defined.", + } + }, + "type": "object" + }, + "CustomFieldSetRelation": { + "description": "Added since version: 6.0.0.0", + "properties": { + "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, @@ -1687,38 +1845,11 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "translated": { - "type": "object", - "properties": { - "config": { - "type": "object", - "properties": { - "content": { - "type": "object", - "properties": { - "value": { - "type": "string" - } - } - } - } - } - } - }, - "block": { - "$ref": "#/components/schemas/CmsBlock" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cms_slot" - ] } }, "type": "object" }, - "CountryJsonApi": { + "CustomerAddressJsonApi": { "description": "Added since version: 6.0.0.0", "allOf": [ { @@ -1727,125 +1858,95 @@ { "required": [ "id", - "name", - "addressFormat" + "customerId", + "countryId", + "firstName", + "lastName", + "city", + "street" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "name": { - "type": "string" - }, - "iso": { - "description": "Internationally recognized two-letter country codes. For example, DE, IN, NO, etc.", - "type": "string" + "customerId": { + "description": "Unique identity of customer.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "position": { - "description": "Numerical value that indicates the order in which the defined countries must be displayed in the frontend.", - "type": "integer", - "format": "int64" + "countryId": { + "description": "Unique identity of country.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "active": { - "description": "When boolean value is `true`, the country is available for selection in the storefront.", - "type": "boolean" + "countryStateId": { + "description": "Unique identity of country's state.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "shippingAvailable": { - "description": "The shipping availability for a country is enabled when boolean value is `true`.", - "type": "boolean" + "salutationId": { + "description": "Unique identity of salutation.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "iso3": { - "description": "Internationally recognized three-letter country codes. For example, DEU, IND, NOR, etc.", + "firstName": { + "description": "First name of the customer.", "type": "string" }, - "displayStateInRegistration": { - "description": "The country's state is displayed in the address when boolean value is `true`.", - "type": "boolean" - }, - "forceStateInRegistration": { - "description": "State details in the address are force included when boolean value is `true`.", - "type": "boolean" + "lastName": { + "description": "Last name of the customer.", + "type": "string" }, - "checkVatIdPattern": { - "description": "Verify if VAT ID is valid or not.", - "type": "boolean" + "zipcode": { + "description": "Postal or zip code of customer's address.", + "type": "string" }, - "vatIdRequired": { - "description": "Set to true, if VAT ID is to be made mandatory.", - "type": "boolean" + "city": { + "description": "Name of customer's city.", + "type": "string" }, - "vatIdPattern": { - "description": "Unique VAT ID with country code and numbers, for example - GB999 9999", + "company": { + "description": "Name of customer's company.", "type": "string" }, - "customFields": { - "type": "object" + "street": { + "description": "Name of customer's street.", + "type": "string" }, - "customerTax": { - "required": [ - "enabled", - "currencyId", - "amount" - ], - "properties": { - "enabled": { - "type": "boolean" - }, - "currencyId": { - "type": "string" - }, - "amount": { - "type": "number", - "format": "float" - } - }, - "type": "object" + "department": { + "description": "Name of customer's department.", + "type": "string" }, - "companyTax": { - "required": [ - "enabled", - "currencyId", - "amount" - ], - "properties": { - "enabled": { - "type": "boolean" - }, - "currencyId": { - "type": "string" - }, - "amount": { - "type": "number", - "format": "float" - } - }, - "type": "object" + "title": { + "description": "Titles given to customer like Dr. , Prof., etc", + "type": "string" }, - "postalCodeRequired": { - "description": "The postal code is made mandatory specification in the address, when boolean value is `true`.", - "type": "boolean" + "phoneNumber": { + "description": "Customer's phone number.", + "type": "string" }, - "checkPostalCodePattern": { - "description": "Verify for valid postal code pattern.", - "type": "boolean" + "additionalAddressLine1": { + "description": "Additional customer's address information.", + "type": "string" }, - "checkAdvancedPostalCodePattern": { - "description": "Verify for advanced postal code pattern.", - "type": "boolean" + "additionalAddressLine2": { + "description": "Additional customer's address information.", + "type": "string" }, - "advancedPostalCodePattern": { - "description": "Wildcard formatted zip codes to allow easy searching in the frontend based on initial constants, for example - 24****, 1856**.", + "hash": { + "description": "Runtime field, cannot be used as part of the criteria.", "type": "string" }, - "addressFormat": { + "customFields": { "type": "object" }, - "defaultPostalCodePattern": { - "description": "Default pattern of postal or zip code.", - "type": "string" + "isDefaultBillingAddress": { + "description": "Added since version: 6.7.7.0. Runtime field, cannot be used as part of the criteria.", + "type": "boolean" }, - "isEu": { + "isDefaultShippingAddress": { + "description": "Added since version: 6.7.7.0. Runtime field, cannot be used as part of the criteria.", "type": "boolean" }, "createdAt": { @@ -1858,13 +1959,9 @@ "format": "date-time", "readOnly": true }, - "translated": { - "type": "object" - }, "relationships": { "properties": { - "states": { - "description": "States/provinces/regions within the country", + "country": { "properties": { "links": { "type": "object", @@ -1872,161 +1969,99 @@ "related": { "type": "string", "format": "uri-reference", - "example": "/country/59716c97497eb9694541f7c3d37b1a4d/states" + "example": "/customer-address/1b4b031005f93d02d887e7d66efb653b/country" } } }, "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "country_state" - }, - "id": { - "type": "string", - "example": "34d955a0df5f7af9c9b4e4dccb3c3564" - } + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "country" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "e909c2d7067ea37437cf97fe11d91bd0" } } } }, "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - ] - }, - "Country": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "name", - "addressFormat" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "name": { - "type": "string" - }, - "iso": { - "description": "Internationally recognized two-letter country codes. For example, DE, IN, NO, etc.", - "type": "string" - }, - "position": { - "description": "Numerical value that indicates the order in which the defined countries must be displayed in the frontend.", - "type": "integer", - "format": "int64" - }, - "active": { - "description": "When boolean value is `true`, the country is available for selection in the storefront.", - "type": "boolean" - }, - "shippingAvailable": { - "description": "The shipping availability for a country is enabled when boolean value is `true`.", - "type": "boolean" - }, - "iso3": { - "description": "Internationally recognized three-letter country codes. For example, DEU, IND, NOR, etc.", - "type": "string" - }, - "displayStateInRegistration": { - "description": "The country's state is displayed in the address when boolean value is `true`.", - "type": "boolean" - }, - "forceStateInRegistration": { - "description": "State details in the address are force included when boolean value is `true`.", - "type": "boolean" - }, - "checkVatIdPattern": { - "description": "Verify if VAT ID is valid or not.", - "type": "boolean" - }, - "vatIdRequired": { - "description": "Set to true, if VAT ID is to be made mandatory.", - "type": "boolean" - }, - "vatIdPattern": { - "description": "Unique VAT ID with country code and numbers, for example - GB999 9999", - "type": "string" - }, - "customFields": { - "type": "object" - }, - "customerTax": { - "required": [ - "enabled", - "currencyId", - "amount" - ], - "properties": { - "enabled": { - "type": "boolean" - }, - "currencyId": { - "type": "string" - }, - "amount": { - "type": "number", - "format": "float" - } - }, - "type": "object" - }, - "companyTax": { - "required": [ - "enabled", - "currencyId", - "amount" - ], - "properties": { - "enabled": { - "type": "boolean" - }, - "currencyId": { - "type": "string" - }, - "amount": { - "type": "number", - "format": "float" + }, + "countryState": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/customer-address/1b4b031005f93d02d887e7d66efb653b/countryState" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "country_state" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "cb6a9764567191fb74fe28d8d6a4819d" + } + } + } + }, + "type": "object" + }, + "salutation": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/customer-address/1b4b031005f93d02d887e7d66efb653b/salutation" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "salutation" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "7a6efb02514153b5aa9a8f40c6f8bcc3" + } + } + } + }, + "type": "object" + } + }, + "type": "object" } }, "type": "object" - }, - "postalCodeRequired": { - "description": "The postal code is made mandatory specification in the address, when boolean value is `true`.", - "type": "boolean" - }, - "checkPostalCodePattern": { - "description": "Verify for valid postal code pattern.", - "type": "boolean" - }, - "checkAdvancedPostalCodePattern": { - "description": "Verify for advanced postal code pattern.", - "type": "boolean" - }, - "advancedPostalCodePattern": { - "description": "Wildcard formatted zip codes to allow easy searching in the frontend based on initial constants, for example - 24****, 1856**.", - "type": "string" - }, - "addressFormat": { - "type": "object" - }, - "defaultPostalCodePattern": { - "description": "Default pattern of postal or zip code.", - "type": "string" - }, - "isEu": { - "type": "boolean" + } + ] + }, + "CustomerRecovery": { + "description": "Added since version: 6.1.0.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, "createdAt": { "type": "string", @@ -2037,116 +2072,53 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "translated": { - "type": "object" - }, - "states": { - "description": "States/provinces/regions within the country", - "type": "array", - "items": { - "$ref": "#/components/schemas/CountryState" - } } }, "type": "object" }, - "CountryStateJsonApi": { + "CustomerTag": { "description": "Added since version: 6.0.0.0", - "allOf": [ - { - "$ref": "#/components/schemas/resource" + "required": [ + "customerId", + "tagId" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - { - "required": [ - "id", - "countryId", - "shortCode", - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryId": { - "description": "Unique identity of the country.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shortCode": { - "description": "An abbreviation for the country's state.", - "type": "string" - }, - "name": { - "type": "string" - }, - "position": { - "description": "Numerical value that indicates the order in which the defined states must be displayed in the frontend.", - "type": "integer", - "format": "int64" - }, - "active": { - "description": "When boolean value is `true`, the country's state is available for selection in the storefront.", - "type": "boolean" - }, - "customFields": { - "type": "object" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - } - }, - "type": "object" + "customerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "tagId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "tag": { + "$ref": "#/components/schemas/Tag" } - ] + }, + "type": "object" }, - "CountryState": { - "description": "Added since version: 6.0.0.0", + "CustomerWishlist": { + "description": "Added since version: 6.3.4.0", "required": [ "id", - "countryId", - "shortCode", - "name" + "customerId" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "countryId": { - "description": "Unique identity of the country.", + "customerId": { + "description": "Unique identity of the customer.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "shortCode": { - "description": "An abbreviation for the country's state.", - "type": "string" - }, - "name": { - "type": "string" - }, - "position": { - "description": "Numerical value that indicates the order in which the defined states must be displayed in the frontend.", - "type": "integer", - "format": "int64" - }, - "active": { - "description": "When boolean value is `true`, the country's state is available for selection in the storefront.", - "type": "boolean" - }, - "customFields": { - "type": "object" + "customFields": { + "type": "object" }, "createdAt": { "type": "string", @@ -2158,225 +2130,82 @@ "format": "date-time", "readOnly": true }, - "translated": { - "type": "object" + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomerWishlistProduct" + } } }, "type": "object" }, - "CurrencyJsonApi": { - "description": "Added since version: 6.0.0.0", - "allOf": [ - { - "$ref": "#/components/schemas/resource" - }, - { - "required": [ - "id", - "factor", - "symbol", - "isoCode", - "itemRounding", - "totalRounding", - "shortName", - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "factor": { - "description": "Currency exchange rate.", - "type": "number", - "format": "float" - }, - "symbol": { - "description": "A currency symbol is a graphical representation used as shorthand for a currency's name, for example US Dollar - $", - "type": "string" - }, - "isoCode": { - "description": "Standard international three digit code to represent currency. For example, USD.", - "type": "string" - }, - "shortName": { - "type": "string" - }, - "name": { - "type": "string" - }, - "position": { - "description": "The order of the tabs for multiple currencies defined.", - "type": "integer", - "format": "int64" - }, - "isSystemDefault": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean" - }, - "taxFreeFrom": { - "description": "The value from which the tax must be exempted.", - "type": "number", - "format": "float" - }, - "customFields": { - "type": "object" - }, - "itemRounding": { - "required": [ - "decimals", - "interval", - "roundForNet" - ], - "properties": { - "decimals": { - "type": "integer", - "format": "int64" - }, - "interval": { - "type": "number", - "format": "float" - }, - "roundForNet": { - "type": "boolean" - } - }, - "type": "object" - }, - "totalRounding": { - "required": [ - "decimals", - "interval", - "roundForNet" - ], - "properties": { - "decimals": { - "type": "integer", - "format": "int64" - }, - "interval": { - "type": "number", - "format": "float" - }, - "roundForNet": { - "type": "boolean" - } - }, - "type": "object" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - } - }, - "type": "object" - } - ] - }, - "Currency": { - "description": "Added since version: 6.0.0.0", + "CustomerWishlistProduct": { + "description": "Added since version: 6.3.4.0", "required": [ "id", - "factor", - "symbol", - "isoCode", - "itemRounding", - "totalRounding", - "shortName", - "name" + "productId" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "factor": { - "description": "Currency exchange rate.", - "type": "number", - "format": "float" + "productId": { + "description": "Unique identity of the product.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "symbol": { - "description": "A currency symbol is a graphical representation used as shorthand for a currency's name, for example US Dollar - $", - "type": "string" + "productVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "isoCode": { - "description": "Standard international three digit code to represent currency. For example, USD.", - "type": "string" + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, - "shortName": { - "type": "string" + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "DeliveryTime": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "name", + "min", + "max", + "unit" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, "name": { "type": "string" }, - "position": { - "description": "The order of the tabs for multiple currencies defined.", + "min": { + "description": "Minimum delivery time taken.", "type": "integer", "format": "int64" }, - "isSystemDefault": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean" + "max": { + "description": "Maximum delivery time taken.", + "type": "integer", + "format": "int64" }, - "taxFreeFrom": { - "description": "The value from which the tax must be exempted.", - "type": "number", - "format": "float" + "unit": { + "description": "Unit in which the delivery time is defined. For example, days or hours.", + "type": "string" }, "customFields": { "type": "object" }, - "itemRounding": { - "required": [ - "decimals", - "interval", - "roundForNet" - ], - "properties": { - "decimals": { - "type": "integer", - "format": "int64" - }, - "interval": { - "type": "number", - "format": "float" - }, - "roundForNet": { - "type": "boolean" - } - }, - "type": "object" - }, - "totalRounding": { - "required": [ - "decimals", - "interval", - "roundForNet" - ], - "properties": { - "decimals": { - "type": "integer", - "format": "int64" - }, - "interval": { - "type": "number", - "format": "float" - }, - "roundForNet": { - "type": "boolean" - } - }, - "type": "object" - }, "createdAt": { "type": "string", "format": "date-time", @@ -2393,70 +2222,95 @@ }, "type": "object" }, - "CurrencyCountryRounding": { - "description": "Added since version: 6.4.0.0", + "DocumentBaseConfig": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "documentTypeId", + "name" + ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { + "documentTypeId": { + "description": "Unique identity of the document type.", "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "CustomEntity": { - "description": "Added since version: 6.4.9.0", - "properties": { - "id": { + "logoId": { + "description": "Unique identity of the company logo.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "name": { + "description": "Name of the document.", + "type": "string" + }, + "filenamePrefix": { + "description": "A prefix name added to the file name separated by an underscore.", + "type": "string" + }, + "filenameSuffix": { + "description": "A suffix name added to the file name separated by an underscore.", + "type": "string" + }, + "global": { + "description": "When set to `true`, the document can be used across all sales channels.", + "type": "boolean" + }, + "documentNumber": { + "description": "Unique number associated with every document.", + "type": "string" + }, + "customFields": { + "type": "object" + }, "createdAt": { "type": "string", "format": "date-time", "readOnly": true }, + "config": { + "type": "object", + "deprecated": true + }, "updatedAt": { "type": "string", "format": "date-time", "readOnly": true + }, + "logo": { + "$ref": "#/components/schemas/Media", + "description": "Logo in the document at the top-right corner." } }, "type": "object" }, - "CustomField": { + "DocumentBaseConfigSalesChannel": { "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "documentBaseConfigId" + ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { + "documentBaseConfigId": { + "description": "Unique identity of document's base config.", "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "updatedAt": { + "salesChannelId": { + "description": "Unique identity of sales channel.", "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "CustomFieldSet": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { + "pattern": "^[0-9a-f]{32}$" + }, + "documentTypeId": { + "description": "Unique identity of document type.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, @@ -2473,13 +2327,28 @@ }, "type": "object" }, - "CustomFieldSetRelation": { + "DocumentType": { "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "technicalName", + "name" + ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "name": { + "type": "string" + }, + "technicalName": { + "description": "Technical name of document type.", + "type": "string" + }, + "customFields": { + "type": "object" + }, "createdAt": { "type": "string", "format": "date-time", @@ -2489,175 +2358,78 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "translated": { + "type": "object" } }, "type": "object" }, - "Customer": { - "description": "Added since version: 6.0.0.0", + "DsrAppointment": { "required": [ - "apiAlias", - "activeBillingAddress", - "activeShippingAddress", - "id", - "groupId", - "salesChannelId", - "languageId", - "defaultBillingAddressId", - "defaultShippingAddressId", - "customerNumber", - "firstName", - "lastName", - "email" + "presentationId", + "salesChannelDomainId", + "name", + "createdById" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "groupId": { - "description": "Unique identity of customer group.", + "presentationId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "salesChannelId": { - "description": "Unique identity of sales channel.", + "dsrPresentationVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "languageId": { - "description": "Unique identity of language.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "active": { + "type": "boolean" }, - "lastPaymentMethodId": { - "description": "Unique identity of previous payment method.", + "salesChannelDomainId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "defaultBillingAddressId": { - "description": "Unique identity of default billing address.", + "accessibleFrom": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time" }, - "defaultShippingAddressId": { - "description": "Unique identity of default shipping address.", + "accessibleTo": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time" }, - "customerNumber": { - "description": "Unique number assigned to identity a customer.", - "type": "string" + "attendeeRuleIds": { + "type": "object" }, - "salutationId": { - "description": "Unique identity of salutation.", + "guideUserId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "firstName": { - "description": "First name of the customer.", - "type": "string" - }, - "lastName": { - "description": "Last name of the customer.", - "type": "string" - }, - "email": { - "description": "Email ID of the customer.", - "type": "string" - }, - "title": { - "description": "Titles or honorifics like Mr, Mrs, etc.", - "type": "string" + "isPreview": { + "type": "boolean" }, - "affiliateCode": { - "description": "An affiliate code is an identification option with which website operators can mark outgoing links.", + "videoAudioSettings": { "type": "string" }, - "campaignCode": { - "description": "A campaign code is the globally unique identifier for a campaign.", + "name": { "type": "string" }, - "active": { - "description": "To keep the status of the customer active, the boolean value is set to `true`.", - "type": "boolean" - }, - "doubleOptInRegistration": { - "description": "Set to `true` to allow user subscriptions to an email marketing list.", - "type": "boolean" - }, - "doubleOptInEmailSentDate": { - "description": "Date and time when the double opt-in email was sent.", + "startedAt": { "type": "string", "format": "date-time" }, - "doubleOptInConfirmDate": { - "description": "Date and time when the double opt-in email was confirmed.", + "endedAt": { "type": "string", "format": "date-time" }, - "hash": { - "description": "Customer registration double opt-in hash for confirming the customer account.", - "type": "string" - }, - "guest": { - "description": "Boolean value is `true` if it is to be a guest account.", + "default": { "type": "boolean" }, - "firstLogin": { - "description": "To capture date and time of customer's first login.", - "type": "string", - "format": "date-time" - }, - "lastLogin": { - "description": "To capture date and time of customer's last login.", - "type": "string", - "format": "date-time" - }, - "birthday": { - "description": "To capture customer's birthday details.", - "type": "string" - }, - "lastOrderDate": { - "description": "Captures last order date.", - "type": "string", - "format": "date-time", - "readOnly": true - }, - "orderCount": { - "description": "Captures the number of orders placed.", - "type": "integer", - "format": "int64", - "readOnly": true - }, - "orderTotalAmount": { - "description": "Sum of total amount to be paid.", - "type": "number", - "format": "float", - "readOnly": true - }, - "reviewCount": { - "description": "Number of reviews the customer has given.", - "type": "integer", - "format": "int64", - "readOnly": true - }, "customFields": { "type": "object" }, - "tagIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, - "requestedGroupId": { - "description": "Unique identity of requested group.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, "createdById": { "type": "string", "pattern": "^[0-9a-f]{32}$" @@ -2676,403 +2448,149 @@ "format": "date-time", "readOnly": true }, - "group": { - "$ref": "#/components/schemas/CustomerGroup", - "description": "Customer group determining pricing and permissions" + "translated": { + "type": "object" }, - "language": { - "$ref": "#/components/schemas/Language", - "description": "Preferred language for customer communication" + "videoChat": { + "$ref": "#/components/schemas/DsrAppointmentVideoChat" + } + }, + "type": "object" + }, + "DsrAppointmentAttendee": { + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "lastPaymentMethod": { - "$ref": "#/components/schemas/PaymentMethod", - "description": "Last used payment method by the customer" + "joinedAt": { + "type": "string", + "format": "date-time" }, - "defaultBillingAddress": { - "$ref": "#/components/schemas/CustomerAddress", - "description": "Default billing address for the customer" + "lastActive": { + "type": "string", + "format": "date-time" }, - "activeBillingAddress": { - "$ref": "#/components/schemas/CustomerAddress", - "description": "Currently active billing address in the session" + "isBlocked": { + "type": "boolean" }, - "defaultShippingAddress": { - "$ref": "#/components/schemas/CustomerAddress", - "description": "Default shipping address for the customer" + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, - "activeShippingAddress": { - "$ref": "#/components/schemas/CustomerAddress", - "description": "Currently active shipping address in the session" + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "DsrAppointmentRequest": { + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "salutation": { - "$ref": "#/components/schemas/Salutation", - "description": "Customer salutation (e.g., Mr., Mrs., Ms.)" + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, - "addresses": { - "description": "All addresses saved for the customer", - "type": "array", - "items": { - "$ref": "#/components/schemas/CustomerAddress" - } + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "DsrAppointmentVideoChat": { + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "tags": { - "description": "Tags assigned to the customer for organization and segmentation", - "type": "array", - "items": { - "$ref": "#/components/schemas/Tag" - } + "name": { + "type": "string" }, - "apiAlias": { + "url": { + "type": "string" + }, + "customFields": { + "type": "object" + }, + "createdAt": { "type": "string", - "enum": [ - "customer" - ] + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true } }, - "type": "object", - "oneOf": [ - { - "required": [ - "accountType" - ], - "properties": { - "accountType": { - "type": "string", - "enum": [ - "private" - ] - } - } + "type": "object" + }, + "DsrAttendeeProductCollection": { + "required": [ + "attendeeId", + "productId" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - { - "required": [ - "accountType", - "vatIds", - "company" - ], - "properties": { - "accountType": { - "type": "string", - "enum": [ - "business" - ] - }, - "vatIds": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - }, - "company": { - "type": "string" - } - } + "attendeeId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true } - ] + }, + "type": "object" }, - "CustomerAddressJsonApi": { - "description": "Added since version: 6.0.0.0", - "allOf": [ - { - "$ref": "#/components/schemas/resource" + "DsrCmsSlide": { + "required": [ + "id", + "slideName", + "cmsSectionId" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - { - "required": [ - "id", - "customerId", - "countryId", - "firstName", - "lastName", - "city", - "street" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "customerId": { - "description": "Unique identity of customer.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryId": { - "description": "Unique identity of country.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryStateId": { - "description": "Unique identity of country's state.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "salutationId": { - "description": "Unique identity of salutation.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "description": "First name of the customer.", - "type": "string" - }, - "lastName": { - "description": "Last name of the customer.", - "type": "string" - }, - "zipcode": { - "description": "Postal or zip code of customer's address.", - "type": "string" - }, - "city": { - "description": "Name of customer's city.", - "type": "string" - }, - "company": { - "description": "Name of customer's company.", - "type": "string" - }, - "street": { - "description": "Name of customer's street.", - "type": "string" - }, - "department": { - "description": "Name of customer's department.", - "type": "string" - }, - "title": { - "description": "Titles given to customer like Dr. , Prof., etc", - "type": "string" - }, - "phoneNumber": { - "description": "Customer's phone number.", - "type": "string" - }, - "additionalAddressLine1": { - "description": "Additional customer's address information.", - "type": "string" - }, - "additionalAddressLine2": { - "description": "Additional customer's address information.", - "type": "string" - }, - "hash": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "string" - }, - "customFields": { - "type": "object" - }, - "isDefaultBillingAddress": { - "description": "Added since version: 6.7.7.0. Runtime field, cannot be used as part of the criteria.", - "type": "boolean" - }, - "isDefaultShippingAddress": { - "description": "Added since version: 6.7.7.0. Runtime field, cannot be used as part of the criteria.", - "type": "boolean" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "relationships": { - "properties": { - "country": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/customer-address/1b4b031005f93d02d887e7d66efb653b/country" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "country" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "e909c2d7067ea37437cf97fe11d91bd0" - } - } - } - }, - "type": "object" - }, - "countryState": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/customer-address/1b4b031005f93d02d887e7d66efb653b/countryState" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "country_state" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "cb6a9764567191fb74fe28d8d6a4819d" - } - } - } - }, - "type": "object" - }, - "salutation": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/customer-address/1b4b031005f93d02d887e7d66efb653b/salutation" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "salutation" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "7a6efb02514153b5aa9a8f40c6f8bcc3" - } - } - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - ] - }, - "CustomerAddress": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "customerId", - "countryId", - "firstName", - "lastName", - "city", - "street" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "customerId": { - "description": "Unique identity of customer.", + "versionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "countryId": { - "description": "Unique identity of country.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "slideName": { + "type": "string" }, - "countryStateId": { - "description": "Unique identity of country's state.", + "cmsSectionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "salutationId": { - "description": "Unique identity of salutation.", + "cmsSectionVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "firstName": { - "description": "First name of the customer.", - "type": "string" - }, - "lastName": { - "description": "Last name of the customer.", - "type": "string" - }, - "zipcode": { - "description": "Postal or zip code of customer's address.", - "type": "string" - }, - "city": { - "description": "Name of customer's city.", - "type": "string" - }, - "company": { - "description": "Name of customer's company.", - "type": "string" - }, - "street": { - "description": "Name of customer's street.", - "type": "string" - }, - "department": { - "description": "Name of customer's department.", - "type": "string" - }, - "title": { - "description": "Titles given to customer like Dr. , Prof., etc", - "type": "string" - }, - "phoneNumber": { - "description": "Customer's phone number.", - "type": "string" - }, - "additionalAddressLine1": { - "description": "Additional customer's address information.", - "type": "string" - }, - "additionalAddressLine2": { - "description": "Additional customer's address information.", - "type": "string" - }, - "hash": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "string" - }, - "customFields": { - "type": "object" - }, - "isDefaultBillingAddress": { - "description": "Added since version: 6.7.7.0. Runtime field, cannot be used as part of the criteria.", - "type": "boolean" - }, - "isDefaultShippingAddress": { - "description": "Added since version: 6.7.7.0. Runtime field, cannot be used as part of the criteria.", - "type": "boolean" - }, "createdAt": { "type": "string", "format": "date-time", @@ -3083,55 +2601,73 @@ "format": "date-time", "readOnly": true }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "$ref": "#/components/schemas/CountryState" + "translated": { + "type": "object" }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "cmsSection": { + "$ref": "#/components/schemas/CmsSection" } }, "type": "object" }, - "CustomerGroup": { - "description": "Added since version: 6.0.0.0", - "required": [ - "translated", - "id", - "name" - ], + "DsrInteraction": { "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "name": { - "type": "string" + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, - "displayGross": { - "description": "If boolean value is `true` gross value is displayed else, net value will be displayed to the customer.", - "type": "boolean" + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "DsrPresentation": { + "required": [ + "id", + "createdById", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "customFields": { - "type": "object" + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "registrationActive": { - "description": "To enable the registration of partner customer group.", + "active": { "type": "boolean" }, - "registrationTitle": { - "type": "string" + "parentId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "registrationIntroduction": { + "parentVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "name": { "type": "string" }, - "registrationOnlyCompanyRegistration": { - "type": "boolean" + "customFields": { + "type": "object" }, - "registrationSeoMetaDescription": { - "type": "string" + "createdById": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "updatedById": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, "createdAt": { "type": "string", @@ -3144,32 +2680,82 @@ "readOnly": true }, "translated": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "registrationIntroduction": { - "type": "string" - }, - "registrationSeoMetaDescription": { - "type": "string" - }, - "registrationTitle": { - "type": "string" - } + "type": "object" + }, + "parent": { + "$ref": "#/components/schemas/DsrPresentation" + }, + "appointments": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DsrAppointment" + } + }, + "cmsPages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DsrPresentationCmsPage" } } }, "type": "object" }, - "CustomerRecovery": { - "description": "Added since version: 6.1.0.0", + "DsrPresentationCmsPage": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "presentationId", + "cmsPageId" + ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "presentationId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "dsrPresentationVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "cmsPageId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "cmsPageVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "title": { + "type": "string" + }, + "customFields": { + "type": "object" + }, + "productId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productStreamId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "pickedProductIds": { + "type": "object" + }, + "position": { + "type": "integer", + "format": "int64" + }, + "isInstantListing": { + "type": "boolean" + }, "createdAt": { "type": "string", "format": "date-time", @@ -3179,54 +2765,43 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "translated": { + "type": "object" + }, + "cmsPage": { + "$ref": "#/components/schemas/CmsPage" } }, "type": "object" }, - "CustomerTag": { - "description": "Added since version: 6.0.0.0", - "required": [ - "customerId", - "tagId" - ], + "Flow": { + "description": "Added since version: 6.4.6.0", "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "customerId": { + "createdAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "tagId": { + "updatedAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "tag": { - "$ref": "#/components/schemas/Tag" + "format": "date-time", + "readOnly": true } }, "type": "object" }, - "CustomerWishlist": { - "description": "Added since version: 6.3.4.0", - "required": [ - "id", - "customerId" - ], + "FlowSequence": { + "description": "Added since version: 6.4.6.0", "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "customerId": { - "description": "Unique identity of the customer.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "customFields": { - "type": "object" - }, "createdAt": { "type": "string", "format": "date-time", @@ -3236,33 +2811,34 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CustomerWishlistProduct" - } } }, "type": "object" }, - "CustomerWishlistProduct": { - "description": "Added since version: 6.3.4.0", - "required": [ - "id", - "productId" - ], + "FlowTemplate": { + "description": "Added since version: 6.4.18.0", "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "productId": { - "description": "Unique identity of the product.", + "createdAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "productVersionId": { + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "ImportExportFile": { + "description": "Added since version: 6.0.0.0", + "properties": { + "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, @@ -3279,40 +2855,13 @@ }, "type": "object" }, - "DeliveryTime": { + "ImportExportLog": { "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "name", - "min", - "max", - "unit" - ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "name": { - "type": "string" - }, - "min": { - "description": "Minimum delivery time taken.", - "type": "integer", - "format": "int64" - }, - "max": { - "description": "Maximum delivery time taken.", - "type": "integer", - "format": "int64" - }, - "unit": { - "description": "Unit in which the delivery time is defined. For example, days or hours.", - "type": "string" - }, - "customFields": { - "type": "object" - }, "createdAt": { "type": "string", "format": "date-time", @@ -3322,245 +2871,40 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "translated": { - "type": "object" } }, "type": "object" }, - "Document": { + "ImportExportProfile": { "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "documentTypeId", - "orderId", - "config", - "deepLinkCode" - ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "documentTypeId": { + "createdAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "referencedDocumentId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "orderId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "documentMediaFileId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "documentA11yMediaFileId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "orderVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "config": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "title": { - "type": "string" - } - }, - "required": [ - "name", - "title" - ] - }, - "sent": { - "type": "boolean" - }, - "static": { - "type": "boolean" - }, - "deepLinkCode": { - "type": "string" - }, - "documentNumber": { - "type": "string" - }, - "customFields": { - "type": "object" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "format": "date-time", + "readOnly": true }, "updatedAt": { "type": "string", "format": "date-time", "readOnly": true }, - "documentType": { - "$ref": "#/components/schemas/DocumentType" - }, - "order": { - "$ref": "#/components/schemas/Order" - }, - "referencedDocument": { - "$ref": "#/components/schemas/Document" - }, - "dependentDocuments": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Document" - } - }, - "documentMediaFile": { - "$ref": "#/components/schemas/Media" - }, - "documentA11yMediaFile": { - "$ref": "#/components/schemas/Media" - }, - "fileType": { - "type": "string" - } - }, - "type": "object" - }, - "DocumentBaseConfig": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "documentTypeId", - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "documentTypeId": { - "description": "Unique identity of the document type.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "logoId": { - "description": "Unique identity of the company logo.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "name": { - "description": "Name of the document.", - "type": "string" - }, - "filenamePrefix": { - "description": "A prefix name added to the file name separated by an underscore.", - "type": "string" - }, - "filenameSuffix": { - "description": "A suffix name added to the file name separated by an underscore.", - "type": "string" - }, - "global": { - "description": "When set to `true`, the document can be used across all sales channels.", - "type": "boolean" - }, - "documentNumber": { - "description": "Unique number associated with every document.", - "type": "string" - }, - "customFields": { + "translated": { "type": "object" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "config": { - "type": "object", - "deprecated": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "logo": { - "$ref": "#/components/schemas/Media", - "description": "Logo in the document at the top-right corner." - } - }, - "type": "object" - }, - "DocumentBaseConfigSalesChannel": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "documentBaseConfigId" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "documentBaseConfigId": { - "description": "Unique identity of document's base config.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "salesChannelId": { - "description": "Unique identity of sales channel.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "documentTypeId": { - "description": "Unique identity of document type.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true } }, "type": "object" }, - "DocumentType": { + "Integration": { "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "technicalName", - "name" - ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "name": { - "type": "string" - }, - "technicalName": { - "description": "Technical name of document type.", - "type": "string" - }, - "customFields": { - "type": "object" - }, "createdAt": { "type": "string", "format": "date-time", @@ -3570,200 +2914,367 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "translated": { - "type": "object" } }, "type": "object" }, - "DsrAppointment": { - "required": [ - "presentationId", - "salesChannelDomainId", - "name", - "createdById" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "presentationId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "dsrPresentationVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "active": { - "type": "boolean" - }, - "salesChannelDomainId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "accessibleFrom": { - "type": "string", - "format": "date-time" - }, - "accessibleTo": { - "type": "string", - "format": "date-time" - }, - "attendeeRuleIds": { - "type": "object" - }, - "guideUserId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "isPreview": { - "type": "boolean" - }, - "videoAudioSettings": { - "type": "string" + "LandingPageJsonApi": { + "description": "Added since version: 6.4.0.0", + "allOf": [ + { + "$ref": "#/components/schemas/resource" }, - "name": { - "type": "string" - }, - "startedAt": { - "type": "string", - "format": "date-time" - }, - "endedAt": { - "type": "string", - "format": "date-time" - }, - "default": { - "type": "boolean" - }, - "customFields": { - "type": "object" - }, - "createdById": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "updatedById": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { + { + "required": [ + "id", + "name", + "url" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "active": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "customFields": { + "type": "object" + }, + "slotConfig": { + "type": "object" + }, + "metaTitle": { + "type": "string" + }, + "metaDescription": { + "type": "string" + }, + "keywords": { + "type": "string" + }, + "url": { + "type": "string" + }, + "cmsPageId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "cmsPageVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + }, + "relationships": { + "properties": { + "cmsPage": { + "description": "CMS page layout for the landing page", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/landing-page/815c27537bec3b60c50a2ae4d2ce875d/cmsPage" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "cms_page" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "7b1460918b1abb93311108f3dc021c9b" + } + } + } + }, + "type": "object" + }, + "seoUrls": { + "description": "SEO-friendly URLs for the landing page across different sales channels", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/landing-page/815c27537bec3b60c50a2ae4d2ce875d/seoUrls" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "seo_url" + }, + "id": { + "type": "string", + "example": "5321b5a71127b8b98cdd4b068ad56c4c" + } + } + } + } + }, + "type": "object" + } + }, + "type": "object" + } + }, "type": "object" - }, - "videoChat": { - "$ref": "#/components/schemas/DsrAppointmentVideoChat" - } - }, - "type": "object" - }, - "DsrAppointmentAttendee": { - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "joinedAt": { - "type": "string", - "format": "date-time" - }, - "lastActive": { - "type": "string", - "format": "date-time" - }, - "isBlocked": { - "type": "boolean" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "DsrAppointmentRequest": { - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true } - }, - "type": "object" + ] }, - "DsrAppointmentVideoChat": { - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "name": { - "type": "string" - }, - "url": { - "type": "string" - }, - "customFields": { - "type": "object" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "LanguageJsonApi": { + "description": "Added since version: 6.0.0.0", + "allOf": [ + { + "$ref": "#/components/schemas/resource" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "DsrAttendeeProductCollection": { - "required": [ - "attendeeId", - "productId" - ], - "properties": { + { + "required": [ + "id", + "localeId", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "parentId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "localeId": { + "description": "Unique identity of locale.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "translationCodeId": { + "description": "Unique identity of translation code.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "name": { + "description": "Name of the language.", + "type": "string" + }, + "active": { + "type": "boolean" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "relationships": { + "properties": { + "parent": { + "description": "Unique identity of language.", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/language/4994a8ffeba4ac3140beb89e8d41f174/parent" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "language" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "d0e45878043844ffc41aac437e86b602" + } + } + } + }, + "type": "object" + }, + "locale": { + "description": "Locale defining regional settings (date, time, number formats)", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/language/4994a8ffeba4ac3140beb89e8d41f174/locale" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "locale" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "fb216d9e8791e63c8d12bdc420956839" + } + } + } + }, + "type": "object" + }, + "translationCode": { + "description": "Locale used for translating content", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/language/4994a8ffeba4ac3140beb89e8d41f174/translationCode" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "locale" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "6ef2035242b8fcb7b61c3a41850e60b3" + } + } + } + }, + "type": "object" + }, + "children": { + "description": "Child languages inheriting from this parent language", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/language/4994a8ffeba4ac3140beb89e8d41f174/children" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "language" + }, + "id": { + "type": "string", + "example": "268184c12df027f536154d099d497b31" + } + } + } + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + ] + }, + "Language": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "localeId", + "name" + ], + "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "attendeeId": { + "parentId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "productId": { + "localeId": { + "description": "Unique identity of locale.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "translationCodeId": { + "description": "Unique identity of translation code.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "name": { + "description": "Name of the language.", + "type": "string" + }, + "active": { + "type": "boolean" + }, + "customFields": { + "type": "object" + }, "createdAt": { "type": "string", "format": "date-time", @@ -3773,35 +3284,54 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "parent": { + "$ref": "#/components/schemas/Language", + "description": "Unique identity of language." + }, + "locale": { + "$ref": "#/components/schemas/Locale", + "description": "Locale defining regional settings (date, time, number formats)" + }, + "translationCode": { + "$ref": "#/components/schemas/Locale", + "description": "Locale used for translating content" + }, + "children": { + "description": "Child languages inheriting from this parent language", + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + } } }, "type": "object" }, - "DsrCmsSlide": { + "Locale": { + "description": "Added since version: 6.0.0.0", "required": [ "id", - "slideName", - "cmsSectionId" + "code", + "name", + "territory" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "code": { + "description": "Code given to the locale. For example: en-CA.", + "type": "string" }, - "slideName": { + "name": { "type": "string" }, - "cmsSectionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "territory": { + "type": "string" }, - "cmsSectionVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "customFields": { + "type": "object" }, "createdAt": { "type": "string", @@ -3815,14 +3345,12 @@ }, "translated": { "type": "object" - }, - "cmsSection": { - "$ref": "#/components/schemas/CmsSection" } }, "type": "object" }, - "DsrInteraction": { + "LogEntry": { + "description": "Added since version: 6.0.0.0", "properties": { "id": { "type": "string", @@ -3841,10 +3369,9 @@ }, "type": "object" }, - "DsrPresentation": { + "MailHeaderFooter": { + "description": "Added since version: 6.0.0.0", "required": [ - "id", - "createdById", "name" ], "properties": { @@ -3852,34 +3379,26 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "active": { + "systemDefault": { "type": "boolean" }, - "parentId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "name": { + "type": "string" }, - "parentVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "description": { + "type": "string" }, - "name": { + "headerHtml": { "type": "string" }, - "customFields": { - "type": "object" + "headerPlain": { + "type": "string" }, - "createdById": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "footerHtml": { + "type": "string" }, - "updatedById": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "footerPlain": { + "type": "string" }, "createdAt": { "type": "string", @@ -3893,81 +3412,37 @@ }, "translated": { "type": "object" - }, - "parent": { - "$ref": "#/components/schemas/DsrPresentation" - }, - "appointments": { - "type": "array", - "items": { - "$ref": "#/components/schemas/DsrAppointment" - } - }, - "cmsPages": { - "type": "array", - "items": { - "$ref": "#/components/schemas/DsrPresentationCmsPage" - } } }, "type": "object" }, - "DsrPresentationCmsPage": { + "MailTemplate": { "description": "Added since version: 6.0.0.0", "required": [ - "id", - "presentationId", - "cmsPageId" + "subject", + "contentHtml", + "contentPlain" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "presentationId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "dsrPresentationVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "systemDefault": { + "type": "boolean" }, - "cmsPageId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "senderName": { + "type": "string" }, - "cmsPageVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "contentHtml": { + "type": "string" }, - "title": { + "contentPlain": { "type": "string" }, "customFields": { "type": "object" }, - "productId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productStreamId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "pickedProductIds": { - "type": "object" - }, - "position": { - "type": "integer", - "format": "int64" - }, - "isInstantListing": { - "type": "boolean" - }, "createdAt": { "type": "string", "format": "date-time", @@ -3981,141 +3456,74 @@ "translated": { "type": "object" }, - "cmsPage": { - "$ref": "#/components/schemas/CmsPage" - } - }, - "type": "object" - }, - "Flow": { - "description": "Added since version: 6.4.6.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "mailTemplateType": { + "$ref": "#/components/schemas/MailTemplateType" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "media": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MailTemplateMedia" + } } }, "type": "object" }, - "FlowSequence": { - "description": "Added since version: 6.4.6.0", + "MailTemplateMedia": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "mailTemplateId", + "languageId", + "mediaId" + ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "FlowTemplate": { - "description": "Added since version: 6.4.18.0", - "properties": { - "id": { + "mailTemplateId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "ImportExportFile": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { + "languageId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "ImportExportLog": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { + "mediaId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "position": { + "type": "integer", + "format": "int64" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "media": { + "$ref": "#/components/schemas/Media" } }, "type": "object" }, - "ImportExportProfile": { + "MailTemplateType": { "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "technicalName", + "name" + ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "name": { + "type": "string" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "technicalName": { + "description": "Technical name of mail template.", + "type": "string" }, - "translated": { + "customFields": { "type": "object" - } - }, - "type": "object" - }, - "Integration": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" }, "createdAt": { "type": "string", @@ -4126,12 +3534,15 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "translated": { + "type": "object" } }, "type": "object" }, - "LandingPageJsonApi": { - "description": "Added since version: 6.4.0.0", + "MainCategoryJsonApi": { + "description": "Added since version: 6.1.0.0", "allOf": [ { "$ref": "#/components/schemas/resource" @@ -4139,47 +3550,35 @@ { "required": [ "id", - "name", - "url" + "productId", + "categoryId", + "salesChannelId" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { + "productId": { + "description": "Unique identity of the product.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "active": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "customFields": { - "type": "object" - }, - "slotConfig": { - "type": "object" - }, - "metaTitle": { - "type": "string" - }, - "metaDescription": { - "type": "string" - }, - "keywords": { - "type": "string" + "productVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "url": { - "type": "string" + "categoryId": { + "description": "Unique identity of the category.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "cmsPageId": { + "categoryVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "cmsPageVersionId": { + "salesChannelId": { + "description": "Unique identity of the sales channel.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, @@ -4192,131 +3591,131 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "translated": { - "type": "object" - }, - "relationships": { - "properties": { - "cmsPage": { - "description": "CMS page layout for the landing page", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/landing-page/815c27537bec3b60c50a2ae4d2ce875d/cmsPage" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "cms_page" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "7b1460918b1abb93311108f3dc021c9b" - } - } - } - }, - "type": "object" - }, - "seoUrls": { - "description": "SEO-friendly URLs for the landing page across different sales channels", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/landing-page/815c27537bec3b60c50a2ae4d2ce875d/seoUrls" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "seo_url" - }, - "id": { - "type": "string", - "example": "5321b5a71127b8b98cdd4b068ad56c4c" - } - } - } - } - }, - "type": "object" - } - }, - "type": "object" } }, "type": "object" } ] }, - "LandingPage": { - "description": "Added since version: 6.4.0.0", + "MainCategory": { + "description": "Added since version: 6.1.0.0", "required": [ - "apiAlias", "id", - "name", - "url" + "productId", + "categoryId", + "salesChannelId" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { + "productId": { + "description": "Unique identity of the product.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "active": { - "type": "boolean" + "productVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "name": { - "type": "string" + "categoryId": { + "description": "Unique identity of the category.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "customFields": { - "type": "object" + "categoryVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "slotConfig": { - "type": "object" + "salesChannelId": { + "description": "Unique identity of the sales channel.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "metaTitle": { - "type": "string" + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, - "metaDescription": { - "type": "string" + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "MeasurementDisplayUnit": { + "description": "Added since version: 6.7.1.0", + "required": [ + "id", + "measurementSystemId", + "default", + "type", + "shortName", + "factor", + "precision" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "keywords": { + "measurementSystemId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "default": { + "type": "boolean" + }, + "type": { "type": "string" }, - "url": { + "shortName": { "type": "string" }, - "cmsPageId": { + "factor": { + "type": "number", + "format": "float" + }, + "precision": { + "type": "integer", + "format": "int64" + }, + "createdAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "cmsPageVersionId": { + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + }, + "measurementSystem": { + "$ref": "#/components/schemas/MeasurementSystem" + } + }, + "type": "object" + }, + "MeasurementSystem": { + "description": "Added since version: 6.7.1.0", + "required": [ + "id", + "technicalName" + ], + "properties": { + "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "technicalName": { + "type": "string" + }, "createdAt": { "type": "string", "format": "date-time", @@ -4330,245 +3729,42 @@ "translated": { "type": "object" }, - "cmsPage": { - "$ref": "#/components/schemas/CmsPage", - "description": "CMS page layout for the landing page" - }, - "seoUrls": { - "description": "SEO-friendly URLs for the landing page across different sales channels", + "units": { "type": "array", "items": { - "$ref": "#/components/schemas/SeoUrl" + "$ref": "#/components/schemas/MeasurementDisplayUnit" } + } + }, + "type": "object" + }, + "MediaDefaultFolder": { + "description": "Added since version: 6.0.0.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "apiAlias": { + "createdAt": { "type": "string", - "enum": [ - "landing_page" - ] + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true } }, "type": "object" }, - "LanguageJsonApi": { + "MediaFolder": { "description": "Added since version: 6.0.0.0", - "allOf": [ - { - "$ref": "#/components/schemas/resource" - }, - { - "required": [ - "id", - "localeId", - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "parentId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "localeId": { - "description": "Unique identity of locale.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "translationCodeId": { - "description": "Unique identity of translation code.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "name": { - "description": "Name of the language.", - "type": "string" - }, - "active": { - "type": "boolean" - }, - "customFields": { - "type": "object" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "relationships": { - "properties": { - "parent": { - "description": "Unique identity of language.", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/language/4994a8ffeba4ac3140beb89e8d41f174/parent" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "language" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "d0e45878043844ffc41aac437e86b602" - } - } - } - }, - "type": "object" - }, - "locale": { - "description": "Locale defining regional settings (date, time, number formats)", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/language/4994a8ffeba4ac3140beb89e8d41f174/locale" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "locale" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "fb216d9e8791e63c8d12bdc420956839" - } - } - } - }, - "type": "object" - }, - "translationCode": { - "description": "Locale used for translating content", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/language/4994a8ffeba4ac3140beb89e8d41f174/translationCode" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "locale" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "6ef2035242b8fcb7b61c3a41850e60b3" - } - } - } - }, - "type": "object" - }, - "children": { - "description": "Child languages inheriting from this parent language", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/language/4994a8ffeba4ac3140beb89e8d41f174/children" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "language" - }, - "id": { - "type": "string", - "example": "268184c12df027f536154d099d497b31" - } - } - } - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - ] - }, - "Language": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "localeId", - "name" - ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "parentId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "localeId": { - "description": "Unique identity of locale.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "translationCodeId": { - "description": "Unique identity of translation code.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "name": { - "description": "Name of the language.", - "type": "string" - }, - "active": { - "type": "boolean" - }, - "customFields": { - "type": "object" - }, "createdAt": { "type": "string", "format": "date-time", @@ -4578,55 +3774,17 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "parent": { - "$ref": "#/components/schemas/Language", - "description": "Unique identity of language." - }, - "locale": { - "$ref": "#/components/schemas/Locale", - "description": "Locale defining regional settings (date, time, number formats)" - }, - "translationCode": { - "$ref": "#/components/schemas/Locale", - "description": "Locale used for translating content" - }, - "children": { - "description": "Child languages inheriting from this parent language", - "type": "array", - "items": { - "$ref": "#/components/schemas/Language" - } } }, "type": "object" }, - "Locale": { + "MediaFolderConfiguration": { "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "code", - "name", - "territory" - ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "code": { - "description": "Code given to the locale. For example: en-CA.", - "type": "string" - }, - "name": { - "type": "string" - }, - "territory": { - "type": "string" - }, - "customFields": { - "type": "object" - }, "createdAt": { "type": "string", "format": "date-time", @@ -4636,63 +3794,62 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "translated": { - "type": "object" } }, "type": "object" }, - "LogEntry": { + "MediaTag": { "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", + "required": [ + "mediaId", + "tagId" + ], + "properties": { + "id": { + "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { + "mediaId": { "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "updatedAt": { + "tagId": { "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" + }, + "media": { + "$ref": "#/components/schemas/Media" + }, + "tag": { + "$ref": "#/components/schemas/Tag" } }, "type": "object" }, - "MailHeaderFooter": { + "MediaThumbnailSize": { "description": "Added since version: 6.0.0.0", "required": [ - "name" + "id", + "width", + "height" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "systemDefault": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "headerHtml": { - "type": "string" - }, - "headerPlain": { - "type": "string" + "width": { + "description": "Width of the thumbnail.", + "type": "integer", + "format": "int64" }, - "footerHtml": { - "type": "string" + "height": { + "description": "Height of the thumbnail.", + "type": "integer", + "format": "int64" }, - "footerPlain": { - "type": "string" + "customFields": { + "type": "object" }, "createdAt": { "type": "string", @@ -4703,40 +3860,44 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "translated": { - "type": "object" } }, "type": "object" }, - "MailTemplate": { + "NewsletterRecipientJsonApi": { + "description": "Added since version: 6.0.0.0", + "allOf": [ + { + "$ref": "#/components/schemas/resource" + }, + { + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + } + ] + }, + "NewsletterRecipient": { "description": "Added since version: 6.0.0.0", - "required": [ - "subject", - "contentHtml", - "contentPlain" - ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "systemDefault": { - "type": "boolean" - }, - "senderName": { - "type": "string" - }, - "contentHtml": { - "type": "string" - }, - "contentPlain": { - "type": "string" - }, - "customFields": { - "type": "object" - }, "createdAt": { "type": "string", "format": "date-time", @@ -4746,62 +3907,33 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "translated": { - "type": "object" - }, - "mailTemplateType": { - "$ref": "#/components/schemas/MailTemplateType" - }, - "media": { - "type": "array", - "items": { - "$ref": "#/components/schemas/MailTemplateMedia" - } } }, "type": "object" }, - "MailTemplateMedia": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "mailTemplateId", - "languageId", - "mediaId" - ], + "Notification": { + "description": "Added since version: 6.4.7.0", "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "mailTemplateId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "languageId": { + "createdAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "mediaId": { + "updatedAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "position": { - "type": "integer", - "format": "int64" - }, - "media": { - "$ref": "#/components/schemas/Media" + "format": "date-time", + "readOnly": true } }, "type": "object" }, - "MailTemplateType": { + "NumberRange": { "description": "Added since version: 6.0.0.0", "required": [ - "id", - "technicalName", "name" ], "properties": { @@ -4809,16 +3941,6 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "name": { - "type": "string" - }, - "technicalName": { - "description": "Technical name of mail template.", - "type": "string" - }, - "customFields": { - "type": "object" - }, "createdAt": { "type": "string", "format": "date-time", @@ -4835,98 +3957,13 @@ }, "type": "object" }, - "MainCategoryJsonApi": { - "description": "Added since version: 6.1.0.0", - "allOf": [ - { - "$ref": "#/components/schemas/resource" - }, - { - "required": [ - "id", - "productId", - "categoryId", - "salesChannelId" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productId": { - "description": "Unique identity of the product.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "categoryId": { - "description": "Unique identity of the category.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "categoryVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "salesChannelId": { - "description": "Unique identity of the sales channel.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - } - ] - }, - "MainCategory": { - "description": "Added since version: 6.1.0.0", - "required": [ - "id", - "productId", - "categoryId", - "salesChannelId" - ], + "NumberRangeSalesChannel": { + "description": "Added since version: 6.0.0.0", "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "productId": { - "description": "Unique identity of the product.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "categoryId": { - "description": "Unique identity of the category.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "categoryVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "salesChannelId": { - "description": "Unique identity of the sales channel.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, "createdAt": { "type": "string", "format": "date-time", @@ -4940,43 +3977,13 @@ }, "type": "object" }, - "MeasurementDisplayUnit": { - "description": "Added since version: 6.7.1.0", - "required": [ - "id", - "measurementSystemId", - "default", - "type", - "shortName", - "factor", - "precision" - ], + "NumberRangeState": { + "description": "Added since version: 6.0.0.0", "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "measurementSystemId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "default": { - "type": "boolean" - }, - "type": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "factor": { - "type": "number", - "format": "float" - }, - "precision": { - "type": "integer", - "format": "int64" - }, "createdAt": { "type": "string", "format": "date-time", @@ -4986,30 +3993,20 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "translated": { - "type": "object" - }, - "measurementSystem": { - "$ref": "#/components/schemas/MeasurementSystem" } }, "type": "object" }, - "MeasurementSystem": { - "description": "Added since version: 6.7.1.0", + "NumberRangeType": { + "description": "Added since version: 6.0.0.0", "required": [ - "id", - "technicalName" + "typeName" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "technicalName": { - "type": "string" - }, "createdAt": { "type": "string", "format": "date-time", @@ -5022,98 +4019,95 @@ }, "translated": { "type": "object" - }, - "units": { - "type": "array", - "items": { - "$ref": "#/components/schemas/MeasurementDisplayUnit" - } } }, "type": "object" }, - "Media": { + "OrderAddress": { "description": "Added since version: 6.0.0.0", "required": [ - "apiAlias", - "fileExtension", - "fileName", - "hasFile", - "path", - "private", - "url", - "id" + "id", + "countryId", + "firstName", + "lastName", + "street", + "city" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "mimeType": { - "description": "A string sent along with a file indicating the type of the file. For example: image/jpeg.", - "type": "string" + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "fileExtension": { - "description": "Type of file indication. For example: jpeg, png.", - "type": "string" + "countryId": { + "description": "Unique identity of country.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "uploadedAt": { - "description": "Date and time at which media was added.", + "countryStateId": { + "description": "Unique identity of state.", "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "fileName": { - "description": "Name of the media file uploaded.", + "firstName": { + "description": "First name of the customer.", "type": "string" }, - "fileSize": { - "description": "Size of the file media file uploaded.", - "type": "integer", - "format": "int64", - "readOnly": true + "lastName": { + "description": "Last name of the customer.", + "type": "string" }, - "metaData": { - "type": "object", - "readOnly": true, - "properties": { - "height": { - "type": "integer", - "format": "int64" - }, - "width": { - "type": "integer", - "format": "int64" - } - } + "street": { + "description": "Street address", + "type": "string" }, - "config": { - "type": "object" + "zipcode": { + "description": "Zip code of the country.", + "type": "string" }, - "alt": { + "city": { + "description": "Name of the city.", + "type": "string" + }, + "company": { + "description": "Name of the company.", + "type": "string" + }, + "department": { + "description": "Name of the department.", "type": "string" }, "title": { + "description": "Title name given to customer like DR. , Prof., etc.", "type": "string" }, - "url": { - "description": "Runtime field, cannot be used as part of the criteria.", + "phoneNumber": { + "description": "Phone number of the customer.", "type": "string" }, - "path": { + "additionalAddressLine1": { + "description": "Additional address input if necessary.", "type": "string" }, - "hasFile": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean" + "additionalAddressLine2": { + "description": "Additional address input if necessary.", + "type": "string" }, - "private": { - "description": "When `true`, the media display is kept private.", - "type": "boolean" + "hash": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "string" }, "customFields": { "type": "object" }, + "vatId": { + "description": "Unique identity of VAT.", + "type": "string", + "deprecated": true + }, "createdAt": { "type": "string", "format": "date-time", @@ -5124,52 +4118,73 @@ "format": "date-time", "readOnly": true }, - "translated": { - "type": "object" + "country": { + "$ref": "#/components/schemas/Country" }, - "thumbnails": { - "description": "Generated thumbnail images in various sizes", - "type": "array", - "items": { - "$ref": "#/components/schemas/MediaThumbnail" - } + "countryState": { + "$ref": "#/components/schemas/CountryState" }, - "apiAlias": { - "type": "string", - "enum": [ - "media" - ] + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, "type": "object" }, - "MediaDefaultFolder": { + "OrderCustomer": { "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "email", + "firstName", + "lastName" + ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { + "versionId": { "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "MediaFolder": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { + "email": { + "description": "Email address of the customer.", + "type": "string" + }, + "salutationId": { + "description": "Unique identity of salutation.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "firstName": { + "description": "First name of the customer.", + "type": "string" + }, + "lastName": { + "description": "Last name of the customer.", + "type": "string" + }, + "company": { + "description": "Name of the company.", + "type": "string" + }, + "title": { + "description": "Title name given to the customer like Dr, prof. etc.", + "type": "string" + }, + "vatIds": { + "type": "array", + "items": { + "type": "string" + } + }, + "customerNumber": { + "description": "Unique number assigned to the customer.", + "type": "string" + }, + "customFields": { + "type": "object" + }, "createdAt": { "type": "string", "format": "date-time", @@ -5179,99 +4194,133 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, "type": "object" }, - "MediaFolderConfiguration": { + "OrderDelivery": { "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "orderId", + "shippingOrderAddressId", + "shippingMethodId", + "stateId", + "shippingDateEarliest", + "shippingDateLatest" + ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { + "versionId": { "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "MediaTag": { - "description": "Added since version: 6.0.0.0", - "required": [ - "mediaId", - "tagId" - ], - "properties": { - "id": { + "orderId": { + "description": "Unique identity of order.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "mediaId": { + "orderVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "tagId": { + "shippingOrderAddressId": { + "description": "Unique identity of order's shipping address.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "media": { - "$ref": "#/components/schemas/Media" - }, - "tag": { - "$ref": "#/components/schemas/Tag" - } - }, - "type": "object" - }, - "MediaThumbnail": { - "description": "Added since version: 6.0.0.0", - "required": [ - "url", - "id", - "mediaId", - "width", - "height" - ], - "properties": { - "id": { + "shippingOrderAddressVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "mediaId": { - "description": "Unique identity of media.", + "shippingMethodId": { + "description": "Unique identity of shipping method.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "mediaThumbnailSizeId": { + "stateId": { + "description": "Unique identity of state.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "width": { - "description": "Width of the thumbnail.", - "type": "integer", - "format": "int64", - "readOnly": true + "trackingCodes": { + "type": "array", + "items": { + "type": "string" + } }, - "height": { - "description": "Height of the thumbnail.", - "type": "integer", - "format": "int64", - "readOnly": true + "shippingDateEarliest": { + "description": "Date and time of earliest delivery of products.", + "type": "string", + "format": "date-time" }, - "url": { - "description": "Public url of media thumbnail. Runtime field, cannot be used as part of the criteria.", - "type": "string" + "shippingDateLatest": { + "description": "Date and time of latest delivery of products.", + "type": "string", + "format": "date-time" }, - "path": { - "type": "string" + "shippingCosts": { + "required": [ + "unitPrice", + "totalPrice", + "quantity" + ], + "properties": { + "unitPrice": { + "type": "number", + "format": "float" + }, + "totalPrice": { + "type": "number", + "format": "float" + }, + "quantity": { + "type": "integer", + "format": "int64" + }, + "calculatedTaxes": { + "type": "object" + }, + "taxRules": { + "type": "object" + }, + "referencePrice": { + "type": "object" + }, + "listPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + }, + "discount": { + "type": "number", + "format": "float" + }, + "percentage": { + "type": "number", + "format": "float" + } + }, + "type": "object" + }, + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + } + }, + "type": "object" + } + }, + "type": "object" }, "customFields": { "type": "object" @@ -5285,147 +4334,137 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "stateMachineState": { + "$ref": "#/components/schemas/StateMachineState", + "description": "Current delivery state (e.g., open, shipped, delivered, cancelled)" + }, + "shippingOrderAddress": { + "$ref": "#/components/schemas/OrderAddress", + "description": "Shipping address for this delivery" + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod", + "description": "Shipping method used for this delivery" + }, + "positions": { + "description": "Line items included in this delivery", + "type": "array", + "items": { + "$ref": "#/components/schemas/OrderDeliveryPosition" + } } }, "type": "object" }, - "MediaThumbnailSize": { + "OrderDeliveryPosition": { "description": "Added since version: 6.0.0.0", "required": [ "id", - "width", - "height" + "orderDeliveryId", + "orderLineItemId" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "width": { - "description": "Width of the thumbnail.", - "type": "integer", - "format": "int64" - }, - "height": { - "description": "Height of the thumbnail.", - "type": "integer", - "format": "int64" - }, - "customFields": { - "type": "object" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { + "versionId": { "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "NewsletterRecipientJsonApi": { - "description": "Added since version: 6.0.0.0", - "allOf": [ - { - "$ref": "#/components/schemas/resource" + "pattern": "^[0-9a-f]{32}$" }, - { - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - } - ] - }, - "NewsletterRecipient": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { + "orderDeliveryId": { + "description": "Unique identity of order delivery.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { + "orderDeliveryVersionId": { "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "Notification": { - "description": "Added since version: 6.4.7.0", - "properties": { - "id": { + "orderLineItemId": { + "description": "Unique identity of line items in an order.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { + "orderLineItemVersionId": { "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "NumberRange": { - "description": "Added since version: 6.0.0.0", - "required": [ - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "price": { + "required": [ + "unitPrice", + "totalPrice", + "quantity" + ], + "properties": { + "unitPrice": { + "type": "number", + "format": "float" + }, + "totalPrice": { + "type": "number", + "format": "float" + }, + "quantity": { + "type": "integer", + "format": "int64" + }, + "calculatedTaxes": { + "type": "object" + }, + "taxRules": { + "type": "object" + }, + "referencePrice": { + "type": "object" + }, + "listPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + }, + "discount": { + "type": "number", + "format": "float" + }, + "percentage": { + "type": "number", + "format": "float" + } + }, + "type": "object" + }, + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + } + }, + "type": "object" + } + }, + "type": "object" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "unitPrice": { + "description": "Price of product per item (where, quantity=1).", + "type": "number", + "format": "float" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "totalPrice": { + "description": "Cost of product based on quantity.", + "type": "number", + "format": "float" }, - "translated": { + "quantity": { + "description": "Number of items of each product.", + "type": "integer", + "format": "int64" + }, + "customFields": { "type": "object" - } - }, - "type": "object" - }, - "NumberRangeSalesChannel": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" }, "createdAt": { "type": "string", @@ -5440,66 +4479,46 @@ }, "type": "object" }, - "NumberRangeState": { + "OrderTag": { "description": "Added since version: 6.0.0.0", + "required": [ + "orderId", + "tagId" + ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { + "orderId": { "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "NumberRangeType": { - "description": "Added since version: 6.0.0.0", - "required": [ - "typeName" - ], - "properties": { - "id": { + "orderVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { + "tagId": { "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "order": { + "$ref": "#/components/schemas/Order" }, - "translated": { - "type": "object" + "tag": { + "$ref": "#/components/schemas/Tag" } }, "type": "object" }, - "Order": { + "OrderTransaction": { "description": "Added since version: 6.0.0.0", "required": [ - "documents", - "orderDate", - "stateMachineState", - "price", "id", - "billingAddressId", - "currencyId", - "languageId", - "salesChannelId", - "orderDateTime", - "currencyFactor" + "orderId", + "paymentMethodId", + "amount", + "stateId" ], "properties": { "id": { @@ -5510,70 +4529,28 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "orderNumber": { - "description": "Unique number associated with every order.", - "type": "string" - }, - "billingAddressId": { - "description": "Unique identity of the billing address.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "billingAddressVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "primaryOrderDeliveryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "primaryOrderDeliveryVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "primaryOrderTransactionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "primaryOrderTransactionVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "currencyId": { - "description": "Unique identity of the currency.", + "orderId": { + "description": "Unique identity of an order.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "languageId": { - "description": "Unique identity of the language.", + "orderVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "salesChannelId": { - "description": "Unique identity of the sales channel.", + "paymentMethodId": { + "description": "Unique identity of payment method.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "orderDateTime": { - "description": "Timestamp when the order was placed.", - "type": "string", - "format": "date-time" - }, - "orderDate": { - "description": "Date when the order was placed.", - "type": "string", - "readOnly": true - }, - "price": { + "amount": { "required": [ - "netPrice", + "unitPrice", "totalPrice", - "positionPrice", - "rawTotal", - "taxStatus" + "quantity" ], "properties": { - "netPrice": { + "unitPrice": { "type": "number", "format": "float" }, @@ -5581,51 +4558,123 @@ "type": "number", "format": "float" }, + "quantity": { + "type": "integer", + "format": "int64" + }, "calculatedTaxes": { "type": "object" }, "taxRules": { "type": "object" }, - "positionPrice": { - "type": "number", - "format": "float" + "referencePrice": { + "type": "object" }, - "rawTotal": { - "type": "number", - "format": "float" + "listPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + }, + "discount": { + "type": "number", + "format": "float" + }, + "percentage": { + "type": "number", + "format": "float" + } + }, + "type": "object" }, - "taxStatus": { - "type": "string" + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + } + }, + "type": "object" } }, - "type": "object", - "$ref": "#/components/schemas/CalculatedPrice" + "type": "object" }, - "amountTotal": { - "description": "Gross price of the order.", - "type": "number", - "format": "float", - "readOnly": true + "validationData": { + "type": "object" }, - "amountNet": { - "description": "Net price of the order.", - "type": "number", - "format": "float", - "readOnly": true + "stateId": { + "description": "Unique identity of state.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "positionPrice": { - "description": "Price of each line item in the cart multiplied by its quantity excluding charges like shipping cost, rules, taxes etc.", - "type": "number", - "format": "float", + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", "readOnly": true }, - "taxStatus": { - "description": "TaxStatus takes `Free`, `Net` or `Gross` as values.", + "updatedAt": { "type": "string", + "format": "date-time", "readOnly": true }, - "shippingCosts": { + "stateMachineState": { + "$ref": "#/components/schemas/StateMachineState", + "description": "Current payment transaction state (e.g., open, paid, cancelled)" + }, + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod", + "description": "Payment method used for this transaction" + }, + "captures": { + "description": "Payment captures for this transaction", + "type": "array", + "items": { + "$ref": "#/components/schemas/OrderTransactionCapture" + } + } + }, + "type": "object" + }, + "OrderTransactionCapture": { + "description": "Added since version: 6.4.12.0", + "required": [ + "id", + "orderTransactionId", + "stateId", + "amount" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "orderTransactionId": { + "description": "Unique identity of order transaction.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "orderTransactionVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "stateId": { + "description": "Unique identity of order state.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "externalReference": { + "description": "External payment provider token.", + "type": "string" + }, + "amount": { "required": [ "unitPrice", "totalPrice", @@ -5682,53 +4731,9 @@ }, "type": "object" }, - "shippingTotal": { - "description": "Total shipping cost of the ordered product.", - "type": "number", - "format": "float", - "readOnly": true - }, - "currencyFactor": { - "description": "Rate at which currency is exchanged.", - "type": "number", - "format": "float" - }, - "deepLinkCode": { - "description": "It is a generated special code linked to email. It is used to access orders placed by guest customers.", - "type": "string" - }, - "affiliateCode": { - "description": "An affiliate code is an identification option with which website operators can mark outgoing links.", - "type": "string" - }, - "campaignCode": { - "description": "A campaign code is the globally unique identifier for a campaign.", - "type": "string" - }, - "customerComment": { - "description": "Comments given by comments.", - "type": "string" - }, - "source": { - "description": "Source of orders either via normal order placement or subscriptions.", - "type": "string" - }, - "taxCalculationType": { - "type": "string" - }, "customFields": { "type": "object" }, - "createdById": { - "description": "Unique identity of createdBy.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "updatedById": { - "description": "Unique identity of updatedBy.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, "createdAt": { "type": "string", "format": "date-time", @@ -5740,87 +4745,27 @@ "readOnly": true }, "stateMachineState": { - "$ref": "#/components/schemas/StateMachineState", - "description": "Current order state (e.g., open, in_progress, completed, cancelled)" - }, - "primaryOrderDelivery": { - "$ref": "#/components/schemas/OrderDelivery", - "description": "Primary delivery information for the order" - }, - "primaryOrderTransaction": { - "$ref": "#/components/schemas/OrderTransaction", - "description": "Primary payment transaction for the order" - }, - "orderCustomer": { - "$ref": "#/components/schemas/OrderCustomer", - "description": "Customer information associated with the order" - }, - "currency": { - "$ref": "#/components/schemas/Currency", - "description": "Currency used for the order" - }, - "language": { - "$ref": "#/components/schemas/Language", - "description": "Language used when placing the order" - }, - "addresses": { - "description": "All addresses associated with the order (billing and shipping)", - "type": "array", - "items": { - "$ref": "#/components/schemas/OrderAddress" - } - }, - "billingAddress": { - "$ref": "#/components/schemas/OrderAddress", - "description": "Billing address for the order" - }, - "deliveries": { - "description": "Delivery information including shipping address and tracking", - "type": "array", - "items": { - "$ref": "#/components/schemas/OrderDelivery" - } - }, - "lineItems": { - "description": "Order line items (products, discounts, fees)", - "type": "array", - "items": { - "$ref": "#/components/schemas/OrderLineItem" - } - }, - "transactions": { - "description": "Payment transactions for the order", - "type": "array", - "items": { - "$ref": "#/components/schemas/OrderTransaction" - } + "$ref": "#/components/schemas/StateMachineState" }, - "documents": { - "description": "Generated documents (invoices, delivery notes, credit notes)", - "type": "array", - "items": { - "$ref": "#/components/schemas/Document" - } + "transaction": { + "$ref": "#/components/schemas/OrderTransaction" }, - "tags": { - "description": "Tags assigned to the order for organization and filtering", + "refunds": { "type": "array", "items": { - "$ref": "#/components/schemas/Tag" + "$ref": "#/components/schemas/OrderTransactionCaptureRefund" } } }, "type": "object" }, - "OrderAddress": { - "description": "Added since version: 6.0.0.0", + "OrderTransactionCaptureRefund": { + "description": "Added since version: 6.4.12.0", "required": [ "id", - "countryId", - "firstName", - "lastName", - "street", - "city" + "captureId", + "stateId", + "amount" ], "properties": { "id": { @@ -5831,230 +4776,29 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "countryId": { - "description": "Unique identity of country.", + "captureId": { + "description": "Unique identity of order transaction capture.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "countryStateId": { - "description": "Unique identity of state.", + "captureVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "firstName": { - "description": "First name of the customer.", - "type": "string" - }, - "lastName": { - "description": "Last name of the customer.", - "type": "string" - }, - "street": { - "description": "Street address", - "type": "string" - }, - "zipcode": { - "description": "Zip code of the country.", - "type": "string" - }, - "city": { - "description": "Name of the city.", - "type": "string" - }, - "company": { - "description": "Name of the company.", - "type": "string" - }, - "department": { - "description": "Name of the department.", - "type": "string" + "stateId": { + "description": "Unique identity of order state.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "title": { - "description": "Title name given to customer like DR. , Prof., etc.", + "externalReference": { + "description": "External payment provider token.", "type": "string" }, - "phoneNumber": { - "description": "Phone number of the customer.", + "reason": { + "description": "Reason for refunding the amount for an order.", "type": "string" }, - "additionalAddressLine1": { - "description": "Additional address input if necessary.", - "type": "string" - }, - "additionalAddressLine2": { - "description": "Additional address input if necessary.", - "type": "string" - }, - "hash": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "string" - }, - "customFields": { - "type": "object" - }, - "vatId": { - "description": "Unique identity of VAT.", - "type": "string", - "deprecated": true - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "$ref": "#/components/schemas/CountryState" - }, - "salutation": { - "$ref": "#/components/schemas/Salutation" - } - }, - "type": "object" - }, - "OrderCustomer": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "email", - "firstName", - "lastName" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "email": { - "description": "Email address of the customer.", - "type": "string" - }, - "salutationId": { - "description": "Unique identity of salutation.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "description": "First name of the customer.", - "type": "string" - }, - "lastName": { - "description": "Last name of the customer.", - "type": "string" - }, - "company": { - "description": "Name of the company.", - "type": "string" - }, - "title": { - "description": "Title name given to the customer like Dr, prof. etc.", - "type": "string" - }, - "vatIds": { - "type": "array", - "items": { - "type": "string" - } - }, - "customerNumber": { - "description": "Unique number assigned to the customer.", - "type": "string" - }, - "customFields": { - "type": "object" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "salutation": { - "$ref": "#/components/schemas/Salutation" - } - }, - "type": "object" - }, - "OrderDelivery": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "orderId", - "shippingOrderAddressId", - "shippingMethodId", - "stateId", - "shippingDateEarliest", - "shippingDateLatest" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "orderId": { - "description": "Unique identity of order.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "orderVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shippingOrderAddressId": { - "description": "Unique identity of order's shipping address.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shippingOrderAddressVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shippingMethodId": { - "description": "Unique identity of shipping method.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "stateId": { - "description": "Unique identity of state.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "trackingCodes": { - "type": "array", - "items": { - "type": "string" - } - }, - "shippingDateEarliest": { - "description": "Date and time of earliest delivery of products.", - "type": "string", - "format": "date-time" - }, - "shippingDateLatest": { - "description": "Date and time of latest delivery of products.", - "type": "string", - "format": "date-time" - }, - "shippingCosts": { + "amount": { "required": [ "unitPrice", "totalPrice", @@ -6125,33 +4869,27 @@ "readOnly": true }, "stateMachineState": { - "$ref": "#/components/schemas/StateMachineState", - "description": "Current delivery state (e.g., open, shipped, delivered, cancelled)" - }, - "shippingOrderAddress": { - "$ref": "#/components/schemas/OrderAddress", - "description": "Shipping address for this delivery" + "$ref": "#/components/schemas/StateMachineState" }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod", - "description": "Shipping method used for this delivery" + "transactionCapture": { + "$ref": "#/components/schemas/OrderTransactionCapture" }, "positions": { - "description": "Line items included in this delivery", "type": "array", "items": { - "$ref": "#/components/schemas/OrderDeliveryPosition" + "$ref": "#/components/schemas/OrderTransactionCaptureRefundPosition" } } }, "type": "object" }, - "OrderDeliveryPosition": { - "description": "Added since version: 6.0.0.0", + "OrderTransactionCaptureRefundPosition": { + "description": "Added since version: 6.4.12.0", "required": [ "id", - "orderDeliveryId", - "orderLineItemId" + "refundId", + "orderLineItemId", + "amount" ], "properties": { "id": { @@ -6162,17 +4900,17 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "orderDeliveryId": { - "description": "Unique identity of order delivery.", + "refundId": { + "description": "Unique identity of order transaction capture refund.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "orderDeliveryVersionId": { + "refundVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, "orderLineItemId": { - "description": "Unique identity of line items in an order.", + "description": "Unique identity of order line item.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, @@ -6180,7 +4918,20 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "price": { + "externalReference": { + "description": "External payment provider token.", + "type": "string" + }, + "reason": { + "description": "Reason for refunding the amount for an order.", + "type": "string" + }, + "quantity": { + "description": "Quantity of line item to be refunded.", + "type": "integer", + "format": "int64" + }, + "amount": { "required": [ "unitPrice", "totalPrice", @@ -6237,21 +4988,6 @@ }, "type": "object" }, - "unitPrice": { - "description": "Price of product per item (where, quantity=1).", - "type": "number", - "format": "float" - }, - "totalPrice": { - "description": "Cost of product based on quantity.", - "type": "number", - "format": "float" - }, - "quantity": { - "description": "Number of items of each product.", - "type": "integer", - "format": "int64" - }, "customFields": { "type": "object" }, @@ -6264,238 +5000,173 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "orderLineItem": { + "$ref": "#/components/schemas/OrderLineItem" + }, + "orderTransactionCaptureRefund": { + "$ref": "#/components/schemas/OrderTransactionCaptureRefund" } }, "type": "object" }, - "OrderLineItem": { + "PaymentMethodJsonApi": { "description": "Added since version: 6.0.0.0", - "required": [ - "apiAlias", - "id", - "orderId", - "identifier", - "quantity", - "label", - "children", - "states" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "orderId": { - "description": "Unique identity of order.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "orderVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productId": { - "description": "Unique identity of product.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "promotionId": { - "description": "Unique identity of product.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "parentId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "parentVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "coverId": { - "description": "Unique identity of cover image.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "identifier": { - "description": "It is a unique identity of an item in cart before its converted to an order.", - "type": "string" - }, - "referencedId": { - "description": "Unique identity of type of entity.", - "type": "string" - }, - "quantity": { - "description": "Number of items of product.", - "type": "integer", - "format": "int64" - }, - "label": { - "description": "It is a typical product name given to the line item.", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/resource" }, - "payload": { - "type": "object", + { + "required": [ + "id", + "technicalName", + "name" + ], "properties": { - "categoryIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { + "name": { + "type": "string" + }, + "distinguishableName": { "type": "string", - "format": "date-time", "readOnly": true }, - "customFields": { - "type": "object" - }, - "features": { - "type": "array" + "description": { + "type": "string" }, - "isCloseout": { - "type": "boolean" + "position": { + "description": "The order of the tabs of your defined payment methods in the storefront by entering numerical values like 1,2,3, etc.", + "type": "integer", + "format": "int64" }, - "isNew": { + "active": { + "description": "When boolean value is `true`, the payment methods are available for selection in the storefront.", "type": "boolean" }, - "manufacturerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "markAsTopseller": { + "afterOrderEnabled": { + "description": "When set to true, customers are redirected to the payment options page to choose a new payment method on order failure.", "type": "boolean" }, - "optionIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, - "options": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PropertyGroupOption" - } + "customFields": { + "type": "object" }, - "parentId": { + "mediaId": { + "description": "Unique identity of media.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "productNumber": { + "technicalName": { "type": "string" }, - "propertyIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true + "shortName": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "string" }, - "releaseDate": { + "createdAt": { "type": "string", - "format": "date-time" - }, - "stock": { - "type": "integer", - "format": "int64" - }, - "streamIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, + "format": "date-time", "readOnly": true }, - "tagIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, + "updatedAt": { + "type": "string", + "format": "date-time", "readOnly": true }, - "taxId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "translated": { + "type": "object" }, - "productType": { - "$ref": "#/components/schemas/Product/properties/type" + "relationships": { + "properties": { + "media": { + "description": "Payment method logo or icon image", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/payment-method/da8da1569e6bef3249a7064261df833f/media" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "media" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "62933a2951ef01f4eafd9bdf4d3cd2f0" + } + } + } + }, + "type": "object" + } + }, + "type": "object" } - } + }, + "type": "object" + } + ] + }, + "PaymentMethod": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "technicalName", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "good": { - "description": "When set to true, it indicates the line item is physical else it is virtual.", - "type": "boolean" + "name": { + "type": "string" }, - "removable": { - "description": "Allows the line item to be removable from the cart when set to true.", - "type": "boolean" + "distinguishableName": { + "type": "string", + "readOnly": true }, - "stackable": { - "description": "Allows to change the quantity of the line item when set to true.", - "type": "boolean" + "description": { + "type": "string" }, "position": { - "description": "Position of line items placed in an order.", + "description": "The order of the tabs of your defined payment methods in the storefront by entering numerical values like 1,2,3, etc.", "type": "integer", "format": "int64" }, - "priceDefinition": { - "type": "object", - "$ref": "#/components/schemas/CartPriceQuantity" + "active": { + "description": "When boolean value is `true`, the payment methods are available for selection in the storefront.", + "type": "boolean" }, - "unitPrice": { - "description": "Price of product per item (where, quantity=1).", - "type": "number", - "format": "float" + "afterOrderEnabled": { + "description": "When set to true, customers are redirected to the payment options page to choose a new payment method on order failure.", + "type": "boolean" }, - "totalPrice": { - "description": "Cost of product based on quantity.", - "type": "number", - "format": "float" - }, - "description": { - "description": "Description of line items in an order.", - "type": "string" + "customFields": { + "type": "object" }, - "type": { - "description": "Type refers to the entity type of an item whether it is product or promotion for instance.", + "mediaId": { + "description": "Unique identity of media.", "type": "string", - "enum": [ - "product", - "credit", - "custom", - "promotion", - "container", - "discount", - "quantity" - ] + "pattern": "^[0-9a-f]{32}$" }, - "customFields": { - "type": "object" + "technicalName": { + "type": "string" }, - "states": { - "type": "array", - "items": { - "type": "string" - }, - "deprecated": true + "shortName": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "string" }, "createdAt": { "type": "string", @@ -6507,45 +5178,35 @@ "format": "date-time", "readOnly": true }, - "cover": { - "$ref": "#/components/schemas/Media", - "description": "Line item image or thumbnail" - }, - "product": { - "$ref": "#/components/schemas/Product", - "description": "Referenced product if this is a product line item" - }, - "orderDeliveryPositions": { - "description": "Delivery positions for this line item", - "type": "array", - "items": { - "$ref": "#/components/schemas/OrderDeliveryPosition" - } - }, - "downloads": { - "description": "Digital downloads associated with this line item", - "type": "array", - "items": { - "$ref": "#/components/schemas/OrderLineItemDownload" - } - }, - "parent": { - "$ref": "#/components/schemas/OrderLineItem" + "translated": { + "type": "object" }, - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrderLineItem" - } + "media": { + "$ref": "#/components/schemas/Media", + "description": "Payment method logo or icon image" + } + }, + "type": "object" + }, + "Plugin": { + "description": "Added since version: 6.0.0.0", + "required": [ + "label" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "apiAlias": { + "createdAt": { "type": "string", - "enum": [ - "order_line_item" - ] + "format": "date-time", + "readOnly": true }, - "extensions": { - "type": "object" + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, "translated": { "type": "object" @@ -6553,15 +5214,12 @@ }, "type": "object" }, - "OrderLineItemDownload": { - "description": "Added since version: 6.4.19.0", + "ProductConfiguratorSetting": { + "description": "Added since version: 6.0.0.0", "required": [ - "media", "id", - "orderLineItemId", - "mediaId", - "position", - "accessGranted" + "productId", + "optionId" ], "properties": { "id": { @@ -6572,12 +5230,12 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "orderLineItemId": { - "description": "Unique identity of Order line item.", + "productId": { + "description": "Unique identity of product.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "orderLineItemVersionId": { + "productVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, @@ -6586,15 +5244,16 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "optionId": { + "description": "Unique identity of option.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "position": { - "description": "The order of downloaded digital products displayed in the storefront by mentioning numerical values like 1,2,3, etc.", + "description": "The order of the tabs of your defined product configuration settings in the storefront by entering numerical values like 1,2,3, etc.", "type": "integer", "format": "int64" }, - "accessGranted": { - "description": "When boolean value is `true`, the digital product is allowed to download.", - "type": "boolean" - }, "customFields": { "type": "object" }, @@ -6608,55 +5267,97 @@ "format": "date-time", "readOnly": true }, - "orderLineItem": { - "$ref": "#/components/schemas/OrderLineItem" - }, "media": { "$ref": "#/components/schemas/Media" + }, + "option": { + "$ref": "#/components/schemas/PropertyGroupOption" } }, "type": "object" }, - "OrderTag": { - "description": "Added since version: 6.0.0.0", + "ProductCrossSelling": { + "description": "Added since version: 6.1.0.0", "required": [ - "orderId", - "tagId" + "id", + "name" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "orderId": { + "name": { + "type": "string" + }, + "position": { + "description": "The order of the tabs of your defined cross-selling actions in the storefront by entering numerical values like 1,2,3, etc.", + "type": "integer", + "format": "int64" + }, + "sortBy": { + "description": "To sort the display of products by name, price or publication (descending, ascending) date.", + "type": "string" + }, + "sortDirection": { + "description": "To sort the display of products by ascending or descending order.", + "type": "string" + }, + "type": { + "description": "Type of product assignment for cross-selling. It can either be Dynamic product group or Manual assignment.", + "type": "string" + }, + "active": { + "description": "When set to active, the cross-selling feature is enabled.", + "type": "boolean" + }, + "limit": { + "description": "The maximum number of products to be displayed in cross-selling on the item detail page of your item.", + "type": "integer", + "format": "int64" + }, + "createdAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "orderVersionId": { + "updatedAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "tagId": { + "translated": { + "type": "object" + } + }, + "type": "object" + }, + "ProductCrossSellingAssignedProducts": { + "description": "Added since version: 6.2.0.0", + "properties": { + "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "order": { - "$ref": "#/components/schemas/Order" + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, - "tag": { - "$ref": "#/components/schemas/Tag" + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true } }, "type": "object" }, - "OrderTransaction": { - "description": "Added since version: 6.0.0.0", + "ProductDownload": { + "description": "Added since version: 6.4.19.0", "required": [ "id", - "orderId", - "paymentMethodId", - "amount", - "stateId" + "productId", + "mediaId" ], "properties": { "id": { @@ -6667,87 +5368,53 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "orderId": { - "description": "Unique identity of an order.", + "productId": { + "description": "Unique identity of Product.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "orderVersionId": { + "productVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "paymentMethodId": { - "description": "Unique identity of payment method.", + "mediaId": { + "description": "Unique identity of media.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "amount": { - "required": [ - "unitPrice", - "totalPrice", - "quantity" - ], - "properties": { - "unitPrice": { - "type": "number", - "format": "float" - }, - "totalPrice": { - "type": "number", - "format": "float" - }, - "quantity": { - "type": "integer", - "format": "int64" - }, - "calculatedTaxes": { - "type": "object" - }, - "taxRules": { - "type": "object" - }, - "referencePrice": { - "type": "object" - }, - "listPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - }, - "discount": { - "type": "number", - "format": "float" - }, - "percentage": { - "type": "number", - "format": "float" - } - }, - "type": "object" - }, - "regulationPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - } - }, - "type": "object" - } - }, - "type": "object" + "position": { + "description": "The order in which the digital products are downloaded, like 1,2,3, etc.to adjust their order of display.", + "type": "integer", + "format": "int64" }, - "validationData": { + "customFields": { "type": "object" }, - "stateId": { - "description": "Unique identity of state.", + "createdAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "customFields": { - "type": "object" + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "product": { + "$ref": "#/components/schemas/Product" + }, + "media": { + "$ref": "#/components/schemas/Media" + } + }, + "type": "object" + }, + "ProductExport": { + "description": "Added since version: 6.1.0.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, "createdAt": { "type": "string", @@ -6758,116 +5425,87 @@ "type": "string", "format": "date-time", "readOnly": true + } + }, + "type": "object" + }, + "ProductFeatureSet": { + "description": "Added since version: 6.3.0.0", + "required": [ + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "stateMachineState": { - "$ref": "#/components/schemas/StateMachineState", - "description": "Current payment transaction state (e.g., open, paid, cancelled)" + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, - "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethod", - "description": "Payment method used for this transaction" + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, - "captures": { - "description": "Payment captures for this transaction", - "type": "array", - "items": { - "$ref": "#/components/schemas/OrderTransactionCapture" - } + "translated": { + "type": "object" } }, "type": "object" }, - "OrderTransactionCapture": { - "description": "Added since version: 6.4.12.0", + "ProductKeywordDictionary": { + "description": "Added since version: 6.0.0.0", "required": [ - "id", - "orderTransactionId", - "stateId", - "amount" + "languageId", + "keyword" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { + "languageId": { + "description": "Unique identity of the language.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "orderTransactionId": { - "description": "Unique identity of order transaction.", + "keyword": { + "description": "The keywords that help to search the product.", + "type": "string" + } + }, + "type": "object" + }, + "ProductManufacturer": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "name" + ], + "properties": { + "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "orderTransactionVersionId": { + "versionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "stateId": { - "description": "Unique identity of order state.", + "mediaId": { + "description": "Unique identity of the media.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "externalReference": { - "description": "External payment provider token.", + "link": { "type": "string" }, - "amount": { - "required": [ - "unitPrice", - "totalPrice", - "quantity" - ], - "properties": { - "unitPrice": { - "type": "number", - "format": "float" - }, - "totalPrice": { - "type": "number", - "format": "float" - }, - "quantity": { - "type": "integer", - "format": "int64" - }, - "calculatedTaxes": { - "type": "object" - }, - "taxRules": { - "type": "object" - }, - "referencePrice": { - "type": "object" - }, - "listPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - }, - "discount": { - "type": "number", - "format": "float" - }, - "percentage": { - "type": "number", - "format": "float" - } - }, - "type": "object" - }, - "regulationPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - } - }, - "type": "object" - } - }, - "type": "object" + "name": { + "type": "string" + }, + "description": { + "type": "string" }, "customFields": { "type": "object" @@ -6882,116 +5520,93 @@ "format": "date-time", "readOnly": true }, - "stateMachineState": { - "$ref": "#/components/schemas/StateMachineState" + "translated": { + "type": "object" }, - "transaction": { - "$ref": "#/components/schemas/OrderTransaction" + "media": { + "$ref": "#/components/schemas/Media" + } + }, + "type": "object" + }, + "ProductPrice": { + "description": "Added since version: 6.0.0.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "refunds": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrderTransactionCaptureRefund" - } + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true } }, "type": "object" }, - "OrderTransactionCaptureRefund": { - "description": "Added since version: 6.4.12.0", + "ProductReview": { + "description": "Added since version: 6.0.0.0", "required": [ "id", - "captureId", - "stateId", - "amount" + "productId", + "salesChannelId", + "languageId", + "title", + "content" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { + "productId": { + "description": "Unique identity of the product.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "captureId": { - "description": "Unique identity of order transaction capture.", + "productVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "captureVersionId": { + "salesChannelId": { + "description": "Unique identity of the sales channel.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "stateId": { - "description": "Unique identity of order state.", + "languageId": { + "description": "Unique identity of the language.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "externalReference": { - "description": "External payment provider token.", + "externalUser": { + "description": "External user name.", "type": "string" }, - "reason": { - "description": "Reason for refunding the amount for an order.", + "title": { + "description": "Title of product review.", "type": "string" }, - "amount": { - "required": [ - "unitPrice", - "totalPrice", - "quantity" - ], - "properties": { - "unitPrice": { - "type": "number", - "format": "float" - }, - "totalPrice": { - "type": "number", - "format": "float" - }, - "quantity": { - "type": "integer", - "format": "int64" - }, - "calculatedTaxes": { - "type": "object" - }, - "taxRules": { - "type": "object" - }, - "referencePrice": { - "type": "object" - }, - "listPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - }, - "discount": { - "type": "number", - "format": "float" - }, - "percentage": { - "type": "number", - "format": "float" - } - }, - "type": "object" - }, - "regulationPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - } - }, - "type": "object" - } - }, - "type": "object" + "content": { + "description": "Short description or subject of the project review.", + "type": "string" + }, + "points": { + "description": "A floating point number given to rate a product.", + "type": "number", + "format": "float" + }, + "status": { + "description": "When status is set, the rating is made visible.", + "type": "boolean" + }, + "comment": { + "description": "Detailed review about the product.", + "type": "string" }, "customFields": { "type": "object" @@ -7005,129 +5620,91 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "stateMachineState": { - "$ref": "#/components/schemas/StateMachineState" - }, - "transactionCapture": { - "$ref": "#/components/schemas/OrderTransactionCapture" - }, - "positions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrderTransactionCaptureRefundPosition" - } } }, "type": "object" }, - "OrderTransactionCaptureRefundPosition": { - "description": "Added since version: 6.4.12.0", - "required": [ - "id", - "refundId", - "orderLineItemId", - "amount" - ], + "ProductSearchConfig": { + "description": "Added since version: 6.3.5.0", "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { + "createdAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "refundId": { - "description": "Unique identity of order transaction capture refund.", + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "ProductSearchConfigField": { + "description": "Added since version: 6.3.5.0", + "properties": { + "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "refundVersionId": { + "createdAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "orderLineItemId": { - "description": "Unique identity of order line item.", + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "ProductSearchKeyword": { + "description": "Added since version: 6.0.0.0", + "properties": { + "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "orderLineItemVersionId": { + "createdAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "externalReference": { - "description": "External payment provider token.", - "type": "string" + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "ProductSorting": { + "description": "Added since version: 6.3.2.0", + "required": [ + "key", + "priority", + "label" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "reason": { - "description": "Reason for refunding the amount for an order.", + "key": { "type": "string" }, - "quantity": { - "description": "Quantity of line item to be refunded.", + "priority": { "type": "integer", "format": "int64" }, - "amount": { - "required": [ - "unitPrice", - "totalPrice", - "quantity" - ], - "properties": { - "unitPrice": { - "type": "number", - "format": "float" - }, - "totalPrice": { - "type": "number", - "format": "float" - }, - "quantity": { - "type": "integer", - "format": "int64" - }, - "calculatedTaxes": { - "type": "object" - }, - "taxRules": { - "type": "object" - }, - "referencePrice": { - "type": "object" - }, - "listPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - }, - "discount": { - "type": "number", - "format": "float" - }, - "percentage": { - "type": "number", - "format": "float" - } - }, - "type": "object" - }, - "regulationPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "customFields": { - "type": "object" + "label": { + "type": "string" }, "createdAt": { "type": "string", @@ -7139,172 +5716,131 @@ "format": "date-time", "readOnly": true }, - "orderLineItem": { - "$ref": "#/components/schemas/OrderLineItem" - }, - "orderTransactionCaptureRefund": { - "$ref": "#/components/schemas/OrderTransactionCaptureRefund" + "translated": { + "type": "object" } }, "type": "object" }, - "PaymentMethodJsonApi": { + "ProductStream": { "description": "Added since version: 6.0.0.0", - "allOf": [ - { - "$ref": "#/components/schemas/resource" + "required": [ + "id", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - { - "required": [ - "id", - "technicalName", - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "name": { - "type": "string" - }, - "distinguishableName": { - "type": "string", - "readOnly": true - }, - "description": { - "type": "string" - }, - "position": { - "description": "The order of the tabs of your defined payment methods in the storefront by entering numerical values like 1,2,3, etc.", - "type": "integer", - "format": "int64" - }, - "active": { - "description": "When boolean value is `true`, the payment methods are available for selection in the storefront.", - "type": "boolean" - }, - "afterOrderEnabled": { - "description": "When set to true, customers are redirected to the payment options page to choose a new payment method on order failure.", - "type": "boolean" - }, - "customFields": { - "type": "object" - }, - "mediaId": { - "description": "Unique identity of media.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "technicalName": { - "type": "string" - }, - "shortName": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "string" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - }, - "relationships": { - "properties": { - "media": { - "description": "Payment method logo or icon image", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/payment-method/da8da1569e6bef3249a7064261df833f/media" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "media" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "62933a2951ef01f4eafd9bdf4d3cd2f0" - } - } - } - }, - "type": "object" - } - }, - "type": "object" - } - }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "customFields": { + "type": "object" + }, + "internal": { + "description": "When the boolean value is `true` indicating that it is for internal use only and will not appear in product stream listings.", + "type": "boolean" + }, + "displayAsGroup": { + "description": "When enabled, matching variants are grouped according to the product presentation setting. Disable to show them individually.", + "type": "boolean" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { "type": "object" } - ] + }, + "type": "object" }, - "PaymentMethod": { + "ProductStreamFilter": { "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "technicalName", - "name" - ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "name": { - "type": "string" - }, - "distinguishableName": { + "createdAt": { "type": "string", + "format": "date-time", "readOnly": true }, - "description": { - "type": "string" - }, - "position": { - "description": "The order of the tabs of your defined payment methods in the storefront by entering numerical values like 1,2,3, etc.", - "type": "integer", - "format": "int64" + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "ProductVisibility": { + "description": "Added since version: 6.0.0.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "active": { - "description": "When boolean value is `true`, the payment methods are available for selection in the storefront.", - "type": "boolean" + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, - "afterOrderEnabled": { - "description": "When set to true, customers are redirected to the payment options page to choose a new payment method on order failure.", - "type": "boolean" + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "Promotion": { + "description": "Added since version: 6.0.0.0", + "required": [ + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, "customFields": { "type": "object" }, - "mediaId": { - "description": "Unique identity of media.", + "createdAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "technicalName": { - "type": "string" + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, - "shortName": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "string" + "translated": { + "type": "object" + } + }, + "type": "object" + }, + "PromotionDiscount": { + "description": "Added since version: 6.0.0.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, "createdAt": { "type": "string", @@ -7315,22 +5851,32 @@ "type": "string", "format": "date-time", "readOnly": true + } + }, + "type": "object" + }, + "PromotionDiscountPrices": { + "description": "Added since version: 6.0.0.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "translated": { - "type": "object" + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, - "media": { - "$ref": "#/components/schemas/Media", - "description": "Payment method logo or icon image" + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true } }, "type": "object" }, - "Plugin": { + "PromotionIndividualCode": { "description": "Added since version: 6.0.0.0", - "required": [ - "label" - ], "properties": { "id": { "type": "string", @@ -7345,744 +5891,864 @@ "type": "string", "format": "date-time", "readOnly": true + } + }, + "type": "object" + }, + "PromotionSalesChannel": { + "description": "Added since version: 6.0.0.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, - "translated": { - "type": "object" + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true } }, "type": "object" }, - "ProductJsonApi": { + "PromotionSetgroup": { "description": "Added since version: 6.0.0.0", - "allOf": [ - { - "$ref": "#/components/schemas/resource", - "required": [ - "options" - ], - "properties": { - "options": { - "type": "array", - "items": { - "type": "object", - "required": [ - "group", - "option", - "translated" - ], - "properties": { - "group": { - "type": "string" - }, - "option": { - "type": "string" - }, - "translated": { - "type": "object", - "properties": { - "group": { - "type": "string" - }, - "option": { - "type": "string" - } - }, - "required": [ - "group", - "option" - ] - } - } - } - } + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "PropertyGroup": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "displayType": { + "description": "Property groups can be displayed in the form of text, image, dropdown or color.", + "type": "string" + }, + "sortingType": { + "description": "Sorting the property group by name or position.", + "type": "string" + }, + "filterable": { + "description": "When set to true, the property will be displayed in the product filter of product lists.", + "type": "boolean" + }, + "visibleOnProductDetailPage": { + "description": "When set to true, the property groups are displayed on product detail page.", + "type": "boolean" + }, + "position": { + "type": "integer", + "format": "int64" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + }, + "options": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PropertyGroupOption" } + } + }, + "type": "object" + }, + "Rule": { + "description": "Added since version: 6.0.0.0", + "required": [ + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - { - "required": [ - "id", - "taxId", - "productNumber", - "stock", - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "parentId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "parentVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "manufacturerId": { - "description": "Unique identity of the manufacturer.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productManufacturerVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "unitId": { - "description": "Unique identity of the unit.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "taxId": { - "description": "Unique identity of tax.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "coverId": { - "description": "Unique identity of a ProductMedia item used as product cover.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productMediaVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "deliveryTimeId": { - "description": "Unique identity of delivery time.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "canonicalProductId": { - "description": "Unique identity of canonical product.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "canonicalProductVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "cmsPageId": { - "description": "Unique identity of CMS page.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "cmsPageVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "openGraphMediaId": { - "description": "Media used as Open Graph image for social media sharing.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productNumber": { - "description": "Unique number assigned to individual products. Define rules for automatic assignment of every product creation as per your number range.", - "type": "string" - }, - "restockTime": { - "description": "The restock time in days indicates how long it will take until a sold out item is back in stock.", - "type": "integer", - "format": "int64" - }, - "active": { - "description": "When boolean value is `true`, the products are available for selection in the storefront for purchase.", - "type": "boolean" - }, - "available": { - "description": "Indicates weather the product is available or not.", - "type": "boolean", - "readOnly": true - }, - "isCloseout": { - "description": "When the value is set to true, the product is hidden when sold out.", - "type": "boolean" - }, - "availableStock": { - "description": "Indicates the number of products still available. This value results from the stock minus the open orders.", - "type": "integer", - "format": "int64", - "readOnly": true - }, - "stock": { - "description": "Indicates the number of products available.", - "type": "integer", - "format": "int64" - }, - "displayGroup": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "string", - "readOnly": true - }, - "manufacturerNumber": { - "description": "Unique number that describes the manufacturer.", - "type": "string" - }, - "ean": { - "description": "Indicates EAN of the product.", - "type": "string" - }, - "purchaseSteps": { - "description": "Specifies the scales in which the item is to be offered. For example, a scale of 2 means that your customers can purchase 2, 4, 6 products, etc., but not 1, 3 or 5.", - "type": "integer", - "format": "int64" - }, - "maxPurchase": { - "description": "Maximum number of items that can be purchased.", - "type": "integer", - "format": "int64" - }, - "minPurchase": { - "description": "Minimum number of items that can be purchased.", - "type": "integer", - "format": "int64" - }, - "purchaseUnit": { - "description": "Quantity of the item purchased. For example, 500ml, 2kg, etc.", - "type": "number", - "format": "float" - }, - "referenceUnit": { - "description": "Price of purchased item calculated as per the reference unit. Say, you bought 500ml of milk and the price is calculated in reference to 1000ml.", - "type": "number", - "format": "float" - }, - "shippingFree": { - "description": "Indicates weather the shipping price is free or not.", - "type": "boolean" - }, - "markAsTopseller": { - "description": "Indicates weather the product is top seller or not.", - "type": "boolean" - }, - "weight": { - "description": "The weight of the product.", - "type": "number", - "format": "float" - }, - "width": { - "description": "The width of the product.", - "type": "number", - "format": "float" - }, - "height": { - "description": "The height of the product.", - "type": "number", - "format": "float" - }, - "length": { - "description": "The length of the product.", - "type": "number", - "format": "float" - }, - "releaseDate": { - "description": "The release date of a product or product model. This can be used to distinguish the exact variant of a product.", - "type": "string", - "format": "date-time" - }, - "ratingAverage": { - "description": "Average of all the ratings.", - "type": "number", - "format": "float", - "readOnly": true - }, - "categoryTree": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, - "propertyIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, - "optionIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, - "streamIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, - "tagIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, - "categoryIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, - "childCount": { - "type": "integer", - "format": "int64", - "readOnly": true - }, - "sales": { - "description": "Frequency of the product sales.", - "type": "integer", - "format": "int64", - "readOnly": true - }, - "metaDescription": { - "type": "string" - }, - "name": { - "type": "string" - }, - "keywords": { - "type": "string" - }, - "description": { - "type": "string" - }, - "descriptionTeaser": { - "description": "Read-only, HTML-stripped excerpt of the description, derived on write.", - "type": "string", - "readOnly": true - }, - "metaTitle": { - "type": "string" - }, - "packUnit": { - "type": "string" - }, - "packUnitPlural": { - "type": "string" - }, - "customFields": { - "type": "object" - }, - "ogTitle": { - "type": "string" - }, - "ogDescription": { - "type": "string" - }, - "type": { - "description": "The type of the product, e.g., physical or digital.", - "type": "string", - "enum": [ - "physical", - "digital" - ] - }, - "states": { - "type": "array", - "items": { - "type": "string" - }, - "readOnly": true, - "deprecated": true - }, - "calculatedPrice": { - "type": "object" - }, - "calculatedPrices": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": false - } - }, - "calculatedMaxPurchase": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "integer", - "format": "int64" - }, - "calculatedCheapestPrice": { - "type": "object" - }, - "isNew": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean" - }, - "sortedProperties": { - "type": "object" - }, - "measurements": { - "type": "object" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - }, - "extensions": { - "properties": { - "attendeeProductCollections": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/attendeeProductCollections" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "dsr_attendee_product_collection" - }, - "id": { - "type": "string", - "example": "0a7b3b2f4b81f36910a74f22826f35df" - } - } - } - } - }, - "type": "object" - } - }, - "type": "object" - }, - "relationships": { - "properties": { - "downloads": { - "description": "Downloadable files associated with the product (e.g., manuals, digital content)", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/downloads" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product_download" - }, - "id": { - "type": "string", - "example": "d07d50a751bc6ddf12bf3af0efee9b45" - } - } - } - } - }, - "type": "object" - }, - "parent": { - "description": "Unique identity of the product.", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/parent" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "d0e45878043844ffc41aac437e86b602" - } - } - } - }, - "type": "object" - }, - "children": { - "description": "Product variants that inherit from this parent product", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/children" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product" - }, - "id": { - "type": "string", - "example": "268184c12df027f536154d099d497b31" - } - } - } - } - }, - "type": "object" - }, - "deliveryTime": { - "description": "Estimated delivery time for the product", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/deliveryTime" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "delivery_time" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "8c888ae25a7bd42057370e31f7e01044" - } - } - } - }, - "type": "object" - }, - "tax": { - "description": "Tax configuration (rate and calculation rules)", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/tax" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "tax" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "06565e5611f23fdf8cc43e5077b92b54" - } - } - } - }, - "type": "object" - }, - "manufacturer": { - "description": "Product manufacturer or brand information", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/manufacturer" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product_manufacturer" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "c2904bca62b22443d6cf5e9d89cab204" - } - } - } - }, - "type": "object" - }, - "unit": { - "description": "Product unit of measure (e.g., piece, liter, kg)", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/unit" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "unit" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "3e34bdebd9bd5edda27e8728904a2552" - } - } - } - }, - "type": "object" - }, - "cover": { - "description": "Main product image displayed in listings and detail pages", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/cover" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product_media" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "41d0e299ca1abeb2094852da042165c7" - } - } - } - }, - "type": "object" - }, - "openGraphMedia": { - "description": "Open Graph image for social media sharing", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/openGraphMedia" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "media" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "bbda52d941a3452369a00f2880f4f358" - } - } - } - }, - "type": "object" - }, - "cmsPage": { - "description": "Custom CMS page layout for the product detail page", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/cmsPage" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "cms_page" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "7b1460918b1abb93311108f3dc021c9b" - } - } - } - }, - "type": "object" - }, - "canonicalProduct": { - "description": "Canonical product reference for variant consolidation and SEO purposes", + "name": { + "description": "Name of the rule defined.", + "type": "string" + }, + "description": { + "description": "Description of the rule.", + "type": "string" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "RuleCondition": { + "description": "Added since version: 6.0.0.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "SalesChannel": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "languageId", + "customerGroupId", + "currencyId", + "paymentMethodId", + "shippingMethodId", + "countryId", + "navigationCategoryId", + "name", + "homeEnabled" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "languageId": { + "description": "Unique identity of language used.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "customerGroupId": { + "description": "Unique identity of customer group.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "currencyId": { + "description": "Unique identity of currency used.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "paymentMethodId": { + "description": "Unique identity of payment method used.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingMethodId": { + "description": "Unique identity of shipping method.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryId": { + "description": "Unique identity of country.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "navigationCategoryId": { + "description": "Unique identity of navigation category.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "navigationCategoryVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "navigationCategoryDepth": { + "description": "It determines the number of levels of subcategories in the storefront category menu.", + "type": "integer", + "format": "int64" + }, + "footerCategoryId": { + "description": "Unique identity of footer category.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "footerCategoryVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "serviceCategoryId": { + "description": "Unique identity of service category.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "serviceCategoryVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "mailHeaderFooterId": { + "description": "Unique identity of mail header and footer.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "hreflangDefaultDomainId": { + "description": "Unique identity of hreflangDefaultDomain.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "measurementUnits": { + "$ref": "#/components/schemas/MeasurementUnits" + }, + "businessTimeZone": { + "description": "Business timezone used for sales-channel-specific rendering. Added since version: 6.7.13.0.", + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "description": "A short name for sales channel.", + "type": "string" + }, + "taxCalculationType": { + "description": "Tax calculation types are `horizontal` and `vertical`.", + "type": "string" + }, + "configuration": { + "type": "object" + }, + "active": { + "description": "When boolean value is `true`, the sales channel is enabled.", + "type": "boolean" + }, + "hreflangActive": { + "description": "When set to true, the sales channel pages are available in different languages.", + "type": "boolean" + }, + "maintenance": { + "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period.", + "type": "boolean" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + }, + "language": { + "$ref": "#/components/schemas/Language", + "description": "Default language for the sales channel" + }, + "currency": { + "$ref": "#/components/schemas/Currency", + "description": "Default currency for the sales channel" + }, + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod", + "description": "Default payment method for the sales channel" + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod", + "description": "Default shipping method for the sales channel" + }, + "country": { + "$ref": "#/components/schemas/Country", + "description": "Default country for the sales channel" + }, + "domains": { + "description": "Domain URLs configured for the sales channel", + "type": "array", + "items": { + "$ref": "#/components/schemas/SalesChannelDomain" + } + }, + "navigationCategory": { + "$ref": "#/components/schemas/Category", + "description": "Root category for navigation menu" + }, + "footerCategory": { + "$ref": "#/components/schemas/Category", + "description": "Root category for footer navigation" + }, + "serviceCategory": { + "$ref": "#/components/schemas/Category", + "description": "Root category for service pages" + }, + "hreflangDefaultDomain": { + "$ref": "#/components/schemas/SalesChannelDomain" + } + }, + "type": "object" + }, + "SalesChannelAnalytics": { + "description": "Added since version: 6.2.0.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "SalesChannelDomain": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "url", + "salesChannelId", + "languageId", + "currencyId", + "snippetSetId" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "url": { + "description": "URL of the sales channel domain.", + "type": "string" + }, + "salesChannelId": { + "description": "Unique identity of sales channel.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "languageId": { + "description": "Unique identity of language used.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "currencyId": { + "description": "Unique identity of currency.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "snippetSetId": { + "description": "Unique identity of snippet set.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "measurementUnits": { + "$ref": "#/components/schemas/MeasurementUnits" + }, + "hreflangUseOnlyLocale": { + "description": "This is used to toggle the language configurations, say between DE and DE-DE for instance.", + "type": "boolean" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "language": { + "$ref": "#/components/schemas/Language" + }, + "currency": { + "$ref": "#/components/schemas/Currency" + }, + "salesChannelDefaultHreflang": { + "$ref": "#/components/schemas/SalesChannel" + } + }, + "type": "object" + }, + "SalesChannelFile": { + "description": "Added since version: 6.7.12.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "SalesChannelTrackingCustomer": { + "description": "Added since version: 6.7.9.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "SalesChannelTrackingOrder": { + "description": "Added since version: 6.7.9.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "SalesChannelType": { + "description": "Added since version: 6.0.0.0", + "required": [ + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + }, + "SalutationJsonApi": { + "description": "Added since version: 6.0.0.0", + "allOf": [ + { + "$ref": "#/components/schemas/resource" + }, + { + "required": [ + "id", + "salutationKey", + "displayName", + "letterName" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "salutationKey": { + "description": "Technical name given to salutation. For example: mr", + "type": "string" + }, + "displayName": { + "type": "string" + }, + "letterName": { + "type": "string" + }, + "customFields": { + "type": "object" + }, + "position": { + "description": "Numerical value that indicates the order in which the defined salutations must be displayed in the frontend.", + "type": "integer", + "format": "int64" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + } + ] + }, + "Salutation": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "salutationKey", + "displayName", + "letterName" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "salutationKey": { + "description": "Technical name given to salutation. For example: mr", + "type": "string" + }, + "displayName": { + "type": "string" + }, + "letterName": { + "type": "string" + }, + "customFields": { + "type": "object" + }, + "position": { + "description": "Numerical value that indicates the order in which the defined salutations must be displayed in the frontend.", + "type": "integer", + "format": "int64" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + }, + "ScheduledTask": { + "description": "Added since version: 6.0.0.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "Script": { + "description": "Added since version: 6.4.7.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "SeoUrlJsonApi": { + "description": "Added since version: 6.0.0.0", + "allOf": [ + { + "$ref": "#/components/schemas/resource" + }, + { + "required": [ + "id", + "languageId", + "foreignKey", + "routeName", + "pathInfo", + "seoPathInfo" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "salesChannelId": { + "description": "Unique identity of sales channel.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "languageId": { + "description": "Unique identity of language.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "foreignKey": { + "description": "The key that references to product or category entity ID.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "routeName": { + "description": "A destination routeName that has been registered somewhere in the app's router. For example: \\\\\"frontend.detail.page\\\\\"", + "type": "string", + "enum": [ + "frontend.detail.page", + "frontend.navigation.page", + "frontend.landing.page" + ] + }, + "pathInfo": { + "description": "Path to product URL. For example: \\\\\"/detail/bbf36734504741c79a3bbe3795b91564\\\\\"", + "type": "string" + }, + "seoPathInfo": { + "description": "Seo path to product. For example: \\\\\"Pepper-white-ground-pearl/SW10098\\\\\"", + "type": "string" + }, + "isCanonical": { + "description": "When set to true, search redirects to the main URL.", + "type": "boolean" + }, + "isModified": { + "description": "When boolean value is `true`, the seo url is changed.", + "type": "boolean" + }, + "isDeleted": { + "description": "When set to true, the URL is deleted and cannot be used any more but it is still available on table and can be restored later.", + "type": "boolean" + }, + "error": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "string" + }, + "url": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "string" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + } + ] + }, + "SeoUrlTemplate": { + "description": "Added since version: 6.0.0.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "salesChannelId": { + "description": "Unique identity of sales channel.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "isValid": { + "description": "Created SEO URL template can be made usable by setting `isValid` to true.", + "type": "boolean" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "ShippingMethodJsonApi": { + "description": "Added since version: 6.0.0.0", + "allOf": [ + { + "$ref": "#/components/schemas/resource" + }, + { + "required": [ + "id", + "technicalName", + "deliveryTimeId", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "name": { + "type": "string" + }, + "technicalName": { + "type": "string" + }, + "active": { + "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront.", + "type": "boolean" + }, + "position": { + "description": "The order of the tabs of your defined shipping methods in the storefront by entering numerical values like 1,2,3, etc.", + "type": "integer", + "format": "int64" + }, + "customFields": { + "type": "object" + }, + "mediaId": { + "description": "Unique identity of media.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "deliveryTimeId": { + "description": "Unique identity of deliveryTime.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "taxType": { + "description": "Refers `Free`, `Net` or `Gross` type of taxes.", + "type": "string" + }, + "description": { + "type": "string" + }, + "trackingUrl": { + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + }, + "relationships": { + "properties": { + "deliveryTime": { + "description": "Estimated delivery time information", "properties": { "links": { "type": "object", @@ -8090,7 +6756,7 @@ "related": { "type": "string", "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/canonicalProduct" + "example": "/shipping-method/d72e7a227a27328b28342b32fc66b6bf/deliveryTime" } } }, @@ -8099,212 +6765,20 @@ "properties": { "type": { "type": "string", - "example": "product" + "example": "delivery_time" }, "id": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "example": "023995a50b56c0de077323e958b2bbcd" - } - } - } - }, - "type": "object" - }, - "media": { - "description": "Product images and media gallery", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/media" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product_media" - }, - "id": { - "type": "string", - "example": "62933a2951ef01f4eafd9bdf4d3cd2f0" - } - } - } - } - }, - "type": "object" - }, - "crossSellings": { - "description": "Cross-selling configurations (related products, accessories, similar items)", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/crossSellings" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product_cross_selling" - }, - "id": { - "type": "string", - "example": "89936e14544d1b403cecef938101b6b0" - } - } - } - } - }, - "type": "object" - }, - "configuratorSettings": { - "description": "Variant configurator settings defining available options for product variants", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/configuratorSettings" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product_configurator_setting" - }, - "id": { - "type": "string", - "example": "c0827fee13725d41f1fd7e292243f5aa" - } - } - } - } - }, - "type": "object" - }, - "productReviews": { - "description": "Customer reviews and ratings for the product", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/productReviews" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product_review" - }, - "id": { - "type": "string", - "example": "01e78541ea343ed72424a5222796a4cd" - } - } - } - } - }, - "type": "object" - }, - "mainCategories": { - "description": "Primary category assignments per sales channel for SEO and navigation", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/mainCategories" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "main_category" - }, - "id": { - "type": "string", - "example": "1fb731fc4139cbb575429e28846f0c39" - } - } - } - } - }, - "type": "object" - }, - "seoUrls": { - "description": "SEO-friendly URLs for the product across different sales channels", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/seoUrls" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "seo_url" - }, - "id": { - "type": "string", - "example": "5321b5a71127b8b98cdd4b068ad56c4c" - } + "example": "8c888ae25a7bd42057370e31f7e01044" } } } }, "type": "object" }, - "options": { - "description": "Product variant options (e.g., size, color) that define different variants", + "availabilityRule": { + "description": "Rule defining when this shipping method is available", "properties": { "links": { "type": "object", @@ -8312,31 +6786,29 @@ "related": { "type": "string", "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/options" + "example": "/shipping-method/d72e7a227a27328b28342b32fc66b6bf/availabilityRule" } } }, "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "property_group_option" - }, - "id": { - "type": "string", - "example": "93da65a9fd0004d9477aeac024e08e15" - } + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "rule" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "9fbb7961d1cb158094924c679e1b302c" } } } }, "type": "object" }, - "properties": { - "description": "Product properties and characteristics for filtering", + "prices": { + "description": "Shipping prices based on weight, volume, or cart value", "properties": { "links": { "type": "object", @@ -8344,7 +6816,7 @@ "related": { "type": "string", "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/properties" + "example": "/shipping-method/d72e7a227a27328b28342b32fc66b6bf/prices" } } }, @@ -8355,11 +6827,11 @@ "properties": { "type": { "type": "string", - "example": "property_group_option" + "example": "shipping_method_price" }, "id": { "type": "string", - "example": "74693d2fc58b46bd06410f278e39aa71" + "example": "afae32efe0f84fece3f96b377b768b33" } } } @@ -8367,8 +6839,8 @@ }, "type": "object" }, - "categories": { - "description": "Categories this product is assigned to", + "media": { + "description": "Shipping method logo or carrier image", "properties": { "links": { "type": "object", @@ -8376,31 +6848,29 @@ "related": { "type": "string", "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/categories" + "example": "/shipping-method/d72e7a227a27328b28342b32fc66b6bf/media" } } }, "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "category" - }, - "id": { - "type": "string", - "example": "b0b5ccb4a195a07fd3eed14affb8695f" - } + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "media" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "62933a2951ef01f4eafd9bdf4d3cd2f0" } } } }, "type": "object" }, - "streams": { - "description": "Dynamic product streams this product belongs to based on defined filters", + "tags": { + "description": "Tags for organizing shipping methods", "properties": { "links": { "type": "object", @@ -8408,7 +6878,7 @@ "related": { "type": "string", "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/streams" + "example": "/shipping-method/d72e7a227a27328b28342b32fc66b6bf/tags" } } }, @@ -8419,11 +6889,11 @@ "properties": { "type": { "type": "string", - "example": "product_stream" + "example": "tag" }, "id": { "type": "string", - "example": "2f6f4768f1c2d7c8f1f54823723f1a70" + "example": "d57ac45256849d9b13e2422d91580fb9" } } } @@ -8431,8 +6901,8 @@ }, "type": "object" }, - "categoriesRo": { - "description": "Read-only category tree including all parent categories for optimized queries", + "tax": { + "description": "Tax configuration for shipping costs", "properties": { "links": { "type": "object", @@ -8440,90 +6910,835 @@ "related": { "type": "string", "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/categoriesRo" + "example": "/shipping-method/d72e7a227a27328b28342b32fc66b6bf/tax" } } }, "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "category" - }, - "id": { - "type": "string", - "example": "7f0702d3a90d965b8c9158c451f43fdb" - } + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "tax" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "06565e5611f23fdf8cc43e5077b92b54" } } } }, "type": "object" - }, - "tags": { - "description": "Tags for organizing and filtering products", + } + }, + "type": "object" + } + }, + "type": "object" + } + ] + }, + "ShippingMethod": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "technicalName", + "deliveryTimeId", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "name": { + "type": "string" + }, + "technicalName": { + "type": "string" + }, + "active": { + "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront.", + "type": "boolean" + }, + "position": { + "description": "The order of the tabs of your defined shipping methods in the storefront by entering numerical values like 1,2,3, etc.", + "type": "integer", + "format": "int64" + }, + "customFields": { + "type": "object" + }, + "mediaId": { + "description": "Unique identity of media.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "deliveryTimeId": { + "description": "Unique identity of deliveryTime.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "taxType": { + "description": "Refers `Free`, `Net` or `Gross` type of taxes.", + "type": "string" + }, + "description": { + "type": "string" + }, + "trackingUrl": { + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + }, + "deliveryTime": { + "$ref": "#/components/schemas/DeliveryTime", + "description": "Estimated delivery time information" + }, + "availabilityRule": { + "$ref": "#/components/schemas/Rule", + "description": "Rule defining when this shipping method is available" + }, + "prices": { + "description": "Shipping prices based on weight, volume, or cart value", + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingMethodPrice" + } + }, + "media": { + "$ref": "#/components/schemas/Media", + "description": "Shipping method logo or carrier image" + }, + "tags": { + "description": "Tags for organizing shipping methods", + "type": "array", + "items": { + "$ref": "#/components/schemas/Tag" + } + }, + "tax": { + "$ref": "#/components/schemas/Tax", + "description": "Tax configuration for shipping costs" + } + }, + "type": "object" + }, + "ShippingMethodPrice": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "shippingMethodId" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingMethodId": { + "description": "Unique identity of shipping method.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "ruleId": { + "description": "Unique identity of rule.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "calculation": { + "description": "Shipping price calculated based on quantity, price, weight or volume of items.", + "type": "integer", + "format": "int64" + }, + "calculationRuleId": { + "description": "Unique identity of rule calculation.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "quantityStart": { + "description": "Starting range of quantity of an item.", + "type": "number", + "format": "float" + }, + "quantityEnd": { + "description": "Ending range of quantity of an item.", + "type": "number", + "format": "float" + }, + "currencyPrice": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Price" + } + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "Snippet": { + "description": "Added since version: 6.0.0.0", + "required": [ + "setId", + "translationKey", + "value" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "setId": { + "description": "Unique identity od snippet set.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "translationKey": { + "description": "Reference to the snippet in the template.", + "type": "string" + }, + "value": { + "description": "Value of the key.", + "type": "string" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "SnippetSet": { + "description": "Added since version: 6.0.0.0", + "required": [ + "name", + "iso" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "name": { + "description": "Name of snippet set.", + "type": "string" + }, + "iso": { + "description": "ISO nomenclature used to classify languages.", + "type": "string" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "snippets": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Snippet" + } + } + }, + "type": "object" + }, + "StateMachine": { + "description": "Added since version: 6.0.0.0", + "required": [ + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + }, + "states": { + "type": "array", + "items": { + "$ref": "#/components/schemas/StateMachineState" + } + }, + "transitions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/StateMachineTransition" + } + } + }, + "type": "object" + }, + "StateMachineHistory": { + "description": "Added since version: 6.0.0.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "fromStateMachineState": { + "$ref": "#/components/schemas/StateMachineState" + }, + "toStateMachineState": { + "$ref": "#/components/schemas/StateMachineState" + } + }, + "type": "object" + }, + "StateMachineTransition": { + "description": "Added since version: 6.0.0.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "SystemConfig": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "configurationKey", + "configurationValue" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "configurationKey": { + "description": "Config key for shop configurations.", + "type": "string" + }, + "configurationValue": { + "properties": { + "_value": { + "type": "object" + } + }, + "type": "object" + }, + "salesChannelId": { + "description": "Unique identity of sales channel.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "salesChannel": { + "$ref": "#/components/schemas/SalesChannel" + } + }, + "type": "object" + }, + "Tag": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "name": { + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "Tax": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "taxRate", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "taxRate": { + "description": "Rate of tax.", + "type": "number", + "format": "float" + }, + "name": { + "description": "Name defined for a Tax.", + "type": "string" + }, + "position": { + "description": "The order of the tabs of your defined taxes in the storefront by entering numerical values like 1,2,3, etc. Added since version: 6.4.0.0.", + "type": "integer", + "format": "int64" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "TaxProvider": { + "description": "Added since version: 6.5.0.0", + "required": [ + "id", + "priority", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "active": { + "description": "When boolean value is `true`, the tax providers are available for selection in the storefront.", + "type": "boolean" + }, + "name": { + "type": "string" + }, + "priority": { + "description": "A numerical value to prioritize one of the tax providers from the list.", + "type": "integer", + "format": "int64" + }, + "processUrl": { + "description": "External URL makes request to get tax info.", + "type": "string" + }, + "appId": { + "description": "Unique identity of app.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + }, + "TaxRule": { + "description": "Added since version: 6.1.0.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "TaxRuleType": { + "description": "Added since version: 6.1.0.0", + "required": [ + "typeName" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + }, + "Theme": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "name", + "author", + "active" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "technicalName": { + "type": "string" + }, + "name": { + "type": "string" + }, + "author": { + "type": "string" + }, + "description": { + "type": "string" + }, + "labels": { + "type": "object" + }, + "helpTexts": { + "type": "object" + }, + "customFields": { + "type": "object" + }, + "previewMediaId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "parentThemeId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "baseConfig": { + "type": "object" + }, + "configValues": { + "type": "object" + }, + "active": { + "type": "boolean" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + }, + "media": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Media" + } + } + }, + "type": "object" + }, + "Unit": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "shortCode", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shortCode": { + "type": "string" + }, + "name": { + "type": "string" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + }, + "User": { + "description": "Added since version: 6.0.0.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "UserAccessKey": { + "description": "Added since version: 6.0.0.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "UserConfig": { + "description": "Added since version: 6.3.5.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "UserRecovery": { + "description": "Added since version: 6.0.0.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "Webhook": { + "description": "Added since version: 6.3.1.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "WebhookEventLog": { + "description": "Added since version: 6.4.1.0", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "Product": { + "type": "object", + "properties": { + "extensions": { + "properties": { + "attendeeProductCollections": { + "properties": { + "links": { + "type": "object", "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/tags" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "tag" - }, - "id": { - "type": "string", - "example": "d57ac45256849d9b13e2422d91580fb9" - } - } - } + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/attendeeProductCollections" } - }, - "type": "object" + } }, - "seoCategory": { - "description": "Main category used for SEO URL generation in the current sales channel", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/seoCategory" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "category" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "9354d004d12e03d35ad8292bf0bb234d" - } + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "dsr_attendee_product_collection" + }, + "id": { + "type": "string", + "example": "0a7b3b2f4b81f36910a74f22826f35df" } } - }, - "type": "object" + } } }, "type": "object" @@ -8531,28 +7746,6 @@ }, "type": "object" }, - [], - { - "$ref": "#/components/schemas/DiscountLineItemPayload" - } - ] - }, - "Product": { - "description": "Represents a product along with detailed information required to display a variant selection.", - "required": [ - "apiAlias", - "calculatedPrice", - "calculatedPrices", - "seoCategory", - "type", - "translated", - "id", - "taxId", - "productNumber", - "stock", - "name" - ], - "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" @@ -8954,48 +8147,12 @@ "format": "date-time", "readOnly": true }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - }, - "extensions": { - "properties": { - "attendeeProductCollections": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/attendeeProductCollections" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "dsr_attendee_product_collection" - }, - "id": { - "type": "string", - "example": "0a7b3b2f4b81f36910a74f22826f35df" - } - } - } - } - }, - "type": "object" - } - }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { "type": "object" }, "downloads": { @@ -9116,341 +8273,114 @@ "type": "array", "items": { "$ref": "#/components/schemas/ProductStream" - } - }, - "categoriesRo": { - "description": "Read-only category tree including all parent categories for optimized queries", - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - }, - "tags": { - "description": "Tags for organizing and filtering products", - "type": "array", - "items": { - "$ref": "#/components/schemas/Tag" - } - }, - "seoCategory": { - "$ref": "#/components/schemas/Category", - "description": "Main category used for SEO URL generation in the current sales channel" - }, - "apiAlias": { - "type": "string", - "enum": [ - "product" - ] - }, - "variantListingConfig": { - "oneOf": [ - { - "type": "object", - "properties": { - "displayParent": { - "type": "boolean" - } - } - }, - { - "type": "null" - } - ] - } - }, - "type": "object" - }, - "ProductConfiguratorSetting": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "productId", - "optionId" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productId": { - "description": "Unique identity of product.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "mediaId": { - "description": "Unique identity of media.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "optionId": { - "description": "Unique identity of option.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "position": { - "description": "The order of the tabs of your defined product configuration settings in the storefront by entering numerical values like 1,2,3, etc.", - "type": "integer", - "format": "int64" - }, - "customFields": { - "type": "object" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "media": { - "$ref": "#/components/schemas/Media" - }, - "option": { - "$ref": "#/components/schemas/PropertyGroupOption" - } - }, - "type": "object" - }, - "ProductCrossSelling": { - "description": "Added since version: 6.1.0.0", - "required": [ - "id", - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "name": { - "type": "string" - }, - "position": { - "description": "The order of the tabs of your defined cross-selling actions in the storefront by entering numerical values like 1,2,3, etc.", - "type": "integer", - "format": "int64" - }, - "sortBy": { - "description": "To sort the display of products by name, price or publication (descending, ascending) date.", - "type": "string" - }, - "sortDirection": { - "description": "To sort the display of products by ascending or descending order.", - "type": "string" - }, - "type": { - "description": "Type of product assignment for cross-selling. It can either be Dynamic product group or Manual assignment.", - "type": "string" - }, - "active": { - "description": "When set to active, the cross-selling feature is enabled.", - "type": "boolean" - }, - "limit": { - "description": "The maximum number of products to be displayed in cross-selling on the item detail page of your item.", - "type": "integer", - "format": "int64" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - } - }, - "type": "object" - }, - "ProductCrossSellingAssignedProducts": { - "description": "Added since version: 6.2.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "ProductDownload": { - "description": "Added since version: 6.4.19.0", - "required": [ - "id", - "productId", - "mediaId" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productId": { - "description": "Unique identity of Product.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "mediaId": { - "description": "Unique identity of media.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "position": { - "description": "The order in which the digital products are downloaded, like 1,2,3, etc.to adjust their order of display.", - "type": "integer", - "format": "int64" - }, - "customFields": { - "type": "object" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "product": { - "$ref": "#/components/schemas/Product" - }, - "media": { - "$ref": "#/components/schemas/Media" - } - }, - "type": "object" - }, - "ProductExport": { - "description": "Added since version: 6.1.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + } }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "ProductFeatureSet": { - "description": "Added since version: 6.3.0.0", - "required": [ - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "categoriesRo": { + "description": "Read-only category tree including all parent categories for optimized queries", + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + } }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "tags": { + "description": "Tags for organizing and filtering products", + "type": "array", + "items": { + "$ref": "#/components/schemas/Tag" + } }, - "updatedAt": { + "seoCategory": { + "$ref": "#/components/schemas/Category", + "description": "Main category used for SEO URL generation in the current sales channel" + }, + "apiAlias": { "type": "string", - "format": "date-time", - "readOnly": true + "enum": [ + "product" + ] }, - "translated": { - "type": "object" + "variantListingConfig": { + "oneOf": [ + { + "type": "object", + "properties": { + "displayParent": { + "type": "boolean" + } + } + }, + { + "type": "null" + } + ] } }, - "type": "object" - }, - "ProductKeywordDictionary": { - "description": "Added since version: 6.0.0.0", + "description": "Represents a product along with detailed information required to display a variant selection.", "required": [ - "languageId", - "keyword" + "apiAlias", + "calculatedPrice", + "calculatedPrices", + "seoCategory", + "type", + "translated", + "id", + "taxId", + "productNumber", + "stock", + "name" + ] + }, + "NewsletterStatus": { + "type": "string", + "enum": [ + "notSet", + "optIn", + "optOut", + "direct", + "undefined" ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "languageId": { - "description": "Unique identity of the language.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "keyword": { - "description": "The keywords that help to search the product.", - "type": "string" - } - }, - "type": "object" + "description": "The subscription status. Possible values are: notSet, optIn, optOut, direct, undefined." }, - "ProductManufacturer": { + "MediaThumbnail": { "description": "Added since version: 6.0.0.0", "required": [ + "url", "id", - "name" + "mediaId", + "width", + "height" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { + "mediaId": { + "description": "Unique identity of media.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "mediaId": { - "description": "Unique identity of the media.", + "mediaThumbnailSizeId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "link": { - "type": "string" + "width": { + "description": "Width of the thumbnail.", + "type": "integer", + "format": "int64", + "readOnly": true }, - "name": { + "height": { + "description": "Height of the thumbnail.", + "type": "integer", + "format": "int64", + "readOnly": true + }, + "url": { + "description": "Public url of media thumbnail. Runtime field, cannot be used as part of the criteria.", "type": "string" }, - "description": { + "path": { "type": "string" }, "customFields": { @@ -9465,397 +8395,298 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "translated": { - "type": "object" - }, - "media": { - "$ref": "#/components/schemas/Media" } }, "type": "object" }, - "ProductMedia": { - "description": "Added since version: 6.0.0.0", - "required": [ - "media", - "id", - "productId", - "mediaId" - ], + "Breadcrumb": { + "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productId": { - "description": "Unique identity of the product.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "name": { + "type": "string" }, - "productVersionId": { + "categoryId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "mediaId": { - "description": "Unique identity of the media.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": { + "$ref": "#/components/schemas/Category/properties/type" }, - "position": { - "description": "The order of the images to be displayed for a product.", - "type": "integer", - "format": "int64" + "translated": { + "type": "object", + "additionalProperties": true, + "properties": { + "customFields": { + "type": "object" + }, + "slotConfig": { + "type": "object" + }, + "linkType": { + "$ref": "#/components/schemas/Category/properties/linkType" + }, + "internalLink": { + "type": "string" + }, + "externalLink": { + "type": "string" + }, + "linkNewTab": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "metaTitle": { + "type": "string" + }, + "metaDescription": { + "type": "string" + }, + "keywords": { + "type": "string" + } + } }, - "customFields": { - "type": "object" + "path": { + "type": "string" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "seoUrls": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" + } }, - "updatedAt": { + "apiAlias": { "type": "string", - "format": "date-time", - "readOnly": true - }, - "media": { - "$ref": "#/components/schemas/Media" + "enum": [ + "breadcrumb" + ] } }, - "type": "object" + "required": [ + "name", + "categoryId", + "type", + "translated", + "path", + "apiAlias" + ] }, - "ProductPrice": { - "description": "Added since version: 6.0.0.0", + "ProductPurchaseLimit": { + "type": "object", + "description": "Current quantity purchase limits for a product.", + "required": [ + "productId", + "minPurchase", + "purchaseSteps", + "maxPurchase", + "stock", + "apiAlias" + ], "properties": { - "id": { + "productId": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "pattern": "^[0-9a-f]{32}$", + "description": "The product ID." }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "minPurchase": { + "type": "integer", + "description": "Minimum quantity a customer can purchase." }, - "updatedAt": { + "purchaseSteps": { + "type": "integer", + "description": "Step increment for quantity selection." + }, + "maxPurchase": { + "type": "integer", + "description": "Maximum quantity a customer can purchase, reflecting current stock for closeout products." + }, + "stock": { + "type": [ + "integer", + "null" + ], + "description": "Current stock level of the product." + }, + "apiAlias": { "type": "string", - "format": "date-time", - "readOnly": true + "enum": [ + "product_purchase_limit" + ] } - }, - "type": "object" + } }, - "ProductReview": { + "Customer": { "description": "Added since version: 6.0.0.0", "required": [ + "apiAlias", + "activeBillingAddress", + "activeShippingAddress", "id", - "productId", + "groupId", "salesChannelId", "languageId", - "title", - "content" + "defaultBillingAddressId", + "defaultShippingAddressId", + "customerNumber", + "firstName", + "lastName", + "email" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "productId": { - "description": "Unique identity of the product.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productVersionId": { + "groupId": { + "description": "Unique identity of customer group.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, "salesChannelId": { - "description": "Unique identity of the sales channel.", + "description": "Unique identity of sales channel.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, "languageId": { - "description": "Unique identity of the language.", + "description": "Unique identity of language.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "externalUser": { - "description": "External user name.", - "type": "string" - }, - "title": { - "description": "Title of product review.", - "type": "string" - }, - "content": { - "description": "Short description or subject of the project review.", - "type": "string" - }, - "points": { - "description": "A floating point number given to rate a product.", - "type": "number", - "format": "float" - }, - "status": { - "description": "When status is set, the rating is made visible.", - "type": "boolean" - }, - "comment": { - "description": "Detailed review about the product.", - "type": "string" - }, - "customFields": { - "type": "object" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "ProductSearchConfig": { - "description": "Added since version: 6.3.5.0", - "properties": { - "id": { + "lastPaymentMethodId": { + "description": "Unique identity of previous payment method.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "ProductSearchConfigField": { - "description": "Added since version: 6.3.5.0", - "properties": { - "id": { + "defaultBillingAddressId": { + "description": "Unique identity of default billing address.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "ProductSearchKeyword": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { + "defaultShippingAddressId": { + "description": "Unique identity of default shipping address.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "customerNumber": { + "description": "Unique number assigned to identity a customer.", + "type": "string" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "ProductSorting": { - "description": "Added since version: 6.3.2.0", - "required": [ - "key", - "priority", - "label" - ], - "properties": { - "id": { + "salutationId": { + "description": "Unique identity of salutation.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "key": { + "firstName": { + "description": "First name of the customer.", "type": "string" }, - "priority": { - "type": "integer", - "format": "int64" - }, - "label": { + "lastName": { + "description": "Last name of the customer.", "type": "string" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "email": { + "description": "Email ID of the customer.", + "type": "string" }, - "translated": { - "type": "object" - } - }, - "type": "object" - }, - "ProductStream": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "title": { + "description": "Titles or honorifics like Mr, Mrs, etc.", + "type": "string" }, - "name": { + "affiliateCode": { + "description": "An affiliate code is an identification option with which website operators can mark outgoing links.", "type": "string" }, - "description": { + "campaignCode": { + "description": "A campaign code is the globally unique identifier for a campaign.", "type": "string" }, - "customFields": { - "type": "object" + "active": { + "description": "To keep the status of the customer active, the boolean value is set to `true`.", + "type": "boolean" }, - "internal": { - "description": "When the boolean value is `true` indicating that it is for internal use only and will not appear in product stream listings.", + "doubleOptInRegistration": { + "description": "Set to `true` to allow user subscriptions to an email marketing list.", "type": "boolean" }, - "createdAt": { + "doubleOptInEmailSentDate": { + "description": "Date and time when the double opt-in email was sent.", "type": "string", - "format": "date-time", - "readOnly": true + "format": "date-time" }, - "updatedAt": { + "doubleOptInConfirmDate": { + "description": "Date and time when the double opt-in email was confirmed.", + "type": "string", + "format": "date-time" + }, + "hash": { + "description": "Customer registration double opt-in hash for confirming the customer account.", + "type": "string" + }, + "guest": { + "description": "Boolean value is `true` if it is to be a guest account.", + "type": "boolean" + }, + "firstLogin": { + "description": "To capture date and time of customer's first login.", "type": "string", - "format": "date-time", - "readOnly": true + "format": "date-time" }, - "translated": { - "type": "object" - } - }, - "type": "object" - }, - "ProductStreamFilter": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { + "lastLogin": { + "description": "To capture date and time of customer's last login.", "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time" }, - "createdAt": { + "birthday": { + "description": "To capture customer's birthday details.", + "type": "string" + }, + "lastOrderDate": { + "description": "Captures last order date.", "type": "string", "format": "date-time", "readOnly": true }, - "updatedAt": { - "type": "string", - "format": "date-time", + "orderCount": { + "description": "Captures the number of orders placed.", + "type": "integer", + "format": "int64", "readOnly": true - } - }, - "type": "object" - }, - "ProductVisibility": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { - "type": "string", - "format": "date-time", + "orderTotalAmount": { + "description": "Sum of total amount to be paid.", + "type": "number", + "format": "float", "readOnly": true }, - "updatedAt": { - "type": "string", - "format": "date-time", + "reviewCount": { + "description": "Number of reviews the customer has given.", + "type": "integer", + "format": "int64", "readOnly": true - } - }, - "type": "object" - }, - "Promotion": { - "description": "Added since version: 6.0.0.0", - "required": [ - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" }, "customFields": { "type": "object" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", + "tagIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "readOnly": true }, - "translated": { - "type": "object" - } - }, - "type": "object" - }, - "PromotionDiscount": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { + "requestedGroupId": { + "description": "Unique identity of requested group.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { + "createdById": { "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "PromotionDiscountPrices": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { + "updatedById": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, @@ -9868,378 +8699,464 @@ "type": "string", "format": "date-time", "readOnly": true - } - }, - "type": "object" - }, - "PromotionIndividualCode": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "group": { + "$ref": "#/components/schemas/CustomerGroup", + "description": "Customer group determining pricing and permissions" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "PromotionSalesChannel": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "language": { + "$ref": "#/components/schemas/Language", + "description": "Preferred language for customer communication" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "lastPaymentMethod": { + "$ref": "#/components/schemas/PaymentMethod", + "description": "Last used payment method by the customer" }, - "updatedAt": { + "defaultBillingAddress": { + "$ref": "#/components/schemas/CustomerAddress", + "description": "Default billing address for the customer" + }, + "activeBillingAddress": { + "$ref": "#/components/schemas/CustomerAddress", + "description": "Currently active billing address in the session" + }, + "defaultShippingAddress": { + "$ref": "#/components/schemas/CustomerAddress", + "description": "Default shipping address for the customer" + }, + "activeShippingAddress": { + "$ref": "#/components/schemas/CustomerAddress", + "description": "Currently active shipping address in the session" + }, + "salutation": { + "$ref": "#/components/schemas/Salutation", + "description": "Customer salutation (e.g., Mr., Mrs., Ms.)" + }, + "addresses": { + "description": "All addresses saved for the customer", + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomerAddress" + } + }, + "tags": { + "description": "Tags assigned to the customer for organization and segmentation", + "type": "array", + "items": { + "$ref": "#/components/schemas/Tag" + } + }, + "apiAlias": { "type": "string", - "format": "date-time", - "readOnly": true + "enum": [ + "customer" + ] } }, - "type": "object" + "type": "object", + "oneOf": [ + { + "required": [ + "accountType" + ], + "properties": { + "accountType": { + "type": "string", + "enum": [ + "private" + ] + } + } + }, + { + "required": [ + "accountType", + "vatIds", + "company" + ], + "properties": { + "accountType": { + "type": "string", + "enum": [ + "business" + ] + }, + "vatIds": { + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + }, + "company": { + "type": "string" + } + } + } + ] }, - "PromotionSetgroup": { - "description": "Added since version: 6.0.0.0", + "AggregationMetrics": { + "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "name": { + "type": "string" }, - "createdAt": { + "type": { "type": "string", - "format": "date-time", - "readOnly": true + "enum": [ + "avg", + "count", + "max", + "min", + "stats", + "sum" + ] }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "field": { + "type": "string" } }, - "type": "object" - }, - "PropertyGroup": { - "description": "Added since version: 6.0.0.0", "required": [ - "id", - "name" - ], + "name", + "type", + "field" + ] + }, + "LineItemType": { + "type": "string", + "deprecated": true, + "enum": [ + "product", + "credit", + "custom", + "promotion", + "discount", + "container", + "quantity", + "dsr-line-item-discount", + "dsr-cart-discount" + ] + }, + "LineItem": { + "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } }, - "name": { - "type": "string" + "cover": { + "$ref": "#/components/schemas/Media" }, - "description": { + "dataContextHash": { "type": "string" }, - "displayType": { - "description": "Property groups can be displayed in the form of text, image, dropdown or color.", + "dataTimestamp": { "type": "string" }, - "sortingType": { - "description": "Sorting the property group by name or position.", - "type": "string" + "deliveryInformation": { + "$ref": "#/components/schemas/CartDeliveryInformation" }, - "filterable": { - "description": "When set to true, the property will be displayed in the product filter of product lists.", - "type": "boolean" + "description": { + "type": "string" }, - "visibleOnProductDetailPage": { - "description": "When set to true, the property groups are displayed on product detail page.", + "good": { "type": "boolean" }, - "position": { - "type": "integer", - "format": "int64" - }, - "customFields": { - "type": "object" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - }, - "options": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PropertyGroupOption" - } - } - }, - "type": "object" - }, - "PropertyGroupOption": { - "description": "Added since version: 6.0.0.0", - "required": [ - "group", - "option", - "translated", - "id", - "groupId", - "name" - ], - "properties": { "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "groupId": { - "description": "Unique identity of property group.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "name": { "type": "string" }, - "position": { - "type": "integer", - "format": "int64" - }, - "colorHexCode": { - "description": "Property group options can be displayed in the form of color. For example: #98e3f5ff.", + "label": { "type": "string" }, - "mediaId": { - "description": "Unique identity of media.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "combinable": { - "description": "Runtime field, cannot be used as part of the criteria.", + "modified": { "type": "boolean" }, - "customFields": { - "type": "object" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "modifiedByApp": { + "type": "boolean" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "payload": { + "$ref": "#/components/schemas/ProductJsonApi" }, - "translated": { - "type": "object" + "price": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] + }, + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] + }, + "quantity": { + "type": "number" + }, + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] + }, + "totalPrice": { + "type": "number" + }, + "unitPrice": { + "type": "number" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } + } + }, + "required": [ + "apiAlias", + "totalPrice", + "quantity", + "unitPrice" + ] }, - "media": { - "$ref": "#/components/schemas/Media" + "priceDefinition": { + "$ref": "#/components/schemas/CartPriceQuantity" }, - "group": { - "$ref": "#/components/schemas/PropertyGroup" + "quantity": { + "type": "number" }, - "option": { - "type": "string" - } - }, - "type": "object" - }, - "Rule": { - "description": "Added since version: 6.0.0.0", - "required": [ - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "quantityInformation": { + "type": "object", + "properties": { + "maxPurchase": { + "type": "number" + }, + "minPurchase": { + "type": "number" + }, + "purchaseSteps": { + "type": "number" + } + } }, - "name": { - "description": "Name of the rule defined.", + "referencedId": { "type": "string" }, - "description": { - "description": "Description of the rule.", - "type": "string" + "removable": { + "type": "boolean" }, - "customFields": { - "type": "object" + "stackable": { + "type": "boolean" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "states": { + "deprecated": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "is-physical", + "is-download" + ] + } }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "RuleCondition": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": { + "$ref": "#/components/schemas/OrderLineItem/properties/type" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "uniqueIdentifier": { + "type": "string" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "extensions": { + "type": "object", + "properties": { + "meta": { + "type": "object", + "properties": { + "attendees": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "name" + ], + "properties": { + "name": { + "type": "string" + }, + "id": { + "type": "string" + } + } + } + } + } + } + } } }, - "type": "object" + "required": [ + "id", + "type" + ] }, - "SalesChannel": { + "CookieEntryCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CookieEntry" + } + }, + "CmsSection": { "description": "Added since version: 6.0.0.0", "required": [ + "apiAlias", + "blocks", "id", - "languageId", - "customerGroupId", - "currencyId", - "paymentMethodId", - "shippingMethodId", - "countryId", - "navigationCategoryId", - "name", - "homeEnabled" + "position", + "type", + "pageId" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "languageId": { - "description": "Unique identity of language used.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "customerGroupId": { - "description": "Unique identity of customer group.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "currencyId": { - "description": "Unique identity of currency used.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "paymentMethodId": { - "description": "Unique identity of payment method used.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shippingMethodId": { - "description": "Unique identity of shipping method.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryId": { - "description": "Unique identity of country.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "navigationCategoryId": { - "description": "Unique identity of navigation category.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "navigationCategoryVersionId": { + "cmsPageVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "navigationCategoryDepth": { - "description": "It determines the number of levels of subcategories in the storefront category menu.", + "position": { + "description": "Position of occurrence of each section denoted by numerical values 0, 1, 2...", "type": "integer", "format": "int64" }, - "footerCategoryId": { - "description": "Unique identity of footer category.", + "type": { + "description": "Types of sections can be `default` or `sidebar`.", "type": "string", - "pattern": "^[0-9a-f]{32}$" + "enum": [ + "default", + "sidebar" + ] }, - "footerCategoryVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "name": { + "description": "Name of the CMS section defined.", + "type": "string" }, - "serviceCategoryId": { - "description": "Unique identity of service category.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "sizingMode": { + "description": "Sizing mode can be `boxed` or `full_width`.", + "type": "string" }, - "serviceCategoryVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "mobileBehavior": { + "description": "Hides the sidebar on mobile viewports. It can hold values such as 'mobile', 'wrap', any other string or be unset.", + "type": "string" }, - "mailHeaderFooterId": { - "description": "Unique identity of mail header and footer.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "backgroundColor": { + "description": "Background color of CMS page.", + "type": "string" }, - "hreflangDefaultDomainId": { - "description": "Unique identity of hreflangDefaultDomain.", + "backgroundMediaId": { + "description": "Unique identity of CMS section's background media.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "measurementUnits": { - "$ref": "#/components/schemas/MeasurementUnits" - }, - "businessTimeZone": { - "description": "Business timezone used for sales-channel-specific rendering. Added since version: 6.7.13.0.", - "type": "string" - }, - "name": { + "backgroundMediaMode": { + "description": "Background media mode can be `cover`, `auto` or `contain`.", "type": "string" }, - "shortName": { - "description": "A short name for sales channel.", + "cssClass": { + "description": "One or more CSS classes added and separated by spaces.", "type": "string" }, - "taxCalculationType": { - "description": "Tax calculation types are `horizontal` and `vertical`.", - "type": "string" + "pageId": { + "description": "Unique identity of page where CMS section is defined.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "configuration": { + "visibility": { + "properties": { + "mobile": { + "type": "boolean" + }, + "desktop": { + "type": "boolean" + }, + "tablet": { + "type": "boolean" + } + }, "type": "object" }, - "active": { - "description": "When boolean value is `true`, the sales channel is enabled.", - "type": "boolean" - }, - "hreflangActive": { - "description": "When set to true, the sales channel pages are available in different languages.", - "type": "boolean" - }, - "maintenance": { - "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period.", - "type": "boolean" - }, "customFields": { "type": "object" }, @@ -10253,151 +9170,189 @@ "format": "date-time", "readOnly": true }, - "translated": { - "type": "object" - }, - "language": { - "$ref": "#/components/schemas/Language", - "description": "Default language for the sales channel" - }, - "currency": { - "$ref": "#/components/schemas/Currency", - "description": "Default currency for the sales channel" - }, - "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethod", - "description": "Default payment method for the sales channel" - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod", - "description": "Default shipping method for the sales channel" + "page": { + "$ref": "#/components/schemas/CmsPage" }, - "country": { - "$ref": "#/components/schemas/Country", - "description": "Default country for the sales channel" + "backgroundMedia": { + "$ref": "#/components/schemas/Media" }, - "domains": { - "description": "Domain URLs configured for the sales channel", + "blocks": { "type": "array", "items": { - "$ref": "#/components/schemas/SalesChannelDomain" + "$ref": "#/components/schemas/CmsBlock" } }, - "navigationCategory": { - "$ref": "#/components/schemas/Category", - "description": "Root category for navigation menu" - }, - "footerCategory": { - "$ref": "#/components/schemas/Category", - "description": "Root category for footer navigation" - }, - "serviceCategory": { - "$ref": "#/components/schemas/Category", - "description": "Root category for service pages" - }, - "hreflangDefaultDomain": { - "$ref": "#/components/schemas/SalesChannelDomain" + "apiAlias": { + "type": "string", + "enum": [ + "cms_section" + ] } }, "type": "object" }, - "SalesChannelAnalytics": { - "description": "Added since version: 6.2.0.0", + "ProductMeasurements": { + "type": "object", + "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "width": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" + }, + "value": { + "type": "number" + } + } }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "height": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" + }, + "value": { + "type": "number" + } + } }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "length": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" + }, + "value": { + "type": "number" + } + } + }, + "weight": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg" + }, + "value": { + "type": "number" + } + } } - }, - "type": "object" + } }, - "SalesChannelDomain": { + "Media": { "description": "Added since version: 6.0.0.0", "required": [ - "id", + "apiAlias", + "fileExtension", + "fileName", + "hasFile", + "path", + "private", "url", - "salesChannelId", - "languageId", - "currencyId", - "snippetSetId" + "id" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "url": { - "description": "URL of the sales channel domain.", + "mimeType": { + "description": "A string sent along with a file indicating the type of the file. For example: image/jpeg.", "type": "string" }, - "salesChannelId": { - "description": "Unique identity of sales channel.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "languageId": { - "description": "Unique identity of language used.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "fileExtension": { + "description": "Type of file indication. For example: jpeg, png.", + "type": "string" }, - "currencyId": { - "description": "Unique identity of currency.", + "uploadedAt": { + "description": "Date and time at which media was added.", "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "snippetSetId": { - "description": "Unique identity of snippet set.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "fileName": { + "description": "Name of the media file uploaded.", + "type": "string" }, - "measurementUnits": { - "$ref": "#/components/schemas/MeasurementUnits" + "fileSize": { + "description": "Size of the file media file uploaded.", + "type": "integer", + "format": "int64", + "readOnly": true }, - "hreflangUseOnlyLocale": { - "description": "This is used to toggle the language configurations, say between DE and DE-DE for instance.", - "type": "boolean" + "metaData": { + "type": "object", + "readOnly": true, + "properties": { + "height": { + "type": "integer", + "format": "int64" + }, + "width": { + "type": "integer", + "format": "int64" + } + } }, - "customFields": { + "config": { "type": "object" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "alt": { + "type": "string" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "title": { + "type": "string" }, - "language": { - "$ref": "#/components/schemas/Language" + "url": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "string" }, - "currency": { - "$ref": "#/components/schemas/Currency" + "path": { + "type": "string" }, - "salesChannelDefaultHreflang": { - "$ref": "#/components/schemas/SalesChannel" - } - }, - "type": "object" - }, - "SalesChannelFile": { - "description": "Added since version: 6.7.12.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "hasFile": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "boolean" + }, + "private": { + "description": "When `true`, the media display is kept private.", + "type": "boolean" + }, + "customFields": { + "type": "object" }, "createdAt": { "type": "string", @@ -10408,161 +9363,100 @@ "type": "string", "format": "date-time", "readOnly": true - } - }, - "type": "object" - }, - "SalesChannelTrackingCustomer": { - "description": "Added since version: 6.7.9.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "translated": { + "type": "object" }, - "updatedAt": { + "thumbnails": { + "description": "Generated thumbnail images in various sizes", + "type": "array", + "items": { + "$ref": "#/components/schemas/MediaThumbnail" + } + }, + "apiAlias": { "type": "string", - "format": "date-time", - "readOnly": true + "enum": [ + "media" + ] } }, "type": "object" }, - "SalesChannelTrackingOrder": { - "description": "Added since version: 6.7.9.0", + "CookieGroupCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CookieGroup" + } + }, + "Document": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "documentTypeId", + "orderId", + "config", + "deepLinkCode" + ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { + "documentTypeId": { "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "updatedAt": { + "referencedDocumentId": { "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "SalesChannelType": { - "description": "Added since version: 6.0.0.0", - "required": [ - "name" - ], - "properties": { - "id": { + "pattern": "^[0-9a-f]{32}$" + }, + "orderId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { + "documentMediaFileId": { "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "updatedAt": { + "documentA11yMediaFileId": { "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "translated": { - "type": "object" - } - }, - "type": "object" - }, - "SalutationJsonApi": { - "description": "Added since version: 6.0.0.0", - "allOf": [ - { - "$ref": "#/components/schemas/resource" + "orderVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - { - "required": [ - "id", - "salutationKey", - "displayName", - "letterName" - ], + "config": { + "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "salutationKey": { - "description": "Technical name given to salutation. For example: mr", - "type": "string" - }, - "displayName": { + "name": { "type": "string" }, - "letterName": { + "title": { "type": "string" - }, - "customFields": { - "type": "object" - }, - "position": { - "description": "Numerical value that indicates the order in which the defined salutations must be displayed in the frontend.", - "type": "integer", - "format": "int64" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" } }, - "type": "object" - } - ] - }, - "Salutation": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "salutationKey", - "displayName", - "letterName" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "required": [ + "name", + "title" + ] }, - "salutationKey": { - "description": "Technical name given to salutation. For example: mr", - "type": "string" + "sent": { + "type": "boolean" }, - "displayName": { + "static": { + "type": "boolean" + }, + "deepLinkCode": { "type": "string" }, - "letterName": { + "documentNumber": { "type": "string" }, "customFields": { "type": "object" }, - "position": { - "description": "Numerical value that indicates the order in which the defined salutations must be displayed in the frontend.", - "type": "integer", - "format": "int64" - }, "createdAt": { "type": "string", "format": "date-time", @@ -10573,208 +9467,202 @@ "format": "date-time", "readOnly": true }, - "translated": { - "type": "object" + "documentType": { + "$ref": "#/components/schemas/DocumentType" + }, + "order": { + "$ref": "#/components/schemas/Order" + }, + "referencedDocument": { + "$ref": "#/components/schemas/Document" + }, + "dependentDocuments": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Document" + } + }, + "documentMediaFile": { + "$ref": "#/components/schemas/Media" + }, + "documentA11yMediaFile": { + "$ref": "#/components/schemas/Media" + }, + "fileType": { + "type": "string" } }, "type": "object" }, - "ScheduledTask": { - "description": "Added since version: 6.0.0.0", + "EntitySearchResult": { + "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "entity": { + "type": "string" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "total": { + "type": "integer", + "description": "The total number of found entities" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "aggregations": { + "type": "array", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", + "items": { + "type": "object" + } + }, + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." + }, + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." } - }, - "type": "object" + } }, - "Script": { - "description": "Added since version: 6.4.7.0", + "Price": { + "type": "object", + "description": "Price object", "properties": { - "id": { + "currencyId": { + "description": "Unique identity of the associated currency.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "gross": { + "description": "Gross price for the associated currency.", + "type": "number" + }, + "net": { + "description": "Net price for the associated currency.", + "type": "number" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "SeoUrlJsonApi": { - "description": "Added since version: 6.0.0.0", - "allOf": [ - { - "$ref": "#/components/schemas/resource" + "linked": { + "description": "Whether gross and net prices are linked through the tax configuration.", + "type": "boolean" }, - { - "required": [ - "id", - "languageId", - "foreignKey", - "routeName", - "pathInfo", - "seoPathInfo" + "percentage": { + "description": "Discount percentage relative to the list price for the gross and net amounts. `null` when no list price is set.", + "type": [ + "object", + "null" ], "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "gross": { + "description": "Discount percentage relative to the gross list price.", + "type": "number" }, - "salesChannelId": { - "description": "Unique identity of sales channel.", + "net": { + "description": "Discount percentage relative to the net list price.", + "type": "number" + } + }, + "required": [ + "gross", + "net" + ] + }, + "listPrice": { + "description": "Reference list price for displaying discounts.", + "type": "object", + "properties": { + "currencyId": { + "description": "Unique identity of the associated currency.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "languageId": { - "description": "Unique identity of language.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "gross": { + "description": "Gross list price for the associated currency.", + "type": "number" }, - "foreignKey": { - "description": "The key that references to product or category entity ID.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "net": { + "description": "Net list price for the associated currency.", + "type": "number" }, - "routeName": { - "description": "A destination routeName that has been registered somewhere in the app's router. For example: \\\\\"frontend.detail.page\\\\\"", + "linked": { + "description": "Whether gross and net list prices are linked through the tax configuration.", + "type": "boolean" + } + }, + "required": [ + "gross", + "net" + ] + }, + "regulationPrice": { + "description": "Reference price used for legal price disclosures.", + "type": "object", + "properties": { + "currencyId": { + "description": "Unique identity of the associated currency.", "type": "string", - "enum": [ - "frontend.detail.page", - "frontend.navigation.page", - "frontend.landing.page" - ] - }, - "pathInfo": { - "description": "Path to product URL. For example: \\\\\"/detail/bbf36734504741c79a3bbe3795b91564\\\\\"", - "type": "string" - }, - "seoPathInfo": { - "description": "Seo path to product. For example: \\\\\"Pepper-white-ground-pearl/SW10098\\\\\"", - "type": "string" + "pattern": "^[0-9a-f]{32}$" }, - "isCanonical": { - "description": "When set to true, search redirects to the main URL.", - "type": "boolean" + "gross": { + "description": "Gross regulation price for the associated currency.", + "type": "number" }, - "isModified": { - "description": "When boolean value is `true`, the seo url is changed.", - "type": "boolean" + "net": { + "description": "Net regulation price for the associated currency.", + "type": "number" }, - "isDeleted": { - "description": "When set to true, the URL is deleted and cannot be used any more but it is still available on table and can be restored later.", + "linked": { + "description": "Whether gross and net regulation prices are linked through the tax configuration.", "type": "boolean" - }, - "error": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "string" - }, - "url": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "string" - }, - "customFields": { - "type": "object" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true } }, - "type": "object" + "required": [ + "gross", + "net" + ] } + }, + "required": [ + "currencyId", + "gross", + "net" ] }, - "SeoUrl": { + "PropertyGroupOption": { "description": "Added since version: 6.0.0.0", "required": [ + "group", + "option", + "translated", "id", - "languageId", - "foreignKey", - "routeName", - "pathInfo", - "seoPathInfo" + "groupId", + "name" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "salesChannelId": { - "description": "Unique identity of sales channel.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "languageId": { - "description": "Unique identity of language.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "foreignKey": { - "description": "The key that references to product or category entity ID.", + "groupId": { + "description": "Unique identity of property group.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "routeName": { - "description": "A destination routeName that has been registered somewhere in the app's router. For example: \\\\\"frontend.detail.page\\\\\"", - "type": "string", - "enum": [ - "frontend.detail.page", - "frontend.navigation.page", - "frontend.landing.page" - ] - }, - "pathInfo": { - "description": "Path to product URL. For example: \\\\\"/detail/bbf36734504741c79a3bbe3795b91564\\\\\"", - "type": "string" - }, - "seoPathInfo": { - "description": "Seo path to product. For example: \\\\\"Pepper-white-ground-pearl/SW10098\\\\\"", + "name": { "type": "string" }, - "isCanonical": { - "description": "When set to true, search redirects to the main URL.", - "type": "boolean" - }, - "isModified": { - "description": "When boolean value is `true`, the seo url is changed.", - "type": "boolean" - }, - "isDeleted": { - "description": "When set to true, the URL is deleted and cannot be used any more but it is still available on table and can be restored later.", - "type": "boolean" + "position": { + "type": "integer", + "format": "int64" }, - "error": { - "description": "Runtime field, cannot be used as part of the criteria.", + "colorHexCode": { + "description": "Property group options can be displayed in the form of color. For example: #98e3f5ff.", "type": "string" }, - "url": { + "mediaId": { + "description": "Unique identity of media.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "combinable": { "description": "Runtime field, cannot be used as part of the criteria.", - "type": "string" + "type": "boolean" }, "customFields": { "type": "object" @@ -10788,818 +9676,845 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "translated": { + "type": "object" + }, + "media": { + "$ref": "#/components/schemas/Media" + }, + "group": { + "$ref": "#/components/schemas/PropertyGroup" + }, + "option": { + "type": "string" } }, "type": "object" }, - "SeoUrlTemplate": { - "description": "Added since version: 6.0.0.0", + "CartItems": { + "type": "object", + "required": [ + "items" + ], "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "salesChannelId": { - "description": "Unique identity of sales channel.", + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + } + } + }, + "CookieRouteResponse": { + "type": "object", + "description": "Response containing cookie groups and their configuration hash.", + "properties": { + "apiAlias": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "isValid": { - "description": "Created SEO URL template can be made usable by setting `isValid` to true.", - "type": "boolean" + "enum": [ + "cookie_groups_hash" + ] }, - "customFields": { - "type": "object" + "elements": { + "type": "array", + "description": "Collection of cookie groups", + "items": { + "$ref": "#/components/schemas/CookieGroup" + } }, - "createdAt": { + "hash": { "type": "string", - "format": "date-time", - "readOnly": true + "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", + "example": "f86b6a872cb83dbd22d838ceda1aa3d4" }, - "updatedAt": { + "languageId": { "type": "string", - "format": "date-time", - "readOnly": true + "format": "uuid", + "description": "The language ID for which the cookie configuration was generated. Used to store hashes per language.", + "example": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" } }, - "type": "object" + "required": [ + "elements", + "hash", + "languageId", + "apiAlias" + ], + "example": { + "apiAlias": "cookie_groups_hash", + "elements": [ + { + "isRequired": true, + "description": "Cookies required for this shop to function:", + "name": "Technically required", + "entries": [ + { + "name": "Session", + "hidden": false, + "cookie": "session-", + "apiAlias": "cookie_entry" + }, + { + "name": "Timezone", + "hidden": false, + "cookie": "timezone", + "apiAlias": "cookie_entry" + }, + { + "value": "1", + "expiration": 30, + "name": "Cookie preferences", + "hidden": true, + "cookie": "cookie-preference", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "description": "Cookies used for statistics and shop performance metrics.", + "name": "Statistics", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "Google Analytics", + "hidden": false, + "cookie": "google-analytics-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "description": "Allows Google to collect personal data for online advertising and marketing.", + "name": "Marketing", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "Google Advertising", + "hidden": false, + "cookie": "google-ads-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "name": "Comfort features", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "YouTube video", + "hidden": false, + "cookie": "youtube-video", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + } + ], + "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", + "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" + } }, - "ShippingMethodJsonApi": { - "description": "Added since version: 6.0.0.0", - "allOf": [ - { - "$ref": "#/components/schemas/resource" - }, - { - "required": [ - "id", - "technicalName", - "deliveryTimeId", - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "name": { - "type": "string" - }, - "technicalName": { - "type": "string" - }, - "active": { - "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront.", - "type": "boolean" - }, - "position": { - "description": "The order of the tabs of your defined shipping methods in the storefront by entering numerical values like 1,2,3, etc.", - "type": "integer", - "format": "int64" - }, - "customFields": { - "type": "object" - }, - "mediaId": { - "description": "Unique identity of media.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "deliveryTimeId": { - "description": "Unique identity of deliveryTime.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "taxType": { - "description": "Refers `Free`, `Net` or `Gross` type of taxes.", - "type": "string" - }, - "description": { - "type": "string" - }, - "trackingUrl": { - "type": "string" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - }, - "relationships": { + "ShippingMethodPageRouteResponse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "deliveryTimeId": { + "type": "string" + }, + "deliveryTime": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "min": { + "type": "integer", + "format": "int32" + }, + "max": { + "type": "integer", + "format": "int32" + }, + "unit": { + "type": "string" + } + } + }, + "translations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + } + } + } + }, + "orderDeliveries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "orderId": { + "type": "string" + }, + "shippingOrderAddressId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "shippingDateEarliest": { + "type": "string", + "format": "date-time" + }, + "shippingDateLatest": { + "type": "string", + "format": "date-time" + }, + "stateId": { + "type": "string" + } + } + } + }, + "salesChannelDefaultAssignments": { + "type": "array", + "items": { + "type": "object", "properties": { - "deliveryTime": { - "description": "Estimated delivery time information", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/shipping-method/d72e7a227a27328b28342b32fc66b6bf/deliveryTime" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "delivery_time" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "8c888ae25a7bd42057370e31f7e01044" - } - } - } - }, - "type": "object" + "typeId": { + "type": "string" }, - "availabilityRule": { - "description": "Rule defining when this shipping method is available", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/shipping-method/d72e7a227a27328b28342b32fc66b6bf/availabilityRule" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "rule" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "9fbb7961d1cb158094924c679e1b302c" - } - } - } - }, - "type": "object" + "languageId": { + "type": "string" }, - "prices": { - "description": "Shipping prices based on weight, volume, or cart value", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/shipping-method/d72e7a227a27328b28342b32fc66b6bf/prices" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "shipping_method_price" - }, - "id": { - "type": "string", - "example": "afae32efe0f84fece3f96b377b768b33" - } - } - } - } - }, - "type": "object" + "currencyId": { + "type": "string" }, - "media": { - "description": "Shipping method logo or carrier image", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/shipping-method/d72e7a227a27328b28342b32fc66b6bf/media" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "media" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "62933a2951ef01f4eafd9bdf4d3cd2f0" - } - } - } - }, - "type": "object" + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpAllowlist": { + "type": "string" + }, + "maintenanceIpWhitelist": { + "deprecated": true, + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } + } + }, + "salesChannels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpAllowlist": { + "type": "string" }, - "tags": { - "description": "Tags for organizing shipping methods", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/shipping-method/d72e7a227a27328b28342b32fc66b6bf/tags" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "tag" - }, - "id": { - "type": "string", - "example": "d57ac45256849d9b13e2422d91580fb9" - } - } - } - } - }, - "type": "object" + "maintenanceIpWhitelist": { + "deprecated": true, + "type": "string" }, - "tax": { - "description": "Tax configuration for shipping costs", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/shipping-method/d72e7a227a27328b28342b32fc66b6bf/tax" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "tax" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "06565e5611f23fdf8cc43e5077b92b54" - } - } - } - }, - "type": "object" + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" } + } + } + }, + "availabilityRule": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - "type": "object" + "description": { + "type": "string" + }, + "priority": { + "type": "integer", + "format": "int32" + }, + "invalid": { + "type": "boolean" + } } }, - "type": "object" - } - ] - }, - "ShippingMethod": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "technicalName", - "deliveryTimeId", - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "name": { - "type": "string" - }, - "technicalName": { - "type": "string" - }, - "active": { - "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront.", - "type": "boolean" - }, - "position": { - "description": "The order of the tabs of your defined shipping methods in the storefront by entering numerical values like 1,2,3, etc.", - "type": "integer", - "format": "int64" - }, - "customFields": { - "type": "object" - }, - "mediaId": { - "description": "Unique identity of media.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "deliveryTimeId": { - "description": "Unique identity of deliveryTime.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "taxType": { - "description": "Refers `Free`, `Net` or `Gross` type of taxes.", - "type": "string" - }, - "description": { - "type": "string" - }, - "trackingUrl": { - "type": "string" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - }, - "deliveryTime": { - "$ref": "#/components/schemas/DeliveryTime", - "description": "Estimated delivery time information" - }, - "availabilityRule": { - "$ref": "#/components/schemas/Rule", - "description": "Rule defining when this shipping method is available" - }, - "prices": { - "description": "Shipping prices based on weight, volume, or cart value", - "type": "array", - "items": { - "$ref": "#/components/schemas/ShippingMethodPrice" - } - }, - "media": { - "$ref": "#/components/schemas/Media", - "description": "Shipping method logo or carrier image" - }, - "tags": { - "description": "Tags for organizing shipping methods", - "type": "array", - "items": { - "$ref": "#/components/schemas/Tag" + "availabilityRuleId": { + "type": "string" + }, + "prices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "ruleId": { + "type": "string" + }, + "calculation": { + "type": "integer", + "format": "int32" + }, + "quantityStart": { + "type": "number", + "format": "float" + }, + "quantityEnd": { + "type": "number", + "format": "float" + }, + "price": { + "type": "number", + "format": "float" + }, + "calculationRuleId": { + "type": "string" + } + } + } + }, + "mediaId": { + "type": "string" + }, + "media": { + "type": "object", + "properties": { + "userId": { + "type": "string" + }, + "mimeType": { + "type": "string" + }, + "fileExtension": { + "type": "string" + }, + "fileSize": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string" + }, + "metaDataRaw": { + "type": "string" + }, + "mediaTypeRaw": { + "type": "string" + }, + "uploadedAt": { + "type": "string", + "format": "date-time" + }, + "alt": { + "type": "string" + }, + "url": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "mediaFolderId": { + "type": "string" + }, + "private": { + "type": "boolean" + }, + "thumbnailsRo": { + "type": "string" + } + } + }, + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + } } - }, - "tax": { - "$ref": "#/components/schemas/Tax", - "description": "Tax configuration for shipping costs" } - }, - "type": "object" + } }, - "ShippingMethodPrice": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "shippingMethodId" - ], + "CartPriceReference": { + "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "purchaseUnit": { + "type": "number" }, - "shippingMethodId": { - "description": "Unique identity of shipping method.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "referenceUnit": { + "type": "number" }, - "ruleId": { - "description": "Unique identity of rule.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "unitName": { + "type": "string" }, - "calculation": { - "description": "Shipping price calculated based on quantity, price, weight or volume of items.", - "type": "integer", - "format": "int64" + "price": { + "type": "number" }, - "calculationRuleId": { - "description": "Unique identity of rule calculation.", + "apiAlias": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "quantityStart": { - "description": "Starting range of quantity of an item.", - "type": "number", - "format": "float" - }, - "quantityEnd": { - "description": "Ending range of quantity of an item.", - "type": "number", - "format": "float" + "enum": [ + "cart_price_reference" + ] }, - "currencyPrice": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Price" - } + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] }, - "customFields": { - "type": "object" + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "hasRange": { + "type": "boolean" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] } }, - "type": "object" - }, - "Snippet": { - "description": "Added since version: 6.0.0.0", "required": [ - "setId", - "translationKey", - "value" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "setId": { - "description": "Unique identity od snippet set.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "translationKey": { - "description": "Reference to the snippet in the template.", - "type": "string" - }, - "value": { - "description": "Value of the key.", - "type": "string" - }, - "customFields": { - "type": "object" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" + ] }, - "SnippetSet": { - "description": "Added since version: 6.0.0.0", - "required": [ - "name", - "iso" - ], + "AggregationEntity": { + "title": "AggregationEntity", + "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, "name": { - "description": "Name of snippet set.", - "type": "string" - }, - "iso": { - "description": "ISO nomenclature used to classify languages.", + "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" }, - "customFields": { - "type": "object" - }, - "createdAt": { + "type": { + "description": "The type of aggregation", "type": "string", - "format": "date-time", - "readOnly": true + "enum": [ + "entity" + ] }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "snippets": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Snippet" - } + "definition": { + "description": "The entity definition e.g \"product_manufacturer\".", + "type": "string" } }, - "type": "object" - }, - "StateMachine": { - "description": "Added since version: 6.0.0.0", "required": [ - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "name", + "type", + "field", + "definition" + ] + }, + "AggregationFilter": { + "title": "AggregationFilter", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "updatedAt": { + "type": { + "description": "The type of aggregation", "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - }, - "states": { - "type": "array", - "items": { - "$ref": "#/components/schemas/StateMachineState" - } + "enum": [ + "filter" + ] }, - "transitions": { + "filter": { "type": "array", "items": { - "$ref": "#/components/schemas/StateMachineTransition" + "$ref": "#/components/schemas/Filters" } } }, - "type": "object" + "required": [ + "name", + "type", + "filter" + ] }, - "StateMachineHistory": { - "description": "Added since version: 6.0.0.0", + "AggregationTerms": { + "title": "AggregationTerms", + "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "createdAt": { + "type": { + "description": "The type of aggregation", "type": "string", - "format": "date-time", - "readOnly": true + "enum": [ + "terms" + ] }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "fromStateMachineState": { - "$ref": "#/components/schemas/StateMachineState" + "limit": { + "description": "The number of terms to return", + "type": "number" }, - "toStateMachineState": { - "$ref": "#/components/schemas/StateMachineState" + "sort": { + "type": "array", + "description": "Sorting the aggregation result.", + "items": { + "$ref": "#/components/schemas/Sort" + } } }, - "type": "object" - }, - "StateMachineState": { - "description": "Added since version: 6.0.0.0", "required": [ - "translated", - "technicalName", - "name" - ], + "name", + "type", + "field" + ] + }, + "AggregationHistogram": { + "title": "AggregationHistogram", + "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "technicalName": { - "description": "Technical name of StateMachineState.", - "type": "string" - }, "name": { + "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" }, - "customFields": { - "type": "object" - }, - "createdAt": { + "type": { + "description": "The type of aggregation", "type": "string", - "format": "date-time", - "readOnly": true + "enum": [ + "histogram" + ] }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "translated": { - "type": "object" - } - }, - "type": "object" - }, - "StateMachineTransition": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "interval": { + "description": "The interval of the histogram", + "type": "number" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "format": { + "description": "The format of the histogram", + "type": "string" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "timeZone": { + "description": "The timezone of the histogram", + "type": "string" } }, - "type": "object" - }, - "SystemConfig": { - "description": "Added since version: 6.0.0.0", "required": [ - "id", - "configurationKey", - "configurationValue" - ], + "name", + "type", + "field" + ] + }, + "AggregationRange": { + "title": "AggregationRange", + "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", + "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "configurationKey": { - "description": "Config key for shop configurations.", + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" }, - "configurationValue": { - "properties": { - "_value": { - "type": "object" - } - }, - "type": "object" - }, - "salesChannelId": { - "description": "Unique identity of sales channel.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { + "type": { + "description": "The type of aggregation", "type": "string", - "format": "date-time", - "readOnly": true + "enum": [ + "range" + ] }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "salesChannel": { - "$ref": "#/components/schemas/SalesChannel" + "ranges": { + "description": "The ranges of the aggregation", + "type": "array", + "items": { + "type": "object", + "anyOf": [ + { + "type": "object", + "title": "From and to", + "properties": { + "from": { + "type": "number", + "description": "The lower bound of the range" + }, + "to": { + "type": "number", + "description": "The upper bound of the range" + } + }, + "required": [ + "from", + "to" + ] + }, + { + "type": "object", + "title": "From only", + "properties": { + "from": { + "type": "string", + "description": "The lower bound of the range" + } + }, + "required": [ + "from" + ] + }, + { + "type": "object", + "title": "To only", + "properties": { + "to": { + "type": "string", + "description": "The upper bound of the range" + } + }, + "required": [ + "to" + ] + } + ] + } } }, - "type": "object" + "required": [ + "name", + "type", + "field", + "ranges" + ] }, - "Tag": { - "description": "Added since version: 6.0.0.0", + "LandingPage": { + "description": "Added since version: 6.4.0.0", "required": [ + "apiAlias", "id", - "name" + "name", + "url" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "name": { - "type": "string" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "Tax": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "taxRate", - "name" - ], - "properties": { - "id": { + "versionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "taxRate": { - "description": "Rate of tax.", - "type": "number", - "format": "float" + "active": { + "type": "boolean" }, "name": { - "description": "Name defined for a Tax.", "type": "string" }, - "position": { - "description": "The order of the tabs of your defined taxes in the storefront by entering numerical values like 1,2,3, etc. Added since version: 6.4.0.0.", - "type": "integer", - "format": "int64" - }, "customFields": { "type": "object" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "TaxProvider": { - "description": "Added since version: 6.5.0.0", - "required": [ - "id", - "priority", - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "slotConfig": { + "type": "object" }, - "active": { - "description": "When boolean value is `true`, the tax providers are available for selection in the storefront.", - "type": "boolean" + "metaTitle": { + "type": "string" }, - "name": { + "metaDescription": { "type": "string" }, - "priority": { - "description": "A numerical value to prioritize one of the tax providers from the list.", - "type": "integer", - "format": "int64" + "keywords": { + "type": "string" }, - "processUrl": { - "description": "External URL makes request to get tax info.", + "url": { "type": "string" }, - "appId": { - "description": "Unique identity of app.", + "cmsPageId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "customFields": { - "type": "object" + "cmsPageVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, "createdAt": { "type": "string", @@ -11613,272 +10528,253 @@ }, "translated": { "type": "object" - } - }, - "type": "object" - }, - "TaxRule": { - "description": "Added since version: 6.1.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "cmsPage": { + "$ref": "#/components/schemas/CmsPage", + "description": "CMS page layout for the landing page" }, - "updatedAt": { + "seoUrls": { + "description": "SEO-friendly URLs for the landing page across different sales channels", + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" + } + }, + "apiAlias": { "type": "string", - "format": "date-time", - "readOnly": true + "enum": [ + "landing_page" + ] } }, "type": "object" }, - "TaxRuleType": { - "description": "Added since version: 6.1.0.0", - "required": [ - "typeName" - ], + "Cart": { + "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "name": { + "description": "Name of the cart - for example `guest-cart`", + "type": "string" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "token": { + "description": "Context token identifying the cart and the user session", + "type": "string" + }, + "price": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "lineItems": { + "description": "All items within the cart", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + }, + "errors": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartError" + } + }, + { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "code": { + "type": "number" + }, + "key": { + "type": "string" + }, + "level": { + "type": "number" + }, + "message": { + "type": "string" + }, + "messageKey": { + "type": "string" + } + }, + "required": [ + "code", + "key", + "level", + "message", + "messageKey" + ] + } + } + ] + }, + "deliveries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDelivery" + } + }, + "transactions": { + "description": "A list of all payment transactions associated with the current cart.", + "type": "array", + "items": { + "type": "object", + "properties": { + "paymentMethodId": { + "type": "string" + }, + "amount": { + "$ref": "#/components/schemas/CalculatedPrice" + } + } + } + }, + "modified": { + "type": "boolean" + }, + "customerComment": { + "description": "A comment that can be added to the cart.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "affiliateCode": { + "description": "An affiliate tracking code", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "campaignCode": { + "description": "A campaign tracking code", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] }, - "updatedAt": { + "apiAlias": { "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" + "enum": [ + "cart" + ] } }, - "type": "object" + "required": [ + "price", + "apiAlias" + ] }, - "Theme": { + "CmsBlock": { "description": "Added since version: 6.0.0.0", "required": [ + "apiAlias", + "slots", "id", - "name", - "author", - "active" + "position", + "type", + "sectionId" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "technicalName": { - "type": "string" - }, - "name": { - "type": "string" - }, - "author": { - "type": "string" - }, - "description": { - "type": "string" - }, - "labels": { - "type": "object" - }, - "helpTexts": { - "type": "object" - }, - "customFields": { - "type": "object" - }, - "previewMediaId": { + "versionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "parentThemeId": { + "cmsSectionVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "baseConfig": { - "type": "object" - }, - "configValues": { - "type": "object" - }, - "active": { - "type": "boolean" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - }, - "media": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Media" - } - } - }, - "type": "object" - }, - "Unit": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "shortCode", - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "position": { + "description": "Order of the block indicated by number like 0, 1, 2,...", + "type": "integer", + "format": "int64" }, - "shortCode": { + "type": { + "description": "Type of block can be 'image`, `text`, 'product-listing`, `image-two-column`, etc.", "type": "string" }, "name": { + "description": "Unique name of the CMS Block.", "type": "string" }, - "customFields": { - "type": "object" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "sectionPosition": { + "description": "Position of the section. It can either be `main` or `sidebar`.", + "type": "string" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "marginTop": { + "description": "Defines the margin area on the top of an element.", + "type": "string" }, - "translated": { - "type": "object" - } - }, - "type": "object" - }, - "User": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "marginBottom": { + "description": "Defines for the margin area on the bottom of an element.", + "type": "string" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "marginLeft": { + "description": "Defines for the margin area on the left of an element.", + "type": "string" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "UserAccessKey": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "marginRight": { + "description": "Defines the margin area on the right of an element.", + "type": "string" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "backgroundColor": { + "description": "Defines the background color of an element.", + "type": "string" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "UserConfig": { - "description": "Added since version: 6.3.5.0", - "properties": { - "id": { + "backgroundMediaId": { + "description": "Unique identity of background media.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "backgroundMediaMode": { + "description": "Background media mode accept values `cover`, `auto`, `contain`.", + "type": "string" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "UserRecovery": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "cssClass": { + "description": "One or more CSS classes added and separated by spaces.", + "type": "string" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "visibility": { + "properties": { + "mobile": { + "type": "boolean" + }, + "desktop": { + "type": "boolean" + }, + "tablet": { + "type": "boolean" + } + }, + "type": "object" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "Webhook": { - "description": "Added since version: 6.3.1.0", - "properties": { - "id": { + "sectionId": { + "description": "Unique identity of section.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "WebhookEventLog": { - "description": "Added since version: 6.4.1.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "customFields": { + "type": "object" }, "createdAt": { "type": "string", @@ -11889,1180 +10785,1351 @@ "type": "string", "format": "date-time", "readOnly": true - } - }, - "type": "object" - }, - "NewsletterStatus": { - "type": "string", - "enum": [ - "notSet", - "optIn", - "optOut", - "direct", - "undefined" - ], - "description": "The subscription status. Possible values are: notSet, optIn, optOut, direct, undefined." - }, - "Breadcrumb": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "categoryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "type": { - "$ref": "#/components/schemas/Category/properties/type" - }, - "translated": { - "type": "object", - "additionalProperties": true, - "properties": { - "customFields": { - "type": "object" - }, - "slotConfig": { - "type": "object" - }, - "linkType": { - "$ref": "#/components/schemas/Category/properties/linkType" - }, - "internalLink": { - "type": "string" - }, - "externalLink": { - "type": "string" - }, - "linkNewTab": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "metaTitle": { - "type": "string" - }, - "metaDescription": { - "type": "string" - }, - "keywords": { - "type": "string" - } - } }, - "path": { - "type": "string" + "backgroundMedia": { + "$ref": "#/components/schemas/Media" }, - "seoUrls": { + "slots": { "type": "array", "items": { - "$ref": "#/components/schemas/SeoUrl" + "$ref": "#/components/schemas/CmsSlot" } }, "apiAlias": { "type": "string", "enum": [ - "breadcrumb" + "cms_block" ] } }, - "required": [ - "name", - "categoryId", - "type", - "translated", - "path", - "apiAlias" - ] + "type": "object" }, - "ProductPurchaseLimit": { + "CartItemsUpdate": { "type": "object", - "description": "Current quantity purchase limits for a product.", "required": [ - "productId", - "minPurchase", - "purchaseSteps", - "maxPurchase", - "stock", - "apiAlias" + "items" ], "properties": { - "productId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The product ID." - }, - "minPurchase": { - "type": "integer", - "description": "Minimum quantity a customer can purchase." - }, - "purchaseSteps": { - "type": "integer", - "description": "Step increment for quantity selection." - }, - "maxPurchase": { - "type": "integer", - "description": "Maximum quantity a customer can purchase, reflecting current stock for closeout products." - }, - "stock": { - "type": [ - "integer", - "null" - ], - "description": "Current stock level of the product." - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_purchase_limit" - ] + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartLineItemUpdate" + } } } }, - "AggregationMetrics": { + "CartLineItemUpdate": { "type": "object", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "avg", - "count", - "max", - "min", - "stats", - "sum" - ] - }, - "field": { - "type": "string" - } - }, "required": [ - "name", - "type", - "field" - ] - }, - "LineItemType": { - "type": "string", - "deprecated": true, - "enum": [ - "product", - "credit", - "custom", - "promotion", - "discount", - "container", - "quantity", - "dsr-line-item-discount", - "dsr-cart-discount" - ] - }, - "LineItem": { - "type": "object", + "id" + ], "properties": { - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - }, - "cover": { - "$ref": "#/components/schemas/Media" - }, - "dataContextHash": { - "type": "string" - }, - "dataTimestamp": { + "id": { "type": "string" }, - "deliveryInformation": { - "$ref": "#/components/schemas/CartDeliveryInformation" - }, - "description": { - "type": "string" + "type": { + "$ref": "#/components/schemas/OrderLineItem/properties/type" }, - "good": { - "type": "boolean" + "quantity": { + "type": "integer" }, - "id": { + "referencedId": { "type": "string" }, "label": { "type": "string" - }, - "modified": { - "type": "boolean" - }, - "modifiedByApp": { - "type": "boolean" - }, - "payload": { - "$ref": "#/components/schemas/ProductJsonApi" - }, - "price": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "calculated_price" - ] - }, - "calculatedTaxes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] + }, + "payload": { + "type": "object" + }, + "stackable": { + "type": "boolean" + }, + "removable": { + "type": "boolean" + }, + "coverId": { + "type": "string" + }, + "priceDefinition": { + "type": "object", + "properties": { + "type": { + "type": "string" }, - "quantity": { + "price": { "type": "number" }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] + "percentage": { + "type": "number" }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } - }, - { - "type": "null" - } - ] + "quantity": { + "type": "integer" }, - "totalPrice": { - "type": "number" + "isCalculated": { + "type": "boolean" }, - "unitPrice": { + "listPrice": { "type": "number" }, "taxRules": { "type": "array", - "description": "Currently active tax rules and/or rates", "items": { "type": "object", "properties": { "taxRate": { - "type": "number", - "format": "float" + "type": "number" }, - "name": { - "type": "string" + "percentage": { + "type": "number" } } } } - }, - "required": [ - "apiAlias", - "totalPrice", - "quantity", - "unitPrice" - ] + } + } + } + }, + "ContextMeasurementSystemInfo": { + "type": "object", + "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", + "properties": { + "system": { + "type": "string", + "enum": [ + "metric", + "imperial" + ], + "default": "metric", + "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." }, - "priceDefinition": { - "$ref": "#/components/schemas/CartPriceQuantity" + "units": { + "type": "object", + "description": "Units used in the measurement system.", + "properties": { + "length": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Unit of length." + }, + "weight": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." + } + } + } + } + }, + "AccountNewsletterRecipient": { + "type": "object", + "properties": { + "status": { + "$ref": "#/components/schemas/NewsletterStatus" }, - "quantity": { - "type": "number" + "apiAlias": { + "type": "string", + "enum": [ + "account_newsletter_recipient" + ] + } + }, + "required": [ + "status", + "apiAlias" + ] + }, + "ProductListingCriteria": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" }, - "quantityInformation": { + { "type": "object", + "description": "Additional search parameters for product listings", "properties": { - "maxPurchase": { - "type": "number" + "order": { + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "type": "string" }, - "minPurchase": { - "type": "number" + "limit": { + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "type": "integer", + "minimum": 0 }, - "purchaseSteps": { - "type": "number" + "p": { + "description": "Search result page", + "type": "integer", + "default": 1 + }, + "manufacturer": { + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "type": "string" + }, + "min-price": { + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "max-price": { + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "rating": { + "description": "Filter products with a minimum average rating.", + "type": "integer" + }, + "shipping-free": { + "description": "Filters products that are marked as shipping-free.", + "type": "boolean", + "default": false + }, + "properties": { + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "type": "string" + }, + "manufacturer-filter": { + "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "price-filter": { + "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "rating-filter": { + "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "shipping-free-filter": { + "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-filter": { + "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-whitelist": { + "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", + "type": "string" + }, + "reduce-aggregations": { + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] } } + } + ] + }, + "CartPriceQuantity": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_quantity" + ] }, - "referencedId": { - "type": "string" + "isCalculated": { + "type": "boolean" + }, + "listPrice": { + "$ref": "#/components/schemas/CartListPrice" + }, + "price": { + "type": "number" }, - "removable": { - "type": "boolean" + "quantity": { + "type": "number" }, - "stackable": { - "type": "boolean" + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + } + }, + "type": "object" }, - "states": { - "deprecated": true, + "taxRules": { "type": "array", "items": { - "type": "string", - "enum": [ - "is-physical", - "is-download" - ] + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } } }, "type": { - "$ref": "#/components/schemas/OrderLineItem/properties/type" - }, - "uniqueIdentifier": { "type": "string" - }, - "extensions": { - "type": "object", - "properties": { - "meta": { - "type": "object", - "properties": { - "attendees": { - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "id": { - "type": "string" - } - } - } - } - } - } - } } }, "required": [ - "id", - "type" + "apiAlias" ] }, - "CookieEntryCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CookieEntry" - } - }, - "ProductMeasurements": { + "ProductListingFlags": { "type": "object", - "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", + "description": "Additional flags for product listings", "properties": { - "width": { - "type": "object", - "properties": { - "unit": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" + "no-aggregations": { + "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", + "oneOf": [ + { + "type": "string" }, - "value": { - "type": "number" + { + "type": "null" } - } + ] }, - "height": { - "type": "object", - "properties": { - "unit": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" + "only-aggregations": { + "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", + "oneOf": [ + { + "type": "string" }, - "value": { - "type": "number" + { + "type": "null" } - } - }, - "length": { + ] + } + } + }, + "CartDelivery": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { "type": "object", "properties": { - "unit": { + "earliest": { "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" + "format": "date-time" }, - "value": { - "type": "number" + "latest": { + "type": "string", + "format": "date-time" } } }, - "weight": { + "location": { "type": "object", "properties": { - "unit": { + "apiAlias": { "type": "string", "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg" + "cart_delivery_shipping_location" + ] }, - "value": { - "type": "number" + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "state": { + "$ref": "#/components/schemas/CountryState" } } - } - } - }, - "CookieGroupCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CookieGroup" - } - }, - "EntitySearchResult": { - "type": "object", - "properties": { - "entity": { - "type": "string" - }, - "total": { - "type": "integer", - "description": "The total number of found entities" }, - "aggregations": { + "positions": { "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", "items": { - "type": "object" + "$ref": "#/components/schemas/CartDeliveryPosition" } }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." + "shippingCosts": { + "$ref": "#/components/schemas/CalculatedPrice" }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" } } }, - "Price": { - "type": "object", - "description": "Price object", + "OrderLineItem": { + "description": "Added since version: 6.0.0.0", + "required": [ + "apiAlias", + "id", + "orderId", + "identifier", + "quantity", + "label", + "children", + "states" + ], "properties": { - "currencyId": { - "description": "Unique identity of the associated currency.", + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "orderId": { + "description": "Unique identity of order.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "orderVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productId": { + "description": "Unique identity of product.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "promotionId": { + "description": "Unique identity of product.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "parentId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "parentVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "gross": { - "description": "Gross price for the associated currency.", - "type": "number" + "coverId": { + "description": "Unique identity of cover image.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "net": { - "description": "Net price for the associated currency.", - "type": "number" + "identifier": { + "description": "It is a unique identity of an item in cart before its converted to an order.", + "type": "string" }, - "linked": { - "description": "Whether gross and net prices are linked through the tax configuration.", - "type": "boolean" + "referencedId": { + "description": "Unique identity of type of entity.", + "type": "string" }, - "percentage": { - "description": "Discount percentage relative to the list price for the gross and net amounts. `null` when no list price is set.", - "type": [ - "object", - "null" - ], - "properties": { - "gross": { - "description": "Discount percentage relative to the gross list price.", - "type": "number" - }, - "net": { - "description": "Discount percentage relative to the net list price.", - "type": "number" - } - }, - "required": [ - "gross", - "net" - ] + "quantity": { + "description": "Number of items of product.", + "type": "integer", + "format": "int64" }, - "listPrice": { - "description": "Reference list price for displaying discounts.", + "label": { + "description": "It is a typical product name given to the line item.", + "type": "string" + }, + "payload": { "type": "object", "properties": { - "currencyId": { - "description": "Unique identity of the associated currency.", + "categoryIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "createdAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "gross": { - "description": "Gross list price for the associated currency.", - "type": "number" + "customFields": { + "type": "object" }, - "net": { - "description": "Net list price for the associated currency.", - "type": "number" + "features": { + "type": "array" }, - "linked": { - "description": "Whether gross and net list prices are linked through the tax configuration.", + "isCloseout": { "type": "boolean" - } - }, - "required": [ - "gross", - "net" - ] - }, - "regulationPrice": { - "description": "Reference price used for legal price disclosures.", - "type": "object", - "properties": { - "currencyId": { - "description": "Unique identity of the associated currency.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" }, - "gross": { - "description": "Gross regulation price for the associated currency.", - "type": "number" + "isNew": { + "type": "boolean" }, - "net": { - "description": "Net regulation price for the associated currency.", - "type": "number" + "manufacturerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "linked": { - "description": "Whether gross and net regulation prices are linked through the tax configuration.", + "markAsTopseller": { "type": "boolean" - } - }, - "required": [ - "gross", - "net" - ] - } - }, - "required": [ - "currencyId", - "gross", - "net" - ] - }, - "CartItems": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - } - } - }, - "CookieRouteResponse": { - "type": "object", - "description": "Response containing cookie groups and their configuration hash.", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cookie_groups_hash" - ] - }, - "elements": { - "type": "array", - "description": "Collection of cookie groups", - "items": { - "$ref": "#/components/schemas/CookieGroup" - } - }, - "hash": { - "type": "string", - "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", - "example": "f86b6a872cb83dbd22d838ceda1aa3d4" - }, - "languageId": { - "type": "string", - "format": "uuid", - "description": "The language ID for which the cookie configuration was generated. Used to store hashes per language.", - "example": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" - } - }, - "required": [ - "elements", - "hash", - "languageId", - "apiAlias" - ], - "example": { - "apiAlias": "cookie_groups_hash", - "elements": [ - { - "isRequired": true, - "description": "Cookies required for this shop to function:", - "name": "Technically required", - "entries": [ - { - "name": "Session", - "hidden": false, - "cookie": "session-", - "apiAlias": "cookie_entry" - }, - { - "name": "Timezone", - "hidden": false, - "cookie": "timezone", - "apiAlias": "cookie_entry" + }, + "optionIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - { - "value": "1", - "expiration": 30, - "name": "Cookie preferences", - "hidden": true, - "cookie": "cookie-preference", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "description": "Cookies used for statistics and shop performance metrics.", - "name": "Statistics", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "Google Analytics", - "hidden": false, - "cookie": "google-analytics-enabled", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "description": "Allows Google to collect personal data for online advertising and marketing.", - "name": "Marketing", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "Google Advertising", - "hidden": false, - "cookie": "google-ads-enabled", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "name": "Comfort features", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "YouTube video", - "hidden": false, - "cookie": "youtube-video", - "apiAlias": "cookie_entry" + "readOnly": true + }, + "options": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PropertyGroupOption" } - ], - "apiAlias": "cookie_group" - } - ], - "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", - "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" - } - }, - "ShippingMethodPageRouteResponse": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "deliveryTimeId": { - "type": "string" - }, - "deliveryTime": { - "type": "object", - "properties": { - "name": { - "type": "string" + }, + "parentId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productNumber": { + "type": "string" + }, + "propertyIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "min": { - "type": "integer", - "format": "int32" + "readOnly": true + }, + "releaseDate": { + "type": "string", + "format": "date-time" + }, + "stock": { + "type": "integer", + "format": "int64" + }, + "streamIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "max": { - "type": "integer", - "format": "int32" + "readOnly": true + }, + "tagIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "unit": { - "type": "string" - } - } - }, - "translations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - } - } - } - }, - "orderDeliveries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "orderId": { - "type": "string" - }, - "shippingOrderAddressId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "shippingDateEarliest": { - "type": "string", - "format": "date-time" - }, - "shippingDateLatest": { - "type": "string", - "format": "date-time" - }, - "stateId": { - "type": "string" - } - } - } - }, - "salesChannelDefaultAssignments": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpAllowlist": { - "type": "string" - }, - "maintenanceIpWhitelist": { - "deprecated": true, - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" - }, - "hreflangDefaultDomainId": { - "type": "string" - } - } + "readOnly": true + }, + "taxId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productType": { + "$ref": "#/components/schemas/Product/properties/type" } + } + }, + "good": { + "description": "When set to true, it indicates the line item is physical else it is virtual.", + "type": "boolean" + }, + "removable": { + "description": "Allows the line item to be removable from the cart when set to true.", + "type": "boolean" + }, + "stackable": { + "description": "Allows to change the quantity of the line item when set to true.", + "type": "boolean" + }, + "position": { + "description": "Position of line items placed in an order.", + "type": "integer", + "format": "int64" + }, + "priceDefinition": { + "type": "object", + "$ref": "#/components/schemas/CartPriceQuantity" + }, + "unitPrice": { + "description": "Price of product per item (where, quantity=1).", + "type": "number", + "format": "float" + }, + "totalPrice": { + "description": "Cost of product based on quantity.", + "type": "number", + "format": "float" + }, + "description": { + "description": "Description of line items in an order.", + "type": "string" + }, + "type": { + "description": "Type refers to the entity type of an item whether it is product or promotion for instance.", + "type": "string", + "enum": [ + "product", + "credit", + "custom", + "promotion", + "container", + "discount", + "quantity" + ] + }, + "customFields": { + "type": "object" + }, + "states": { + "type": "array", + "items": { + "type": "string" }, - "salesChannels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpAllowlist": { - "type": "string" - }, - "maintenanceIpWhitelist": { - "deprecated": true, - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" - }, - "hreflangDefaultDomainId": { - "type": "string" - } - } + "deprecated": true + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "cover": { + "$ref": "#/components/schemas/Media", + "description": "Line item image or thumbnail" + }, + "product": { + "$ref": "#/components/schemas/Product", + "description": "Referenced product if this is a product line item" + }, + "orderDeliveryPositions": { + "description": "Delivery positions for this line item", + "type": "array", + "items": { + "$ref": "#/components/schemas/OrderDeliveryPosition" + } + }, + "downloads": { + "description": "Digital downloads associated with this line item", + "type": "array", + "items": { + "$ref": "#/components/schemas/OrderLineItemDownload" + } + }, + "parent": { + "$ref": "#/components/schemas/OrderLineItem" + }, + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrderLineItem" + } + }, + "apiAlias": { + "type": "string", + "enum": [ + "order_line_item" + ] + }, + "extensions": { + "type": "object" + }, + "translated": { + "type": "object" + } + }, + "type": "object" + }, + "Association": { + "additionalProperties": { + "$ref": "#/components/schemas/Association" + } + }, + "CmsPage": { + "description": "Added since version: 6.0.0.0", + "required": [ + "apiAlias", + "sections", + "id", + "type" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "name": { + "type": "string" + }, + "type": { + "description": "CMS page types can be `landingpage`, `page`, `product_list`, `product_detail`.", + "type": "string" + }, + "entity": { + "description": "This field will be implemented in the future.", + "type": "string" + }, + "cssClass": { + "description": "One or more CSS classes added and separated by spaces.", + "type": "string" + }, + "config": { + "properties": { + "backgroundColor": { + "type": "string" } }, - "availabilityRule": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "priority": { - "type": "integer", - "format": "int32" - }, - "invalid": { - "type": "boolean" - } + "type": "object" + }, + "previewMediaId": { + "description": "Unique identity of media to be previewed.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + }, + "sections": { + "description": "Content sections within the CMS page (layout blocks containing slots)", + "type": "array", + "items": { + "$ref": "#/components/schemas/CmsSection" + } + }, + "previewMedia": { + "$ref": "#/components/schemas/Media", + "description": "Preview image for the CMS page in admin panel and page selection" + }, + "landingPages": { + "description": "Landing pages using this CMS layout", + "type": "array", + "items": { + "$ref": "#/components/schemas/LandingPage" + } + }, + "apiAlias": { + "type": "string", + "enum": [ + "cms_page" + ] + } + }, + "type": "object" + }, + "ProductDetailResponse": { + "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", + "properties": { + "product": { + "$ref": "#/components/schemas/Product" + }, + "configurator": { + "type": "array", + "description": "List of property groups with their corresponding options and information on how to display them.", + "items": { + "$ref": "#/components/schemas/PropertyGroup" + } + } + }, + "required": [ + "product" + ] + }, + "CmsSlot": { + "description": "Added since version: 6.0.0.0", + "required": [ + "apiAlias", + "id", + "type", + "slot", + "blockId" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "cmsBlockVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "fieldConfig": { + "type": "object" + }, + "type": { + "description": "It indicates the types of content that can be defined within the slot which includes `image`, `text`, `form`, `product-listing`, `category-navigation`, `product-box`, `buy-box`, `sidebar-filter`, etc.", + "type": "string" + }, + "slot": { + "description": "Key-value pair to configure which element to be shown in which slot.", + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "config": { + "type": "object" + }, + "customFields": { + "type": [ + "object" + ], + "properties": { + "_uniqueIdentifier": { + "type": "string" } - }, - "availabilityRuleId": { - "type": "string" - }, - "prices": { - "type": "array", - "items": { + } + }, + "data": { + "type": "object", + "readOnly": true + }, + "blockId": { + "description": "Unique identity of CMS block where slot is defined.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": [ + "object" + ], + "properties": { + "config": { "type": "object", "properties": { - "shippingMethodId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "ruleId": { - "type": "string" - }, - "calculation": { - "type": "integer", - "format": "int32" - }, - "quantityStart": { - "type": "number", - "format": "float" - }, - "quantityEnd": { - "type": "number", - "format": "float" - }, - "price": { - "type": "number", - "format": "float" - }, - "calculationRuleId": { - "type": "string" + "content": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + } } } } - }, - "mediaId": { - "type": "string" - }, - "media": { - "type": "object", - "properties": { - "userId": { - "type": "string" - }, - "mimeType": { - "type": "string" + } + }, + "block": { + "$ref": "#/components/schemas/CmsBlock" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cms_slot" + ] + } + }, + "type": [ + "object" + ] + }, + "Criteria": { + "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", + "properties": { + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", + "type": "string" + }, + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "fileExtension": { - "type": "string" + { + "$ref": "#/components/schemas/EqualsFilter" }, - "fileSize": { - "type": "integer", - "format": "int32" + { + "$ref": "#/components/schemas/MultiNotFilter" }, - "title": { - "type": "string" + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } + }, + "query": { + "type": "string", + "description": "The query string to search for" + }, + "associations": { + "$ref": "#/components/schemas/Associations" + }, + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "metaDataRaw": { - "type": "string" + { + "$ref": "#/components/schemas/EqualsFilter" }, - "mediaTypeRaw": { - "type": "string" + { + "$ref": "#/components/schemas/MultiNotFilter" }, - "uploadedAt": { - "type": "string", - "format": "date-time" + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + }, + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } + }, + "fields": { + "type": "array", + "description": "Fields which should be returned in the search result.", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" + }, + "excludes": { + "$ref": "#/components/schemas/Excludes" + } + } + }, + "NoneFieldsCriteria": { + "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", + "properties": { + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", + "type": "string" + }, + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "alt": { - "type": "string" + { + "$ref": "#/components/schemas/EqualsFilter" }, - "url": { - "type": "string" + { + "$ref": "#/components/schemas/MultiNotFilter" }, - "fileName": { - "type": "string" + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } + }, + "query": { + "type": "string", + "description": "The query string to search for" + }, + "associations": { + "$ref": "#/components/schemas/Associations" + }, + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "mediaFolderId": { - "type": "string" + { + "$ref": "#/components/schemas/EqualsFilter" }, - "private": { - "type": "boolean" + { + "$ref": "#/components/schemas/MultiNotFilter" }, - "thumbnailsRo": { - "type": "string" + { + "$ref": "#/components/schemas/RangeFilter" } + ] + } + }, + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + }, + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } + }, + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" + }, + "excludes": { + "$ref": "#/components/schemas/Excludes" + } + } + }, + "Associations": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Criteria" + } + }, + "Includes": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "Excludes": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "Aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" + }, + { + "title": "AggregationEntity", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationEntity" + }, + { + "$ref": "#/components/schemas/SubAggregations" } - }, - "tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - } - } + ] + }, + { + "title": "AggregationFilter", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationFilter" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationTerms", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationRange", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationRange" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + } + ] + }, + "SubAggregations": { + "type": "object", + "properties": { + "aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" + }, + { + "$ref": "#/components/schemas/AggregationEntity" + }, + { + "$ref": "#/components/schemas/AggregationFilter" + }, + { + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/AggregationRange" + } + ] + } + } + }, + "TotalCountMode": { + "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", + "type": "string", + "default": "none", + "enum": [ + "none", + "exact", + "next-pages" + ] + }, + "Query": { + "type": "object", + "properties": { + "score": { + "type": "number" + }, + "query": { + "oneOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } - } + ] } - } + }, + "additionalProperties": true }, - "CartPriceReference": { + "Sort": { "type": "object", "properties": { - "purchaseUnit": { - "type": "number" + "field": { + "type": "string" }, - "referenceUnit": { - "type": "number" + "order": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] }, - "unitName": { + "naturalSorting": { + "type": "boolean" + }, + "type": { "type": "string" + } + }, + "required": [ + "field", + "order" + ] + }, + "Filters": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "SimpleFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "contains", + "equalsAny", + "prefix", + "suffix" + ] }, - "price": { - "type": "number" + "field": { + "type": "string" }, - "apiAlias": { + "value": { + "type": "string" + } + }, + "required": [ + "type", + "field", + "value" + ] + }, + "EqualsFilter": { + "type": "object", + "properties": { + "type": { "type": "string", "enum": [ - "cart_price_reference" + "equals" ] }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] + "field": { + "type": "string" }, - "regulationPrice": { + "value": { "oneOf": [ { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } + "type": "string" }, { - "type": "null" - } - ] - }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "oneOf": [ + "type": "number" + }, { - "type": "string", - "format": "^[0-9a-f]{32}$" + "type": "boolean" }, { "type": "null" @@ -13071,1402 +12138,1101 @@ } }, "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" + "type", + "field", + "value" ] }, - "AggregationEntity": { - "title": "AggregationEntity", + "MultiNotFilter": { "type": "object", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, "type": { - "description": "The type of aggregation", "type": "string", "enum": [ - "entity" + "multi", + "not" ] }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "operator": { + "type": "string", + "enum": [ + "and", + "or", + "nor", + "nand" + ] }, - "definition": { - "description": "The entity definition e.g \"product_manufacturer\".", - "type": "string" + "queries": { + "$ref": "#/components/schemas/Filters" } }, "required": [ - "name", "type", - "field", - "definition" + "operator", + "queries" ] }, - "AggregationFilter": { - "title": "AggregationFilter", + "RangeFilter": { "type": "object", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, "type": { - "description": "The type of aggregation", "type": "string", "enum": [ - "filter" + "range" ] }, - "filter": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Filters" + "field": { + "type": "string" + }, + "parameters": { + "type": "object", + "properties": { + "gte": { + "type": "number" + }, + "gt": { + "type": "number" + }, + "lte": { + "type": "number" + }, + "lt": { + "type": "number" + } } } }, "required": [ - "name", "type", - "filter" + "field", + "parameters" ] }, - "AggregationTerms": { - "title": "AggregationTerms", + "CookieGroup": { "type": "object", "properties": { + "isRequired": { + "type": "boolean" + }, "name": { - "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "terms" - ] + "description": { + "type": "string" }, - "field": { - "description": "The field you want to aggregate over.", + "cookie": { "type": "string" }, - "limit": { - "description": "The number of terms to return", - "type": "number" + "value": { + "type": "string" }, - "sort": { - "type": "array", - "description": "Sorting the aggregation result.", - "items": { - "$ref": "#/components/schemas/Sort" - } + "expiration": { + "type": "integer" + }, + "entries": { + "$ref": "#/components/schemas/CookieEntryCollection" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cookie_group" + ] } }, + "not": { + "allOf": [ + { + "required": [ + "cookie" + ] + }, + { + "required": [ + "entries" + ] + } + ] + }, "required": [ "name", - "type", - "field" + "isRequired", + "apiAlias" ] }, - "AggregationHistogram": { - "title": "AggregationHistogram", - "type": "object", + "ProductMedia": { + "description": "Added since version: 6.0.0.0", + "required": [ + "media", + "id", + "productId", + "mediaId" + ], "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "type": { - "description": "The type of aggregation", + "versionId": { "type": "string", - "enum": [ - "histogram" - ] + "pattern": "^[0-9a-f]{32}$" }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "productId": { + "description": "Unique identity of the product.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "interval": { - "description": "The interval of the histogram", - "type": "number" + "productVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "format": { - "description": "The format of the histogram", - "type": "string" + "mediaId": { + "description": "Unique identity of the media.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "timeZone": { - "description": "The timezone of the histogram", - "type": "string" + "position": { + "description": "The order of the images to be displayed for a product.", + "type": "integer", + "format": "int64" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "media": { + "$ref": "#/components/schemas/Media" } }, - "required": [ - "name", - "type", - "field" - ] + "type": "object" }, - "AggregationRange": { - "title": "AggregationRange", - "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", + "CartDeliveryPosition": { "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "range" - ] + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } }, - "field": { - "description": "The field you want to aggregate over.", + "identifier": { "type": "string" }, - "ranges": { - "description": "The ranges of the aggregation", - "type": "array", - "items": { - "type": "object", - "anyOf": [ - { - "type": "object", - "title": "From and to", - "properties": { - "from": { - "type": "number", - "description": "The lower bound of the range" - }, - "to": { - "type": "number", - "description": "The upper bound of the range" - } - }, - "required": [ - "from", - "to" - ] - }, - { - "type": "object", - "title": "From only", - "properties": { - "from": { - "type": "string", - "description": "The lower bound of the range" - } - }, - "required": [ - "from" - ] - }, - { - "type": "object", - "title": "To only", - "properties": { - "to": { - "type": "string", - "description": "The upper bound of the range" - } - }, - "required": [ - "to" - ] - } - ] - } + "lineItem": { + "$ref": "#/components/schemas/LineItem" + }, + "price": { + "$ref": "#/components/schemas/CalculatedPrice" } - }, - "required": [ - "name", - "type", - "field", - "ranges" - ] + } }, - "Cart": { - "type": "object", + "StateMachineState": { + "description": "Added since version: 6.0.0.0", + "required": [ + "translated", + "technicalName", + "name" + ], "properties": { - "name": { - "description": "Name of the cart - for example `guest-cart`", + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "technicalName": { + "description": "Technical name of StateMachineState.", "type": "string" }, - "token": { - "description": "Context token identifying the cart and the user session", + "name": { "type": "string" }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" + "customFields": { + "type": "object" }, - "lineItems": { - "description": "All items within the cart", - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, - "errors": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "anyOf": [ - { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartError" - } - }, - { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "code": { - "type": "number" - }, - "key": { - "type": "string" - }, - "level": { - "type": "number" - }, - "message": { - "type": "string" - }, - "messageKey": { - "type": "string" - } - }, - "required": [ - "code", - "key", - "level", - "message", - "messageKey" - ] - } - } - ] + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + }, + "ReferencePrice": { + "type": "object", + "properties": { + "purchaseUnit": { + "type": "number" }, - "deliveries": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDelivery" - } + "referenceUnit": { + "type": "number" }, - "transactions": { - "description": "A list of all payment transactions associated with the current cart.", - "type": "array", - "items": { - "type": "object", - "properties": { - "paymentMethodId": { - "type": "string" - }, - "amount": { - "$ref": "#/components/schemas/CalculatedPrice" - } - } - } + "unitName": { + "type": "string" }, - "modified": { - "type": "boolean" + "price": { + "type": "number" }, - "customerComment": { - "description": "A comment that can be added to the cart.", + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_reference" + ] + }, + "listPrice": { "oneOf": [ { - "type": "string" + "$ref": "#/components/schemas/ListPrice" }, { "type": "null" } ] }, - "affiliateCode": { - "description": "An affiliate tracking code", + "regulationPrice": { "oneOf": [ { - "type": "string" + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } }, { "type": "null" } ] }, - "campaignCode": { - "description": "A campaign tracking code", + "hasRange": { + "type": "boolean" + }, + "variantId": { "oneOf": [ { - "type": "string" + "type": "string", + "format": "^[0-9a-f]{32}$" }, { "type": "null" } ] - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart" + } + }, + "required": [ + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" + ] + }, + "OrderRouteResponse": { + "type": "object", + "properties": { + "orders": { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "elements" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" + } + } + } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } ] + }, + "paymentChangeable": { + "type": "object", + "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", + "additionalProperties": { + "type": "boolean" + } } }, "required": [ - "price", - "apiAlias" + "orders" ] }, - "CartItemsUpdate": { + "WishlistLoadRouteResponse": { "type": "object", "required": [ - "items" + "products" ], "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartLineItemUpdate" + "wishlist": { + "type": "object", + "properties": { + "customerId": { + "type": "string" + }, + "salesChannelId": { + "type": "string" + } } + }, + "products": { + "$ref": "#/components/schemas/ProductListingResult" } } }, - "CartLineItemUpdate": { + "Sitemap": { "type": "object", + "properties": { + "filename": { + "type": "string" + }, + "created": { + "type": "string", + "format": "date-time" + } + }, "required": [ - "id" + "filename", + "created" + ] + }, + "SeoUrl": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "languageId", + "foreignKey", + "routeName", + "pathInfo", + "seoPathInfo" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "salesChannelId": { + "description": "Unique identity of sales channel.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "languageId": { + "description": "Unique identity of language.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "foreignKey": { + "description": "The key that references to product or category entity ID.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "routeName": { + "description": "A destination routeName that has been registered somewhere in the app's router. For example: \\\\\"frontend.detail.page\\\\\"", + "type": "string", + "enum": [ + "frontend.navigation.page", + "frontend.landing.page", + "frontend.detail.page" + ] + }, + "pathInfo": { + "description": "Path to product URL. For example: \\\\\"/detail/bbf36734504741c79a3bbe3795b91564\\\\\"", + "type": "string" + }, + "seoPathInfo": { + "description": "Seo path to product. For example: \\\\\"Pepper-white-ground-pearl/SW10098\\\\\"", + "type": "string" + }, + "isCanonical": { + "description": "When set to true, search redirects to the main URL.", + "type": "boolean" + }, + "isModified": { + "description": "When boolean value is `true`, the seo url is changed.", + "type": "boolean" + }, + "isDeleted": { + "description": "When set to true, the URL is deleted and cannot be used any more but it is still available on table and can be restored later.", + "type": "boolean" + }, + "error": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "string" + }, + "url": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "string" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object", + "title": "SeoUrlEntity" + }, + "NavigationType": { + "type": "string", + "enum": [ + "main-navigation", + "footer-navigation", + "service-navigation" + ] + }, + "Order": { + "description": "Added since version: 6.0.0.0", + "required": [ + "documents", + "orderDate", + "stateMachineState", + "price", + "id", + "billingAddressId", + "currencyId", + "languageId", + "salesChannelId", + "orderDateTime", + "currencyFactor" ], "properties": { "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "orderNumber": { + "description": "Unique number associated with every order.", "type": "string" }, - "type": { - "$ref": "#/components/schemas/OrderLineItem/properties/type" + "billingAddressId": { + "description": "Unique identity of the billing address.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "quantity": { - "type": "integer" + "billingAddressVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "referencedId": { - "type": "string" + "primaryOrderDeliveryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "label": { - "type": "string" + "primaryOrderDeliveryVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "payload": { - "type": "object" + "primaryOrderTransactionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "stackable": { - "type": "boolean" + "primaryOrderTransactionVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "removable": { - "type": "boolean" + "currencyId": { + "description": "Unique identity of the currency.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "coverId": { - "type": "string" + "languageId": { + "description": "Unique identity of the language.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "priceDefinition": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "price": { - "type": "number" - }, - "percentage": { - "type": "number" - }, - "quantity": { - "type": "integer" - }, - "isCalculated": { - "type": "boolean" - }, - "listPrice": { - "type": "number" - }, - "taxRules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number" - }, - "percentage": { - "type": "number" - } - } - } - } - } - } - } - }, - "ContextMeasurementSystemInfo": { - "type": "object", - "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", - "properties": { - "system": { + "salesChannelId": { + "description": "Unique identity of the sales channel.", "type": "string", - "enum": [ - "metric", - "imperial" - ], - "default": "metric", - "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." + "pattern": "^[0-9a-f]{32}$" }, - "units": { - "type": "object", - "description": "Units used in the measurement system.", - "properties": { - "length": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm", - "description": "Unit of length." - }, - "weight": { - "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg", - "description": "Unit of weight." - } - } - } - } - }, - "AccountNewsletterRecipient": { - "type": "object", - "properties": { - "status": { - "$ref": "#/components/schemas/NewsletterStatus" + "orderDateTime": { + "description": "Timestamp when the order was placed.", + "type": "string", + "format": "date-time" }, - "apiAlias": { + "orderDate": { + "description": "Date when the order was placed.", "type": "string", - "enum": [ - "account_newsletter_recipient" - ] - } - }, - "required": [ - "status", - "apiAlias" - ] - }, - "ProductListingCriteria": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "readOnly": true }, - { - "type": "object", - "description": "Additional search parameters for product listings", + "price": { + "required": [ + "netPrice", + "totalPrice", + "positionPrice", + "rawTotal", + "taxStatus" + ], "properties": { - "order": { - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "type": "string" - }, - "limit": { - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "type": "integer", - "minimum": 0 - }, - "p": { - "description": "Search result page", - "type": "integer", - "default": 1 - }, - "manufacturer": { - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", - "type": "string" - }, - "min-price": { - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 - }, - "max-price": { - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 - }, - "rating": { - "description": "Filter products with a minimum average rating.", - "type": "integer" - }, - "shipping-free": { - "description": "Filters products that are marked as shipping-free.", - "type": "boolean", - "default": false - }, - "properties": { - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", - "type": "string" + "netPrice": { + "type": "number", + "format": "float" }, - "manufacturer-filter": { - "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", - "type": "boolean", - "default": true + "totalPrice": { + "type": "number", + "format": "float" }, - "price-filter": { - "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", - "type": "boolean", - "default": true + "calculatedTaxes": { + "type": "object" }, - "rating-filter": { - "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", - "type": "boolean", - "default": true + "taxRules": { + "type": "object" }, - "shipping-free-filter": { - "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", - "type": "boolean", - "default": true + "positionPrice": { + "type": "number", + "format": "float" }, - "property-filter": { - "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", - "type": "boolean", - "default": true + "rawTotal": { + "type": "number", + "format": "float" }, - "property-whitelist": { - "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", + "taxStatus": { "type": "string" - }, - "reduce-aggregations": { - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] } - } - } - ] - }, - "CartPriceQuantity": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_quantity" - ] + }, + "type": "object", + "$ref": "#/components/schemas/CalculatedPrice" }, - "isCalculated": { - "type": "boolean" + "amountTotal": { + "description": "Gross price of the order.", + "type": "number", + "format": "float", + "readOnly": true }, - "listPrice": { - "$ref": "#/components/schemas/CartListPrice" + "amountNet": { + "description": "Net price of the order.", + "type": "number", + "format": "float", + "readOnly": true }, - "price": { - "type": "number" + "positionPrice": { + "description": "Price of each line item in the cart multiplied by its quantity excluding charges like shipping cost, rules, taxes etc.", + "type": "number", + "format": "float", + "readOnly": true }, - "quantity": { - "type": "number" + "taxStatus": { + "description": "TaxStatus takes `Free`, `Net` or `Gross` as values.", + "type": "string", + "readOnly": true }, - "regulationPrice": { + "shippingCosts": { + "required": [ + "unitPrice", + "totalPrice", + "quantity" + ], "properties": { - "price": { + "unitPrice": { "type": "number", "format": "float" - } - }, - "type": "object" - }, - "taxRules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } - }, - "type": { - "type": "string" - } - }, - "required": [ - "apiAlias" - ] - }, - "ProductListingFlags": { - "type": "object", - "description": "Additional flags for product listings", - "properties": { - "no-aggregations": { - "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", - "oneOf": [ - { - "type": "string" }, - { - "type": "null" - } - ] - }, - "only-aggregations": { - "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", - "oneOf": [ - { - "type": "string" + "totalPrice": { + "type": "number", + "format": "float" }, - { - "type": "null" - } - ] - } - } - }, - "CartDelivery": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" + "quantity": { + "type": "integer", + "format": "int64" }, - "latest": { - "type": "string", - "format": "date-time" - } - } - }, - "location": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] + "calculatedTaxes": { + "type": "object" }, - "country": { - "$ref": "#/components/schemas/Country" + "taxRules": { + "type": "object" }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" + "referencePrice": { + "type": "object" }, - "state": { - "$ref": "#/components/schemas/CountryState" + "listPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + }, + "discount": { + "type": "number", + "format": "float" + }, + "percentage": { + "type": "number", + "format": "float" + } + }, + "type": "object" + }, + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + } + }, + "type": "object" } - } + }, + "type": "object" }, - "positions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDeliveryPosition" - } + "shippingTotal": { + "description": "Total shipping cost of the ordered product.", + "type": "number", + "format": "float", + "readOnly": true }, - "shippingCosts": { - "$ref": "#/components/schemas/CalculatedPrice" + "currencyFactor": { + "description": "Rate at which currency is exchanged.", + "type": "number", + "format": "float" }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "Association": { - "additionalProperties": { - "$ref": "#/components/schemas/Association" - } - }, - "ProductDetailResponse": { - "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", - "properties": { - "product": { - "$ref": "#/components/schemas/Product" + "deepLinkCode": { + "description": "It is a generated special code linked to email. It is used to access orders placed by guest customers.", + "type": "string" }, - "configurator": { - "type": "array", - "description": "List of property groups with their corresponding options and information on how to display them.", - "items": { - "$ref": "#/components/schemas/PropertyGroup" - } - } - }, - "required": [ - "product" - ] - }, - "Criteria": { - "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", - "properties": { - "page": { - "description": "Search result page", - "type": "integer" + "affiliateCode": { + "description": "An affiliate code is an identification option with which website operators can mark outgoing links.", + "type": "string" + }, + "campaignCode": { + "description": "A campaign code is the globally unique identifier for a campaign.", + "type": "string" + }, + "customerComment": { + "description": "Comments given by comments.", + "type": "string" + }, + "source": { + "description": "Source of orders either via normal order placement or subscriptions.", + "type": "string" }, - "term": { - "description": "Search term", + "taxCalculationType": { "type": "string" }, - "limit": { - "description": "Number of items per result page", - "type": "integer" + "customFields": { + "type": "object" }, - "filter": { - "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } + "createdById": { + "description": "Unique identity of createdBy.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" - } + "updatedById": { + "description": "Unique identity of updatedBy.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "query": { + "createdAt": { "type": "string", - "description": "The query string to search for" + "format": "date-time", + "readOnly": true }, - "associations": { - "$ref": "#/components/schemas/Associations" + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } + "stateMachineState": { + "$ref": "#/components/schemas/StateMachineState", + "description": "Current order state (e.g., open, in_progress, completed, cancelled)" }, - "sort": { + "primaryOrderDelivery": { + "$ref": "#/components/schemas/OrderDelivery", + "description": "Primary delivery information for the order" + }, + "primaryOrderTransaction": { + "$ref": "#/components/schemas/OrderTransaction", + "description": "Primary payment transaction for the order" + }, + "orderCustomer": { + "$ref": "#/components/schemas/OrderCustomer", + "description": "Customer information associated with the order" + }, + "currency": { + "$ref": "#/components/schemas/Currency", + "description": "Currency used for the order" + }, + "language": { + "$ref": "#/components/schemas/Language", + "description": "Language used when placing the order" + }, + "addresses": { + "description": "All addresses associated with the order (billing and shipping)", "type": "array", - "description": "Sorting in the search result.", "items": { - "$ref": "#/components/schemas/Sort" + "$ref": "#/components/schemas/OrderAddress" } }, - "aggregations": { + "billingAddress": { + "$ref": "#/components/schemas/OrderAddress", + "description": "Billing address for the order" + }, + "deliveries": { + "description": "Delivery information including shipping address and tracking", "type": "array", "items": { - "$ref": "#/components/schemas/Aggregation" + "$ref": "#/components/schemas/OrderDelivery" } }, - "fields": { + "lineItems": { + "description": "Order line items (products, discounts, fees)", "type": "array", - "description": "Fields which should be returned in the search result.", "items": { - "type": "string", - "description": "Name of a field" + "$ref": "#/components/schemas/OrderLineItem" } }, - "grouping": { + "transactions": { + "description": "Payment transactions for the order", "type": "array", - "description": "Perform groupings over certain fields", "items": { - "type": "string", - "description": "Name of a field" + "$ref": "#/components/schemas/OrderTransaction" } }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" - }, - "includes": { - "$ref": "#/components/schemas/Includes" - }, - "excludes": { - "$ref": "#/components/schemas/Excludes" - } - } - }, - "NoneFieldsCriteria": { - "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", - "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "term": { - "description": "Search term", - "type": "string" - }, - "limit": { - "description": "Number of items per result page", - "type": "integer" - }, - "filter": { + "documents": { + "description": "Generated documents (invoices, delivery notes, credit notes)", "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] + "$ref": "#/components/schemas/Document" } }, - "ids": { + "tags": { + "description": "Tags assigned to the order for organization and filtering", "type": "array", - "description": "List of ids to search for", "items": { - "type": "string" + "$ref": "#/components/schemas/Tag" } + } + }, + "type": "object" + }, + "CustomerAddress": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "customerId", + "countryId", + "firstName", + "lastName", + "city", + "street" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "query": { + "customerId": { + "description": "Unique identity of customer.", "type": "string", - "description": "The query string to search for" + "pattern": "^[0-9a-f]{32}$" }, - "associations": { - "$ref": "#/components/schemas/Associations" + "countryId": { + "description": "Unique identity of country.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } + "countryStateId": { + "description": "Unique identity of country's state.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" - } + "salutationId": { + "description": "Unique identity of salutation.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } + "firstName": { + "description": "First name of the customer.", + "type": "string" }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } + "lastName": { + "description": "Last name of the customer.", + "type": "string" }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" + "zipcode": { + "description": "Postal or zip code of customer's address.", + "type": "string" }, - "includes": { - "$ref": "#/components/schemas/Includes" + "city": { + "description": "Name of customer's city.", + "type": "string" }, - "excludes": { - "$ref": "#/components/schemas/Excludes" - } - } - }, - "Associations": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Criteria" - } - }, - "Includes": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { + "company": { + "description": "Name of customer's company.", "type": "string" - } - } - }, - "Excludes": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { + }, + "street": { + "description": "Name of customer's street.", "type": "string" - } - } - }, - "Aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" }, - { - "title": "AggregationEntity", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "department": { + "description": "Name of customer's department.", + "type": "string" }, - { - "title": "AggregationFilter", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "title": { + "description": "Titles given to customer like Dr. , Prof., etc", + "type": "string" }, - { - "title": "AggregationTerms", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "phoneNumber": { + "description": "Customer's phone number.", + "type": "string" }, - { - "title": "AggregationHistogram", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "additionalAddressLine1": { + "description": "Additional customer's address information.", + "type": "string" }, - { - "title": "AggregationRange", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationRange" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - } - ] - }, - "SubAggregations": { - "type": "object", - "properties": { - "aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/AggregationRange" - } - ] - } - } - }, - "TotalCountMode": { - "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", - "type": "string", - "default": "none", - "enum": [ - "none", - "exact", - "next-pages" - ] - }, - "Query": { - "type": "object", - "properties": { - "score": { - "type": "number" + "additionalAddressLine2": { + "description": "Additional customer's address information.", + "type": "string" }, - "query": { - "oneOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "additionalProperties": true - }, - "Sort": { - "type": "object", - "properties": { - "field": { + "hash": { + "description": "Runtime field, cannot be used as part of the criteria.", "type": "string" }, - "order": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "customFields": { + "type": "object" }, - "naturalSorting": { + "isDefaultBillingAddress": { + "description": "Added since version: 6.7.7.0. Runtime field, cannot be used as part of the criteria.", "type": "boolean" }, - "type": { - "type": "string" - } - }, - "required": [ - "field", - "order" - ] - }, - "Filters": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "SimpleFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "contains", - "equalsAny", - "prefix", - "suffix" - ] - }, - "field": { - "type": "string" + "isDefaultShippingAddress": { + "description": "Added since version: 6.7.7.0. Runtime field, cannot be used as part of the criteria.", + "type": "boolean" }, - "value": { - "type": "string" - } - }, - "required": [ - "type", - "field", - "value" - ] - }, - "EqualsFilter": { - "type": "object", - "properties": { - "type": { + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { "type": "string", - "enum": [ - "equals" - ] + "format": "date-time", + "readOnly": true }, - "field": { - "type": "string" + "country": { + "$ref": "#/components/schemas/Country" }, - "value": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "type": "null" - } - ] + "countryState": { + "$ref": "#/components/schemas/CountryState" + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, - "required": [ - "type", - "field", - "value" - ] + "type": "object" }, - "MultiNotFilter": { + "ListPrice": { "type": "object", + "description": "", "properties": { - "type": { - "type": "string", - "enum": [ - "multi", - "not" - ] + "discount": { + "type": "number" }, - "operator": { + "percentage": { + "type": "number" + }, + "price": { + "type": "number" + }, + "apiAlias": { "type": "string", "enum": [ - "and", - "or", - "nor", - "nand" + "cart_list_price" ] - }, - "queries": { - "$ref": "#/components/schemas/Filters" } }, "required": [ - "type", - "operator", - "queries" + "apiAlias" ] }, - "RangeFilter": { - "type": "object", + "OrderLineItemDownload": { + "description": "Added since version: 6.4.19.0", + "required": [ + "media", + "id", + "orderLineItemId", + "mediaId", + "position", + "accessGranted" + ], "properties": { - "type": { + "id": { "type": "string", - "enum": [ - "range" - ] - }, - "field": { - "type": "string" + "pattern": "^[0-9a-f]{32}$" }, - "parameters": { - "type": "object", - "properties": { - "gte": { - "type": "number" - }, - "gt": { - "type": "number" - }, - "lte": { - "type": "number" - }, - "lt": { - "type": "number" - } - } - } - }, - "required": [ - "type", - "field", - "parameters" - ] - }, - "CookieGroup": { - "type": "object", - "properties": { - "isRequired": { - "type": "boolean" + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "name": { - "type": "string" + "orderLineItemId": { + "description": "Unique identity of Order line item.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "description": { - "type": "string" + "orderLineItemVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "cookie": { - "type": "string" + "mediaId": { + "description": "Unique identity of media.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "value": { - "type": "string" + "position": { + "description": "The order of downloaded digital products displayed in the storefront by mentioning numerical values like 1,2,3, etc.", + "type": "integer", + "format": "int64" }, - "expiration": { - "type": "integer" + "accessGranted": { + "description": "When boolean value is `true`, the digital product is allowed to download.", + "type": "boolean" }, - "entries": { - "$ref": "#/components/schemas/CookieEntryCollection" + "customFields": { + "type": "object" }, - "apiAlias": { + "createdAt": { "type": "string", - "enum": [ - "cookie_group" - ] - } - }, - "not": { - "allOf": [ - { - "required": [ - "cookie" - ] - }, - { - "required": [ - "entries" - ] - } - ] - }, - "required": [ - "name", - "isRequired", - "apiAlias" - ] - }, - "CartDeliveryPosition": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" - } - } + "format": "date-time", + "readOnly": true }, - "identifier": { - "type": "string" + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, - "lineItem": { - "$ref": "#/components/schemas/LineItem" + "orderLineItem": { + "$ref": "#/components/schemas/OrderLineItem" }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" + "media": { + "$ref": "#/components/schemas/Media" } - } + }, + "type": "object" }, - "ReferencePrice": { + "CalculatedPrice": { "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "purchaseUnit": { + "unitPrice": { "type": "number" }, - "referenceUnit": { + "quantity": { "type": "number" }, - "unitName": { - "type": "string" + "rawTotal": { + "type": "number" }, - "price": { + "totalPrice": { "type": "number" }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_reference" + "taxStatus": { + "type": "string", + "enum": [ + "net", + "tax-free" + ] + }, + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } + }, + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } ] }, "listPrice": { "oneOf": [ { - "$ref": "#/components/schemas/ListPrice" + "$ref": "#/components/schemas/CartListPrice" }, { "type": "null" } ] }, + "positionPrice": { + "type": "number" + }, + "netPrice": { + "type": "number" + }, "regulationPrice": { "oneOf": [ { @@ -14501,102 +13267,305 @@ "type": "null" } ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } } }, "required": [ + "apiAlias", "hasRange", "regulationPrice", "listPrice", + "referencePrice", "calculatedTaxes", "totalPrice", "quantity", - "unitName" - ] - }, - "OrderRouteResponse": { - "type": "object", - "properties": { - "orders": { - "type": "object", - "allOf": [ - { - "type": "object", - "required": [ - "elements" - ], - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order" - } - } - } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - }, - "paymentChangeable": { - "type": "object", - "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", - "additionalProperties": { - "type": "boolean" - } - } - }, - "required": [ - "orders" + "unitPrice", + "positionPrice", + "netPrice", + "taxRules", + "rawTotal", + "taxStatus" ] }, - "WishlistLoadRouteResponse": { - "type": "object", + "Category": { + "description": "Added since version: 6.0.0.0", "required": [ - "products" + "apiAlias", + "breadcrumb", + "children", + "childCount", + "translated", + "type", + "id", + "name" ], "properties": { - "wishlist": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "parentId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "parentVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "afterCategoryId": { + "description": "Unique identity of the category under which the new category is to be created.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "afterCategoryVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "mediaId": { + "description": "Unique identity of media added to identify category.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "displayNestedProducts": { + "description": "Shows nested categories on a product category page.", + "type": "boolean" + }, + "breadcrumb": { + "type": "array", + "items": { + "type": "string", + "additionalProperties": false + }, + "readOnly": true + }, + "level": { + "description": "An integer value that denotes the level of nesting of a particular category located in an hierarchical category tree.", + "type": "integer", + "format": "int64", + "readOnly": true + }, + "path": { + "description": "A relative URL to the category.", + "type": "string", + "readOnly": true + }, + "childCount": { + "type": "number", + "format": "int64", + "readOnly": true + }, + "type": { + "description": "Type of categories like `page`, `folder`, `link`.", + "type": "string", + "enum": [ + "page", + "link", + "folder" + ] + }, + "productAssignmentType": { + "description": "Type of product assignment: Dynamic product group as or `product_stream` or Manual assignment as `product`.", + "type": "string" + }, + "visible": { + "description": "Displays categories on category page when true.", + "type": "boolean" + }, + "active": { + "description": "When boolean value is `true`, the category is listed for selection.", + "type": "boolean" + }, + "visibleChildCount": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string" + }, + "customFields": { + "type": "object" + }, + "linkType": { + "type": "string", + "enum": [ + "category", + "product", + "external", + "landing_page" + ] + }, + "internalLink": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "externalLink": { + "type": "string" + }, + "linkNewTab": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "metaTitle": { + "type": "string" + }, + "metaDescription": { + "type": "string" + }, + "keywords": { + "type": "string" + }, + "cmsPageId": { + "description": "Unique identity of CMS page.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "cmsPageVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "customEntityTypeId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "cmsPageIdSwitched": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "boolean", + "deprecated": true + }, + "seoUrl": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { "type": "object", + "additionalProperties": true, "properties": { - "customerId": { - "type": "string" - }, - "salesChannelId": { - "type": "string" + "breadcrumb": { + "type": "array", + "items": { + "type": "string" + } } + }, + "required": [ + "breadcrumb" + ] + }, + "parent": { + "$ref": "#/components/schemas/Category", + "description": "Unique identity of category." + }, + "children": { + "description": "Child categories within this category for hierarchical navigation", + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" } }, - "products": { - "$ref": "#/components/schemas/ProductListingResult" + "media": { + "$ref": "#/components/schemas/Media", + "description": "Category image or banner" + }, + "tags": { + "description": "Tags for organizing and filtering categories", + "type": "array", + "items": { + "$ref": "#/components/schemas/Tag" + } + }, + "cmsPage": { + "$ref": "#/components/schemas/CmsPage", + "description": "CMS page layout for the category" + }, + "seoUrls": { + "description": "SEO-friendly URLs for the category across different sales channels", + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" + } + }, + "apiAlias": { + "type": "string", + "enum": [ + "category" + ] } - } + }, + "type": "object" }, - "Sitemap": { + "CookieEntry": { "type": "object", "properties": { - "filename": { + "cookie": { "type": "string" }, - "created": { + "value": { + "type": "string" + }, + "expiration": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "apiAlias": { "type": "string", - "format": "date-time" + "enum": [ + "cookie_entry" + ] } }, "required": [ - "filename", - "created" - ] - }, - "NavigationType": { - "type": "string", - "enum": [ - "main-navigation", - "footer-navigation", - "service-navigation" + "cookie", + "hidden", + "apiAlias" ] }, - "ListPrice": { + "CartListPrice": { "type": "object", "description": "", "properties": { @@ -14620,382 +13589,1321 @@ "apiAlias" ] }, - "CalculatedPrice": { - "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", + "CustomerAddressBody": { + "description": "Added since version: 6.0.0.0", + "required": [ + "countryId", + "firstName", + "lastName", + "city", + "street" + ], "properties": { - "unitPrice": { - "type": "number" + "countryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "quantity": { - "type": "number" + "countryStateId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "rawTotal": { - "type": "number" + "salutationId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "totalPrice": { - "type": "number" + "firstName": { + "type": "string" }, - "taxStatus": { + "lastName": { + "type": "string" + }, + "zipcode": { + "type": "string" + }, + "city": { + "type": "string" + }, + "company": { + "type": "string" + }, + "street": { + "type": "string" + }, + "department": { + "type": "string" + }, + "title": { + "type": "string" + }, + "phoneNumber": { + "type": "string" + }, + "additionalAddressLine1": { + "type": "string" + }, + "additionalAddressLine2": { + "type": "string" + }, + "customFields": { + "type": "object" + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "$ref": "#/components/schemas/CountryState" + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" + } + }, + "type": "object" + }, + "MeasurementUnits": { + "type": "object", + "description": "Configuration of the measurement system", + "properties": { + "system": { "type": "string", "enum": [ - "net", - "tax-free" - ] + "metric", + "imperial" + ], + "default": "metric", + "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." }, - "calculatedTaxes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } + "units": { + "type": "object", + "description": "Units used in the measurement system.", + "properties": { + "length": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Unit of length." }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] + "weight": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." + } } + } + } + }, + "CustomerAddressRead": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true }, - "referencePrice": { + "customerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "updatedAt": { "oneOf": [ { - "$ref": "#/components/schemas/CartPriceReference" + "type": "string", + "format": "date-time" }, { "type": "null" } ] }, - "listPrice": { + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { "oneOf": [ { - "$ref": "#/components/schemas/CartListPrice" + "$ref": "#/components/schemas/CountryState" + }, + { + "type": "null" + } + ] + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" + } + }, + "required": [ + "customerId", + "createdAt", + "updatedAt", + "country", + "salutation" + ] + }, + "ProductJsonApi": { + "description": "Added since version: 6.0.0.0", + "allOf": [ + { + "$ref": "#/components/schemas/resource", + "required": [ + "options" + ], + "properties": { + "options": { + "type": "array", + "items": { + "type": "object", + "required": [ + "group", + "option", + "translated" + ], + "properties": { + "group": { + "type": "string" + }, + "option": { + "type": "string" + }, + "translated": { + "type": "object", + "properties": { + "group": { + "type": "string" + }, + "option": { + "type": "string" + } + }, + "required": [ + "group", + "option" + ] + } + } + } + } + } + }, + { + "required": [ + "id", + "taxId", + "productNumber", + "stock", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "parentId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "parentVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "manufacturerId": { + "description": "Unique identity of the manufacturer.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productManufacturerVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "unitId": { + "description": "Unique identity of the unit.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "taxId": { + "description": "Unique identity of tax.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "coverId": { + "description": "Unique identity of a ProductMedia item used as product cover.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productMediaVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "deliveryTimeId": { + "description": "Unique identity of delivery time.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "canonicalProductId": { + "description": "Unique identity of canonical product.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "canonicalProductVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "cmsPageId": { + "description": "Unique identity of CMS page.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "cmsPageVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "openGraphMediaId": { + "description": "Media used as Open Graph image for social media sharing.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productNumber": { + "description": "Unique number assigned to individual products. Define rules for automatic assignment of every product creation as per your number range.", + "type": "string" + }, + "restockTime": { + "description": "The restock time in days indicates how long it will take until a sold out item is back in stock.", + "type": "integer", + "format": "int64" + }, + "active": { + "description": "When boolean value is `true`, the products are available for selection in the storefront for purchase.", + "type": "boolean" + }, + "available": { + "description": "Indicates weather the product is available or not.", + "type": "boolean", + "readOnly": true + }, + "isCloseout": { + "description": "When the value is set to true, the product is hidden when sold out.", + "type": "boolean" + }, + "availableStock": { + "description": "Indicates the number of products still available. This value results from the stock minus the open orders.", + "type": "integer", + "format": "int64", + "readOnly": true + }, + "stock": { + "description": "Indicates the number of products available.", + "type": "integer", + "format": "int64" + }, + "displayGroup": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "string", + "readOnly": true + }, + "manufacturerNumber": { + "description": "Unique number that describes the manufacturer.", + "type": "string" + }, + "ean": { + "description": "Indicates EAN of the product.", + "type": "string" + }, + "purchaseSteps": { + "description": "Specifies the scales in which the item is to be offered. For example, a scale of 2 means that your customers can purchase 2, 4, 6 products, etc., but not 1, 3 or 5.", + "type": "integer", + "format": "int64" + }, + "maxPurchase": { + "description": "Maximum number of items that can be purchased.", + "type": "integer", + "format": "int64" + }, + "minPurchase": { + "description": "Minimum number of items that can be purchased.", + "type": "integer", + "format": "int64" + }, + "purchaseUnit": { + "description": "Quantity of the item purchased. For example, 500ml, 2kg, etc.", + "type": "number", + "format": "float" + }, + "referenceUnit": { + "description": "Price of purchased item calculated as per the reference unit. Say, you bought 500ml of milk and the price is calculated in reference to 1000ml.", + "type": "number", + "format": "float" + }, + "shippingFree": { + "description": "Indicates weather the shipping price is free or not.", + "type": "boolean" + }, + "markAsTopseller": { + "description": "Indicates weather the product is top seller or not.", + "type": "boolean" + }, + "weight": { + "description": "The weight of the product.", + "type": "number", + "format": "float" + }, + "width": { + "description": "The width of the product.", + "type": "number", + "format": "float" + }, + "height": { + "description": "The height of the product.", + "type": "number", + "format": "float" }, - { - "type": "null" - } - ] - }, - "positionPrice": { - "type": "number" - }, - "netPrice": { - "type": "number" - }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } + "length": { + "description": "The length of the product.", + "type": "number", + "format": "float" }, - { - "type": "null" - } - ] - }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "oneOf": [ - { + "releaseDate": { + "description": "The release date of a product or product model. This can be used to distinguish the exact variant of a product.", "type": "string", - "format": "^[0-9a-f]{32}$" + "format": "date-time" }, - { - "type": "null" - } - ] - }, - "apiAlias": { - "type": "string", - "enum": [ - "calculated_price" - ] - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" + "ratingAverage": { + "description": "Average of all the ratings.", + "type": "number", + "format": "float", + "readOnly": true + }, + "categoryTree": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "name": { - "type": "string" - } - } - } - } - }, - "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "referencePrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitPrice", - "positionPrice", - "netPrice", - "taxRules", - "rawTotal", - "taxStatus" - ] - }, - "CookieEntry": { - "type": "object", - "properties": { - "cookie": { - "type": "string" - }, - "value": { - "type": "string" - }, - "expiration": { - "type": "integer" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "hidden": { - "type": "boolean" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cookie_entry" - ] - } - }, - "required": [ - "cookie", - "hidden", - "apiAlias" - ] - }, - "CartListPrice": { - "type": "object", - "description": "", - "properties": { - "discount": { - "type": "number" - }, - "percentage": { - "type": "number" - }, - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_list_price" - ] - } - }, - "required": [ - "apiAlias" - ] - }, - "CustomerAddressBody": { - "description": "Added since version: 6.0.0.0", - "required": [ - "countryId", - "firstName", - "lastName", - "city", - "street" - ], - "properties": { - "countryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryStateId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "salutationId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "zipcode": { - "type": "string" - }, - "city": { - "type": "string" - }, - "company": { - "type": "string" - }, - "street": { - "type": "string" - }, - "department": { - "type": "string" - }, - "title": { - "type": "string" - }, - "phoneNumber": { - "type": "string" - }, - "additionalAddressLine1": { - "type": "string" - }, - "additionalAddressLine2": { - "type": "string" - }, - "customFields": { - "type": "object" - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "$ref": "#/components/schemas/CountryState" - }, - "salutation": { - "$ref": "#/components/schemas/Salutation" - } - }, - "type": "object" - }, - "MeasurementUnits": { - "type": "object", - "description": "Configuration of the measurement system", - "properties": { - "system": { - "type": "string", - "enum": [ - "metric", - "imperial" - ], - "default": "metric", - "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." - }, - "units": { - "type": "object", - "description": "Units used in the measurement system.", - "properties": { - "length": { + "readOnly": true + }, + "propertyIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "optionIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "streamIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "tagIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "categoryIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "childCount": { + "type": "integer", + "format": "int64", + "readOnly": true + }, + "sales": { + "description": "Frequency of the product sales.", + "type": "integer", + "format": "int64", + "readOnly": true + }, + "metaDescription": { + "type": "string" + }, + "name": { + "type": "string" + }, + "keywords": { + "type": "string" + }, + "description": { + "type": "string" + }, + "descriptionTeaser": { + "description": "Read-only, HTML-stripped excerpt of the description, derived on write.", "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm", - "description": "Unit of length." + "readOnly": true }, - "weight": { + "metaTitle": { + "type": "string" + }, + "packUnit": { + "type": "string" + }, + "packUnitPlural": { + "type": "string" + }, + "customFields": { + "type": "object" + }, + "ogTitle": { + "type": "string" + }, + "ogDescription": { + "type": "string" + }, + "type": { + "description": "The type of the product, e.g., physical or digital.", "type": "string", "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg", - "description": "Unit of weight." - } - } - } - } - }, - "CustomerAddressRead": { - "type": "object", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true - }, - "customerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true - }, - "createdAt": { - "type": "string", - "format": "date-time" - }, - "updatedAt": { - "oneOf": [ - { + "physical", + "digital" + ] + }, + "states": { + "type": "array", + "items": { + "type": "string" + }, + "readOnly": true, + "deprecated": true + }, + "calculatedPrice": { + "type": "object" + }, + "calculatedPrices": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false + } + }, + "calculatedMaxPurchase": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "integer", + "format": "int64" + }, + "calculatedCheapestPrice": { + "type": "object" + }, + "isNew": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "boolean" + }, + "sortedProperties": { + "type": "object" + }, + "measurements": { + "type": "object" + }, + "createdAt": { "type": "string", - "format": "date-time" + "format": "date-time", + "readOnly": true }, - { - "type": "null" - } - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "oneOf": [ - { - "$ref": "#/components/schemas/CountryState" + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, - { - "type": "null" + "translated": { + "type": "object" + }, + "relationships": { + "properties": { + "downloads": { + "description": "Downloadable files associated with the product (e.g., manuals, digital content)", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/downloads" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product_download" + }, + "id": { + "type": "string", + "example": "d07d50a751bc6ddf12bf3af0efee9b45" + } + } + } + } + }, + "type": "object" + }, + "parent": { + "description": "Unique identity of the product.", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/parent" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "d0e45878043844ffc41aac437e86b602" + } + } + } + }, + "type": "object" + }, + "children": { + "description": "Product variants that inherit from this parent product", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/children" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product" + }, + "id": { + "type": "string", + "example": "268184c12df027f536154d099d497b31" + } + } + } + } + }, + "type": "object" + }, + "deliveryTime": { + "description": "Estimated delivery time for the product", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/deliveryTime" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "delivery_time" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "8c888ae25a7bd42057370e31f7e01044" + } + } + } + }, + "type": "object" + }, + "tax": { + "description": "Tax configuration (rate and calculation rules)", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/tax" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "tax" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "06565e5611f23fdf8cc43e5077b92b54" + } + } + } + }, + "type": "object" + }, + "manufacturer": { + "description": "Product manufacturer or brand information", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/manufacturer" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product_manufacturer" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "c2904bca62b22443d6cf5e9d89cab204" + } + } + } + }, + "type": "object" + }, + "unit": { + "description": "Product unit of measure (e.g., piece, liter, kg)", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/unit" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "unit" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "3e34bdebd9bd5edda27e8728904a2552" + } + } + } + }, + "type": "object" + }, + "cover": { + "description": "Main product image displayed in listings and detail pages", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/cover" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product_media" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "41d0e299ca1abeb2094852da042165c7" + } + } + } + }, + "type": "object" + }, + "openGraphMedia": { + "description": "Open Graph image for social media sharing", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/openGraphMedia" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "media" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "bbda52d941a3452369a00f2880f4f358" + } + } + } + }, + "type": "object" + }, + "cmsPage": { + "description": "Custom CMS page layout for the product detail page", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/cmsPage" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "cms_page" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "7b1460918b1abb93311108f3dc021c9b" + } + } + } + }, + "type": "object" + }, + "canonicalProduct": { + "description": "Canonical product reference for variant consolidation and SEO purposes", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/canonicalProduct" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "023995a50b56c0de077323e958b2bbcd" + } + } + } + }, + "type": "object" + }, + "media": { + "description": "Product images and media gallery", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/media" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product_media" + }, + "id": { + "type": "string", + "example": "62933a2951ef01f4eafd9bdf4d3cd2f0" + } + } + } + } + }, + "type": "object" + }, + "crossSellings": { + "description": "Cross-selling configurations (related products, accessories, similar items)", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/crossSellings" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product_cross_selling" + }, + "id": { + "type": "string", + "example": "89936e14544d1b403cecef938101b6b0" + } + } + } + } + }, + "type": "object" + }, + "configuratorSettings": { + "description": "Variant configurator settings defining available options for product variants", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/configuratorSettings" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product_configurator_setting" + }, + "id": { + "type": "string", + "example": "c0827fee13725d41f1fd7e292243f5aa" + } + } + } + } + }, + "type": "object" + }, + "productReviews": { + "description": "Customer reviews and ratings for the product", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/productReviews" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product_review" + }, + "id": { + "type": "string", + "example": "01e78541ea343ed72424a5222796a4cd" + } + } + } + } + }, + "type": "object" + }, + "mainCategories": { + "description": "Primary category assignments per sales channel for SEO and navigation", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/mainCategories" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "main_category" + }, + "id": { + "type": "string", + "example": "1fb731fc4139cbb575429e28846f0c39" + } + } + } + } + }, + "type": "object" + }, + "seoUrls": { + "description": "SEO-friendly URLs for the product across different sales channels", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/seoUrls" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "seo_url" + }, + "id": { + "type": "string", + "example": "5321b5a71127b8b98cdd4b068ad56c4c" + } + } + } + } + }, + "type": "object" + }, + "options": { + "description": "Product variant options (e.g., size, color) that define different variants", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/options" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "property_group_option" + }, + "id": { + "type": "string", + "example": "93da65a9fd0004d9477aeac024e08e15" + } + } + } + } + }, + "type": "object" + }, + "properties": { + "description": "Product properties and characteristics for filtering", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/properties" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "property_group_option" + }, + "id": { + "type": "string", + "example": "74693d2fc58b46bd06410f278e39aa71" + } + } + } + } + }, + "type": "object" + }, + "categories": { + "description": "Categories this product is assigned to", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/categories" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "category" + }, + "id": { + "type": "string", + "example": "b0b5ccb4a195a07fd3eed14affb8695f" + } + } + } + } + }, + "type": "object" + }, + "streams": { + "description": "Dynamic product streams this product belongs to based on defined filters", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/streams" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product_stream" + }, + "id": { + "type": "string", + "example": "2f6f4768f1c2d7c8f1f54823723f1a70" + } + } + } + } + }, + "type": "object" + }, + "categoriesRo": { + "description": "Read-only category tree including all parent categories for optimized queries", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/categoriesRo" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "category" + }, + "id": { + "type": "string", + "example": "7f0702d3a90d965b8c9158c451f43fdb" + } + } + } + } + }, + "type": "object" + }, + "tags": { + "description": "Tags for organizing and filtering products", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/tags" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "tag" + }, + "id": { + "type": "string", + "example": "d57ac45256849d9b13e2422d91580fb9" + } + } + } + } + }, + "type": "object" + }, + "seoCategory": { + "description": "Main category used for SEO URL generation in the current sales channel", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/seoCategory" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "category" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "9354d004d12e03d35ad8292bf0bb234d" + } + } + } + }, + "type": "object" + } + }, + "type": "object" } - ] + }, + "type": "object" }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + [], + [], + { + "$ref": "#/components/schemas/DiscountLineItemPayload" } - }, - "required": [ - "customerId", - "createdAt", - "updatedAt", - "country", - "salutation" ] }, "CrossSellingElement": { @@ -15268,6 +15176,74 @@ } } }, + "CustomerGroup": { + "description": "Added since version: 6.0.0.0", + "required": [ + "translated", + "id", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "name": { + "type": "string" + }, + "displayGross": { + "description": "If boolean value is `true` gross value is displayed else, net value will be displayed to the customer.", + "type": "boolean" + }, + "customFields": { + "type": "object" + }, + "registrationActive": { + "description": "To enable the registration of partner customer group.", + "type": "boolean" + }, + "registrationTitle": { + "type": "string" + }, + "registrationIntroduction": { + "type": "string" + }, + "registrationOnlyCompanyRegistration": { + "type": "boolean" + }, + "registrationSeoMetaDescription": { + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "registrationIntroduction": { + "type": "string" + }, + "registrationSeoMetaDescription": { + "type": "string" + }, + "registrationTitle": { + "type": "string" + } + } + } + }, + "type": "object" + }, "NavigationRouteResponse": { "type": "array", "items": {