From f4f528fa4ddef84fe1ce24a2ffcfc4ff79b0ddec Mon Sep 17 00:00:00 2001 From: shopwareBot Date: Wed, 10 Jun 2026 10:27:00 +0000 Subject: [PATCH] [create-pull-request] automated change --- SwagDigitalSalesRooms-storeapi.json | 9230 ++++++++++++++------------- 1 file changed, 4620 insertions(+), 4610 deletions(-) diff --git a/SwagDigitalSalesRooms-storeapi.json b/SwagDigitalSalesRooms-storeapi.json index 3bb6c4e..192c336 100644 --- a/SwagDigitalSalesRooms-storeapi.json +++ b/SwagDigitalSalesRooms-storeapi.json @@ -7662,6 +7662,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 +8809,11 @@ "description": { "type": "string" }, + "descriptionTeaser": { + "description": "Read-only, HTML-stripped excerpt of the description, derived on write.", + "type": "string", + "readOnly": true + }, "metaTitle": { "type": "string" }, @@ -11862,1706 +11872,843 @@ }, "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" + "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" ], - "default": "metric", - "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." + "description": "Current stock level of the product." }, - "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." - } - } + "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", + "dsr-line-item-discount", + "dsr-cart-discount" + ] + }, + "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" + "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 + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] }, - "rating": { - "description": "Filter products with a minimum average rating.", - "type": "integer" + "totalPrice": { + "type": "number" }, - "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 + "unitPrice": { + "type": "number" }, - "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 + "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" }, - "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" + "minPurchase": { + "type": "number" }, - "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" - } - ] + "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" + }, + "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" + ] }, - "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" - } - ] + "width": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" + }, + "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" - } - ] - } - }, - "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" + "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" - }, - "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" - } + "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/Aggregation" - } - }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" + "type": "object" } }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" - }, - "includes": { - "$ref": "#/components/schemas/Includes" + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." }, - "excludes": { - "$ref": "#/components/schemas/Excludes" - } - } - }, - "Associations": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Criteria" - } - }, - "Includes": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." } } }, - "Excludes": { + "Price": { "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" - } - ] + "description": "Price object", + "properties": { + "currencyId": { + "description": "Unique identity of the associated currency.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - { - "title": "AggregationFilter", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "gross": { + "description": "Gross price for the associated currency.", + "type": "number" }, - { - "title": "AggregationTerms", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "net": { + "description": "Net price for the associated currency.", + "type": "number" }, - { - "title": "AggregationHistogram", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationHistogram" + "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" }, - { - "$ref": "#/components/schemas/SubAggregations" + "net": { + "description": "Discount percentage relative to the net list price.", + "type": "number" } + }, + "required": [ + "gross", + "net" ] }, - { - "title": "AggregationRange", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationRange" + "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" - } - ] - } - ] - }, - "SubAggregations": { - "type": "object", - "properties": { - "aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" + "gross": { + "description": "Gross list price for the associated currency.", + "type": "number" }, - { - "$ref": "#/components/schemas/AggregationEntity" + "net": { + "description": "Net list price for the associated currency.", + "type": "number" }, - { - "$ref": "#/components/schemas/AggregationFilter" + "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}$" }, - { - "$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" + "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": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, + "elements", + "hash", + "languageId", + "apiAlias" + ], + "example": { + "apiAlias": "cookie_groups_hash", + "elements": [ { - "$ref": "#/components/schemas/EqualsFilter" + "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/MultiNotFilter" + "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/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": { - "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" - } + "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": [ - "type", - "field", - "parameters" - ] + ], + "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", + "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" + } }, - "CookieEntryCollection": { + "ShippingMethodPageRouteResponse": { "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", + "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" - } + "max": { + "type": "integer", + "format": "int32" + }, + "unit": { + "type": "string" + } + } + }, + "translations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" }, - "required": [ - "to" - ] + "name": { + "type": "string" + }, + "description": { + "type": "string" + } } - ] - } - } - }, - "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": [ - { + "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" - ] - } - } - }, - { - "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" + "format": "date-time" + }, + "shippingDateLatest": { + "type": "string", + "format": "date-time" + }, + "stateId": { + "type": "string" } } } @@ -13827,44 +12974,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 +12998,7 @@ "listPrice": { "oneOf": [ { - "$ref": "#/components/schemas/ListPrice" + "$ref": "#/components/schemas/CartListPrice" }, { "type": "null" @@ -13932,6 +13042,7 @@ } }, "required": [ + "apiAlias", "hasRange", "regulationPrice", "listPrice", @@ -13941,667 +13052,595 @@ "unitName" ] }, - "CookieEntry": { + "AggregationEntity": { + "title": "AggregationEntity", "type": "object", "properties": { - "cookie": { - "type": "string" - }, - "value": { - "type": "string" - }, - "expiration": { - "type": "integer" - }, "name": { + "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" }, - "description": { - "type": "string" - }, - "hidden": { - "type": "boolean" - }, - "apiAlias": { + "type": { + "description": "The type of aggregation", "type": "string", "enum": [ - "cookie_entry" + "entity" ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "definition": { + "description": "The entity definition e.g \"product_manufacturer\".", + "type": "string" } }, "required": [ - "cookie", - "hidden", - "apiAlias" + "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" + ] }, - "SalesChannelContext": { + "AggregationTerms": { + "title": "AggregationTerms", "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": [ + "terms" + ] }, - "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" + }, + "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" }, - "currency": { - "$ref": "#/components/schemas/Currency" + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "histogram" + ] }, - "salesChannel": { - "$ref": "#/components/schemas/SalesChannel" + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "measurementSystem": { - "$ref": "#/components/schemas/ContextMeasurementSystemInfo" + "interval": { + "description": "The interval of the histogram", + "type": "number" }, - "taxRules": { + "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", - "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": { + "lineItems": { + "description": "All items within the cart", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + }, + "errors": { "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": { + "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": "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" - ] - }, - "NavigationType": { - "type": "string", - "enum": [ - "main-navigation", - "footer-navigation", - "service-navigation" + "price", + "apiAlias" ] }, - "WishlistLoadRouteResponse": { + "CartItemsUpdate": { "type": "object", "required": [ - "products" + "items" ], "properties": { - "wishlist": { - "type": "object", - "properties": { - "customerId": { - "type": "string" - }, - "salesChannelId": { - "type": "string" - } + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartLineItemUpdate" } - }, - "products": { - "$ref": "#/components/schemas/ProductListingResult" } } }, - "Breadcrumb": { + "CartLineItemUpdate": { "type": "object", + "required": [ + "id" + ], "properties": { - "name": { + "id": { "type": "string" }, - "categoryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, "type": { - "$ref": "#/components/schemas/Category/properties/type" + "$ref": "#/components/schemas/OrderLineItem/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" - ] - } - }, - "required": [ - "name", - "categoryId", - "type", - "translated", - "path", - "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" - }, - { - "type": "null" - } - ] - } - } - }, - "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" + "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" - ] - }, - "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" - } - ] + "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" - }, - "quantity": { - "type": "number" - }, - "quantityInformation": { + "units": { "type": "object", + "description": "Units used in the measurement system.", "properties": { - "maxPurchase": { - "type": "number" - }, - "minPurchase": { - "type": "number" + "length": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Unit of length." }, - "purchaseSteps": { - "type": "number" + "weight": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." } } + } + } + }, + "AccountNewsletterRecipient": { + "type": "object", + "properties": { + "status": { + "$ref": "#/components/schemas/NewsletterStatus" }, - "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" + "apiAlias": { + "type": "string", + "enum": [ + "account_newsletter_recipient" + ] + } + }, + "required": [ + "status", + "apiAlias" + ] + }, + "ProductListingCriteria": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" }, - "extensions": { + { "type": "object", + "description": "Additional search parameters for product listings", "properties": { - "meta": { - "type": "object", - "properties": { - "attendees": { - "type": "array", - "items": { - "type": "object", - "required": [ - "id", - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "id": { - "type": "string" - } - } - } + "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" } - } + ] } } } - }, - "required": [ - "id", - "type" ] }, "CartPriceQuantity": { @@ -14657,1537 +13696,1993 @@ "apiAlias" ] }, - "NewsletterStatus": { - "type": "string", - "enum": [ - "notSet", - "optIn", - "optOut", - "direct", - "undefined" - ], - "description": "The subscription status. Possible values are: notSet, optIn, optOut, direct, undefined." - }, - "OrderRouteResponse": { + "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" - } + "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": [ - "orders" - ] + } }, - "ProductListingResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EntitySearchResult" - }, - { - "type": "object", + "CartDelivery": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { + "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": { + "earliest": { "type": "string", - "enum": [ - "product" - ] + "format": "date-time" }, + "latest": { + "type": "string", + "format": "date-time" + } + } + }, + "location": { + "type": "object", + "properties": { "apiAlias": { "type": "string", "enum": [ - "product_listing" + "cart_delivery_shipping_location" ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "state": { + "$ref": "#/components/schemas/CountryState" } - }, - "required": [ - "elements", - "availableSortings", - "currentFilters", - "apiAlias" - ] + } + }, + "positions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDeliveryPosition" + } + }, + "shippingCosts": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" } - ] + } }, - "CookieRouteResponse": { + "Association": { + "additionalProperties": { + "$ref": "#/components/schemas/Association" + } + }, + "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" - }, - "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": [ + "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": [ { - "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" - } - }, - "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", + "ids": { "type": "array", + "description": "List of ids to search for", "items": { - "$ref": "#/components/schemas/LineItem" + "type": "string" } }, - "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" - ] + "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" } - } - ] + ] + } }, - "deliveries": { + "sort": { "type": "array", + "description": "Sorting in the search result.", "items": { - "$ref": "#/components/schemas/CartDelivery" + "$ref": "#/components/schemas/Sort" } }, - "transactions": { - "description": "A list of all payment transactions associated with the current cart.", + "aggregations": { "type": "array", "items": { - "type": "object", - "properties": { - "paymentMethodId": { - "type": "string" - }, - "amount": { - "$ref": "#/components/schemas/CalculatedPrice" - } - } + "$ref": "#/components/schemas/Aggregation" } }, - "modified": { - "type": "boolean" + "fields": { + "type": "array", + "description": "Fields which should be returned in the search result.", + "items": { + "type": "string", + "description": "Name of a field" + } }, - "customerComment": { - "description": "A comment that can be added to the cart.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } }, - "affiliateCode": { - "description": "An affiliate tracking code", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" }, - "campaignCode": { - "description": "A campaign tracking code", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] + "includes": { + "$ref": "#/components/schemas/Includes" }, - "apiAlias": { - "type": "string", - "enum": [ - "cart" - ] + "excludes": { + "$ref": "#/components/schemas/Excludes" } - }, - "required": [ - "price", - "apiAlias" - ] + } }, - "Sitemap": { + "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": { - "filename": { + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", "type": "string" }, - "created": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "filename", - "created" - ] - }, - "CrossSellingElement": { - "type": "object", - "properties": { - "crossSelling": { - "$ref": "#/components/schemas/ProductCrossSelling" + "limit": { + "description": "Number of items per result page", + "type": "integer" }, - "products": { + "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": { - "$ref": "#/components/schemas/Product" - } - }, - "total": { - "type": "integer", - "format": "int32" + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } }, - "streamId": { - "type": "string", - "format": "uuid" + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } }, - "apiAlias": { + "query": { "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" - } + "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" - } + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" } - } - } - }, - "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" + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" }, - "message": { - "type": "string" + "includes": { + "$ref": "#/components/schemas/Includes" }, - "messageKey": { - "type": "string" + "excludes": { + "$ref": "#/components/schemas/Excludes" } - }, - "required": [ - "key", - "level", - "message", - "messageKey" - ] + } }, - "ContextMeasurementSystemInfo": { + "Associations": { "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": { + "$ref": "#/components/schemas/Criteria" } }, - "CartDeliveryPosition": { + "Includes": { "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": { + "additionalProperties": { + "type": "array", + "items": { "type": "string" - }, - "lineItem": { - "$ref": "#/components/schemas/LineItem" - }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" } } }, - "CookieGroup": { + "Excludes": { "type": "object", - "properties": { - "isRequired": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "description": { + "additionalProperties": { + "type": "array", + "items": { "type": "string" + } + } + }, + "Aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" }, - "cookie": { - "type": "string" + { + "title": "AggregationEntity", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationEntity" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] }, - "value": { - "type": "string" + { + "title": "AggregationFilter", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationFilter" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] }, - "expiration": { - "type": "integer" + { + "title": "AggregationTerms", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] }, - "entries": { - "$ref": "#/components/schemas/CookieEntryCollection" + { + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] }, - "apiAlias": { - "type": "string", - "enum": [ - "cookie_group" + { + "title": "AggregationRange", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationRange" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } ] } - }, - "not": { - "allOf": [ - { - "required": [ - "cookie" - ] - }, - { - "required": [ - "entries" - ] - } - ] - }, - "required": [ - "name", - "isRequired", - "apiAlias" ] }, - "ListPrice": { + "SubAggregations": { "type": "object", - "description": "", "properties": { - "discount": { - "type": "number" - }, - "percentage": { - "type": "number" - }, - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_list_price" + "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" + } ] } - }, - "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" ] }, - "CartDelivery": { + "Query": { "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" - } - } + "score": { + "type": "number" }, - "location": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] + "query": { + "oneOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "country": { - "$ref": "#/components/schemas/Country" + { + "$ref": "#/components/schemas/EqualsFilter" }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" + { + "$ref": "#/components/schemas/MultiNotFilter" }, - "state": { - "$ref": "#/components/schemas/CountryState" + { + "$ref": "#/components/schemas/RangeFilter" } - } - }, - "positions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDeliveryPosition" - } - }, - "shippingCosts": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" + ] } - } + }, + "additionalProperties": true }, - "EntitySearchResult": { + "Sort": { "type": "object", "properties": { - "entity": { + "field": { "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." + "order": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." - } - } - }, - "SuccessResponse": { - "type": "object", - "properties": { - "success": { + "naturalSorting": { "type": "boolean" + }, + "type": { + "type": "string" } - } - }, - "ToggleBroadcastModePayload": { - "type": "object", + }, "required": [ - "active" - ], - "properties": { - "active": { - "type": "boolean", - "description": "Status if the mode is toggled to active or inactive" - } + "field", + "order" + ] + }, + "Filters": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] } }, - "ProductPageResult": { + "SimpleFilter": { "type": "object", "properties": { - "cmsPage": { - "$ref": "#/components/schemas/CmsPage" + "type": { + "type": "string", + "enum": [ + "contains", + "equalsAny", + "prefix", + "suffix" + ] }, - "product": { - "$ref": "#/components/schemas/Product" + "field": { + "type": "string" }, - "configurator": { + "value": { + "type": "string" + } + }, + "required": [ + "type", + "field", + "value" + ] + }, + "EqualsFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "equals" + ] + }, + "field": { + "type": "string" + }, + "value": { "oneOf": [ { - "$ref": "#/components/schemas/PropertyGroup" + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" }, { "type": "null" } ] - }, - "apiAlias": { - "type": "string" } - } + }, + "required": [ + "type", + "field", + "value" + ] }, - "ProductPayload": { + "MultiNotFilter": { "type": "object", - "required": [ - "productId" - ], "properties": { - "productId": { + "type": { "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "the id from the product which is used in the interaction" + "enum": [ + "multi", + "not" + ] + }, + "operator": { + "type": "string", + "enum": [ + "and", + "or", + "nor", + "nand" + ] + }, + "queries": { + "$ref": "#/components/schemas/Filters" } - } - }, - "EmptyPayload": { - "type": "object", - "properties": [] + }, + "required": [ + "type", + "operator", + "queries" + ] }, - "AttendeeRespondInvitationResponse": { + "RangeFilter": { "type": "object", "properties": { - "appointment": { + "type": { + "type": "string", + "enum": [ + "range" + ] + }, + "field": { + "type": "string" + }, + "parameters": { "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The appointment id" + "gte": { + "type": "number" }, - "accessibleFrom": { - "type": "string", - "format": "date-time", - "description": "The time the client can access the appointment" + "gt": { + "type": "number" }, - "accessibleTo": { - "type": "string", - "format": "date-time", - "description": "The time the appointment will be closed, the client can not access" + "lte": { + "type": "number" }, - "status": { - "anyOf": [ - { - "type": "string", - "enum": [ - "started", - "ended" - ] - }, - { - "type": "null" - } - ], - "description": "The appointment status" + "lt": { + "type": "number" } } + } + }, + "required": [ + "type", + "field", + "parameters" + ] + }, + "CookieGroup": { + "type": "object", + "properties": { + "isRequired": { + "type": "boolean" }, - "answer": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "cookie": { + "type": "string" + }, + "value": { + "type": "string" + }, + "expiration": { + "type": "integer" + }, + "entries": { + "$ref": "#/components/schemas/CookieEntryCollection" + }, + "apiAlias": { "type": "string", "enum": [ - "accepted", - "maybe", - "declined" - ], - "description": "The invitation status that client responded to" + "cookie_group" + ] } - } + }, + "not": { + "allOf": [ + { + "required": [ + "cookie" + ] + }, + { + "required": [ + "entries" + ] + } + ] + }, + "required": [ + "name", + "isRequired", + "apiAlias" + ] }, - "UpdateAttendeeRequestBody": { + "CartDeliveryPosition": { "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "attendeeName": { - "type": "string", - "description": "Name of the attendee" + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } }, - "videoUserId": { - "type": "string", - "description": "Id of the attendee in the video chat tool" + "identifier": { + "type": "string" + }, + "lineItem": { + "$ref": "#/components/schemas/LineItem" + }, + "price": { + "$ref": "#/components/schemas/CalculatedPrice" } } }, - "AppointmentBasicSettingResponse": { + "ReferencePrice": { "type": "object", "properties": { - "apiAlias": { - "type": "string", - "description": "The API alias of the appointment basic setting" + "purchaseUnit": { + "type": "number" }, - "mode": { - "type": "string", - "description": "The mode of the interaction", - "enum": [ - "guided", - "self" - ] + "referenceUnit": { + "type": "number" }, - "attendeeRestrictionType": { - "type": "string", - "description": "The type of attendee restriction", - "enum": [ - "open", - "customer", - "rules" - ] + "unitName": { + "type": "string" }, - "videoAudioSettings": { + "price": { + "type": "number" + }, + "apiAlias": { "type": "string", - "description": "The video and audio settings", "enum": [ - "none", - "both", - "audio-only" + "cart_price_reference" ] }, - "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 + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/ListPrice" + }, + { + "type": "null" + } + ] }, - "bookingLink": { - "description": "The booking link", + "regulationPrice": { "oneOf": [ { - "type": "string" + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } }, { "type": "null" } ] }, - "appointmentName": { - "type": "string", - "description": "The name of the appointment" + "hasRange": { + "type": "boolean" }, - "salesChannelName": { - "type": "string", - "description": "The name of the sales channel" + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] } }, - "example": { - "apiAlias": "appointment_basic_setting", - "mode": "self", - "attendeeRestrictionType": "open", - "videoAudioSettings": "none", - "canSendRequestEmail": false, - "canBookAppointment": false, - "enableWishlist": false, - "bookingLink": null, - "appointmentName": "dsr11", - "salesChannelName": "Storefront" - } + "required": [ + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" + ] }, - "AttendeeProductCollectionResponse": { + "OrderRouteResponse": { "type": "object", "properties": { - "collection": { + "orders": { "type": "object", - "anyOf": [ + "allOf": [ { "type": "object", + "required": [ + "elements" + ], "properties": { - "liked": { + "elements": { "type": "array", "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Product ids from the collection" + "$ref": "#/components/schemas/Order" } } } }, { - "type": "object", - "properties": { - "disliked": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Product ids from the collection" - } - } - } + "$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" + } } }, - "example": { - "collection": { - "liked": [ - "0015b3d83df441e490da7f6880a9c2da", - "60793d25cbab473f92c405ce0525f3ec" - ] + "required": [ + "orders" + ] + }, + "WishlistLoadRouteResponse": { + "type": "object", + "required": [ + "products" + ], + "properties": { + "wishlist": { + "type": "object", + "properties": { + "customerId": { + "type": "string" + }, + "salesChannelId": { + "type": "string" + } + } + }, + "products": { + "$ref": "#/components/schemas/ProductListingResult" } } }, - "DynamicInteractionBody": { - "oneOf": [ - { - "$ref": "#/components/schemas/EmptyInteraction" + "Sitemap": { + "type": "object", + "properties": { + "filename": { + "type": "string" }, - { - "$ref": "#/components/schemas/ProductInteraction" + "created": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "filename", + "created" + ] + }, + "NavigationType": { + "type": "string", + "enum": [ + "main-navigation", + "footer-navigation", + "service-navigation" + ] + }, + "ListPrice": { + "type": "object", + "description": "", + "properties": { + "discount": { + "type": "number" }, - { - "$ref": "#/components/schemas/DynamicPageOpenedInteraction" + "percentage": { + "type": "number" }, - { - "$ref": "#/components/schemas/DynamicPageClosedInteraction" + "price": { + "type": "number" }, - { - "$ref": "#/components/schemas/DynamicProductPageOpenedInteraction" + "apiAlias": { + "type": "string", + "enum": [ + "cart_list_price" + ] + } + }, + "required": [ + "apiAlias" + ] + }, + "CalculatedPrice": { + "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", + "properties": { + "unitPrice": { + "type": "number" }, - { - "$ref": "#/components/schemas/PageViewedInteraction" + "quantity": { + "type": "number" }, - { - "$ref": "#/components/schemas/GuideHoveredInteraction" + "rawTotal": { + "type": "number" }, - { - "$ref": "#/components/schemas/ToggleBroadcastModeInteraction" + "totalPrice": { + "type": "number" }, - { - "$ref": "#/components/schemas/ViewModeChangedInteraction" + "taxStatus": { + "type": "string", + "enum": [ + "net", + "tax-free" + ] }, - { - "$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" + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } }, - "payload": { - "type": "object", - "additionalProperties": false, - "minProperties": 0, - "maxProperties": 0 - } + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] } - } - ] - }, - "ProductInteraction": { - "allOf": [ - { - "$ref": "#/components/schemas/BaseInteraction" }, - { - "type": "object", - "required": [ - "name", - "payload" - ], - "properties": { - "name": { - "type": "string" + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" }, - "payload": { - "$ref": "#/components/schemas/ProductPayload" + { + "type": "null" } - } - } - ] - }, - "DynamicPageOpenedInteraction": { - "allOf": [ - { - "$ref": "#/components/schemas/BaseInteraction" + ] }, - { - "type": "object", - "required": [ - "name", - "payload" - ], - "properties": { - "name": { - "type": "string" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" }, - "payload": { - "$ref": "#/components/schemas/DynamicPageOpenedPayload" + { + "type": "null" } - } - } - ] - }, - "DynamicProductPageOpenedInteraction": { - "allOf": [ - { - "$ref": "#/components/schemas/BaseInteraction" + ] }, - { - "type": "object", - "required": [ - "name", - "payload" - ], - "properties": { - "name": { - "type": "string" + "positionPrice": { + "type": "number" + }, + "netPrice": { + "type": "number" + }, + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } }, - "payload": { - "$ref": "#/components/schemas/DynamicProductPageOpenedPayload" + { + "type": "null" } - } - } - ] - }, - "DynamicPageClosedInteraction": { - "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/DynamicPageClosedPayload" + { + "type": "null" } - } - } - ] - }, - "PageViewedInteraction": { - "allOf": [ - { - "$ref": "#/components/schemas/BaseInteraction" + ] }, - { - "type": "object", - "required": [ - "name", - "payload" - ], - "properties": { - "name": { - "type": "string" - }, - "payload": { - "$ref": "#/components/schemas/PageViewedPayload" + "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" + } } } } - ] - }, - "GuideHoveredInteraction": { - "allOf": [ - { - "$ref": "#/components/schemas/BaseInteraction" + }, + "required": [ + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "referencePrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitPrice", + "positionPrice", + "netPrice", + "taxRules", + "rawTotal", + "taxStatus" + ] + }, + "CookieEntry": { + "type": "object", + "properties": { + "cookie": { + "type": "string" }, - { - "type": "object", - "required": [ - "name", - "payload" - ], - "properties": { - "name": { - "type": "string" - }, - "payload": { - "$ref": "#/components/schemas/GuideHoveredPayload" - } - } + "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" ] }, - "ToggleBroadcastModeInteraction": { - "allOf": [ - { - "$ref": "#/components/schemas/BaseInteraction" + "CartListPrice": { + "type": "object", + "description": "", + "properties": { + "discount": { + "type": "number" }, - { - "type": "object", - "required": [ - "name", - "payload" - ], - "properties": { - "name": { - "type": "string" - }, - "payload": { - "$ref": "#/components/schemas/ToggleBroadcastModePayload" - } - } + "percentage": { + "type": "number" + }, + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_list_price" + ] } + }, + "required": [ + "apiAlias" ] }, - "ViewModeChangedInteraction": { - "allOf": [ - { - "$ref": "#/components/schemas/BaseInteraction" + "CustomerAddressBody": { + "description": "Added since version: 6.0.0.0", + "required": [ + "countryId", + "firstName", + "lastName", + "city", + "street" + ], + "properties": { + "countryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - { - "type": "object", - "required": [ - "name", - "payload" - ], - "properties": { - "name": { - "type": "string" - }, - "payload": { - "$ref": "#/components/schemas/ViewModeChangedPayload" - } - } + "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" }, - "ScreenSharingToggledInteraction": { - "allOf": [ - { - "$ref": "#/components/schemas/BaseInteraction" + "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", - "required": [ - "name", - "payload" - ], + "description": "Units used in the measurement system.", "properties": { - "name": { - "type": "string" + "length": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Unit of length." }, - "payload": { - "$ref": "#/components/schemas/ScreenSharingToggledPayload" + "weight": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." } } } - ] - }, - "CreateInteractionRequestBody": { - "$ref": "#/components/schemas/DynamicInteractionBody" + } }, - "PresentationStructure": { + "CustomerAddressRead": { "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" - } + "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" } } }, - "navigation": { + "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", - "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" + "taxRate": { + "type": "number", + "format": "float" }, - "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" - }, + }, + "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" @@ -17002,184 +16497,101 @@ } }, "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" + }, + "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" } }, - "AbstractDynamicPageOpenedPayload": { + "AttendeeRespondInvitationResponse": { "type": "object", - "required": [ - "pageId", - "type" - ], "properties": { - "pageId": { - "type": "string", - "pattern": "^[a-f0-9]{32}$", - "description": "The id of the current dynamic page" + "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" + } + } }, - "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,76 +16617,18 @@ } } }, - "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": { + "ViewModeChangedPayload": { "type": "object", "properties": { - "pageId": { - "oneOf": [ - { - "type": "string", - "pattern": "^[a-f0-9]{32}$" - }, - { - "type": "null" - } + "mode": { + "type": "string", + "description": "The view mode of presentation", + "enum": [ + "onlyYou", + "presentation", + "videoGrid" ], - "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" + "default": "presentation" } } }, @@ -17308,23 +16662,90 @@ } } }, - "DynamicProductPageOpenedPayload": { - "allOf": [ - { - "$ref": "#/components/schemas/AbstractDynamicPageOpenedPayload" - } - ], + "ScreenSharingToggledPayload": { + "type": "object", "required": [ - "productId" + "active" ], "properties": { - "productId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "the id from the product which is shown on the dynamic page" + "active": { + "type": "boolean", + "description": "Whether the screen sharing is active or not" + } + } + }, + "ProductPageResult": { + "type": "object", + "properties": { + "cmsPage": { + "$ref": "#/components/schemas/CmsPage" + }, + "product": { + "$ref": "#/components/schemas/Product" + }, + "configurator": { + "oneOf": [ + { + "$ref": "#/components/schemas/PropertyGroup" + }, + { + "type": "null" + } + ] + }, + "apiAlias": { + "type": "string" + } + } + }, + "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" + ] } } }, + "EmptyPayload": { + "type": "object", + "properties": [] + }, "JoinAppointmentResponse": { "type": "object", "description": "Includes all data you will need to attend to a appointment.", @@ -17480,33 +16901,40 @@ "apiAlias": "swag_digital_sales_rooms_content_appointment_struct_appointment_join_struct" } }, - "PresentationCmsPage": { - "allOf": [ - { - "$ref": "#/components/schemas/DsrPresentationCmsPage" + "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" }, - { - "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" + "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", @@ -17580,195 +17008,464 @@ "type": "boolean", "default": false }, - "ended": { - "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" }, - "startedAt": { - "anyOf": [ - { - "type": "string", - "format": "date-time" + { + "type": "object", + "required": [ + "name", + "payload" + ], + "properties": { + "name": { + "type": "string" }, - { - "type": "null" + "payload": { + "type": "object", + "additionalProperties": false, + "minProperties": 0, + "maxProperties": 0 } - ] + } + } + ] + }, + "ProductInteraction": { + "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/ProductPayload" } - ] + } + } + ] + }, + "DynamicPageOpenedInteraction": { + "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/DynamicPageOpenedPayload" } - ] + } + } + ] + }, + "DynamicProductPageOpenedInteraction": { + "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/DynamicProductPageOpenedPayload" } - ] - }, - "appointmentMode": { - "type": "string", - "enum": [ - "guided", - "self" - ] + } + } + ] + }, + "DynamicPageClosedInteraction": { + "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/DynamicPageClosedPayload" } - ] + } + } + ] + }, + "PageViewedInteraction": { + "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/PageViewedPayload" } - ] + } + } + ] + }, + "GuideHoveredInteraction": { + "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/GuideHoveredPayload" } - ] + } + } + ] + }, + "ToggleBroadcastModeInteraction": { + "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/ToggleBroadcastModePayload" } - ] - }, - "broadcastMode": { - "type": "boolean", - "default": false + } + } + ] + }, + "ViewModeChangedInteraction": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseInteraction" }, - "viewMode": { - "type": "string", - "enum": [ - "onlyYou", - "presentation", - "videoGrid" + { + "type": "object", + "required": [ + "name", + "payload" ], - "default": "presentation" - }, - "allowScreenSharing": { - "type": "boolean", - "default": false - }, - "extensions": { - "type": "array", - "default": [] + "properties": { + "name": { + "type": "string" + }, + "payload": { + "$ref": "#/components/schemas/ViewModeChangedPayload" + } + } } - } + ] }, - "ViewModeChangedPayload": { - "type": "object", - "properties": { - "mode": { - "type": "string", - "description": "The view mode of presentation", - "enum": [ - "onlyYou", - "presentation", - "videoGrid" + "ScreenSharingToggledInteraction": { + "allOf": [ + { + "$ref": "#/components/schemas/BaseInteraction" + }, + { + "type": "object", + "required": [ + "name", + "payload" ], - "default": "presentation" + "properties": { + "name": { + "type": "string" + }, + "payload": { + "$ref": "#/components/schemas/ScreenSharingToggledPayload" + } + } } - } + ] }, - "ScreenSharingToggledPayload": { + "CreateInteractionRequestBody": { + "$ref": "#/components/schemas/DynamicInteractionBody" + }, + "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 +17913,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" + }, + "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" + } + }, + "PresentationCmsPage": { + "allOf": [ + { + "$ref": "#/components/schemas/DsrPresentationCmsPage" }, - "apiAlias": "pwa_page_result" - } + { + "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" + } + } + } + ] }, - "GuideHoveredPayload": { + "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" ] } } @@ -18426,31 +18436,29 @@ "204": { "description": "No Content" }, - "CurrencyListResponse": { - "description": "Entity search result containing currencies.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Currency" - } - } - } - } - }, - "SalutationListResponse": { - "description": "Entity search result containing salutations.", + "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 +18472,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 +18525,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 +18740,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 +18765,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 +18842,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 +18880,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 +18940,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 +19136,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 +19191,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 +19224,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 +19243,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 +19279,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 +19359,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 +19429,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AppointmentBasicSettingResponse" + "$ref": "#/components/schemas/CmsPage" } } } @@ -19415,14 +19442,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 +19461,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AttendeeProductCollectionLastSeenResponse" + "$ref": "#/components/schemas/PresentationStructure" } } } @@ -19448,32 +19475,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 +19509,15 @@ } ], "responses": { - "204": { + "200": { "description": "", - "content": [] + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PresentationSlideData" + } + } + } } }, "security": [ @@ -19496,43 +19526,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 +19602,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 +19621,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AttendeeProductCollectionResponse" + "$ref": "#/components/schemas/ClientPresentationStateResponse" } } } @@ -19589,19 +19635,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 +19655,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 +19702,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 +19725,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 +19751,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AttendeeRespondInvitationResponse" + "$ref": "#/components/schemas/JoinAppointmentResponse" } } } @@ -19714,62 +19759,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 +19800,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 +19838,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 +19886,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 +19933,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 +19965,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/PresentationSlideData" + "$ref": "#/components/schemas/AttendeeProductCollectionResponse" } } } @@ -20029,29 +19979,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 +20003,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 +20025,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 +20039,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 +20110,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 +20141,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 +20173,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 +20209,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 +20242,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 +20266,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 +20299,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 +20330,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 +20392,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 +20419,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 +20450,7 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CmsPage" + "$ref": "#/components/schemas/ProductPageResult" } } } @@ -20449,7 +20458,8 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] }