diff --git a/storeapi.json b/storeapi.json index 6e3c287..5a3430b 100644 --- a/storeapi.json +++ b/storeapi.json @@ -181,54 +181,22 @@ } } }, - "204": { - "description": "No Content" - }, - "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" - } - } - } - }, - "SeoUrlListResponse": { - "description": "Entity search result containing seo urls.", + "CategoryListResponse": { + "description": "Entity search result containing categories.", "content": { "application/json": { "schema": { "allOf": [ { + "type": "object", "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/SeoUrl" + "$ref": "#/components/schemas/Category" } } - }, - "type": "object", - "required": [ - "elements" - ] + } }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -238,52 +206,26 @@ } } }, - "CountryStateListResponse": { - "description": "Entity search result containing countries.", - "content": { - "application/json": { + "ContextTokenResponse": { + "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", + "headers": { + "sw-context-token": { + "description": "Contains sw-context-token value", "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CountryState" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "type": "string" } } - } - }, - "CategoryListResponse": { - "description": "Entity search result containing categories.", + }, "content": { "application/json": { "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - } - } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" + "type": "object", + "properties": { + "redirectUrl": { + "description": "Define the URL which browser will be redirected to", + "type": "string" } - ] + } } } } @@ -313,21 +255,18 @@ } } }, - "ProductListResponse": { - "description": "Entity search result containing products", + "CountryStateListResponse": { + "description": "Entity search result containing countries.", "content": { "application/json": { "schema": { "allOf": [ { - "required": [ - "elements" - ], "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Product" + "$ref": "#/components/schemas/CountryState" } } }, @@ -354,44 +293,8 @@ } } }, - "ShippingMethodListResponse": { - "description": "Entity search result containing shipping methods.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "required": [ - "elements" - ], - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } - }, - "SalutationListResponse": { - "description": "Entity search result containing salutations.", + "LanguageListResponse": { + "description": "Entity search result containing languages.", "content": { "application/json": { "schema": { @@ -401,10 +304,13 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Salutation" + "$ref": "#/components/schemas/Language" } } }, + "required": [ + "elements" + ], "type": "object" }, { @@ -617,24 +523,50 @@ } } }, - "LanguageListResponse": { - "description": "Entity search result containing languages.", + "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" + } + } + } + }, + "ProductListResponse": { + "description": "Entity search result containing products", "content": { "application/json": { "schema": { "allOf": [ { + "required": [ + "elements" + ], "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Language" + "$ref": "#/components/schemas/Product" } } }, - "required": [ - "elements" - ], "type": "object" }, { @@ -645,57 +577,102 @@ } } }, - "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", + "SalutationListResponse": { + "description": "Entity search result containing salutations.", + "content": { + "application/json": { "schema": { - "type": "string" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Salutation" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } - }, + } + }, + "SeoUrlListResponse": { + "description": "Entity search result containing seo urls.", "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/SeoUrl" + } + } + }, + "type": "object", + "required": [ + "elements" + ] + }, + { + "$ref": "#/components/schemas/EntitySearchResult" } - } + ] } } } - } - }, - "parameters": { - "contentType": { - "name": "Content-Type", - "in": "header", - "description": "Content type of the request", - "required": true, - "schema": { - "type": "string", - "default": "application/json" - } - }, - "accept": { - "name": "Accept", - "in": "header", - "description": "Accepted response content types", - "required": true, - "schema": { - "type": "string", - "default": "application/json" - } }, - "swLanguageId": { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "ShippingMethodListResponse": { + "description": "Entity search result containing shipping methods.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "required": [ + "elements" + ], + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingMethod" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + } + }, + "parameters": { + "swLanguageId": { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" @@ -946,1391 +923,1509 @@ } }, "schemas": { - "BreadcrumbCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Breadcrumb" - } - }, - "CartPriceReference": { + "AccountNewsletterRecipient": { "type": "object", "properties": { - "purchaseUnit": { - "type": "number" - }, - "referenceUnit": { - "type": "number" - }, - "unitName": { - "type": "string" - }, - "price": { - "type": "number" + "status": { + "$ref": "#/components/schemas/NewsletterStatus" }, "apiAlias": { "type": "string", - "const": "cart_price_reference" - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] + "const": "account_newsletter_recipient" + } + }, + "required": [ + "status", + "apiAlias" + ] + }, + "AggregationEntity": { + "title": "AggregationEntity", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "const": "cart_regulation_price" - } - } - }, - { - "type": "null" - } + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "entity" ] }, - "hasRange": { - "type": "boolean" + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } - ] + "definition": { + "description": "The entity definition e.g \"product_manufacturer\".", + "type": "string" } }, "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "unitName" + "name", + "type", + "field", + "definition" ] }, - "CrossSellingElement": { + "AggregationFilter": { + "title": "AggregationFilter", "type": "object", "properties": { - "crossSelling": { - "$ref": "#/components/schemas/ProductCrossSelling" + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "products": { + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "filter" + ] + }, + "filter": { "type": "array", "items": { - "$ref": "#/components/schemas/Product" + "$ref": "#/components/schemas/Filters" } - }, - "total": { - "type": "integer", - "format": "int32" - }, - "streamId": { - "type": "string", - "format": "uuid" - }, - "apiAlias": { - "type": "string", - "const": "cross_selling_element" } }, "required": [ - "crossSelling", - "products", - "total", - "apiAlias" + "name", + "type", + "filter" ] }, - "Breadcrumb": { + "AggregationTerms": { + "title": "AggregationTerms", "type": "object", "properties": { "name": { + "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" }, - "categoryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, "type": { - "$ref": "#/components/schemas/Category/properties/type" - }, - "translated": { - "type": "object", - "additionalProperties": true, - "properties": { - "customFields": { - "type": "object" - }, - "slotConfig": { - "type": "object" - }, - "linkType": { - "$ref": "#/components/schemas/Category/properties/linkType" - }, - "internalLink": { - "type": "string" - }, - "externalLink": { - "type": "string" - }, - "linkNewTab": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "metaTitle": { - "type": "string" - }, - "metaDescription": { - "type": "string" - }, - "keywords": { - "type": "string" - } - } + "description": "The type of aggregation", + "type": "string", + "enum": [ + "terms" + ] }, - "path": { + "field": { + "description": "The field you want to aggregate over.", "type": "string" }, - "seoUrls": { + "limit": { + "description": "The number of terms to return", + "type": "number" + }, + "sort": { "type": "array", + "description": "Sorting the aggregation result.", "items": { - "$ref": "#/components/schemas/SeoUrl" + "$ref": "#/components/schemas/Sort" } - }, - "apiAlias": { - "type": "string", - "const": "breadcrumb" } }, "required": [ "name", - "categoryId", "type", - "translated", - "path", - "apiAlias" + "field" ] }, - "ProductListingFlags": { + "AggregationHistogram": { + "title": "AggregationHistogram", "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" - } - ] + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "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" - } + "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" + ] }, - "Criteria": { + "AggregationRange": { + "title": "AggregationRange", + "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", "type": "object", - "description": "Criteria to query entities.", "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "term": { - "description": "Search term", + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" }, - "limit": { - "description": "Number of items per result page", - "type": "integer" + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "range" + ] }, - "filter": { + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "ranges": { + "description": "The ranges of the aggregation", "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", "items": { + "type": "object", "anyOf": [ { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" + "type": "object", + "title": "From and to", + "properties": { + "from": { + "type": "number", + "description": "The lower bound of the range" + }, + "to": { + "type": "number", + "description": "The upper bound of the range" + } + }, + "required": [ + "from", + "to" + ] }, { - "$ref": "#/components/schemas/MultiNotFilter" + "type": "object", + "title": "From only", + "properties": { + "from": { + "type": "string", + "description": "The lower bound of the range" + } + }, + "required": [ + "from" + ] }, { - "$ref": "#/components/schemas/RangeFilter" + "type": "object", + "title": "To only", + "properties": { + "to": { + "type": "string", + "description": "The upper bound of the range" + } + }, + "required": [ + "to" + ] } ] - }, + } + } + }, + "required": [ + "name", + "type", + "field", + "ranges" + ] + }, + "AggregationMetrics": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "avg", + "count", + "max", + "min", + "stats", + "sum" + ] + }, + "field": { + "type": "string" + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "Breadcrumb": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "categoryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "type": { + "$ref": "#/components/schemas/Category/properties/type" + }, + "translated": { + "type": "object", + "additionalProperties": true, "properties": { - "type": { - "description": "To filter the results and aggregations with filter types like ==, >=, etc." + "customFields": { + "type": "object" }, - "field": { - "description": "To filter the results and aggregations by field like an property identifier." + "slotConfig": { + "type": "object" }, - "value": { - "description": "To filter the results and aggregations by value." + "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" } } }, - "ids": { + "path": { + "type": "string" + }, + "seoUrls": { "type": "array", - "description": "List of ids to search for", "items": { - "type": "string" + "$ref": "#/components/schemas/SeoUrl" } }, - "query": { + "apiAlias": { "type": "string", - "description": "The query string to search for" + "const": "breadcrumb" + } + }, + "required": [ + "name", + "categoryId", + "type", + "translated", + "path", + "apiAlias" + ] + }, + "CalculatedPrice": { + "type": "object", + "description": "Represents the calculated price of an item, including taxes and optional reference, list and regulation prices.", + "properties": { + "unitPrice": { + "type": "number" }, - "associations": { - "$ref": "#/components/schemas/Associations" + "quantity": { + "type": "number" }, - "post-filter": { + "totalPrice": { + "type": "number" + }, + "calculatedTaxes": { "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" + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "const": "cart_tax_calculated" }, - { - "$ref": "#/components/schemas/EqualsFilter" + "tax": { + "type": "number" }, - { - "$ref": "#/components/schemas/MultiNotFilter" + "taxRate": { + "type": "number" }, - { - "$ref": "#/components/schemas/RangeFilter" + "price": { + "type": "number" } - ] - }, - "properties": { - "type": { - "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." - }, - "field": { - "description": "To filter only the results but not the aggregations by field like an property identifier." }, - "value": { - "description": "To filter only the results but not the aggregations by value." - } + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] } }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" - }, - "properties": { - "field": { - "description": "Sort the search results by field like an property identifier." + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" }, - "order": { - "description": "Sort the search results of orders by ascending or descending." + { + "type": "null" + } + ] + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" }, - "naturalSorting": { - "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." + { + "type": "null" } - } + ] }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "const": "cart_regulation_price" + } + } + }, + { + "type": "null" + } + ] }, - "fields": { - "type": "array", - "description": "Fields which should be returned in the search result.", - "items": { - "type": "string", - "description": "Name of a field" - } + "apiAlias": { + "type": "string", + "const": "calculated_price" }, - "grouping": { + "taxRules": { "type": "array", - "description": "Perform groupings over certain fields", + "description": "Currently active tax rules and/or rates", "items": { - "type": "string", - "description": "Name of a field" + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } } - }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" - }, - "includes": { - "$ref": "#/components/schemas/Includes" - }, - "excludes": { - "$ref": "#/components/schemas/Excludes" } - } + }, + "required": [ + "apiAlias", + "regulationPrice", + "listPrice", + "referencePrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitPrice", + "taxRules" + ] }, - "NoneFieldsCriteria": { + "Cart": { "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "page": { - "description": "Search result page", - "type": "integer" + "name": { + "description": "Name of the cart - for example `guest-cart`", + "type": "string" }, - "term": { - "description": "Search term", + "token": { + "description": "Context token identifying the cart and the user session", "type": "string" }, - "limit": { - "description": "Number of items per result page", - "type": "integer" + "price": { + "$ref": "#/components/schemas/CartPrice" }, - "filter": { + "lineItems": { + "description": "All items within the cart", "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" + "$ref": "#/components/schemas/LineItem" + } + }, + "errors": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartError" } - ] + }, + { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "code": { + "type": "number" + }, + "key": { + "type": "string" + }, + "level": { + "type": "number" + }, + "message": { + "type": "string" + }, + "messageKey": { + "type": "string" + } + }, + "required": [ + "code", + "key", + "level", + "message", + "messageKey" + ] + } + } + ], + "properties": { + "key": { + "description": "Unique key for every message." + }, + "level": { + "description": "Types of level - Notice, warning and error. " + }, + "message": { + "description": "A persistent error passed from the shopping cart calculation processes to the user end." + } } }, - "ids": { + "deliveries": { "type": "array", - "description": "List of ids to search for", "items": { - "type": "string" + "$ref": "#/components/schemas/CartDelivery" } }, - "query": { - "type": "string", - "description": "The query string to search for" - }, - "associations": { - "$ref": "#/components/schemas/Associations" - }, - "post-filter": { + "transactions": { + "description": "A list of all payment transactions associated with the current cart.", "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" + "type": "object", + "properties": { + "paymentMethodId": { + "type": "string" }, - { - "$ref": "#/components/schemas/RangeFilter" + "amount": { + "$ref": "#/components/schemas/CalculatedPrice" } - ] + } + }, + "properties": { + "paymentMethodId": { + "description": "Unique identity of payment method." + } } }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" - } - }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } - }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" - }, - "includes": { - "$ref": "#/components/schemas/Includes" - }, - "excludes": { - "$ref": "#/components/schemas/Excludes" - } - } - }, - "Associations": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Criteria" - } - }, - "Includes": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "Excludes": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "Aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" + "modified": { + "type": "boolean", + "description": "It signifies any changes to cart." }, - { - "title": "AggregationEntity", - "allOf": [ + "customerComment": { + "description": "A comment that can be added to the cart.", + "oneOf": [ { - "$ref": "#/components/schemas/AggregationEntity" + "type": "string" }, { - "$ref": "#/components/schemas/SubAggregations" + "type": "null" } ] }, - { - "title": "AggregationFilter", - "allOf": [ + "affiliateCode": { + "description": "An affiliate tracking code", + "oneOf": [ { - "$ref": "#/components/schemas/AggregationFilter" + "type": "string" }, { - "$ref": "#/components/schemas/SubAggregations" + "type": "null" } ] }, - { - "title": "AggregationTerms", - "allOf": [ + "campaignCode": { + "description": "A campaign tracking code", + "oneOf": [ { - "$ref": "#/components/schemas/AggregationTerms" + "type": "string" }, { - "$ref": "#/components/schemas/SubAggregations" + "type": "null" } ] }, - { - "title": "AggregationHistogram", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "apiAlias": { + "type": "string", + "const": "cart" }, - { - "title": "AggregationRange", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationRange" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "id": { + "description": "Unique identity of cart." } + }, + "required": [ + "price", + "apiAlias" ] }, - "SubAggregations": { + "CartDelivery": { "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "$ref": "#/components/schemas/AggregationEntity" + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" }, - { - "$ref": "#/components/schemas/AggregationFilter" + "latest": { + "type": "string", + "format": "date-time" + } + } + }, + "location": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "const": "cart_delivery_shipping_location" }, - { - "$ref": "#/components/schemas/AggregationTerms" + "country": { + "$ref": "#/components/schemas/Country" }, - { - "$ref": "#/components/schemas/AggregationHistogram" + "address": { + "$ref": "#/components/schemas/CustomerAddress" }, - { - "$ref": "#/components/schemas/AggregationRange" + "state": { + "$ref": "#/components/schemas/CountryState" } - ] + } + }, + "positions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDeliveryPosition" + } + }, + "shippingCosts": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" } } }, - "TotalCountMode": { - "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", - "type": "string", - "default": "none", - "enum": [ - "none", - "exact", - "next-pages" - ] - }, - "Query": { + "CartDeliveryInformation": { "type": "object", "properties": { - "score": { - "type": "number" + "apiAlias": { + "type": "string", + "const": "cart_delivery_information" }, - "query": { - "oneOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" + "freeDelivery": { + "type": "boolean" + }, + "deliveryTime": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - { - "$ref": "#/components/schemas/EqualsFilter" + "min": { + "type": "integer" }, - { - "$ref": "#/components/schemas/MultiNotFilter" + "max": { + "type": "integer" }, - { - "$ref": "#/components/schemas/RangeFilter" + "unit": { + "type": "string" + }, + "apiAlias": { + "type": "string", + "const": "cart_delivery_time" } - ] - } - }, - "additionalProperties": true - }, - "Sort": { - "type": "object", - "properties": { - "field": { - "type": "string" + } }, - "order": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "height": { + "type": "integer" }, - "naturalSorting": { - "type": "boolean" + "length": { + "type": "integer" }, - "type": { - "type": "string" + "restockTime": { + "type": "integer" + }, + "stock": { + "type": "integer" + }, + "weight": { + "type": "integer" + }, + "width": { + "type": "integer" } }, "required": [ - "field", - "order" + "apiAlias" ] }, - "Filters": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" + "CartDeliveryPosition": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } } - ] + }, + "identifier": { + "type": "string" + }, + "lineItem": { + "$ref": "#/components/schemas/LineItem" + }, + "price": { + "$ref": "#/components/schemas/CalculatedPrice" + } } }, - "SimpleFilter": { + "CartError": { "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "type": { - "type": "string", + "key": { + "type": "string" + }, + "level": { + "type": "number", "enum": [ - "contains", - "equalsAny", - "prefix", - "suffix" - ] + 0, + 10, + 20 + ], + "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" }, - "field": { + "message": { "type": "string" }, - "value": { + "messageKey": { "type": "string" } }, "required": [ - "type", - "field", - "value" + "key", + "level", + "message", + "messageKey" ] }, - "EqualsFilter": { + "CartItems": { "type": "object", + "required": [ + "items" + ], "properties": { - "type": { - "type": "string", - "enum": [ - "equals" - ] - }, - "field": { - "type": "string" - }, - "value": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + }, + "properties": { + "id": { + "description": "Unique identity of cart item." }, - { - "type": "null" + "modified": { + "description": "When boolean value is `true`, the cart is said to be modified." } - ] + } } - }, - "required": [ - "type", - "field", - "value" - ] + } }, - "MultiNotFilter": { + "CartItemsUpdate": { "type": "object", + "required": [ + "items" + ], "properties": { - "type": { - "type": "string", - "enum": [ - "multi", - "not" - ] - }, - "operator": { - "type": "string", - "enum": [ - "and", - "or", - "nor", - "nand" - ] - }, - "queries": { - "$ref": "#/components/schemas/Filters" + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartLineItemUpdate" + } } - }, - "required": [ - "type", - "operator", - "queries" - ] + } }, - "RangeFilter": { + "CartLineItemUpdate": { "type": "object", + "required": [ + "id" + ], "properties": { + "id": { + "type": "string" + }, "type": { - "type": "string", - "enum": [ - "range" - ] + "$ref": "#/components/schemas/OrderLineItem/properties/type" }, - "field": { + "quantity": { + "type": "integer" + }, + "referencedId": { "type": "string" }, - "parameters": { + "label": { + "type": "string" + }, + "payload": { + "type": "object" + }, + "stackable": { + "type": "boolean" + }, + "removable": { + "type": "boolean" + }, + "coverId": { + "type": "string" + }, + "priceDefinition": { "type": "object", "properties": { - "gte": { - "type": "number" + "type": { + "type": "string" }, - "gt": { + "price": { "type": "number" }, - "lte": { + "percentage": { "type": "number" }, - "lt": { + "quantity": { + "type": "integer" + }, + "isCalculated": { + "type": "boolean" + }, + "listPrice": { "type": "number" + }, + "taxRules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number" + }, + "percentage": { + "type": "number" + } + } + } } } } - }, - "required": [ - "type", - "field", - "parameters" - ] + } }, - "AppPaymentMethod": { - "description": "Added since version: 6.4.1.0", + "CartListPrice": { + "type": "object", + "description": "", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of app's payment method." + "discount": { + "type": "number" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "percentage": { + "type": "number" }, - "updatedAt": { + "price": { + "type": "number" + }, + "apiAlias": { "type": "string", - "format": "date-time", - "readOnly": true + "const": "cart_list_price" } }, - "type": "object" - }, - "CustomerGroup": { - "description": "Added since version: 6.0.0.0", "required": [ - "translated", - "id", - "name" - ], + "apiAlias" + ] + }, + "CartPrice": { + "type": "object", + "description": "Represents the total calculated price of a cart or order, including taxes and the tax status.", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the customer's group." - }, - "name": { - "type": "string", - "description": "Name of the customer group." + "netPrice": { + "type": "number" }, - "displayGross": { - "description": "If boolean value is `true` gross value is displayed else, net value will be displayed to the customer.", - "type": "boolean" + "totalPrice": { + "type": "number" }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + "positionPrice": { + "type": "number" }, - "registrationActive": { - "description": "To enable the registration of partner customer group.", - "type": "boolean" + "rawTotal": { + "type": "number" }, - "registrationTitle": { + "taxStatus": { "type": "string", - "description": "Title defined for the customer group during registration." + "enum": [ + "gross", + "net", + "tax-free" + ] }, - "registrationIntroduction": { - "type": "string", - "description": "A brief description about the registration." + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "const": "cart_tax_calculated" + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } }, - "registrationOnlyCompanyRegistration": { - "type": "boolean", - "description": "Register as a company rather than as a private customer group." + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } }, - "registrationSeoMetaDescription": { + "apiAlias": { "type": "string", - "description": "A short description of the registration page for search results listings." - }, - "createdAt": { + "const": "cart_price" + } + }, + "required": [ + "apiAlias", + "netPrice", + "totalPrice", + "positionPrice", + "rawTotal", + "taxStatus", + "calculatedTaxes", + "taxRules" + ] + }, + "CartPriceQuantity": { + "type": "object", + "properties": { + "apiAlias": { "type": "string", - "format": "date-time", - "readOnly": true + "const": "cart_price_quantity" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "isCalculated": { + "type": "boolean" }, - "translated": { - "type": "object", + "listPrice": { + "$ref": "#/components/schemas/CartListPrice" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "regulationPrice": { "properties": { - "name": { - "type": "string" - }, - "registrationIntroduction": { - "type": "string" - }, - "registrationSeoMetaDescription": { - "type": "string" - }, - "registrationTitle": { - "type": "string" + "price": { + "type": "number", + "format": "float" } }, - "description": "Contains the translations of all translated fields." + "type": "object" + }, + "taxRules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } + }, + "type": { + "type": "string" } }, - "type": "object" + "required": [ + "apiAlias" + ] }, - "ProductMeasurements": { + "CartPriceReference": { "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" - } - } + "purchaseUnit": { + "type": "number" }, - "height": { - "type": "object", - "properties": { - "unit": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" + "referenceUnit": { + "type": "number" + }, + "unitName": { + "type": "string" + }, + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "const": "cart_price_reference" + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" }, - "value": { - "type": "number" + { + "type": "null" } - } + ] }, - "length": { - "type": "object", - "properties": { - "unit": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "const": "cart_regulation_price" + } + } }, - "value": { - "type": "number" + { + "type": "null" } - } + ] }, - "weight": { - "type": "object", - "properties": { - "unit": { + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg" + "format": "^[0-9a-f]{32}$" }, - "value": { - "type": "number" + { + "type": "null" } - } + ] } - } + }, + "required": [ + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "unitName" + ] }, - "ProductStream": { + "Category": { "description": "Added since version: 6.0.0.0", "required": [ + "apiAlias", + "breadcrumb", + "children", + "childCount", + "translated", + "type", "id", "name" ], "properties": { "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "versionId": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of product stream." + "description": "Unique identity of category's version." }, - "name": { + "parentId": { "type": "string", - "description": "Name of the Dynamic Group to be created." + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of parent category." }, - "description": { + "parentVersionId": { "type": "string", - "description": "Description of the Dynamic group to be created." + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of parent category's version." }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + "afterCategoryId": { + "description": "Unique identity of the category under which the new category is to be created.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "internal": { - "description": "When the boolean value is `true` indicating that it is for internal use only and will not appear in product stream listings.", - "type": "boolean" + "afterCategoryVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of the category's version under which the new category is to be created." }, - "displayAsGroup": { - "description": "When enabled, matching variants are grouped according to the product presentation setting. Disable to show them individually.", + "mediaId": { + "description": "Unique identity of media added to identify category.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "displayNestedProducts": { + "description": "Shows nested categories on a product category page.", "type": "boolean" }, - "createdAt": { - "type": "string", - "format": "date-time", + "breadcrumb": { + "type": "array", + "items": { + "type": "string", + "additionalProperties": false + }, + "readOnly": true, + "description": "Breadcrumbs offer the users on the website the option to quickly find their way back to the homepage or another level of the website using internal links." + }, + "level": { + "description": "An integer value that denotes the level of nesting of a particular category located in an hierarchical category tree. ", + "type": "integer", + "format": "int64", "readOnly": true }, - "updatedAt": { + "path": { + "description": "A relative URL to the category.", "type": "string", - "format": "date-time", "readOnly": true }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." - } - }, - "type": "object" - }, - "CartError": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "key": { - "type": "string" - }, - "level": { + "childCount": { "type": "number", + "format": "int64", + "readOnly": true, + "description": "Number of categories below the main category." + }, + "type": { + "description": "Type of categories like `page`, `folder`, `link`.", + "type": "string", "enum": [ - 0, - 10, - 20 - ], - "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" + "page", + "link", + "folder" + ] }, - "message": { + "productAssignmentType": { + "description": "Type of product assignment: Dynamic product group as or `product_stream` or Manual assignment as `product`.", "type": "string" }, - "messageKey": { - "type": "string" - } - }, - "required": [ - "key", - "level", - "message", - "messageKey" - ] - }, - "Document": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "documentTypeId", - "orderId", - "config", - "deepLinkCode" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of document." + "visible": { + "description": "Displays categories on category page when true.", + "type": "boolean" }, - "documentTypeId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of document type." + "active": { + "description": "When boolean value is `true`, the category is listed for selection.", + "type": "boolean" }, - "referencedDocumentId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of reference document." + "visibleChildCount": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "integer", + "format": "int64" }, - "orderId": { + "name": { "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the order." + "description": "Name of the category." }, - "documentMediaFileId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of document media file." + "customFields": { + "type": "object", + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, - "documentA11yMediaFileId": { + "linkType": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "enum": [ + "category", + "product", + "external", + "landing_page" + ], + "description": "linkType : `external`, `category`, `product`, `landing_page`." }, - "orderVersionId": { + "internalLink": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the order's version." - }, - "config": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "title": { - "type": "string" - } - }, - "required": [ - "name", - "title" - ], - "description": "Specifies detailed information about how the component is to be rendered." + "description": "When a particular category is clicked, it gets redirected to internal link." }, - "sent": { - "type": "boolean", - "description": "When `true`, the document is already sent to the customer." + "externalLink": { + "type": "string", + "description": "When a particular category is clicked, it gets redirected to external link." }, - "static": { + "linkNewTab": { "type": "boolean", - "description": "When `true`, the document is uploaded else it is generated by the system." + "description": "Category opens in a new tab of the browser." }, - "deepLinkCode": { + "description": { "type": "string", - "description": "It is a generated special code linked to email. It is used to access details of guest customer actions." + "description": "Information about the category." }, - "documentNumber": { - "type": "string" + "metaTitle": { + "type": "string", + "description": "A page title indexed by search engines and appears in search results listings." }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + "metaDescription": { + "type": "string", + "description": "A short description of the page for search results listings." }, - "createdAt": { + "keywords": { "type": "string", - "format": "date-time", - "readOnly": true + "description": "Keywords that help to search the category." }, - "updatedAt": { + "cmsPageId": { + "description": "Unique identity of CMS page.", "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "documentType": { - "$ref": "#/components/schemas/DocumentType" + "cmsPageVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of CMS page's version." }, - "order": { - "$ref": "#/components/schemas/Order" + "customEntityTypeId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "referencedDocument": { - "$ref": "#/components/schemas/Document" + "cmsPageIdSwitched": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "boolean", + "deprecated": true }, - "dependentDocuments": { + "seoUrl": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object", + "additionalProperties": true, + "properties": { + "breadcrumb": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "breadcrumb" + ], + "description": "Contains the translations of all translated fields." + }, + "parent": { + "$ref": "#/components/schemas/Category", + "description": "Unique identity of category." + }, + "children": { + "description": "Child categories within this category for hierarchical navigation", "type": "array", "items": { - "$ref": "#/components/schemas/Document" + "$ref": "#/components/schemas/Category" } }, - "documentMediaFile": { - "$ref": "#/components/schemas/Media" + "media": { + "$ref": "#/components/schemas/Media", + "description": "Category image or banner" }, - "documentA11yMediaFile": { - "$ref": "#/components/schemas/Media" + "tags": { + "description": "Tags for organizing and filtering categories", + "type": "array", + "items": { + "$ref": "#/components/schemas/Tag" + } }, - "fileType": { + "cmsPage": { + "$ref": "#/components/schemas/CmsPage", + "description": "CMS page layout for the category" + }, + "seoUrls": { + "description": "SEO-friendly URLs for the category across different sales channels", + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" + } + }, + "apiAlias": { "type": "string", - "description": "Type of file like PDF." + "const": "category" } }, "type": "object" }, - "CartDelivery": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "CmsBlock": { + "description": "Added since version: 6.0.0.0", + "required": [ + "apiAlias", + "slots", + "id", + "position", + "type", + "sectionId" + ], "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" - } - } + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "location": { - "type": "object", + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of CMS Block version." + }, + "cmsSectionVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of CMS Section version." + }, + "position": { + "description": "Order of the block indicated by number like 0, 1, 2,...", + "type": "integer", + "format": "int64" + }, + "type": { + "description": "Type of block can be 'image`, `text`, 'product-listing`, `image-two-column`, etc.", + "type": "string" + }, + "name": { + "description": "Unique name of the CMS Block.", + "type": "string" + }, + "sectionPosition": { + "description": "Position of the section. It can either be `main` or `sidebar`.", + "type": "string" + }, + "marginTop": { + "description": "Defines the margin area on the top of an element.", + "type": "string" + }, + "marginBottom": { + "description": "Defines for the margin area on the bottom of an element.", + "type": "string" + }, + "marginLeft": { + "description": "Defines for the margin area on the left of an element.", + "type": "string" + }, + "marginRight": { + "description": "Defines the margin area on the right of an element.", + "type": "string" + }, + "backgroundColor": { + "description": "Defines the background color of an element.", + "type": "string" + }, + "backgroundMediaId": { + "description": "Unique identity of background media.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "backgroundMediaMode": { + "description": "Background media mode accept values `cover`, `auto`, `contain`.", + "type": "string" + }, + "cssClass": { + "description": "One or more CSS classes added and separated by spaces.", + "type": "string" + }, + "visibility": { "properties": { - "apiAlias": { - "type": "string", - "const": "cart_delivery_shipping_location" - }, - "country": { - "$ref": "#/components/schemas/Country" + "mobile": { + "type": "boolean" }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" + "desktop": { + "type": "boolean" }, - "state": { - "$ref": "#/components/schemas/CountryState" + "tablet": { + "type": "boolean" } - } + }, + "type": "object" }, - "positions": { + "sectionId": { + "description": "Unique identity of section.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "customFields": { + "type": "object", + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "backgroundMedia": { + "$ref": "#/components/schemas/Media" + }, + "slots": { "type": "array", "items": { - "$ref": "#/components/schemas/CartDeliveryPosition" + "$ref": "#/components/schemas/CmsSlot" } }, - "shippingCosts": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" + "apiAlias": { + "type": "string", + "const": "cms_block" } - } + }, + "type": "object" }, - "ProductListingResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EntitySearchResult" + "CmsPage": { + "description": "Added since version: 6.0.0.0", + "required": [ + "apiAlias", + "sections", + "id", + "type" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of CMS page." }, - { - "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", - "const": "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", - "const": "product_listing" - } - }, - "required": [ - "elements", - "availableSortings", - "currentFilters", - "apiAlias" - ] - } - ] - }, - "ProductPurchaseLimit": { - "type": "object", - "description": "Current quantity purchase limits for a product.", - "required": [ - "productId", - "minPurchase", - "purchaseSteps", - "maxPurchase", - "stock", - "apiAlias" - ], - "properties": { - "productId": { + "versionId": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "The product ID." + "description": "Unique identity of CMS page version." }, - "minPurchase": { - "type": "integer", - "description": "Minimum quantity a customer can purchase." + "name": { + "type": "string", + "description": "Name of the CMS page." }, - "purchaseSteps": { - "type": "integer", - "description": "Step increment for quantity selection." + "type": { + "description": "CMS page types can be `landingpage`, `page`, `product_list`, `product_detail`.", + "type": "string" }, - "maxPurchase": { - "type": "integer", - "description": "Maximum quantity a customer can purchase, reflecting current stock for closeout products." + "entity": { + "description": "This field will be implemented in the future.", + "type": "string" }, - "stock": { - "type": [ - "integer", - "null" - ], - "description": "Current stock level of the product." + "cssClass": { + "description": "One or more CSS classes added and separated by spaces.", + "type": "string" }, - "apiAlias": { - "type": "string", - "const": "product_purchase_limit" - } - } - }, - "ProductPrice": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { + "config": { + "properties": { + "backgroundColor": { + "type": "string", + "description": "Background color of the CMS page." + } + }, + "type": "object" + }, + "previewMediaId": { + "description": "Unique identity of media to be previewed.", "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the product's price." + "pattern": "^[0-9a-f]{32}$" + }, + "customFields": { + "type": "object", + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, "createdAt": { "type": "string", @@ -2341,84 +2436,212 @@ "type": "string", "format": "date-time", "readOnly": true - } - }, - "type": "object" - }, - "NumberRangeSalesChannel": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of Sales channels's number rage." }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "translated": { + "type": "object", + "description": "Contains the translations of all translated fields." }, - "updatedAt": { + "sections": { + "description": "Content sections within the CMS page (layout blocks containing slots)", + "type": "array", + "items": { + "$ref": "#/components/schemas/CmsSection" + } + }, + "previewMedia": { + "$ref": "#/components/schemas/Media", + "description": "Preview image for the CMS page in admin panel and page selection" + }, + "landingPages": { + "description": "Landing pages using this CMS layout", + "type": "array", + "items": { + "$ref": "#/components/schemas/LandingPage" + } + }, + "apiAlias": { "type": "string", - "format": "date-time", - "readOnly": true + "const": "cms_page" } }, "type": "object" }, - "ShippingMethodPrice": { + "CmsSection": { "description": "Added since version: 6.0.0.0", "required": [ + "apiAlias", + "blocks", "id", - "shippingMethodId" + "position", + "type", + "pageId" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of shipping method price." + "description": "Unique identity of CMS section." }, - "shippingMethodId": { - "description": "Unique identity of shipping method.", + "cmsPageVersionId": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "ruleId": { - "description": "Unique identity of rule.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of CMS page version." }, - "calculation": { - "description": "Shipping price calculated based on quantity, price, weight or volume of items.", + "position": { + "description": "Position of occurrence of each section denoted by numerical values 0, 1, 2...", "type": "integer", "format": "int64" }, - "calculationRuleId": { - "description": "Unique identity of rule calculation.", + "type": { + "description": "Types of sections can be `sidebar` or `fullwidth`.", + "type": "string", + "enum": [ + "default", + "sidebar" + ] + }, + "name": { + "description": "Name of the CMS section defined.", + "type": "string" + }, + "sizingMode": { + "description": "Sizing mode can be `boxed` or `full_width`.", + "type": "string" + }, + "mobileBehavior": { + "description": "Hides the sidebar on mobile viewports. It can hold values such as 'mobile', 'wrap', any other string or be unset.", + "type": "string" + }, + "backgroundColor": { + "description": "Background color of CMS page.", + "type": "string" + }, + "backgroundMediaId": { + "description": "Unique identity of CMS section's background media.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "quantityStart": { - "description": "Starting range of quantity of an item.", - "type": "number", - "format": "float" + "backgroundMediaMode": { + "description": "Background media mode can be `cover`, `auto` or `contain`.", + "type": "string" }, - "quantityEnd": { - "description": "Ending range of quantity of an item.", - "type": "number", - "format": "float" + "cssClass": { + "description": "One or more CSS classes added and separated by spaces.", + "type": "string" }, - "currencyPrice": { + "pageId": { + "description": "Unique identity of page where CMS section is defined.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "visibility": { + "properties": { + "mobile": { + "type": "boolean", + "description": "When `true`, CMS layout can be viewed in mobile mode." + }, + "desktop": { + "type": "boolean", + "description": "When `true`, CMS layout can be viewed in desktop mode." + }, + "tablet": { + "type": "boolean", + "description": "When `true`, CMS layout can be viewed in tablet mode." + } + }, + "type": "object" + }, + "customFields": { + "type": "object", + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "page": { + "$ref": "#/components/schemas/CmsPage" + }, + "backgroundMedia": { + "$ref": "#/components/schemas/Media" + }, + "blocks": { "type": "array", "items": { - "$ref": "#/components/schemas/Price" - }, - "description": "Contains currency-based price." + "$ref": "#/components/schemas/CmsBlock" + } + }, + "apiAlias": { + "type": "string", + "const": "cms_section" + } + }, + "type": "object" + }, + "CmsSlot": { + "description": "Added since version: 6.0.0.0", + "required": [ + "apiAlias", + "id", + "type", + "slot", + "blockId" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of CMS slot." + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "cmsBlockVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of CMS block version." + }, + "fieldConfig": { + "type": "object", + "description": "Con info of cms slot" + }, + "type": { + "description": "It indicates the types of content that can be defined within the slot which includes `image`, `text`, `form`, `product-listing`, `category-navigation`, `product-box`, `buy-box`, `sidebar-filter`, etc.", + "type": "string" + }, + "slot": { + "description": "Key-value pair to configure which element to be shown in which slot.", + "type": "string" + }, + "locked": { + "type": "boolean", + "description": "When locked, then CMS slot config element cannot be configured." + }, + "config": { + "type": "object", + "description": "Specifies detailed information about how the component is to be rendered." }, "customFields": { "type": "object", "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, + "data": { + "type": "object", + "readOnly": true, + "description": "Each cms slot (element) has a config that has values defined in the admin. When cms loads, each Resolver class adds the resolved config data to this value." + }, + "blockId": { + "description": "Unique identity of CMS block where slot is defined.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "createdAt": { "type": "string", "format": "date-time", @@ -2428,6 +2651,20 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "translated": { + "type": "object", + "description": "Contains the translations of all translated fields." + }, + "block": { + "$ref": "#/components/schemas/CmsBlock" + }, + "apiAlias": { + "type": "string", + "const": "cms_slot" + }, + "VersionId": { + "description": "Unique identity of CMS slot's version." } }, "type": "object" @@ -2476,876 +2713,1125 @@ } } }, - "Product": { - "description": "Represents a product along with detailed information required to display a variant selection.", - "required": [ - "apiAlias", - "calculatedPrice", - "calculatedPrices", - "seoCategory", - "type", - "translated", - "id", - "taxId", - "productNumber", - "stock", - "name" - ], + "CookieEntry": { + "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the product." + "cookie": { + "type": "string" }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the product's version." + "value": { + "type": "string" }, - "parentId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the parent product." + "expiration": { + "type": "integer" }, - "parentVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the parent product's version." + "name": { + "type": "string" }, - "manufacturerId": { - "description": "Unique identity of the manufacturer.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "description": { + "type": "string" }, - "productManufacturerVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the product's manufacturer version." + "hidden": { + "type": "boolean" }, - "unitId": { - "description": "Unique identity of the unit.", + "apiAlias": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "const": "cookie_entry" + } + }, + "required": [ + "cookie", + "hidden", + "apiAlias" + ] + }, + "CookieEntryCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CookieEntry" + } + }, + "CookieGroup": { + "type": "object", + "properties": { + "isRequired": { + "type": "boolean" }, - "taxId": { - "description": "Unique identifier of tax.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "name": { + "type": "string" }, - "coverId": { - "description": "Unique identifier of a ProductMedia item used as product cover.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "description": { + "type": "string" }, - "productMediaVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identifier of product's media version." + "cookie": { + "type": "string" }, - "deliveryTimeId": { - "description": "Unique identifier of delivery time.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "value": { + "type": "string" }, - "canonicalProductId": { - "description": "Unique identifier of canonical product.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "expiration": { + "type": "integer" }, - "canonicalProductVersionId": { + "entries": { + "$ref": "#/components/schemas/CookieEntryCollection" + }, + "apiAlias": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "const": "cookie_group" + } + }, + "not": { + "allOf": [ + { + "properties": { + "cookie": { + "type": "string" + } + }, + "required": [ + "cookie" + ] + }, + { + "properties": { + "entries": { + "$ref": "#/components/schemas/CookieEntryCollection" + } + }, + "required": [ + "entries" + ] + } + ] + }, + "required": [ + "name", + "isRequired", + "apiAlias" + ] + }, + "CookieRouteResponse": { + "type": "object", + "description": "Response containing cookie groups and their configuration hash.", + "properties": { + "apiAlias": { + "type": "string", + "const": "cookie_groups_hash" }, - "cmsPageId": { - "description": "Unique identifier of CMS page.", + "elements": { + "type": "array", + "description": "Collection of cookie groups", + "items": { + "$ref": "#/components/schemas/CookieGroup" + } + }, + "hash": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", + "example": "f86b6a872cb83dbd22d838ceda1aa3d4" }, - "cmsPageVersionId": { + "languageId": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identifier of CMS page's version." + "description": "The language ID for which the cookie configuration was generated. Used to store hashes per language.", + "example": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" + } + }, + "required": [ + "elements", + "hash", + "languageId", + "apiAlias" + ], + "example": { + "apiAlias": "cookie_groups_hash", + "elements": [ + { + "isRequired": true, + "description": "Cookies required for this shop to function:", + "name": "Technically required", + "entries": [ + { + "name": "Session", + "hidden": false, + "cookie": "session-", + "apiAlias": "cookie_entry" + }, + { + "name": "Timezone", + "hidden": false, + "cookie": "timezone", + "apiAlias": "cookie_entry" + }, + { + "value": "1", + "expiration": 30, + "name": "Cookie preferences", + "hidden": true, + "cookie": "cookie-preference", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "description": "Cookies used for statistics and shop performance metrics.", + "name": "Statistics", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "Google Analytics", + "hidden": false, + "cookie": "google-analytics-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "description": "Allows Google to collect personal data for online advertising and marketing.", + "name": "Marketing", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "Google Advertising", + "hidden": false, + "cookie": "google-ads-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "name": "Comfort features", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "YouTube video", + "hidden": false, + "cookie": "youtube-video", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + } + ], + "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", + "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" + } + }, + "Country": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "name", + "addressFormat" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of the country." }, - "openGraphMediaId": { - "description": "Media used as Open Graph image for social media sharing.", + "name": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "description": "Name of the country." }, - "productNumber": { - "description": "Unique number assigned to individual products. Define rules for automatic assignment of every product creation as per your number range.", + "iso": { + "description": "Internationally recognized two-letter country codes. For example, DE, IN, NO, etc.", "type": "string" }, - "restockTime": { - "description": "The restock time in days indicates how long it will take until a sold out item is back in stock.", + "position": { + "description": "Numerical value that indicates the order in which the defined countries must be displayed in the frontend.", "type": "integer", "format": "int64" }, "active": { - "description": "When boolean value is `true`, the products are available for selection in the storefront for purchase.", + "description": "When boolean value is `true`, the country is available for selection in the storefront.", "type": "boolean" }, - "available": { - "description": "Indicates weather the product is available or not.", - "type": "boolean", - "readOnly": true + "shippingAvailable": { + "description": "The shipping availability for a country is enabled when boolean value is `true`.", + "type": "boolean" }, - "isCloseout": { - "description": "When the value is set to true, the product is hidden when sold out.", + "iso3": { + "description": "Internationally recognized three-letter country codes. For example, DEU, IND, NOR, etc.", + "type": "string" + }, + "displayStateInRegistration": { + "description": "The country's state is displayed in the address when boolean value is `true`.", "type": "boolean" }, - "availableStock": { - "description": "Indicates the number of products still available. This value results from the stock minus the open orders.", - "type": "integer", - "format": "int64", - "readOnly": true + "forceStateInRegistration": { + "description": "State details in the address are force included when boolean value is `true`.", + "type": "boolean" }, - "stock": { - "description": "Indicate the number of product/s currently in stock. As soon as the order status of an order is set to completed, the stock is reduced.", - "type": "integer", - "format": "int64" + "checkVatIdPattern": { + "description": "Verify if VAT ID is valid or not.", + "type": "boolean" }, - "displayGroup": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "string", - "readOnly": true + "vatIdRequired": { + "description": "Set to true, if VAT ID is to be made mandatory.", + "type": "boolean" }, - "manufacturerNumber": { - "description": "Unique number that describes the manufacturer.", + "vatIdPattern": { + "description": "Unique VAT ID with country code and numbers, for example - GB999 9999", "type": "string" }, - "ean": { - "description": "Indicates EAN of the product.", - "type": "string" + "customFields": { + "type": "object", + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, - "purchaseSteps": { - "description": "Specifies the scales in which the item is to be offered. For example, a scale of 2 means that your customers can purchase 2, 4, 6 products, etc., but not 1, 3 or 5.", - "type": "integer", - "format": "int64" - }, - "maxPurchase": { - "description": "Maximum number of items that can be purchased.", - "type": "integer", - "format": "int64" - }, - "minPurchase": { - "description": "Minimum number of items that can be purchased.", - "type": "integer", - "format": "int64" + "customerTax": { + "required": [ + "enabled", + "currencyId", + "amount" + ], + "properties": { + "enabled": { + "type": "boolean", + "description": "The boolean value is `true` if the tax for the customer apply." + }, + "currencyId": { + "type": "string", + "description": "Unique identity of currency." + }, + "amount": { + "type": "number", + "format": "float", + "description": "Sum of money to be paid by the customer." + } + }, + "type": "object" }, - "purchaseUnit": { - "description": "Quantity of the item purchased. For example, 500ml, 2kg, etc.", - "type": "number", - "format": "float" + "companyTax": { + "required": [ + "enabled", + "currencyId", + "amount" + ], + "properties": { + "enabled": { + "type": "boolean", + "description": "The boolean value is `true`, if the tax for the company apply." + }, + "currencyId": { + "type": "string", + "description": "Unique identity of currency." + }, + "amount": { + "type": "number", + "format": "float", + "description": "Sum of money to be paid by the company." + } + }, + "type": "object" }, - "referenceUnit": { - "description": "Price of purchased item calculated as per the reference unit. Say, you bought 500ml of milk and the price is calculated in reference to 1000ml. ", - "type": "number", - "format": "float" + "postalCodeRequired": { + "description": "The postal code is made mandatory specification in the address, when boolean value is `true`.", + "type": "boolean" }, - "shippingFree": { - "description": "Indicates weather the shipping price is free or not.", + "checkPostalCodePattern": { + "description": "Verify for valid postal code pattern.", "type": "boolean" }, - "markAsTopseller": { - "description": "Indicates weather the product is top seller or not.", + "checkAdvancedPostalCodePattern": { + "description": "Verify for advanced postal code pattern.", "type": "boolean" }, - "weight": { - "description": "The weight of the product.", - "type": "number", - "format": "float" + "advancedPostalCodePattern": { + "description": "Wildcard formatted zip codes to allow easy searching in the frontend based on initial constants, for example - 24****, 1856**.", + "type": "string" }, - "width": { - "description": "The width of the product.", - "type": "number", - "format": "float" + "addressFormat": { + "type": "object", + "description": "The address format with recipient's name, building number, street name, city, state and ZIP code on different lines as required." }, - "height": { - "description": "The height of the product.", - "type": "number", - "format": "float" + "defaultPostalCodePattern": { + "description": "Default pattern of postal or zip code.", + "type": "string" }, - "length": { - "description": "The length of the product.", - "type": "number", - "format": "float" + "isEu": { + "type": "boolean" }, - "releaseDate": { - "description": "The release date of a product or product model. This can be used to distinguish the exact variant of a product.", + "createdAt": { "type": "string", - "format": "date-time" - }, - "ratingAverage": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "number", - "format": "float", + "format": "date-time", "readOnly": true }, - "categoryTree": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true, - "description": "Runtime field, cannot be used as part of the criteria." - }, - "propertyIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true, - "description": "Runtime field, cannot be used as part of the criteria." - }, - "optionIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true, - "description": "Runtime field, cannot be used as part of the criteria." - }, - "streamIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true, - "description": "Runtime field, cannot be used as part of the criteria." - }, - "tagIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, + "updatedAt": { + "type": "string", + "format": "date-time", "readOnly": true }, - "categoryIds": { + "translated": { + "type": "object", + "description": "Contains the translations of all translated fields." + }, + "states": { + "description": "States/provinces/regions within the country", "type": "array", "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true, - "description": "Runtime field, cannot be used as part of the criteria." - }, - "childCount": { - "type": "integer", - "format": "int64", - "readOnly": true, - "description": "Runtime field, cannot be used as part of the criteria." - }, - "sales": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "integer", - "format": "int64", - "readOnly": true - }, - "metaDescription": { - "type": "string", - "description": "A short description of the product for search results listings." + "$ref": "#/components/schemas/CountryState" + } }, - "name": { - "type": "string", - "description": "Name of the product." + "taxFree": { + "description": "When tax doesn't apply for a particular country, then the boolean value is `true`." }, - "keywords": { + "companyTaxFree": { + "description": "When a registered company is free from paying taxes, then the boolean value is `true`." + } + }, + "type": "object" + }, + "CountryState": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "countryId", + "shortCode", + "name" + ], + "properties": { + "id": { "type": "string", - "description": "Keywords that give additional information about the Product." + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of the country's state." }, - "description": { + "countryId": { + "description": "Unique identity of the country.", "type": "string", - "description": "Description of the product." + "pattern": "^[0-9a-f]{32}$" }, - "descriptionTeaser": { - "description": "Read-only, HTML-stripped excerpt of the description, derived on write.", - "type": "string", - "readOnly": true + "shortCode": { + "description": "An abbreviation for the country's state.", + "type": "string" }, - "metaTitle": { + "name": { "type": "string", - "description": "A page title indexed by search engines and appears in search results listings." + "description": "Name of the country's state." }, - "packUnit": { - "type": "string", - "description": "Type of packing. For example, bottle, tin, crate, etc." + "position": { + "description": "Numerical value that indicates the order in which the defined states must be displayed in the frontend.", + "type": "integer", + "format": "int64" }, - "packUnitPlural": { - "type": "string", - "description": "Type of packing in plural. For example, bottles, tins, crates, etc." + "active": { + "description": "When boolean value is `true`, the country's state is available for selection in the storefront.", + "type": "boolean" }, "customFields": { "type": "object", "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, - "ogTitle": { - "type": "string" - }, - "ogDescription": { - "type": "string" + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, - "type": { - "description": "The type of the product, e.g., physical or digital.", + "updatedAt": { "type": "string", - "enum": [ - "physical", - "digital" - ] - }, - "states": { - "type": "array", - "items": { - "type": "string" - }, - "readOnly": true, - "deprecated": true, - "description": "Internal field." + "format": "date-time", + "readOnly": true }, - "calculatedPrice": { + "translated": { "type": "object", - "$ref": "#/components/schemas/CalculatedPrice", - "description": "Runtime field, cannot be used as part of the criteria." + "description": "Contains the translations of all translated fields." + } + }, + "type": "object" + }, + "Criteria": { + "type": "object", + "description": "Criteria to query entities.", + "properties": { + "page": { + "description": "Search result page", + "type": "integer" }, - "calculatedPrices": { + "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": { - "type": "object", - "additionalProperties": false, - "allOf": [ + "anyOf": [ { - "$ref": "#/components/schemas/CalculatedPrice" + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } ] }, - "description": "Runtime field, cannot be used as part of the criteria." - }, - "calculatedMaxPurchase": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "integer", - "format": "int64" - }, - "calculatedCheapestPrice": { - "type": "object", "properties": { - "unitPrice": { - "type": "number" - }, - "quantity": { - "type": "number" - }, - "totalPrice": { - "type": "number" - }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/ReferencePrice" - }, - { - "type": "null" - } - ] - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/ListPrice" - }, - { - "type": "null" - } - ] - }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - } - }, - "required": [ - "price" - ] - }, - { - "type": "null" - } - ] - }, - "hasRange": { - "type": "boolean" + "type": { + "description": "To filter the results and aggregations with filter types like ==, >=, etc." }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "" - }, - { - "type": "null" - } - ] + "field": { + "description": "To filter the results and aggregations by field like an property identifier." }, - "apiAlias": { - "type": "string", - "const": "calculated_cheapest_price" + "value": { + "description": "To filter the results and aggregations by value." } - }, - "description": "Runtime field, cannot be used as part of the criteria." - }, - "isNew": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean" - }, - "sortedProperties": { - "type": "object" - }, - "measurements": { - "type": "object", - "$ref": "#/components/schemas/ProductMeasurements" + } }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } }, - "updatedAt": { + "query": { "type": "string", - "format": "date-time", - "readOnly": true + "description": "The query string to search for" }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." + "associations": { + "$ref": "#/components/schemas/Associations" }, - "downloads": { - "description": "Downloadable files associated with the product (e.g., manuals, digital content)", + "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": { - "$ref": "#/components/schemas/ProductDownload" + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + }, + "properties": { + "type": { + "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." + }, + "field": { + "description": "To filter only the results but not the aggregations by field like an property identifier." + }, + "value": { + "description": "To filter only the results but not the aggregations by value." + } } }, - "parent": { - "$ref": "#/components/schemas/Product", - "description": "Unique identity of the product." - }, - "children": { - "description": "Product variants that inherit from this parent product", + "sort": { "type": "array", + "description": "Sorting in the search result.", "items": { - "$ref": "#/components/schemas/Product" + "$ref": "#/components/schemas/Sort" + }, + "properties": { + "field": { + "description": "Sort the search results by field like an property identifier." + }, + "order": { + "description": "Sort the search results of orders by ascending or descending." + }, + "naturalSorting": { + "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." + } } }, - "deliveryTime": { - "$ref": "#/components/schemas/DeliveryTime", - "description": "Time taken for the product to reach the customer. If a delivery time is defined in the product, it overwrites the delivery time of a shipping method." + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } }, - "tax": { - "$ref": "#/components/schemas/Tax", - "description": "Tax configuration (rate and calculation rules)" + "fields": { + "type": "array", + "description": "Fields which should be returned in the search result.", + "items": { + "type": "string", + "description": "Name of a field" + } }, - "manufacturer": { - "$ref": "#/components/schemas/ProductManufacturer", - "description": "Product manufacturer or brand information" + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } }, - "unit": { - "$ref": "#/components/schemas/Unit", - "description": "Product unit of measure (e.g., piece, liter, kg)" + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" }, - "cover": { - "$ref": "#/components/schemas/ProductMedia", - "description": "Main product image displayed in listings and detail pages" + "includes": { + "$ref": "#/components/schemas/Includes" }, - "openGraphMedia": { - "$ref": "#/components/schemas/Media", - "description": "Open Graph image for social media sharing" - }, - "cmsPage": { - "$ref": "#/components/schemas/CmsPage", - "description": "Custom CMS page layout for the product detail page" + "excludes": { + "$ref": "#/components/schemas/Excludes" + } + } + }, + "NoneFieldsCriteria": { + "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", + "properties": { + "page": { + "description": "Search result page", + "type": "integer" }, - "canonicalProduct": { - "$ref": "#/components/schemas/Product", - "description": "Canonical product reference for variant consolidation and SEO purposes" + "term": { + "description": "Search term", + "type": "string" }, - "media": { - "description": "Product images and media gallery", - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductMedia" - } + "limit": { + "description": "Number of items per result page", + "type": "integer" }, - "crossSellings": { - "description": "Cross-selling configurations (related products, accessories, similar items)", + "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/ProductCrossSelling" + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] } }, - "configuratorSettings": { - "description": "Variant configurator settings defining available options for product variants", + "ids": { "type": "array", + "description": "List of ids to search for", "items": { - "$ref": "#/components/schemas/ProductConfiguratorSetting" + "type": "string" } }, - "productReviews": { - "description": "Customer reviews and ratings for the product", - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductReview" - } + "query": { + "type": "string", + "description": "The query string to search for" }, - "mainCategories": { - "description": "Primary category assignments per sales channel for SEO and navigation", - "type": "array", - "items": { - "$ref": "#/components/schemas/MainCategory" - } + "associations": { + "$ref": "#/components/schemas/Associations" }, - "seoUrls": { - "description": "SEO-friendly URLs for the product across different sales channels", + "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": { - "$ref": "#/components/schemas/SeoUrl" + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] } }, - "options": { - "description": "Product variant options (e.g., size, color) that define different variants", + "sort": { "type": "array", + "description": "Sorting in the search result.", "items": { - "$ref": "#/components/schemas/PropertyGroupOption" + "$ref": "#/components/schemas/Sort" } }, - "properties": { - "description": "Product properties and characteristics for filtering", + "aggregations": { "type": "array", "items": { - "$ref": "#/components/schemas/PropertyGroupOption" + "$ref": "#/components/schemas/Aggregation" } }, - "categories": { - "description": "Categories this product is assigned to", + "grouping": { "type": "array", + "description": "Perform groupings over certain fields", "items": { - "$ref": "#/components/schemas/Category" + "type": "string", + "description": "Name of a field" } }, - "streams": { - "description": "Dynamic product streams this product belongs to based on defined filters", - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductStream" - } + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" }, - "categoriesRo": { - "description": "Read-only category tree including all parent categories for optimized queries", - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } + "includes": { + "$ref": "#/components/schemas/Includes" }, - "tags": { - "description": "Tags for organizing and filtering products", - "type": "array", - "items": { - "$ref": "#/components/schemas/Tag" - } + "excludes": { + "$ref": "#/components/schemas/Excludes" + } + } + }, + "Associations": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Criteria" + } + }, + "Includes": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "Excludes": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "Aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" }, - "seoCategory": { - "$ref": "#/components/schemas/Category", - "description": "Main category used for SEO URL generation in the current sales channel" + { + "title": "AggregationEntity", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationEntity" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] }, - "apiAlias": { - "type": "string", - "const": "product" + { + "title": "AggregationFilter", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationFilter" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] }, - "variantListingConfig": { - "oneOf": [ + { + "title": "AggregationTerms", + "allOf": [ { - "type": "object", - "properties": { - "displayParent": { - "type": "boolean" - } - } + "$ref": "#/components/schemas/AggregationTerms" }, { - "type": "null" + "$ref": "#/components/schemas/SubAggregations" } ] }, - "mainVariantId": { - "description": "Unique identity of main variant." + { + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] }, - "externalReference": { - "description": "External payment provider token." + { + "title": "AggregationRange", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationRange" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] } - }, - "type": "object" + ] }, - "ProductSearchConfig": { - "description": "Added since version: 6.3.5.0", + "SubAggregations": { + "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of Product Search Configuration." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "SalesChannelAnalytics": { - "description": "Added since version: 6.2.0.0", + "aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" + }, + { + "$ref": "#/components/schemas/AggregationEntity" + }, + { + "$ref": "#/components/schemas/AggregationFilter" + }, + { + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/AggregationRange" + } + ] + } + } + }, + "TotalCountMode": { + "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", + "type": "string", + "default": "none", + "enum": [ + "none", + "exact", + "next-pages" + ] + }, + "Sort": { + "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of sales channel analytics." + "field": { + "type": "string" }, - "createdAt": { + "order": { "type": "string", - "format": "date-time", - "readOnly": true + "enum": [ + "ASC", + "DESC" + ] }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "naturalSorting": { + "type": "boolean" + }, + "type": { + "type": "string" } }, - "type": "object" + "required": [ + "field", + "order" + ] }, - "CookieGroupCollection": { + "Filters": { "type": "array", "items": { - "$ref": "#/components/schemas/CookieGroup" + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] } }, - "AclRole": { - "description": "Added since version: 6.0.0.0", + "SimpleFilter": { + "type": "object", "properties": { - "id": { + "type": { "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of ACL role." + "enum": [ + "contains", + "equalsAny", + "prefix", + "suffix" + ] }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "field": { + "type": "string" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "value": { + "type": "string" } }, - "type": "object" + "required": [ + "type", + "field", + "value" + ] }, - "ProductFeatureSet": { - "description": "Added since version: 6.3.0.0", + "EqualsFilter": { + "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of product feature set." - }, - "createdAt": { + "type": { "type": "string", - "format": "date-time", - "readOnly": true + "enum": [ + "equals" + ] }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "field": { + "type": "string" }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." + "value": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + } + ] } }, - "type": "object" - }, - "MediaThumbnail": { - "description": "Added since version: 6.0.0.0", "required": [ - "url", - "id", - "mediaId", - "width", - "height" - ], + "type", + "field", + "value" + ] + }, + "MultiNotFilter": { + "type": "object", "properties": { - "id": { + "type": { "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of media thumbnail." + "enum": [ + "multi", + "not" + ] }, - "mediaId": { - "description": "Unique identity of media.", + "operator": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "enum": [ + "and", + "or", + "nor", + "nand" + ] }, - "mediaThumbnailSizeId": { + "queries": { + "$ref": "#/components/schemas/Filters" + } + }, + "required": [ + "type", + "operator", + "queries" + ] + }, + "RangeFilter": { + "type": "object", + "properties": { + "type": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "width": { - "description": "Width of the thumbnail.", - "type": "integer", - "format": "int64", - "readOnly": true - }, - "height": { - "description": "Height of the thumbnail.", - "type": "integer", - "format": "int64", - "readOnly": true - }, - "url": { - "description": "Public url of media thumbnail.", - "type": "string" + "enum": [ + "range" + ] }, - "path": { + "field": { "type": "string" }, - "customFields": { + "parameters": { "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "properties": { + "gte": { + "type": "number" + }, + "gt": { + "type": "number" + }, + "lte": { + "type": "number" + }, + "lt": { + "type": "number" + } + } } }, - "type": "object" + "required": [ + "type", + "field", + "parameters" + ] }, - "AppMcpTool": { - "description": "Added since version: 6.7.11.0", + "CrossSellingElement": { + "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "crossSelling": { + "$ref": "#/components/schemas/ProductCrossSelling" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } }, - "updatedAt": { + "total": { + "type": "integer", + "format": "int32" + }, + "streamId": { "type": "string", - "format": "date-time", - "readOnly": true + "format": "uuid" }, - "translated": { - "type": "object" + "apiAlias": { + "type": "string", + "const": "cross_selling_element" } }, - "type": "object" + "required": [ + "crossSelling", + "products", + "total", + "apiAlias" + ] }, - "Tax": { + "CrossSellingElementCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrossSellingElement" + }, + "properties": { + "total": { + "description": "Number of cross selling elements found." + } + } + }, + "Currency": { "description": "Added since version: 6.0.0.0", "required": [ "id", - "taxRate", + "factor", + "symbol", + "isoCode", + "itemRounding", + "totalRounding", + "shortName", "name" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of tax." + "description": "Unique identity of currency." }, - "taxRate": { - "description": "Rate of tax.", + "factor": { + "description": "Currency exchange rate.", "type": "number", "format": "float" }, - "name": { - "description": "Name defined for a Tax.", + "symbol": { + "description": "A currency symbol is a graphical representation used as shorthand for a currency's name, for example US Dollar - $", + "type": "string" + }, + "isoCode": { + "description": "Standard international three digit code to represent currency. For example, USD.", "type": "string" }, + "shortName": { + "type": "string", + "description": "Acronym for international currencies. For example, USD." + }, + "name": { + "type": "string", + "description": "Full name of the currency. For example, US-Dollar." + }, "position": { - "description": "The order of the tabs of your defined taxes in the storefront by entering numerical values like 1,2,3, etc.", + "description": "The order of the tabs for multiple currencies defined.", "type": "integer", "format": "int64" }, + "isSystemDefault": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "boolean" + }, + "taxFreeFrom": { + "description": "The value from which the tax must be exempted.", + "type": "number", + "format": "float" + }, "customFields": { "type": "object", "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "AggregationMetrics": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "avg", - "count", - "max", - "min", - "stats", - "sum" - ] + "itemRounding": { + "required": [ + "decimals", + "interval", + "roundForNet" + ], + "properties": { + "decimals": { + "type": "integer", + "format": "int64", + "description": "It defines the cash round off applied on the cart line items to the nearest decimal points. If set to 2, it rounds off to two significant decimal points." + }, + "interval": { + "type": "number", + "format": "float", + "description": "The interval of item rounding defines the cash rounding interval in terms of how high or low should it be rounded. For example, 0.05 signifies the value gets rounded off to nearest 5 cents." + }, + "roundForNet": { + "type": "boolean", + "description": "The cash rounding applied on net prices. " + } + }, + "type": "object" }, - "field": { - "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "TaxRuleType": { - "description": "Added since version: 6.1.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of tax rule type." + "totalRounding": { + "required": [ + "decimals", + "interval", + "roundForNet" + ], + "properties": { + "decimals": { + "type": "integer", + "format": "int64", + "description": "It defines the round off amount to the nearest decimal points applied on the cart’s total amount. If set to 2, it rounds off to two significant decimal points." + }, + "interval": { + "type": "number", + "format": "float", + "description": "The interval defines the cart’s total amount round off interval in terms of how high or low should it be rounded. For example, 0.05 signifies the value gets rounded off to nearest 5 cents." + }, + "roundForNet": { + "type": "boolean", + "description": "The cash rounding applied on cart’s total net prices. " + } + }, + "type": "object" }, "createdAt": { "type": "string", @@ -3364,829 +3850,400 @@ }, "type": "object" }, - "OrderDeliveryPosition": { + "Customer": { "description": "Added since version: 6.0.0.0", "required": [ + "apiAlias", + "activeBillingAddress", + "activeShippingAddress", "id", - "orderDeliveryId", - "orderLineItemId" + "groupId", + "salesChannelId", + "languageId", + "defaultBillingAddressId", + "defaultShippingAddressId", + "customerNumber", + "firstName", + "lastName", + "email" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of order delivery position." + "description": "Unique identity of the customer." }, - "versionId": { + "groupId": { + "description": "Unique identity of customer group.", "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of OrderDeliveryPosition's version." + "pattern": "^[0-9a-f]{32}$" }, - "orderDeliveryId": { - "description": "Unique identity of order delivery.", + "salesChannelId": { + "description": "Unique identity of sales channel.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "orderDeliveryVersionId": { + "languageId": { + "description": "Unique identity of language.", "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of order delivery's version." + "pattern": "^[0-9a-f]{32}$" }, - "orderLineItemId": { - "description": "Unique identity of line items in an order.", + "lastPaymentMethodId": { + "description": "Unique identity of previous payment method.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "orderLineItemVersionId": { + "defaultBillingAddressId": { + "description": "Unique identity of default billing address.", "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of line item's version in an order." + "pattern": "^[0-9a-f]{32}$" }, - "price": { - "required": [ - "unitPrice", - "totalPrice", - "quantity" - ], - "properties": { - "unitPrice": { - "type": "number", - "format": "float", - "description": "Price of product per item (where, quantity=1)." - }, - "totalPrice": { - "type": "number", - "format": "float", - "description": "Cost of product based on quantity." - }, - "quantity": { - "type": "integer", - "format": "int64", - "description": "Number of items of each product." - }, - "calculatedTaxes": { - "type": "object", - "description": "Contains calculated taxes based on order delivery price." - }, - "taxRules": { - "type": "object", - "description": "Pricing based on multiple taxes." - }, - "referencePrice": { - "type": "object", - "description": "Original cost price of the product." - }, - "listPrice": { - "properties": { - "price": { - "type": "number", - "format": "float", - "description": "Price of each line item." - }, - "discount": { - "type": "number", - "format": "float", - "description": "Absolute discount on each line item." - }, - "percentage": { - "type": "number", - "format": "float", - "description": "Discount in percentage." - } - }, - "type": "object" - }, - "regulationPrice": { - "properties": { - "price": { - "type": "number", - "format": "float", - "description": "Contains cheapest price from last 30 days as per EU law." - } - }, - "type": "object" - } - }, - "type": "object" - }, - "unitPrice": { - "description": "Price of product per item (where, quantity=1).", - "type": "number", - "format": "float" - }, - "totalPrice": { - "description": "Cost of product based on quantity.", - "type": "number", - "format": "float" - }, - "quantity": { - "description": "Number of items of each product.", - "type": "integer", - "format": "int64" - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "CrossSellingElementCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CrossSellingElement" - }, - "properties": { - "total": { - "description": "Number of cross selling elements found." - } - } - }, - "CustomerAddressBody": { - "description": "Added since version: 6.0.0.0", - "required": [ - "countryId", - "firstName", - "lastName", - "city", - "street" - ], - "properties": { - "countryId": { + "defaultShippingAddressId": { + "description": "Unique identity of default shipping address.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "countryStateId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "customerNumber": { + "description": "Unique number assigned to identity a customer.", + "type": "string" }, "salutationId": { + "description": "Unique identity of salutation.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, "firstName": { + "description": "First name of the customer.", "type": "string" }, "lastName": { + "description": "Last name of the customer.", "type": "string" }, - "zipcode": { + "email": { + "description": "Email ID of the customer.", "type": "string" }, - "city": { + "title": { + "description": "Titles or honorifics like Mr, Mrs, etc.", "type": "string" }, - "company": { + "affiliateCode": { + "description": "An affiliate code is an identification option with which website operators can mark outgoing links.", "type": "string" }, - "street": { + "campaignCode": { + "description": "A campaign code is the globally unique identifier for a campaign.", "type": "string" }, - "department": { - "type": "string" + "active": { + "description": "To keep the status of the customer active, the boolean value is set to `true`.", + "type": "boolean" }, - "title": { - "type": "string" + "doubleOptInRegistration": { + "description": "Set to `true` to allow user subscriptions to an email marketing list.", + "type": "boolean" }, - "phoneNumber": { - "type": "string" + "doubleOptInEmailSentDate": { + "description": "Date and time when the double opt-in email was sent.", + "type": "string", + "format": "date-time" }, - "additionalAddressLine1": { - "type": "string" + "doubleOptInConfirmDate": { + "description": "Date and time when the double opt-in email was confirmed.", + "type": "string", + "format": "date-time" }, - "additionalAddressLine2": { + "hash": { + "description": "Password hash for account recovery.", "type": "string" }, - "customFields": { - "type": "object" + "guest": { + "description": "Boolean value is `true` if it is to be a guest account.", + "type": "boolean" }, - "country": { - "$ref": "#/components/schemas/Country" + "firstLogin": { + "description": "To capture date and time of customer's first login.", + "type": "string", + "format": "date-time" }, - "countryState": { - "$ref": "#/components/schemas/CountryState" + "lastLogin": { + "description": "To capture date and time of customer's last login.", + "type": "string", + "format": "date-time" }, - "salutation": { - "$ref": "#/components/schemas/Salutation" - } - }, - "type": "object" - }, - "SalesChannelContext": { - "type": "object", - "properties": { - "token": { - "description": "Context the user session", + "birthday": { + "description": "To capture customer's birthday details.", "type": "string" }, - "currentCustomerGroup": { - "type": "object", - "description": "Customer group of the current user", - "properties": { - "name": { - "type": "string", - "description": "Name of customer group to which the customer belongs within the specific sales channel they are currently interacting with." - }, - "displayGross": { - "type": "boolean", - "description": "When `true`, product's gross price is displayed for that customer group who belongs to the specific sales channel they are currently interacting with." - } - } + "lastOrderDate": { + "description": "Captures last order date.", + "type": "string", + "format": "date-time", + "readOnly": true }, - "fallbackCustomerGroup": { - "description": "Fallback group if the default customer group is not applicable", + "orderCount": { + "description": "Captures the number of orders placed.", + "type": "integer", + "format": "int64", + "readOnly": true + }, + "orderTotalAmount": { + "description": "Sum of total amount to be paid.", + "type": "number", + "format": "float", + "readOnly": true + }, + "reviewCount": { + "description": "Number of reviews the customer has given.", + "type": "integer", + "format": "int64", + "readOnly": true + }, + "customFields": { "type": "object", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } - } + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, - "currency": { - "$ref": "#/components/schemas/Currency", - "properties": { - "isoCode": { - "description": "Standard international three digit code to represent currency in a given sales channel. For example, USD." - }, - "factor": { - "description": "Currency exchange rate in a specific sales channel the customer is currently interacting with." - }, - "symbol": { - "description": "A currency symbol is a graphical representation used as shorthand for a currency's name, for example US Dollar - $ in a given sales channel." - }, - "shortName": { - "description": "Acronym for international currencies, for example, USD in a given sales channel." - }, - "name": { - "description": "Full name of the currency in a given sales channel. For example, US-Dollar." - }, - "position": { - "description": "The order of the tabs for multiple currencies defined in a given sales channel." - }, - "decimalPrecision": { - "description": "It defines the round off value for currency to the nearest decimal point in a given sales channel. If set to 2, it rounds off to two significant decimal points." - }, - "isSystemDefault": { - "description": "Runtime field, cannot be used as part of the criteria." - } - } + "tagIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true, + "description": "Unique identity tag names given to the line item." }, - "salesChannel": { - "$ref": "#/components/schemas/SalesChannel", - "properties": { - "typeId": { - "description": "Unique identity of a sales channel's type within a specific sales channel." - }, - "languageId": { - "description": "Unique identity of a sales channel's language within a specific sales channel." - }, - "currencyId": { - "description": "Unique identity of a sales channel's currency within a specific sales channel." - }, - "paymentMethodId": { - "description": "Unique identity of a sales channel's payment method within a specific sales channel." - }, - "shippingMethodId": { - "description": "Unique identity of a sales channel's shipping method within a specific sales channel." - }, - "countryId": { - "description": "Unique identity of a sales channel's country within a specific sales channel." - }, - "navigationCategoryId": { - "description": "Unique identity of a sales channel's navigation category within a specific sales channel." - }, - "navigationCategoryDepth": { - "description": "It determines the number of levels of subcategories in the storefront category menu within a specific sales channel." - }, - "footerCategoryId": { - "description": "Unique identity of a sales channel's footer category within a specific sales channel." - }, - "serviceCategoryId": { - "description": "Unique identity of a sales channel's service category within a specific sales channel." - }, - "name": { - "description": "Name of the sales channel." - }, - "shortName": { - "description": "A short name for sales channel." - }, - "accessKey": { - "description": "Access key to store api." - }, - "active": { - "description": "When `true`, the sales channel is enabled." - }, - "maintenance": { - "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." - }, - "maintenanceIpWhitelist": { - "description": "Array of IP address allowed to access the sales channel." - }, - "mailHeaderFooterId": { - "description": "Unique identity of a sales channel's mail header and footer within a specific sales channel." - }, - "customerGroupId": { - "description": "Unique identity of a sales channel's customer group within a specific sales channel." - }, - "hreflangActive": { - "description": "When `true`, the sales channel pages are available in different languages within a specific sales channel." - }, - "hreflangDefaultDomainId": { - "description": "Unique identity of a sales channel's hreflangDefaultDomain within a specific sales channel." - }, - "analyticsId": { - "description": "Unique identity of a sales channel's analytics within a specific sales channel." - } - } + "requestedGroupId": { + "description": "Unique identity of requested group.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "measurementSystem": { - "$ref": "#/components/schemas/ContextMeasurementSystemInfo" + "createdById": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "taxRules": { + "updatedById": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "group": { + "$ref": "#/components/schemas/CustomerGroup", + "description": "Customer group determining pricing and permissions" + }, + "language": { + "$ref": "#/components/schemas/Language", + "description": "Preferred language for customer communication" + }, + "lastPaymentMethod": { + "$ref": "#/components/schemas/PaymentMethod", + "description": "Last used payment method by the customer" + }, + "defaultBillingAddress": { + "$ref": "#/components/schemas/CustomerAddress", + "description": "Default billing address for the customer" + }, + "activeBillingAddress": { + "$ref": "#/components/schemas/CustomerAddress", + "description": "Currently active billing address in the session" + }, + "defaultShippingAddress": { + "$ref": "#/components/schemas/CustomerAddress", + "description": "Default shipping address for the customer" + }, + "activeShippingAddress": { + "$ref": "#/components/schemas/CustomerAddress", + "description": "Currently active shipping address in the session" + }, + "salutation": { + "$ref": "#/components/schemas/Salutation", + "description": "Customer salutation (e.g., Mr., Mrs., Ms.)" + }, + "addresses": { + "description": "All addresses saved for the customer", "type": "array", - "description": "Currently active tax rules and/or rates", "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } + "$ref": "#/components/schemas/CustomerAddress" + } + }, + "tags": { + "description": "Tags assigned to the customer for organization and segmentation", + "type": "array", + "items": { + "$ref": "#/components/schemas/Tag" + } + }, + "apiAlias": { + "type": "string", + "const": "customer" + }, + "defaultPaymentMethodId": { + "description": "Unique identity of default payment method." + }, + "company": { + "description": "Company name of the customer." + }, + "vatIds": { + "description": "Unique identity of VAT." + }, + "accountType": { + "description": "Account type can be personal or business." + }, + "extensions": { + "properties": { + "specificFeatures": { + "description": "To store additional data to a customer from extensions." } - }, + } + } + }, + "type": "object", + "oneOf": [ + { + "required": [ + "accountType" + ], "properties": { - "taxRate": { - "description": "Rate of tax within a specific sales channel." - }, - "name": { - "description": "Name defined for a Tax within a specific sales channel." + "accountType": { + "type": "string", + "enum": [ + "private" + ] } } }, - "customer": { - "oneOf": [ - { - "type": "null" - }, - { - "$ref": "#/components/schemas/Customer" - } + { + "required": [ + "accountType", + "vatIds", + "company" ], "properties": { - "groupId": { - "description": "Unique identity of a customer's group within a specific sales channel." - }, - "defaultPaymentMethodId": { - "description": "Unique identity of a customer's default payment method within a specific sales channel." - }, - "salesChannelId": { - "description": "Unique identity of sales channel the customer is currently interacting with." - }, - "languageId": { - "description": "Unique identity of language within a specific sales channel the customer is interacting." - }, - "lastPaymentMethodId": { - "description": "Unique identity of customer's last payment method within a specific sales channel." - }, - "defaultBillingAddressId": { - "description": "Unique identity of customer's default billing address within a specific sales channel." - }, - "defaultShippingAddressId": { - "description": "Unique identity of customer's default shipping address within a specific sales channel." - }, - "customerNumber": { - "description": "Name of the customer within a specific sales channel the customer is interacting." - }, - "salutationId": { - "description": "Unique identity of customer's default shipping address within a specific sales channel." - }, - "firstName": { - "description": "First name of the customer within a specific sales channel." + "accountType": { + "type": "string", + "enum": [ + "business" + ] }, - "lastName": { - "description": "Last name of the customer within a specific sales channel." + "vatIds": { + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 }, "company": { - "description": "Company name of the customer within a specific sales channel." - }, - "password": { - "description": "Password of the customer within a specific sales channel." - }, - "email": { - "description": "Email of the customer within a specific sales channel." - }, - "title": { - "description": "Customer's title or honorifics like Mr, Mrs, etc within a specific sales channel." - }, - "affiliateCode": { - "description": "An affiliate code is an identification option with which website operators can mark outgoing links within a specific sales channel." - }, - "campaignCode": { - "description": "A unique identifier for a campaign within a specific sales channel." - }, - "active": { - "description": "When `true`, the status of the customer is set active within a specific sales channel." - }, - "doubleOptInRegistration": { - "description": "When `true`, user subscriptions to an email marketing list is allowed within a specific sales channel." - }, - "doubleOptInEmailSentDate": { - "description": "Date and time when the double opt-in email was sent within a specific sales channel." - }, - "doubleOptInConfirmDate": { - "description": "Date and time when the double opt-in email was confirmed within a specific sales channel." - }, - "hash": { - "description": "Password hash for account recovery within a specific sales channel." - }, - "guest": { - "description": "Boolean value is `true` for a guest account within a specific sales channel." - }, - "firstLogin": { - "description": "Captures date and time of customer's first login within a specific sales channel." - }, - "lastLogin": { - "description": "Captures date and time of customer's last login within a specific sales channel." - }, - "newsletter": { - "description": "When `true`, then the customer gets subscribe to the newsletter" - }, - "birthday": { - "description": "Captures customer's birthday details within a specific sales channel." - }, - "lastOrderDate": { - "description": "Captures customer's last order date within a specific sales channel." - }, - "orderCount": { - "description": "Captures the number of orders placed by a customer within a specific sales channel." - }, - "legacyEncoder": { - "description": "encapsulates shop credentials when needed to migrate shop system from old instance to new instance" - }, - "legacyPassword": { - "description": "Hashed password of the old shop system" - }, - "autoIncrement": { - "description": "Internal field. " - }, - "remoteAddress": { - "description": "Anonymous IP address of the customer for last session." + "type": "string" } } + } + ] + }, + "CustomerAddress": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "customerId", + "countryId", + "firstName", + "lastName", + "city", + "street" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of customer's address." }, - "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethod", - "properties": { - "pluginId": { - "description": "Unique identity of payment plugin within a specific sales channel." - }, - "handlerIdentifier": { - "description": "Internal field that contains system identifier details for payment methods like Paypal." - }, - "name": { - "description": "Name of the payment method within a specific sales channel." - }, - "description": { - "description": "A short description about the payment method within a specific sales channel." - }, - "position": { - "description": "The order of the tabs of your defined payment methods in the storefront by entering numerical values like 1,2,3, etc within a specific sales channel." - }, - "active": { - "description": "When `true`, the payment method is available for usage within a specific sales channel." - }, - "availabilityRuleId": { - "description": "Unique identity of the rule for the payment method." - }, - "mediaId": { - "description": "Unique identity of media used in payment method within a specific sales channel." - }, - "formattedHandlerIdentifier": { - "description": "Internal field that contains system identifier details for payment methods like Paypal." - } - } + "customerId": { + "description": "Unique identity of customer.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "shippingLocation": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "const": "cart_delivery_shipping_location" - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" - } - } + "countryId": { + "description": "Unique identity of country.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod", - "properties": { - "name": { - "description": "Name of the shipping method within a specific sales channel." - }, - "active": { - "description": "When `true`, the shipping method is available for usage within a specific sales channel." - }, - "description": { - "description": "A short description about the shipping method within a specific sales channel." - }, - "trackingUrl": { - "description": "URL that allows to track packages for a specific sales channel." - }, - "deliveryTimeId": { - "description": "Unique identity of deliveryTime within a specific sales channel." - }, - "availabilityRuleId": { - "description": "Unique identity of the rule for the payment method." - }, - "mediaId": { - "description": "Unique identity of media used in shipping method within a specific sales channel." - } - } + "countryStateId": { + "description": "Unique identity of country's state.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "context": { - "description": "Core context with general configuration values and state", - "type": "object", - "properties": { - "versionId": { - "type": "string", - "description": "Unique identity of context's version in a specific sales channel." - }, - "currencyId": { - "type": "string", - "description": "Unique identity of currency context in a specific sales channel." - }, - "currencyFactor": { - "type": "integer", - "description": "Unique identity of currency factor context in a specific sales channel." - }, - "currencyPrecision": { - "type": "integer", - "format": "int32", - "description": "It defines the round off value of currency to the nearest decimal point. If set to 2, it rounds off to two significant decimal points." - }, - "languageIdChain": { - "type": "array", - "items": { - "type": "string" - } - }, - "scope": { - "type": "string", - "description": "Scope defines if its related to system or user context." - }, - "source": { - "type": "object", - "required": [ - "salesChannelId", - "type" - ], - "properties": { - "type": { - "type": "string", - "enum": [ - "sales-channel", - "shop-api" - ] - }, - "salesChannelId": { - "type": "string" - } - }, - "description": "When context is related to user in the source, then there is userId." - }, - "taxState": { - "type": "string", - "description": "Tax state can either be `gross` or `net`." - }, - "useCache": { - "type": "boolean", - "description": "When boolean value is `true`, caching is used." - } - } + "salutationId": { + "description": "Unique identity of salutation.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "itemRounding": { - "type": "object", - "required": [ - "decimals", - "interval", - "roundForNet", - "apiAlias" - ], - "properties": { - "apiAlias": { - "type": "string", - "const": "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" - }, - "decimals": { - "type": "integer", - "format": "int32" - }, - "interval": { - "type": "number", - "format": "float" - }, - "roundForNet": { - "type": "boolean" - } - } + "firstName": { + "description": "First name of the customer.", + "type": "string" }, - "totalRounding": { - "type": "object", - "required": [ - "decimals", - "interval", - "roundForNet", - "apiAlias" - ], - "properties": { - "apiAlias": { - "type": "string", - "const": "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" - }, - "decimals": { - "type": "integer", - "format": "int32" - }, - "interval": { - "type": "number", - "format": "float" - }, - "roundForNet": { - "type": "boolean" - } - } + "lastName": { + "description": "Last name of the customer.", + "type": "string" }, - "languageInfo": { - "type": "object", - "required": [ - "localeCode", - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "localeCode": { - "type": "string" - } - } + "zipcode": { + "description": "Postal or zip code of customer's address.", + "type": "string" }, - "apiAlias": { - "type": "string", - "const": "sales_channel_context" - } - }, - "required": [ - "salesChannel", - "apiAlias", - "itemRounding", - "totalRounding", - "languageInfo" - ] - }, - "CookieRouteResponse": { - "type": "object", - "description": "Response containing cookie groups and their configuration hash.", - "properties": { - "apiAlias": { - "type": "string", - "const": "cookie_groups_hash" + "city": { + "description": "Name of customer's city.", + "type": "string" }, - "elements": { - "type": "array", - "description": "Collection of cookie groups", - "items": { - "$ref": "#/components/schemas/CookieGroup" - } + "company": { + "description": "Name of customer's company.", + "type": "string" + }, + "street": { + "description": "Name of customer's street.", + "type": "string" + }, + "department": { + "description": "Name of customer's department.", + "type": "string" + }, + "title": { + "description": "Titles given to customer like Dr. , Prof., etc", + "type": "string" + }, + "phoneNumber": { + "description": "Customer's phone number.", + "type": "string" + }, + "additionalAddressLine1": { + "description": "Additional customer's address information.", + "type": "string" + }, + "additionalAddressLine2": { + "description": "Additional customer's address information.", + "type": "string" }, "hash": { - "type": "string", - "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", - "example": "f86b6a872cb83dbd22d838ceda1aa3d4" + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "string" }, - "languageId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The language ID for which the cookie configuration was generated. Used to store hashes per language.", - "example": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" - } - }, - "required": [ - "elements", - "hash", - "languageId", - "apiAlias" - ], - "example": { - "apiAlias": "cookie_groups_hash", - "elements": [ - { - "isRequired": true, - "description": "Cookies required for this shop to function:", - "name": "Technically required", - "entries": [ - { - "name": "Session", - "hidden": false, - "cookie": "session-", - "apiAlias": "cookie_entry" - }, - { - "name": "Timezone", - "hidden": false, - "cookie": "timezone", - "apiAlias": "cookie_entry" - }, - { - "value": "1", - "expiration": 30, - "name": "Cookie preferences", - "hidden": true, - "cookie": "cookie-preference", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "description": "Cookies used for statistics and shop performance metrics.", - "name": "Statistics", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "Google Analytics", - "hidden": false, - "cookie": "google-analytics-enabled", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "description": "Allows Google to collect personal data for online advertising and marketing.", - "name": "Marketing", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "Google Advertising", - "hidden": false, - "cookie": "google-ads-enabled", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - }, - { - "isRequired": false, - "name": "Comfort features", - "entries": [ - { - "value": "1", - "expiration": 30, - "name": "YouTube video", - "hidden": false, - "cookie": "youtube-video", - "apiAlias": "cookie_entry" - } - ], - "apiAlias": "cookie_group" - } - ], - "hash": "f86b6a872cb83dbd22d838ceda1aa3d4", - "languageId": "2fbb5fe2e29a4d70aa5854ce7ce3e20b" - } - }, - "ProductCrossSellingAssignedProducts": { - "description": "Added since version: 6.2.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of Product CrossSelling Assigned Products." + "customFields": { + "type": "object", + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "isDefaultBillingAddress": { + "description": "Added since version: 6.7.7.0. Runtime field, cannot be used as part of the criteria.", + "type": "boolean" + }, + "isDefaultShippingAddress": { + "description": "Added since version: 6.7.7.0. Runtime field, cannot be used as part of the criteria.", + "type": "boolean" }, "createdAt": { "type": "string", @@ -4197,234 +4254,186 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "$ref": "#/components/schemas/CountryState" + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, "type": "object" }, - "NavigationRouteResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - }, - "properties": { - "id": { - "description": "Unique identity of navigation route response." - } - } - }, - "PromotionDiscount": { + "CustomerAddressBody": { "description": "Added since version: 6.0.0.0", + "required": [ + "countryId", + "firstName", + "lastName", + "city", + "street" + ], "properties": { - "id": { + "countryId": { "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of promotion discount." + "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { + "countryStateId": { "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "updatedAt": { + "salutationId": { "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "Cart": { - "type": "object", - "properties": { - "name": { - "description": "Name of the cart - for example `guest-cart`", - "type": "string" + "pattern": "^[0-9a-f]{32}$" }, - "token": { - "description": "Context token identifying the cart and the user session", + "firstName": { "type": "string" }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" + "lastName": { + "type": "string" }, - "lineItems": { - "description": "All items within the cart", - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } + "zipcode": { + "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" - ] - } - } - ], - "properties": { - "key": { - "description": "Unique key for every message." - }, - "level": { - "description": "Types of level - Notice, warning and error. " - }, - "message": { - "description": "A persistent error passed from the shopping cart calculation processes to the user end." - } - } + "city": { + "type": "string" }, - "deliveries": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDelivery" - } + "company": { + "type": "string" }, - "transactions": { - "description": "A list of all payment transactions associated with the current cart.", - "type": "array", - "items": { - "type": "object", - "properties": { - "paymentMethodId": { - "type": "string" - }, - "amount": { - "$ref": "#/components/schemas/CalculatedPrice" - } - } - }, - "properties": { - "paymentMethodId": { - "description": "Unique identity of payment method." - } - } + "street": { + "type": "string" }, - "modified": { - "type": "boolean", - "description": "It signifies any changes to cart." + "department": { + "type": "string" }, - "customerComment": { - "description": "A comment that can be added to the cart.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] + "title": { + "type": "string" }, - "affiliateCode": { - "description": "An affiliate tracking code", + "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" + "type": "string", + "format": "date-time" }, { "type": "null" } ] }, - "campaignCode": { - "description": "A campaign tracking code", + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { "oneOf": [ { - "type": "string" + "$ref": "#/components/schemas/CountryState" }, { "type": "null" } ] }, - "apiAlias": { - "type": "string", - "const": "cart" - }, - "id": { - "description": "Unique identity of cart." + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, "required": [ - "price", - "apiAlias" + "customerId", + "createdAt", + "updatedAt", + "country", + "salutation" ] }, - "OrderTag": { + "CustomerGroup": { "description": "Added since version: 6.0.0.0", "required": [ - "orderId", - "tagId" + "translated", + "id", + "name" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of order tag." + "description": "Unique identity of the customer's group." }, - "orderId": { + "name": { "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of order." + "description": "Name of the customer group." }, - "orderVersionId": { + "displayGross": { + "description": "If boolean value is `true` gross value is displayed else, net value will be displayed to the customer.", + "type": "boolean" + }, + "customFields": { + "type": "object", + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "registrationActive": { + "description": "To enable the registration of partner customer group.", + "type": "boolean" + }, + "registrationTitle": { "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of order's version." + "description": "Title defined for the customer group during registration." }, - "tagId": { + "registrationIntroduction": { "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of tag given for an order." + "description": "A brief description about the registration." }, - "order": { - "$ref": "#/components/schemas/Order" + "registrationOnlyCompanyRegistration": { + "type": "boolean", + "description": "Register as a company rather than as a private customer group." }, - "tag": { - "$ref": "#/components/schemas/Tag" - } - }, - "type": "object" - }, - "SalesChannelTrackingOrder": { - "description": "Added since version: 6.7.9.0", - "properties": { - "id": { + "registrationSeoMetaDescription": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "description": "A short description of the registration page for search results listings." }, "createdAt": { "type": "string", @@ -4435,67 +4444,64 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "translated": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "registrationIntroduction": { + "type": "string" + }, + "registrationSeoMetaDescription": { + "type": "string" + }, + "registrationTitle": { + "type": "string" + } + }, + "description": "Contains the translations of all translated fields." } }, "type": "object" }, - "ImportExportLog": { + "DeliveryTime": { "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of import-export log." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "MeasurementDisplayUnit": { - "description": "Added since version: 6.7.1.0", "required": [ "id", - "measurementSystemId", - "default", - "type", - "shortName", - "factor", - "precision" + "name", + "min", + "max", + "unit" ], "properties": { "id": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of delivery time." }, - "measurementSystemId": { + "name": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "description": "Name given to delivery time." }, - "default": { - "type": "boolean" + "min": { + "description": "Minimum delivery time taken.", + "type": "integer", + "format": "int64" }, - "type": { - "type": "string" + "max": { + "description": "Maximum delivery time taken.", + "type": "integer", + "format": "int64" }, - "shortName": { + "unit": { + "description": "Unit in which the delivery time is defined. For example, days or hours.", "type": "string" }, - "factor": { - "type": "number", - "format": "float" - }, - "precision": { - "type": "integer", - "format": "int64" + "customFields": { + "type": "object", + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, "createdAt": { "type": "string", @@ -4508,53 +4514,91 @@ "readOnly": true }, "translated": { - "type": "object" - }, - "measurementSystem": { - "$ref": "#/components/schemas/MeasurementSystem" + "type": "object", + "description": "Contains the translations of all translated fields." } }, "type": "object" }, - "MainCategory": { - "description": "Added since version: 6.1.0.0", + "Document": { + "description": "Added since version: 6.0.0.0", "required": [ "id", - "productId", - "categoryId", - "salesChannelId" + "documentTypeId", + "orderId", + "config", + "deepLinkCode" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of main category." + "description": "Unique identity of document." }, - "productId": { - "description": "Unique identity of the product.", + "documentTypeId": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of document type." }, - "productVersionId": { + "referencedDocumentId": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the product's version." + "description": "Unique identity of reference document." }, - "categoryId": { - "description": "Unique identity of the category.", + "orderId": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of the order." }, - "categoryVersionId": { + "documentMediaFileId": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the category's version." + "description": "Unique identity of document media file." }, - "salesChannelId": { - "description": "Unique identity of the sales channel.", + "documentA11yMediaFileId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "orderVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of the order's version." + }, + "config": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "title": { + "type": "string" + } + }, + "required": [ + "name", + "title" + ], + "description": "Specifies detailed information about how the component is to be rendered." + }, + "sent": { + "type": "boolean", + "description": "When `true`, the document is already sent to the customer." + }, + "static": { + "type": "boolean", + "description": "When `true`, the document is uploaded else it is generated by the system." + }, + "deepLinkCode": { + "type": "string", + "description": "It is a generated special code linked to email. It is used to access details of guest customer actions." + }, + "documentNumber": { + "type": "string" + }, + "customFields": { + "type": "object", + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, "createdAt": { "type": "string", "format": "date-time", @@ -4564,80 +4608,55 @@ "type": "string", "format": "date-time", "readOnly": true - } - }, - "type": "object" - }, - "OrderRouteResponse": { - "type": "object", - "properties": { - "orders": { - "type": "object", - "allOf": [ - { - "type": "object", - "required": [ - "elements" - ], - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order" - } - } - } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] }, - "paymentChangeable": { - "type": "object", - "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", - "additionalProperties": { - "type": "boolean" + "documentType": { + "$ref": "#/components/schemas/DocumentType" + }, + "order": { + "$ref": "#/components/schemas/Order" + }, + "referencedDocument": { + "$ref": "#/components/schemas/Document" + }, + "dependentDocuments": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Document" } + }, + "documentMediaFile": { + "$ref": "#/components/schemas/Media" + }, + "documentA11yMediaFile": { + "$ref": "#/components/schemas/Media" + }, + "fileType": { + "type": "string", + "description": "Type of file like PDF." } }, - "required": [ - "orders" - ] + "type": "object" }, - "ProductManufacturer": { + "DocumentType": { "description": "Added since version: 6.0.0.0", "required": [ "id", + "technicalName", "name" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the Product Manufacturer." - }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the ProductManufacturer's version." - }, - "mediaId": { - "description": "Unique identity of the media.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "link": { - "type": "string", - "description": "URL of the manufacturer's portal." + "description": "Unique identity of the document type." }, "name": { "type": "string", - "description": "Name of the product manufacturer." + "description": "Name of the document type." }, - "description": { - "type": "string", - "description": "A detailed description of product manufacturer." + "technicalName": { + "description": "Technical name of document type.", + "type": "string" }, "customFields": { "type": "object", @@ -4656,265 +4675,354 @@ "translated": { "type": "object", "description": "Contains the translations of all translated fields." - }, - "media": { - "$ref": "#/components/schemas/Media" } }, "type": "object" }, - "UserConfig": { - "description": "Added since version: 6.3.5.0", + "EntitySearchResult": { + "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of user configuration." + "entity": { + "type": "string" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "total": { + "type": "integer", + "description": "The total number of found entities" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "MediaTag": { - "description": "Added since version: 6.0.0.0", - "required": [ - "mediaId", - "tagId" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the media tag." - }, - "mediaId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the media." - }, - "tagId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the tag." + "aggregations": { + "type": "array", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", + "items": { + "type": "object" + } }, - "media": { - "$ref": "#/components/schemas/Media" + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." }, - "tag": { - "$ref": "#/components/schemas/Tag" + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." } - }, - "type": "object" + } }, - "FlowSequence": { - "description": "Added since version: 6.4.6.0", + "FindProductVariantRouteResponse": { + "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of flow." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "foundCombination": { + "type": "object", + "properties": { + "variantId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of a variant." + }, + "options": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Available product variant options. For example, for variant `Size`, option would be `XS`, `S`, `M`, `L`, `XL`." + } + } } - }, - "type": "object" + } }, - "ProductSearchKeyword": { - "description": "Added since version: 6.0.0.0", + "failure": { + "type": "object", + "required": [ + "errors" + ], + "additionalProperties": false, "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of Product Search Keyword." + "meta": { + "$ref": "#/components/schemas/meta" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "links": { + "$ref": "#/components/schemas/links" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "errors": { + "type": "array", + "items": { + "$ref": "#/components/schemas/error" + }, + "uniqueItems": true } - }, - "type": "object" + } }, - "ProductVisibility": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of product visibility." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" + "meta": { + "description": "Non-standard meta-information that can not be represented as an attribute or relationship.", + "type": "object", + "additionalProperties": true }, - "Salutation": { - "description": "Added since version: 6.0.0.0", + "resource": { + "description": "\"Resource objects\" appear in a JSON API document to represent resources.", + "type": "object", "required": [ - "id", - "salutationKey", - "displayName", - "letterName" + "type", + "id" ], "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of salutation." - }, - "salutationKey": { - "description": "Technical name given to salutation. For example: mr", + "type": { "type": "string" }, - "displayName": { - "type": "string", - "description": "Name given for salutation and displayed in storefront. For example: Mr" + "id": { + "type": "string" }, - "letterName": { - "type": "string", - "description": "Name given for salutation and used in the mail templates. For example, Dear Mr" + "attributes": { + "$ref": "#/components/schemas/attributes" }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + "relationships": { + "$ref": "#/components/schemas/relationships" }, - "position": { - "description": "Numerical value that indicates the order in which the defined salutations must be displayed in the frontend.", - "type": "integer", - "format": "int64" + "links": { + "$ref": "#/components/schemas/links" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "meta": { + "$ref": "#/components/schemas/meta" + } + } + }, + "relationshipLinks": { + "description": "A resource object **MAY** contain references to other resource objects (\"relationships\"). Relationships may be to-one or to-many. Relationships can be specified by including a member in a resource's links object.", + "type": "object", + "additionalProperties": true, + "properties": { + "self": { + "allOf": [ + { + "description": "A `self` member, whose value is a URL for the relationship itself (a \"relationship URL\"). This URL allows the client to directly manipulate the relationship. For example, it would allow a client to remove an `author` from an `article` without deleting the people resource itself.", + "type": "array", + "items": { + "type": "object" + } + }, + { + "$ref": "#/components/schemas/link" + } + ] }, - "updatedAt": { + "related": { + "$ref": "#/components/schemas/link" + } + } + }, + "links": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/link" + } + }, + "link": { + "description": "A link **MUST** be represented as either: a string containing the link's URL or a link object.", + "oneOf": [ + { + "description": "A string containing the link's URL.", "type": "string", - "format": "date-time", - "readOnly": true + "format": "uri-reference" }, - "translated": { + { "type": "object", - "description": "Contains the translations of all translated fields." + "required": [ + "href" + ], + "properties": { + "href": { + "description": "A string containing the link's URL.", + "type": "string", + "format": "uri-reference" + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + } } - }, - "type": "object" + ] }, - "ProductReview": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "productId", - "salesChannelId", - "languageId", - "title", - "content" - ], + "attributes": { + "description": "Members of the attributes object (\"attributes\") represent information about the resource object in which it's defined.", + "type": "object", + "additionalProperties": true + }, + "relationships": { + "description": "Members of the relationships object (\"relationships\") represent references from the resource object in which it's defined to other resource objects.", + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/relationship" + } + }, + "relationship": { + "description": "A relationship object describes links, resource linkage, or meta-information for a related resource.", + "type": "object", + "minProperties": 1, "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the product's review." + "links": { + "$ref": "#/components/schemas/relationshipLinks" }, - "productId": { - "description": "Unique identity of the product.", + "data": { + "description": "Member, whose value represents \"resource linkage\".", + "oneOf": [ + { + "$ref": "#/components/schemas/relationshipToOne" + }, + { + "$ref": "#/components/schemas/relationshipToMany" + } + ] + }, + "meta": { + "$ref": "#/components/schemas/meta" + } + }, + "additionalProperties": false + }, + "relationshipToOne": { + "allOf": [ + { + "description": "References to other resource objects in a to-one (\"relationship\"). Relationships can be specified by including a member in a resource's links object." + }, + { + "$ref": "#/components/schemas/linkage" + } + ] + }, + "relationshipToMany": { + "description": "An array of objects each containing \"type\" and \"id\" members for to-many relationships.", + "type": "array", + "items": { + "$ref": "#/components/schemas/linkage" + }, + "uniqueItems": true + }, + "linkage": { + "description": "The \"type\" and \"id\" to non-empty members.", + "type": "object", + "required": [ + "type", + "id" + ], + "properties": { + "type": { + "type": "string" + }, + "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "productVersionId": { + "meta": { + "$ref": "#/components/schemas/meta" + } + }, + "additionalProperties": false + }, + "error": { + "type": "object", + "properties": { + "id": { "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the product's version." + "description": "A unique identifier for this particular occurrence of the problem." }, - "salesChannelId": { - "description": "Unique identity of the sales channel.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "links": { + "$ref": "#/components/schemas/links" }, - "languageId": { - "description": "Unique identity of the language.", + "status": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "description": "The HTTP status code applicable to this problem, expressed as a string value." }, - "externalUser": { - "description": "External user name.", - "type": "string" + "code": { + "type": "string", + "description": "An application-specific error code, expressed as a string value." }, "title": { - "description": "Title of product review.", - "type": "string" + "type": "string", + "description": "A short, human-readable summary of the problem. It **SHOULD NOT** change from occurrence to occurrence of the problem, except for purposes of localization." }, - "content": { - "description": "Short description or subject of the project review.", - "type": "string" + "detail": { + "type": "string", + "description": "A human-readable explanation specific to this occurrence of the problem." }, - "points": { - "description": "A floating point number given to rate a product.", - "type": "number", - "format": "float" + "description": { + "type": "string", + "description": "A human-readable description of the problem." }, - "status": { - "description": "When status is set, the rating is made visible.", - "type": "boolean" + "source": { + "type": "object", + "properties": { + "pointer": { + "type": "string", + "description": "A JSON Pointer [RFC6901] to the associated entity in the request document [e.g. \"/data\" for a primary data object, or \"/data/attributes/title\" for a specific attribute]." + }, + "parameter": { + "type": "string", + "description": "A string indicating which query parameter caused the error." + } + } }, - "comment": { - "description": "Detailed review about the product.", - "type": "string" + "meta": { + "$ref": "#/components/schemas/meta" + } + }, + "additionalProperties": false + }, + "LandingPage": { + "description": "Added since version: 6.4.0.0", + "required": [ + "apiAlias", + "id", + "name", + "url" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of landing page." + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of landing page version." + }, + "active": { + "type": "boolean", + "description": "When boolean value is `true`, respective landing pages are enlisted for use." + }, + "name": { + "type": "string", + "description": "Name of landing page." }, "customFields": { "type": "object", "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, - "createdAt": { + "slotConfig": { + "type": "object" + }, + "metaTitle": { "type": "string", - "format": "date-time", - "readOnly": true + "description": "A page title indexed by search engines and appears in search results listings." }, - "updatedAt": { + "metaDescription": { "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "Notification": { - "description": "Added since version: 6.4.7.0", - "properties": { - "id": { + "description": "A short description of the page for search results listings." + }, + "keywords": { + "type": "string", + "description": "The keywords that help to search the landing page." + }, + "url": { + "type": "string", + "description": "URL of the landing page." + }, + "cmsPageId": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of notification." + "description": "Unique identity of the CMS Page." + }, + "cmsPageVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of the CMS Page's version." }, "createdAt": { "type": "string", @@ -4925,106 +5033,67 @@ "type": "string", "format": "date-time", "readOnly": true - } - }, - "type": "object" - }, - "CookieEntryCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CookieEntry" - } - }, - "EntitySearchResult": { - "type": "object", - "properties": { - "entity": { - "type": "string" }, - "total": { - "type": "integer", - "description": "The total number of found entities" + "translated": { + "type": "object", + "description": "Contains the translations of all translated fields." }, - "aggregations": { + "cmsPage": { + "$ref": "#/components/schemas/CmsPage", + "description": "CMS page layout for the landing page" + }, + "seoUrls": { + "description": "SEO-friendly URLs for the landing page across different sales channels", "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", "items": { - "type": "object" + "$ref": "#/components/schemas/SeoUrl" } }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." - }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." + "apiAlias": { + "type": "string", + "const": "landing_page" } - } + }, + "type": "object" }, - "DocumentBaseConfigSalesChannel": { + "Language": { "description": "Added since version: 6.0.0.0", "required": [ "id", - "documentBaseConfigId" + "localeId", + "name" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of document's base config sales channel." + "description": "Unique identity of language." }, - "documentBaseConfigId": { - "description": "Unique identity of document's base config.", + "parentId": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of parent language." }, - "salesChannelId": { - "description": "Unique identity of sales channel.", + "localeId": { + "description": "Unique identity of locale.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "documentTypeId": { - "description": "Unique identity of document type.", + "translationCodeId": { + "description": "Unique identity of translation code.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "AccountNewsletterRecipient": { - "type": "object", - "properties": { - "status": { - "$ref": "#/components/schemas/NewsletterStatus" + "name": { + "description": "Name of the language.", + "type": "string" }, - "apiAlias": { - "type": "string", - "const": "account_newsletter_recipient" - } - }, - "required": [ - "status", - "apiAlias" - ] - }, - "UserAccessKey": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of user access key." + "active": { + "type": "boolean" + }, + "customFields": { + "type": "object", + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, "createdAt": { "type": "string", @@ -5035,223 +5104,291 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "parent": { + "$ref": "#/components/schemas/Language", + "description": "Unique identity of language." + }, + "locale": { + "$ref": "#/components/schemas/Locale", + "description": "Locale defining regional settings (date, time, number formats)" + }, + "translationCode": { + "$ref": "#/components/schemas/Locale", + "description": "Locale used for translating content" + }, + "children": { + "description": "Child languages inheriting from this parent language", + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + } } }, "type": "object" }, - "RuleCondition": { - "description": "Added since version: 6.0.0.0", + "LineItem": { + "type": "object", "properties": { - "id": { + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + }, + "cover": { + "$ref": "#/components/schemas/Media" + }, + "dataContextHash": { + "type": "string" + }, + "dataTimestamp": { + "type": "string" + }, + "deliveryInformation": { + "$ref": "#/components/schemas/CartDeliveryInformation" + }, + "description": { "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of rule condition." + "description": "Description of line items in an order." }, - "createdAt": { + "good": { + "type": "boolean", + "description": "When set to true, it indicates the line item is physical else it is virtual." + }, + "id": { "type": "string", - "format": "date-time", - "readOnly": true + "description": "Unique identity of line item." }, - "updatedAt": { + "label": { "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "ProductListingCriteria": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "description": "It is a typical product name given to the line item." }, - { + "modified": { + "type": "boolean", + "description": "When boolean value is `true`, line items are said to be modified." + }, + "modifiedByApp": { + "type": "boolean" + }, + "payload": { + "$ref": "#/components/schemas/ProductJsonApi" + }, + "price": { "type": "object", - "description": "Additional search parameters for product listings", "properties": { - "order": { - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "type": "string" - }, - "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 + "apiAlias": { + "type": "string", + "const": "calculated_price" }, - "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" + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "const": "cart_tax_calculated" + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } }, - "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.", + "listPrice": { "oneOf": [ { - "type": "string" + "$ref": "#/components/schemas/CartListPrice" }, { "type": "null" } ] - } - } - } - ], - "properties": { - "filter": { - "properties": { - "type": { - "description": "To filter the results and aggregations with filter types like ==, >=, etc." }, - "field": { - "description": "To filter the results and aggregations by field like an property identifier." + "quantity": { + "type": "number" }, - "value": { - "description": "To filter the results and aggregations by value." - } - } - }, - "sort": { - "properties": { - "field": { - "description": "Sort the search results by field like an property identifier." + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] }, - "order": { - "description": "Sort the search results of orders by ascending or descending." + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "const": "cart_regulation_price" + } + } + }, + { + "type": "null" + } + ] }, - "naturalSorting": { - "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." + "totalPrice": { + "type": "number" + }, + "unitPrice": { + "type": "number" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } } - } + }, + "required": [ + "apiAlias", + "totalPrice", + "quantity", + "unitPrice" + ] }, - "post-filter": { + "priceDefinition": { + "$ref": "#/components/schemas/CartPriceQuantity" + }, + "quantity": { + "type": "number", + "description": "Number of items of product." + }, + "quantityInformation": { + "type": "object", "properties": { - "type": { - "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." + "maxPurchase": { + "type": "number" }, - "field": { - "description": "To filter only the results but not the aggregations by field like an property identifier." + "minPurchase": { + "type": "number" }, - "value": { - "description": "To filter only the results but not the aggregations by value." + "purchaseSteps": { + "type": "number" } } + }, + "referencedId": { + "type": "string", + "description": "Unique identity of type of entity." + }, + "removable": { + "type": "boolean", + "description": "Allows the line item to be removable from the cart when set to true." + }, + "stackable": { + "type": "boolean", + "description": "Allows to change the quantity of the line item when set to true." + }, + "states": { + "deprecated": true, + "type": "array", + "items": { + "type": "string", + "enum": [ + "is-physical", + "is-download" + ] + } + }, + "type": { + "$ref": "#/components/schemas/OrderLineItem/properties/type", + "description": "Type refers to the entity type of an item whether it is product or promotion for instance." + }, + "uniqueIdentifier": { + "type": "string" } - } + }, + "required": [ + "id", + "type" + ] }, - "PaymentMethod": { + "ListPrice": { + "type": "object", + "description": "", + "properties": { + "discount": { + "type": "number" + }, + "percentage": { + "type": "number" + }, + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "const": "cart_list_price" + } + }, + "required": [ + "apiAlias" + ] + }, + "Locale": { "description": "Added since version: 6.0.0.0", "required": [ "id", - "technicalName", - "name" + "code", + "name", + "territory" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of payment method." + "description": "Unique identity of locale." }, - "name": { - "type": "string", - "description": "Name of the payment method." + "code": { + "description": "Code given to the locale. For example: en-CA.", + "type": "string" }, - "distinguishableName": { + "name": { "type": "string", - "readOnly": true, - "description": "System identifier name for payment method." + "description": "Name of the locale. For example: English." }, - "description": { + "territory": { "type": "string", - "description": "A short description about the payment method." - }, - "position": { - "description": "The order of the tabs of your defined payment methods in the storefront by entering numerical values like 1,2,3, etc.", - "type": "integer", - "format": "int64" - }, - "active": { - "description": "When boolean value is `true`, the payment methods are available for selection in the storefront.", - "type": "boolean" - }, - "afterOrderEnabled": { - "description": "When set to true, customers are redirected to the payment options page to choose a new payment method on order failure.", - "type": "boolean" + "description": "Name of the location. For example: Canada." }, "customFields": { "type": "object", "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, - "mediaId": { - "description": "Unique identity of media.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "technicalName": { - "type": "string" - }, - "shortName": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "string" - }, "createdAt": { "type": "string", "format": "date-time", @@ -5265,442 +5402,270 @@ "translated": { "type": "object", "description": "Contains the translations of all translated fields." - }, - "media": { - "$ref": "#/components/schemas/Media", - "description": "Payment method logo or icon image" } }, "type": "object" }, - "CustomerTag": { - "description": "Added since version: 6.0.0.0", + "MainCategory": { + "description": "Added since version: 6.1.0.0", "required": [ - "customerId", - "tagId" + "id", + "productId", + "categoryId", + "salesChannelId" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the customer tag." + "description": "Unique identity of main category." }, - "customerId": { + "productId": { + "description": "Unique identity of the product.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the customer." + "description": "Unique identity of the product's version." }, - "tagId": { + "categoryId": { + "description": "Unique identity of the category.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "categoryVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the tag." + "description": "Unique identity of the category's version." }, - "tag": { - "$ref": "#/components/schemas/Tag" + "salesChannelId": { + "description": "Unique identity of the sales channel.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true } }, "type": "object" }, - "CartPriceQuantity": { + "MeasurementUnits": { "type": "object", + "description": "Configuration of the measurement system", "properties": { - "apiAlias": { + "system": { "type": "string", - "const": "cart_price_quantity" - }, - "isCalculated": { - "type": "boolean" - }, - "listPrice": { - "$ref": "#/components/schemas/CartListPrice" - }, - "price": { - "type": "number" - }, - "quantity": { - "type": "number" + "enum": [ + "metric", + "imperial" + ], + "default": "metric", + "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." }, - "regulationPrice": { + "units": { + "type": "object", + "description": "Units used in the measurement system.", "properties": { - "price": { - "type": "number", - "format": "float" - } - }, - "type": "object" - }, - "taxRules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } + "length": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Unit of length." + }, + "weight": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." } } - }, - "type": { - "type": "string" } - }, - "required": [ - "apiAlias" - ] + } }, - "Price": { - "type": "object", - "description": "Price object", + "Media": { + "description": "Added since version: 6.0.0.0", + "required": [ + "apiAlias", + "fileExtension", + "fileName", + "hasFile", + "path", + "private", + "url", + "id" + ], "properties": { - "currencyId": { - "description": "Unique identity of the associated currency.", + "id": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of media." }, - "gross": { - "description": "Gross price for the associated currency.", - "type": "number" + "mimeType": { + "description": "A string sent along with a file indicating the type of the file. For example: image/jpeg.", + "type": "string" }, - "net": { - "description": "Net price for the associated currency.", - "type": "number" + "fileExtension": { + "description": "Type of file indication. For example: jpeg, png.", + "type": "string" }, - "linked": { - "description": "Whether gross and net prices are linked through the tax configuration.", - "type": "boolean" + "uploadedAt": { + "description": "Date and time at which media was added.", + "type": "string", + "format": "date-time", + "readOnly": true }, - "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" - ] + "fileName": { + "description": "Name of the media file uploaded.", + "type": "string" }, - "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" - ] + "fileSize": { + "description": "Size of the file media file uploaded.", + "type": "integer", + "format": "int64", + "readOnly": true }, - "regulationPrice": { - "description": "Reference price used for legal price disclosures.", + "metaData": { "type": "object", + "readOnly": true, "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" + "height": { + "type": "integer", + "format": "int64" }, - "linked": { - "description": "Whether gross and net regulation prices are linked through the tax configuration.", - "type": "boolean" + "width": { + "type": "integer", + "format": "int64" } }, - "required": [ - "gross", - "net" - ] - } - }, - "required": [ - "currencyId", - "gross", - "net" - ] - }, - "AggregationEntity": { - "title": "AggregationEntity", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" + "description": "Details of the media file uploaded." }, - "type": { - "description": "The type of aggregation", + "config": { + "type": "object" + }, + "alt": { "type": "string", - "enum": [ - "entity" - ] + "description": "Alternate text for media." }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "title": { + "type": "string", + "description": "Title name give to the media." }, - "definition": { - "description": "The entity definition e.g \"product_manufacturer\".", + "url": { + "description": "Runtime field, cannot be used as part of the criteria.", "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", + }, + "path": { "type": "string" }, - "type": { - "description": "The type of aggregation", + "hasFile": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "boolean" + }, + "private": { + "description": "When `true`, the media display is kept private.", + "type": "boolean" + }, + "customFields": { + "type": "object", + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "createdAt": { "type": "string", - "enum": [ - "filter" - ] + "format": "date-time", + "readOnly": true }, - "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", + "updatedAt": { "type": "string", - "enum": [ - "terms" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "format": "date-time", + "readOnly": true }, - "limit": { - "description": "The number of terms to return", - "type": "number" + "translated": { + "type": "object", + "description": "Contains the translations of all translated fields." }, - "sort": { + "thumbnails": { + "description": "Generated thumbnail images in various sizes", "type": "array", - "description": "Sorting the aggregation result.", "items": { - "$ref": "#/components/schemas/Sort" + "$ref": "#/components/schemas/MediaThumbnail" } + }, + "apiAlias": { + "type": "string", + "const": "media" + }, + "extensions": { + "description": "To store additional data to a media from extensions." } }, - "required": [ - "name", - "type", - "field" - ] + "type": "object" }, - "AggregationHistogram": { - "title": "AggregationHistogram", - "type": "object", + "MediaThumbnail": { + "description": "Added since version: 6.0.0.0", + "required": [ + "url", + "id", + "mediaId", + "width", + "height" + ], "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of media thumbnail." }, - "type": { - "description": "The type of aggregation", + "mediaId": { + "description": "Unique identity of media.", "type": "string", - "enum": [ - "histogram" - ] + "pattern": "^[0-9a-f]{32}$" }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "mediaThumbnailSizeId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "interval": { - "description": "The interval of the histogram", - "type": "number" + "width": { + "description": "Width of the thumbnail.", + "type": "integer", + "format": "int64", + "readOnly": true }, - "format": { - "description": "The format of the histogram", - "type": "string" + "height": { + "description": "Height of the thumbnail.", + "type": "integer", + "format": "int64", + "readOnly": true }, - "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", + "url": { + "description": "Public url of media thumbnail.", "type": "string" }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "range" - ] - }, - "field": { - "description": "The field you want to aggregate over.", + "path": { "type": "string" }, - "ranges": { - "description": "The ranges of the aggregation", - "type": "array", - "items": { - "type": "object", - "anyOf": [ - { - "type": "object", - "title": "From and to", - "properties": { - "from": { - "type": "number", - "description": "The lower bound of the range" - }, - "to": { - "type": "number", - "description": "The upper bound of the range" - } - }, - "required": [ - "from", - "to" - ] - }, - { - "type": "object", - "title": "From only", - "properties": { - "from": { - "type": "string", - "description": "The lower bound of the range" - } - }, - "required": [ - "from" - ] - }, - { - "type": "object", - "title": "To only", - "properties": { - "to": { - "type": "string", - "description": "The upper bound of the range" - } - }, - "required": [ - "to" - ] - } - ] - } - } - }, - "required": [ - "name", - "type", - "field", - "ranges" - ] - }, - "WishlistLoadRouteResponse": { - "type": "object", - "required": [ - "products" - ], - "properties": { - "wishlist": { + "customFields": { "type": "object", - "properties": { - "customerId": { - "type": "string", - "description": "Unique identity of the customer." - }, - "salesChannelId": { - "type": "string", - "description": "Unique identity of the sales channel." - } - } - }, - "products": { - "$ref": "#/components/schemas/ProductListingResult" - } - } - }, - "PromotionSetgroup": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of promotion set group." + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, "createdAt": { "type": "string", @@ -5715,6 +5680,25 @@ }, "type": "object" }, + "NavigationRouteResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + }, + "properties": { + "id": { + "description": "Unique identity of navigation route response." + } + } + }, + "NavigationType": { + "type": "string", + "enum": [ + "main-navigation", + "footer-navigation", + "service-navigation" + ] + }, "NewsletterStatus": { "type": "string", "enum": [ @@ -5726,271 +5710,211 @@ ], "description": "The subscription status. Possible values are: notSet, optIn, optOut, direct, undefined." }, - "ProductDetailResponse": { - "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", - "properties": { - "product": { - "$ref": "#/components/schemas/Product" - }, - "configurator": { - "type": "array", - "description": "List of property groups with their corresponding options and information on how to display them.", - "items": { - "$ref": "#/components/schemas/PropertyGroup" - } - }, - "id": { - "description": "Unique identity of product detail response." - }, - "available": { - "description": "When boolean value is true, the product is available for purchase." - }, - "isCloseout": { - "description": "Boolean value to check if the product is still buyable when stock value is 0." - }, - "displayGroup": { - "description": "Internal field." - }, - "manufacturerNumber": { - "description": "Unique number of the product manufacturer." - }, - "stock": { - "description": "Quantity of product available." - }, - "sortedProperties": { - "description": "Properties of the product that are sorted" - } - }, - "required": [ - "product" - ] - }, - "CmsSlot": { - "description": "Added since version: 6.0.0.0", - "required": [ - "apiAlias", - "id", - "type", - "slot", - "blockId" - ], + "Order": { + "description": "Added since version: 6.0.0.0", + "required": [ + "documents", + "orderDate", + "stateMachineState", + "price", + "id", + "billingAddressId", + "currencyId", + "languageId", + "salesChannelId", + "orderDateTime", + "currencyFactor" + ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of CMS slot." + "description": "Unique identity of order." }, "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "cmsBlockVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of CMS block version." - }, - "fieldConfig": { - "type": "object", - "description": "Con info of cms slot" - }, - "type": { - "description": "It indicates the types of content that can be defined within the slot which includes `image`, `text`, `form`, `product-listing`, `category-navigation`, `product-box`, `buy-box`, `sidebar-filter`, etc.", - "type": "string" + "description": "Unique identity of order version." }, - "slot": { - "description": "Key-value pair to configure which element to be shown in which slot.", + "orderNumber": { + "description": "Unique number associated with every order.", "type": "string" }, - "locked": { - "type": "boolean", - "description": "When locked, then CMS slot config element cannot be configured." - }, - "config": { - "type": "object", - "description": "Specifies detailed information about how the component is to be rendered." - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "data": { - "type": "object", - "readOnly": true, - "description": "Each cms slot (element) has a config that has values defined in the admin. When cms loads, each Resolver class adds the resolved config data to this value." - }, - "blockId": { - "description": "Unique identity of CMS block where slot is defined.", + "billingAddressId": { + "description": "Unique identity of the billing address.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." - }, - "block": { - "$ref": "#/components/schemas/CmsBlock" - }, - "apiAlias": { - "type": "string", - "const": "cms_slot" - }, - "VersionId": { - "description": "Unique identity of CMS slot's version." - } - }, - "type": "object" - }, - "Snippet": { - "description": "Added since version: 6.0.0.0", - "required": [ - "setId", - "translationKey", - "value" - ], - "properties": { - "id": { + "billingAddressVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of snippet." + "description": "Unique identity of the billing address version." }, - "setId": { - "description": "Unique identity od snippet set.", + "primaryOrderDeliveryId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "translationKey": { - "description": "Reference to the snippet in the template.", - "type": "string" - }, - "value": { - "description": "Value of the key.", - "type": "string" - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "NumberRangeState": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of number range's state." - }, - "createdAt": { + "primaryOrderDeliveryVersionId": { "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "Customer": { - "description": "Added since version: 6.0.0.0", - "required": [ - "apiAlias", - "activeBillingAddress", - "activeShippingAddress", - "id", - "groupId", - "salesChannelId", - "languageId", - "defaultBillingAddressId", - "defaultShippingAddressId", - "customerNumber", - "firstName", - "lastName", - "email" - ], - "properties": { - "id": { + "primaryOrderTransactionId": { "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the customer." + "pattern": "^[0-9a-f]{32}$" }, - "groupId": { - "description": "Unique identity of customer group.", + "primaryOrderTransactionVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "salesChannelId": { - "description": "Unique identity of sales channel.", + "currencyId": { + "description": "Unique identity of the currency.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, "languageId": { - "description": "Unique identity of language.", + "description": "Unique identity of the language.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "lastPaymentMethodId": { - "description": "Unique identity of previous payment method.", + "salesChannelId": { + "description": "Unique identity of the sales channel.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "defaultBillingAddressId": { - "description": "Unique identity of default billing address.", + "orderDateTime": { + "description": "Timestamp when the order was placed.", "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time" }, - "defaultShippingAddressId": { - "description": "Unique identity of default shipping address.", + "orderDate": { + "description": "Date when the order was placed.", "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "customerNumber": { - "description": "Unique number assigned to identity a customer.", - "type": "string" + "readOnly": true }, - "salutationId": { - "description": "Unique identity of salutation.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "price": { + "type": "object", + "$ref": "#/components/schemas/CartPrice", + "properties": { + "netPrice": { + "description": "Net price of the product." + }, + "totalPrice": { + "description": "Gross price of the product." + }, + "positionPrice": { + "description": "Price of each line item in the cart multiplied by its quantity excluding charges like shipping cost, rules, taxes etc." + }, + "rawTotal": { + "description": "The total value before rounding off." + }, + "taxStatus": { + "description": "TaxStatus takes `Free`, `Net` or `Gross` as values." + } + } }, - "firstName": { - "description": "First name of the customer.", - "type": "string" + "amountTotal": { + "description": "Gross price of the order.", + "type": "number", + "format": "float", + "readOnly": true }, - "lastName": { - "description": "Last name of the customer.", - "type": "string" + "amountNet": { + "description": "Net price of the order.", + "type": "number", + "format": "float", + "readOnly": true }, - "email": { - "description": "Email ID of the customer.", - "type": "string" + "positionPrice": { + "description": "Price of each line item in the cart multiplied by its quantity excluding charges like shipping cost, rules, taxes etc.", + "type": "number", + "format": "float", + "readOnly": true }, - "title": { - "description": "Titles or honorifics like Mr, Mrs, etc.", + "taxStatus": { + "description": "TaxStatus takes `Free`, `Net` or `Gross` as values.", + "type": "string", + "readOnly": true + }, + "shippingCosts": { + "required": [ + "unitPrice", + "totalPrice", + "quantity" + ], + "properties": { + "unitPrice": { + "type": "number", + "format": "float", + "description": "Shipping cost of product per item (where, quantity=1)." + }, + "totalPrice": { + "type": "number", + "format": "float", + "description": "Shipping cost of product based on quantity." + }, + "quantity": { + "type": "integer", + "format": "int64", + "description": "Number of items of each product." + }, + "calculatedTaxes": { + "type": "object", + "description": "Contains calculated taxes based on shipping costs/methods." + }, + "taxRules": { + "type": "object", + "description": "Pricing based on multiple taxes." + }, + "referencePrice": { + "type": "object", + "description": "Original cost price of the product." + }, + "listPrice": { + "properties": { + "price": { + "type": "number", + "format": "float", + "description": "Price of each line item." + }, + "discount": { + "type": "number", + "format": "float", + "description": "Absolute discount on each line item." + }, + "percentage": { + "type": "number", + "format": "float", + "description": "Discount in percentage." + } + }, + "type": "object" + }, + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float", + "description": "Contains cheapest price from last 30 days as per EU law." + } + }, + "type": "object" + } + }, + "type": "object" + }, + "shippingTotal": { + "description": "Total shipping cost of the ordered product.", + "type": "number", + "format": "float", + "readOnly": true + }, + "currencyFactor": { + "description": "Rate at which currency is exchanged.", + "type": "number", + "format": "float" + }, + "deepLinkCode": { + "description": "It is a generated special code linked to email. It is used to access orders placed by guest customers.", "type": "string" }, "affiliateCode": { @@ -6001,93 +5925,28 @@ "description": "A campaign code is the globally unique identifier for a campaign.", "type": "string" }, - "active": { - "description": "To keep the status of the customer active, the boolean value is set to `true`.", - "type": "boolean" - }, - "doubleOptInRegistration": { - "description": "Set to `true` to allow user subscriptions to an email marketing list.", - "type": "boolean" - }, - "doubleOptInEmailSentDate": { - "description": "Date and time when the double opt-in email was sent.", - "type": "string", - "format": "date-time" - }, - "doubleOptInConfirmDate": { - "description": "Date and time when the double opt-in email was confirmed.", - "type": "string", - "format": "date-time" - }, - "hash": { - "description": "Password hash for account recovery.", + "customerComment": { + "description": "Comments given by comments.", "type": "string" }, - "guest": { - "description": "Boolean value is `true` if it is to be a guest account.", - "type": "boolean" - }, - "firstLogin": { - "description": "To capture date and time of customer's first login.", - "type": "string", - "format": "date-time" - }, - "lastLogin": { - "description": "To capture date and time of customer's last login.", - "type": "string", - "format": "date-time" - }, - "birthday": { - "description": "To capture customer's birthday details.", + "source": { + "description": "Source of orders either via normal order placement or subscriptions.", "type": "string" }, - "lastOrderDate": { - "description": "Captures last order date.", - "type": "string", - "format": "date-time", - "readOnly": true - }, - "orderCount": { - "description": "Captures the number of orders placed.", - "type": "integer", - "format": "int64", - "readOnly": true - }, - "orderTotalAmount": { - "description": "Sum of total amount to be paid.", - "type": "number", - "format": "float", - "readOnly": true - }, - "reviewCount": { - "description": "Number of reviews the customer has given.", - "type": "integer", - "format": "int64", - "readOnly": true + "taxCalculationType": { + "type": "string" }, "customFields": { "type": "object", "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, - "tagIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true, - "description": "Unique identity tag names given to the line item." - }, - "requestedGroupId": { - "description": "Unique identity of requested group.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, "createdById": { + "description": "Unique identity of createdBy.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, "updatedById": { + "description": "Unique identity of updatedBy.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, @@ -6101,125 +5960,169 @@ "format": "date-time", "readOnly": true }, - "group": { - "$ref": "#/components/schemas/CustomerGroup", - "description": "Customer group determining pricing and permissions" - }, - "language": { - "$ref": "#/components/schemas/Language", - "description": "Preferred language for customer communication" - }, - "lastPaymentMethod": { - "$ref": "#/components/schemas/PaymentMethod", - "description": "Last used payment method by the customer" + "stateMachineState": { + "$ref": "#/components/schemas/StateMachineState", + "description": "Current order state (e.g., open, in_progress, completed, cancelled)" }, - "defaultBillingAddress": { - "$ref": "#/components/schemas/CustomerAddress", - "description": "Default billing address for the customer" + "primaryOrderDelivery": { + "$ref": "#/components/schemas/OrderDelivery", + "description": "Primary delivery information for the order" }, - "activeBillingAddress": { - "$ref": "#/components/schemas/CustomerAddress", - "description": "Currently active billing address in the session" + "primaryOrderTransaction": { + "$ref": "#/components/schemas/OrderTransaction", + "description": "Primary payment transaction for the order" }, - "defaultShippingAddress": { - "$ref": "#/components/schemas/CustomerAddress", - "description": "Default shipping address for the customer" + "orderCustomer": { + "$ref": "#/components/schemas/OrderCustomer", + "description": "Customer information associated with the order" }, - "activeShippingAddress": { - "$ref": "#/components/schemas/CustomerAddress", - "description": "Currently active shipping address in the session" + "currency": { + "$ref": "#/components/schemas/Currency", + "description": "Currency used for the order" }, - "salutation": { - "$ref": "#/components/schemas/Salutation", - "description": "Customer salutation (e.g., Mr., Mrs., Ms.)" + "language": { + "$ref": "#/components/schemas/Language", + "description": "Language used when placing the order" }, "addresses": { - "description": "All addresses saved for the customer", + "description": "All addresses associated with the order (billing and shipping)", "type": "array", "items": { - "$ref": "#/components/schemas/CustomerAddress" + "$ref": "#/components/schemas/OrderAddress" } }, - "tags": { - "description": "Tags assigned to the customer for organization and segmentation", + "billingAddress": { + "$ref": "#/components/schemas/OrderAddress", + "description": "Billing address for the order" + }, + "deliveries": { + "description": "Delivery information including shipping address and tracking", "type": "array", "items": { - "$ref": "#/components/schemas/Tag" + "$ref": "#/components/schemas/OrderDelivery" } }, - "apiAlias": { - "type": "string", - "const": "customer" + "lineItems": { + "description": "Order line items (products, discounts, fees)", + "type": "array", + "items": { + "$ref": "#/components/schemas/OrderLineItem" + } }, - "defaultPaymentMethodId": { - "description": "Unique identity of default payment method." + "transactions": { + "description": "Payment transactions for the order", + "type": "array", + "items": { + "$ref": "#/components/schemas/OrderTransaction" + } }, - "company": { - "description": "Company name of the customer." - }, - "vatIds": { - "description": "Unique identity of VAT." + "documents": { + "description": "Generated documents (invoices, delivery notes, credit notes)", + "type": "array", + "items": { + "$ref": "#/components/schemas/Document" + } }, - "accountType": { - "description": "Account type can be personal or business." + "tags": { + "description": "Tags assigned to the order for organization and filtering", + "type": "array", + "items": { + "$ref": "#/components/schemas/Tag" + } }, "extensions": { - "properties": { - "specificFeatures": { - "description": "To store additional data to a customer from extensions." - } - } + "description": "To store additional data to an order from extensions." } }, - "type": "object", - "oneOf": [ - { - "required": [ - "accountType" - ], - "properties": { - "accountType": { - "type": "string", - "enum": [ - "private" - ] - } - } - }, - { - "required": [ - "accountType", - "vatIds", - "company" - ], - "properties": { - "accountType": { - "type": "string", - "enum": [ - "business" - ] - }, - "vatIds": { - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - }, - "company": { - "type": "string" - } - } - } - ] + "type": "object" }, - "CustomEntity": { - "description": "Added since version: 6.4.9.0", + "OrderAddress": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "countryId", + "firstName", + "lastName", + "street", + "city" + ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of a custom entity." + "description": "Unique identity of order's address." + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of OrderAddresses version." + }, + "countryId": { + "description": "Unique identity of country.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryStateId": { + "description": "Unique identity of state.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "firstName": { + "description": "First name of the customer.", + "type": "string" + }, + "lastName": { + "description": "Last name of the customer.", + "type": "string" + }, + "street": { + "description": "Street address", + "type": "string" + }, + "zipcode": { + "description": "Zip code of the country.", + "type": "string" + }, + "city": { + "description": "Name of the city.", + "type": "string" + }, + "company": { + "description": "Name of the company.", + "type": "string" + }, + "department": { + "description": "Name of the department.", + "type": "string" + }, + "title": { + "description": "Title name given to customer like DR. , Prof., etc.", + "type": "string" + }, + "phoneNumber": { + "description": "Phone number of the customer.", + "type": "string" + }, + "additionalAddressLine1": { + "description": "Additional address input if necessary.", + "type": "string" + }, + "additionalAddressLine2": { + "description": "Additional address input if necessary.", + "type": "string" + }, + "hash": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "string" + }, + "customFields": { + "type": "object", + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "vatId": { + "description": "Unique identity of VAT.", + "type": "string", + "deprecated": true }, "createdAt": { "type": "string", @@ -6230,17 +6133,77 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "$ref": "#/components/schemas/CountryState" + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, "type": "object" }, - "User": { + "OrderCustomer": { "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "email", + "firstName", + "lastName" + ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of user." + "description": "Unique identity of order customer." + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of OrderCustomer's version." + }, + "email": { + "description": "Email address of the customer.", + "type": "string" + }, + "salutationId": { + "description": "Unique identity of salutation.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "firstName": { + "description": "First name of the customer.", + "type": "string" + }, + "lastName": { + "description": "Last name of the customer.", + "type": "string" + }, + "company": { + "description": "Name of the company.", + "type": "string" + }, + "title": { + "description": "Title name given to the customer like Dr, prof. etc.", + "type": "string" + }, + "vatIds": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Unique identity of VAT." + }, + "customerNumber": { + "description": "Unique number assigned to the customer.", + "type": "string" + }, + "customFields": { + "type": "object", + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, "createdAt": { "type": "string", @@ -6251,63 +6214,83 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, "type": "object" }, - "OrderTransactionCaptureRefundPosition": { - "description": "Added since version: 6.4.12.0", + "OrderDelivery": { + "description": "Added since version: 6.0.0.0", "required": [ "id", - "refundId", - "orderLineItemId", - "amount" + "orderId", + "shippingOrderAddressId", + "shippingMethodId", + "stateId", + "shippingDateEarliest", + "shippingDateLatest" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of order transaction capture refund position." + "description": "Unique identity of Order's delivery." }, "versionId": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of order transaction capture refund position's version." + "description": "Unique identity of OrderDelivery's version." }, - "refundId": { - "description": "Unique identity of order transaction capture refund.", + "orderId": { + "description": "Unique identity of order.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "refundVersionId": { + "orderVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of order transaction capture refund's version." + "description": "Unique identity of order's version." }, - "orderLineItemId": { - "description": "Unique identity of order line item.", + "shippingOrderAddressId": { + "description": "Unique identity of order's shipping address.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "orderLineItemVersionId": { + "shippingOrderAddressVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of order line item version." - }, - "externalReference": { - "description": "External payment provider token.", - "type": "string" + "description": "Unique identity of order's shipping address version." }, - "reason": { - "description": "Reason for refunding the amount for an order.", - "type": "string" + "shippingMethodId": { + "description": "Unique identity of shipping method.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "quantity": { - "description": "Quantity of line item to be refunded.", - "type": "integer", - "format": "int64" + "stateId": { + "description": "Unique identity of state.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "amount": { + "trackingCodes": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Tracking code is a unique URL code assigned to each package, which allows you to monitor the movement of the parcel." + }, + "shippingDateEarliest": { + "description": "Date and time of earliest delivery of products.", + "type": "string", + "format": "date-time" + }, + "shippingDateLatest": { + "description": "Date and time of latest delivery of products.", + "type": "string", + "format": "date-time" + }, + "shippingCosts": { "required": [ "unitPrice", "totalPrice", @@ -6317,12 +6300,12 @@ "unitPrice": { "type": "number", "format": "float", - "description": "Price of product per item (where, quantity=1)." + "description": "Shipping cost of product per item (where, quantity=1)." }, "totalPrice": { "type": "number", "format": "float", - "description": "Cost of product based on quantity." + "description": "Shipping cost of product based on quantity." }, "quantity": { "type": "integer", @@ -6330,27 +6313,33 @@ "description": "Number of items of each product." }, "calculatedTaxes": { - "type": "object" + "type": "object", + "description": "Contains calculated taxes based on shipping costs/methods." }, "taxRules": { - "type": "object" + "type": "object", + "description": "Pricing based on multiple taxes." }, "referencePrice": { - "type": "object" + "type": "object", + "description": "Original cost price of the product." }, "listPrice": { "properties": { "price": { "type": "number", - "format": "float" + "format": "float", + "description": "Price of each line item." }, "discount": { "type": "number", - "format": "float" + "format": "float", + "description": "Absolute discount on each line item." }, "percentage": { "type": "number", - "format": "float" + "format": "float", + "description": "Discount in percentage." } }, "type": "object" @@ -6359,7 +6348,8 @@ "properties": { "price": { "type": "number", - "format": "float" + "format": "float", + "description": "Contains cheapest price from last 30 days as per EU law." } }, "type": "object" @@ -6381,80 +6371,151 @@ "format": "date-time", "readOnly": true }, - "orderLineItem": { - "$ref": "#/components/schemas/OrderLineItem" + "stateMachineState": { + "$ref": "#/components/schemas/StateMachineState", + "description": "Current delivery state (e.g., open, shipped, delivered, cancelled)" }, - "orderTransactionCaptureRefund": { - "$ref": "#/components/schemas/OrderTransactionCaptureRefund" + "shippingOrderAddress": { + "$ref": "#/components/schemas/OrderAddress", + "description": "Shipping address for this delivery" }, - "shippingCosts": { + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod", + "description": "Shipping method used for this delivery" + }, + "positions": { + "description": "Line items included in this delivery", + "type": "array", + "items": { + "$ref": "#/components/schemas/OrderDeliveryPosition" + } + } + }, + "type": "object" + }, + "OrderDeliveryPosition": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "orderDeliveryId", + "orderLineItemId" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of order delivery position." + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of OrderDeliveryPosition's version." + }, + "orderDeliveryId": { + "description": "Unique identity of order delivery.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "orderDeliveryVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of order delivery's version." + }, + "orderLineItemId": { + "description": "Unique identity of line items in an order.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "orderLineItemVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of line item's version in an order." + }, + "price": { + "required": [ + "unitPrice", + "totalPrice", + "quantity" + ], "properties": { + "unitPrice": { + "type": "number", + "format": "float", + "description": "Price of product per item (where, quantity=1)." + }, + "totalPrice": { + "type": "number", + "format": "float", + "description": "Cost of product based on quantity." + }, + "quantity": { + "type": "integer", + "format": "int64", + "description": "Number of items of each product." + }, "calculatedTaxes": { - "description": "Contains calculated taxes based on shipping costs/methods." + "type": "object", + "description": "Contains calculated taxes based on order delivery price." }, "taxRules": { + "type": "object", "description": "Pricing based on multiple taxes." }, "referencePrice": { + "type": "object", "description": "Original cost price of the product." }, "listPrice": { "properties": { "price": { + "type": "number", + "format": "float", "description": "Price of each line item." }, "discount": { + "type": "number", + "format": "float", "description": "Absolute discount on each line item." }, "percentage": { + "type": "number", + "format": "float", "description": "Discount in percentage." } - } + }, + "type": "object" }, "regulationPrice": { "properties": { "price": { + "type": "number", + "format": "float", "description": "Contains cheapest price from last 30 days as per EU law." } - } + }, + "type": "object" } - } - } - }, - "type": "object" - }, - "AppCmsBlock": { - "description": "Added since version: 6.4.2.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of app's CMS block." + }, + "type": "object" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "unitPrice": { + "description": "Price of product per item (where, quantity=1).", + "type": "number", + "format": "float" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "totalPrice": { + "description": "Cost of product based on quantity.", + "type": "number", + "format": "float" }, - "translated": { + "quantity": { + "description": "Number of items of each product.", + "type": "integer", + "format": "int64" + }, + "customFields": { "type": "object", - "description": "Contains the translations of all translated fields." - } - }, - "type": "object" - }, - "Plugin": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of a plugin." + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, "createdAt": { "type": "string", @@ -6465,56 +6526,249 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." } }, "type": "object" }, - "ProductCrossSelling": { - "description": "Added since version: 6.1.0.0", + "OrderLineItem": { + "description": "Added since version: 6.0.0.0", "required": [ + "apiAlias", "id", - "name" + "orderId", + "identifier", + "quantity", + "label", + "children", + "states" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of product cross selling." + "description": "Unique identity of OrderLineItem." }, - "name": { + "versionId": { "type": "string", - "description": "Name defined for Product cross selling." + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of OrderLineItem's version." }, - "position": { - "description": "The order of the tabs of your defined cross-selling actions in the storefront by entering numerical values like 1,2,3, etc.", - "type": "integer", - "format": "int64" + "orderId": { + "description": "Unique identity of order.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "sortBy": { - "description": "To sort the display of products by name, price or publication (descending, ascending) date.", - "type": "string" + "orderVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of order's version." }, - "sortDirection": { - "description": "To sort the display of products by ascending or descending order.", - "type": "string" + "productId": { + "description": "Unique identity of product.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "type": { - "description": "Type of product assignment for cross-selling. It can either be Dynamic product group or Manual assignment.", + "productVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of products's version." + }, + "promotionId": { + "description": "Unique identity of product.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "parentId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of parent product." + }, + "parentVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of parent's version." + }, + "coverId": { + "description": "Unique identity of cover image.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "identifier": { + "description": "It is a unique identity of an item in cart before its converted to an order.", "type": "string" }, - "active": { - "description": "When set to active, the cross-selling feature is enabled.", + "referencedId": { + "description": "Unique identity of type of entity.", + "type": "string" + }, + "quantity": { + "description": "Number of items of product.", + "type": "integer", + "format": "int64" + }, + "label": { + "description": "It is a typical product name given to the line item.", + "type": "string" + }, + "payload": { + "type": "object", + "properties": { + "categoryIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "customFields": { + "type": "object" + }, + "features": { + "type": "array" + }, + "isCloseout": { + "type": "boolean" + }, + "isNew": { + "type": "boolean" + }, + "manufacturerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "markAsTopseller": { + "type": "boolean" + }, + "optionIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "options": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PropertyGroupOption" + } + }, + "parentId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productNumber": { + "type": "string" + }, + "propertyIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "releaseDate": { + "type": "string", + "format": "date-time" + }, + "stock": { + "type": "integer", + "format": "int64" + }, + "streamIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "tagIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "taxId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productType": { + "$ref": "#/components/schemas/Product/properties/type" + } + }, + "description": "Any data related to product is passed." + }, + "good": { + "description": "When set to true, it indicates the line item is physical else it is virtual.", "type": "boolean" }, - "limit": { - "description": "The maximum number of products to be displayed in cross-selling on the item detail page of your item.", + "removable": { + "description": "Allows the line item to be removable from the cart when set to true.", + "type": "boolean" + }, + "stackable": { + "description": "Allows to change the quantity of the line item when set to true.", + "type": "boolean" + }, + "position": { + "description": "Position of line items placed in an order.", "type": "integer", "format": "int64" }, + "priceDefinition": { + "type": "object", + "$ref": "#/components/schemas/CartPriceQuantity", + "description": "Description of how the price has to be calculated. For example, in percentage or absolute value, etc." + }, + "unitPrice": { + "description": "Price of product per item (where, quantity=1).", + "type": "number", + "format": "float" + }, + "totalPrice": { + "description": "Cost of product based on quantity.", + "type": "number", + "format": "float" + }, + "description": { + "description": "Description of line items in an order.", + "type": "string" + }, + "type": { + "description": "Type refers to the entity type of an item whether it is product or promotion for instance.", + "type": "string", + "enum": [ + "product", + "credit", + "custom", + "promotion", + "container", + "discount", + "quantity" + ] + }, + "customFields": { + "type": "object", + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "states": { + "type": "array", + "items": { + "type": "string" + }, + "deprecated": true, + "description": "Internal field." + }, "createdAt": { "type": "string", "format": "date-time", @@ -6525,81 +6779,99 @@ "format": "date-time", "readOnly": true }, - "translated": { + "cover": { + "$ref": "#/components/schemas/Media", + "description": "Line item image or thumbnail" + }, + "product": { + "$ref": "#/components/schemas/Product", + "description": "Referenced product if this is a product line item" + }, + "orderDeliveryPositions": { + "description": "Delivery positions for this line item", + "type": "array", + "items": { + "$ref": "#/components/schemas/OrderDeliveryPosition" + } + }, + "downloads": { + "description": "Digital downloads associated with this line item", + "type": "array", + "items": { + "$ref": "#/components/schemas/OrderLineItemDownload" + } + }, + "parent": { + "$ref": "#/components/schemas/OrderLineItem" + }, + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrderLineItem" + } + }, + "apiAlias": { + "type": "string", + "const": "order_line_item" + }, + "extensions": { "type": "object", - "description": "Contains the translations of all translated fields." + "description": "To store additional data to an order line item from extensions." + }, + "translated": { + "type": "object" } }, "type": "object" }, - "MailTemplateMedia": { - "description": "Added since version: 6.0.0.0", + "OrderLineItemDownload": { + "description": "Added since version: 6.4.19.0", "required": [ + "media", "id", - "mailTemplateId", - "languageId", - "mediaId" + "orderLineItemId", + "mediaId", + "position", + "accessGranted" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of mail template's media." + "description": "Unique identity of Order line item downloaded digital products." }, - "mailTemplateId": { + "versionId": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the mail template." + "description": "Unique identity of Order line item downloaded version." }, - "languageId": { + "orderLineItemId": { + "description": "Unique identity of Order line item.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "orderLineItemVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the language." + "description": "Unique identity of Order line item's version." }, "mediaId": { + "description": "Unique identity of media.", "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the media." + "pattern": "^[0-9a-f]{32}$" }, "position": { + "description": "The order of downloaded digital products displayed in the storefront by mentioning numerical values like 1,2,3, etc.", "type": "integer", - "format": "int64", - "description": "The order of multiple media templates defined is specified using numerical values like 1,2,3, etc." - }, - "media": { - "$ref": "#/components/schemas/Media" - } - }, - "type": "object" - }, - "LogEntry": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of log entry." + "format": "int64" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "accessGranted": { + "description": "When boolean value is `true`, the digital product is allowed to download.", + "type": "boolean" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "MediaFolder": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of media folder." + "customFields": { + "type": "object", + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, "createdAt": { "type": "string", @@ -6610,202 +6882,109 @@ "type": "string", "format": "date-time", "readOnly": true - } - }, - "type": "object" - }, - "AppShippingMethod": { - "description": "Added since version: 6.5.7.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "orderLineItem": { + "$ref": "#/components/schemas/OrderLineItem" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "media": { + "$ref": "#/components/schemas/Media" } }, "type": "object" }, - "CustomerAddressRead": { + "OrderRouteResponse": { "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true - }, - "customerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true - }, - "createdAt": { - "type": "string", - "format": "date-time" - }, - "updatedAt": { - "oneOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "null" - } - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "oneOf": [ + "orders": { + "type": "object", + "allOf": [ { - "$ref": "#/components/schemas/CountryState" + "type": "object", + "required": [ + "elements" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" + } + } + } }, { - "type": "null" + "$ref": "#/components/schemas/EntitySearchResult" } ] }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "paymentChangeable": { + "type": "object", + "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", + "additionalProperties": { + "type": "boolean" + } } }, "required": [ - "customerId", - "createdAt", - "updatedAt", - "country", - "salutation" + "orders" ] }, - "SalesChannelTrackingCustomer": { - "description": "Added since version: 6.7.9.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "Order": { + "OrderTransaction": { "description": "Added since version: 6.0.0.0", "required": [ - "documents", - "orderDate", - "stateMachineState", - "price", "id", - "billingAddressId", - "currencyId", - "languageId", - "salesChannelId", - "orderDateTime", - "currencyFactor" + "orderId", + "paymentMethodId", + "amount", + "stateId" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of order." + "description": "Unique identity of order transaction." }, "versionId": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of order version." - }, - "orderNumber": { - "description": "Unique number associated with every order.", - "type": "string" + "description": "Unique identity of OrderTransaction's version." }, - "billingAddressId": { - "description": "Unique identity of the billing address.", + "orderId": { + "description": "Unique identity of an order.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "billingAddressVersionId": { + "orderVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the billing address version." - }, - "primaryOrderDeliveryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "primaryOrderDeliveryVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "primaryOrderTransactionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "primaryOrderTransactionVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "currencyId": { - "description": "Unique identity of the currency.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "languageId": { - "description": "Unique identity of the language.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "description": "Unique identity of an order's version." }, - "salesChannelId": { - "description": "Unique identity of the sales channel.", + "paymentMethodId": { + "description": "Unique identity of payment method.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "orderDateTime": { - "description": "Timestamp when the order was placed.", - "type": "string", - "format": "date-time" - }, - "orderDate": { - "description": "Date when the order was placed.", - "type": "string", - "readOnly": true - }, - "price": { + "amount": { "required": [ - "netPrice", + "unitPrice", "totalPrice", - "positionPrice", - "rawTotal", - "taxStatus" + "quantity" ], "properties": { - "netPrice": { + "unitPrice": { "type": "number", "format": "float", - "description": "Net price of the product." + "description": "Price of product per item (where, quantity=1)." }, "totalPrice": { "type": "number", "format": "float", - "description": "Gross price of the product." + "description": "Cost of product based on quantity." + }, + "quantity": { + "type": "integer", + "format": "int64", + "description": "Number of items of each product." }, "calculatedTaxes": { "type": "object" @@ -6813,48 +6992,150 @@ "taxRules": { "type": "object" }, - "positionPrice": { - "type": "number", - "format": "float", - "description": "Price of each line item in the cart multiplied by its quantity excluding charges like shipping cost, rules, taxes etc." + "referencePrice": { + "type": "object" }, - "rawTotal": { - "type": "number", - "format": "float", - "description": "The total value before rounding off." + "listPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + }, + "discount": { + "type": "number", + "format": "float" + }, + "percentage": { + "type": "number", + "format": "float" + } + }, + "type": "object" }, - "taxStatus": { - "type": "string", - "description": "TaxStatus takes `Free`, `Net` or `Gross` as values." + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + } + }, + "type": "object" } }, - "type": "object", - "$ref": "#/components/schemas/CalculatedPrice" + "type": "object" }, - "amountTotal": { - "description": "Gross price of the order.", - "type": "number", - "format": "float", - "readOnly": true + "validationData": { + "type": "object" }, - "amountNet": { - "description": "Net price of the order.", - "type": "number", - "format": "float", - "readOnly": true + "stateId": { + "description": "Unique identity of state.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "positionPrice": { - "description": "Price of each line item in the cart multiplied by its quantity excluding charges like shipping cost, rules, taxes etc.", - "type": "number", - "format": "float", + "customFields": { + "type": "object", + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "createdAt": { + "type": "string", + "format": "date-time", "readOnly": true }, - "taxStatus": { - "description": "TaxStatus takes `Free`, `Net` or `Gross` as values.", + "updatedAt": { "type": "string", + "format": "date-time", "readOnly": true }, + "stateMachineState": { + "$ref": "#/components/schemas/StateMachineState", + "description": "Current payment transaction state (e.g., open, paid, cancelled)" + }, + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod", + "description": "Payment method used for this transaction" + }, + "captures": { + "description": "Payment captures for this transaction", + "type": "array", + "items": { + "$ref": "#/components/schemas/OrderTransactionCapture" + } + }, "shippingCosts": { + "properties": { + "calculatedTaxes": { + "description": "Contains calculated taxes based on shipping costs/methods." + }, + "taxRules": { + "description": "Pricing based on multiple taxes." + }, + "referencePrice": { + "description": "Original cost price of the product." + }, + "listPrice": { + "properties": { + "price": { + "description": "Price of each line item." + }, + "discount": { + "description": "Absolute discount on each line item." + }, + "percentage": { + "description": "Discount in percentage." + } + } + }, + "regulationPrice": { + "properties": { + "price": { + "description": "Contains cheapest price from last 30 days as per EU law." + } + } + } + } + } + }, + "type": "object" + }, + "OrderTransactionCapture": { + "description": "Added since version: 6.4.12.0", + "required": [ + "id", + "orderTransactionId", + "stateId", + "amount" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of order transaction capture." + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of order transaction capture's version." + }, + "orderTransactionId": { + "description": "Unique identity of order transaction.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "orderTransactionVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of order transaction version." + }, + "stateId": { + "description": "Unique identity of order state.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "externalReference": { + "description": "External payment provider token.", + "type": "string" + }, + "amount": { "required": [ "unitPrice", "totalPrice", @@ -6864,12 +7145,12 @@ "unitPrice": { "type": "number", "format": "float", - "description": "Shipping cost of product per item (where, quantity=1)." + "description": "Price of product per item (where, quantity=1)." }, "totalPrice": { "type": "number", "format": "float", - "description": "Shipping cost of product based on quantity." + "description": "Cost of product based on quantity." }, "quantity": { "type": "integer", @@ -6877,33 +7158,27 @@ "description": "Number of items of each product." }, "calculatedTaxes": { - "type": "object", - "description": "Contains calculated taxes based on shipping costs/methods." + "type": "object" }, "taxRules": { - "type": "object", - "description": "Pricing based on multiple taxes." + "type": "object" }, "referencePrice": { - "type": "object", - "description": "Original cost price of the product." + "type": "object" }, "listPrice": { "properties": { "price": { "type": "number", - "format": "float", - "description": "Price of each line item." + "format": "float" }, "discount": { "type": "number", - "format": "float", - "description": "Absolute discount on each line item." + "format": "float" }, "percentage": { "type": "number", - "format": "float", - "description": "Discount in percentage." + "format": "float" } }, "type": "object" @@ -6912,8 +7187,7 @@ "properties": { "price": { "type": "number", - "format": "float", - "description": "Contains cheapest price from last 30 days as per EU law." + "format": "float" } }, "type": "object" @@ -6921,54 +7195,10 @@ }, "type": "object" }, - "shippingTotal": { - "description": "Total shipping cost of the ordered product.", - "type": "number", - "format": "float", - "readOnly": true - }, - "currencyFactor": { - "description": "Rate at which currency is exchanged.", - "type": "number", - "format": "float" - }, - "deepLinkCode": { - "description": "It is a generated special code linked to email. It is used to access orders placed by guest customers.", - "type": "string" - }, - "affiliateCode": { - "description": "An affiliate code is an identification option with which website operators can mark outgoing links.", - "type": "string" - }, - "campaignCode": { - "description": "A campaign code is the globally unique identifier for a campaign.", - "type": "string" - }, - "customerComment": { - "description": "Comments given by comments.", - "type": "string" - }, - "source": { - "description": "Source of orders either via normal order placement or subscriptions.", - "type": "string" - }, - "taxCalculationType": { - "type": "string" - }, "customFields": { "type": "object", "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, - "createdById": { - "description": "Unique identity of createdBy.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "updatedById": { - "description": "Unique identity of updatedBy.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, "createdAt": { "type": "string", "format": "date-time", @@ -6980,147 +7210,155 @@ "readOnly": true }, "stateMachineState": { - "$ref": "#/components/schemas/StateMachineState", - "description": "Current order state (e.g., open, in_progress, completed, cancelled)" - }, - "primaryOrderDelivery": { - "$ref": "#/components/schemas/OrderDelivery", - "description": "Primary delivery information for the order" - }, - "primaryOrderTransaction": { - "$ref": "#/components/schemas/OrderTransaction", - "description": "Primary payment transaction for the order" - }, - "orderCustomer": { - "$ref": "#/components/schemas/OrderCustomer", - "description": "Customer information associated with the order" - }, - "currency": { - "$ref": "#/components/schemas/Currency", - "description": "Currency used for the order" + "$ref": "#/components/schemas/StateMachineState" }, - "language": { - "$ref": "#/components/schemas/Language", - "description": "Language used when placing the order" + "transaction": { + "$ref": "#/components/schemas/OrderTransaction" }, - "addresses": { - "description": "All addresses associated with the order (billing and shipping)", + "refunds": { "type": "array", "items": { - "$ref": "#/components/schemas/OrderAddress" + "$ref": "#/components/schemas/OrderTransactionCaptureRefund" } }, - "billingAddress": { - "$ref": "#/components/schemas/OrderAddress", - "description": "Billing address for the order" - }, - "deliveries": { - "description": "Delivery information including shipping address and tracking", - "type": "array", - "items": { - "$ref": "#/components/schemas/OrderDelivery" - } - }, - "lineItems": { - "description": "Order line items (products, discounts, fees)", - "type": "array", - "items": { - "$ref": "#/components/schemas/OrderLineItem" - } - }, - "transactions": { - "description": "Payment transactions for the order", - "type": "array", - "items": { - "$ref": "#/components/schemas/OrderTransaction" - } - }, - "documents": { - "description": "Generated documents (invoices, delivery notes, credit notes)", - "type": "array", - "items": { - "$ref": "#/components/schemas/Document" - } - }, - "tags": { - "description": "Tags assigned to the order for organization and filtering", - "type": "array", - "items": { - "$ref": "#/components/schemas/Tag" + "shippingCosts": { + "properties": { + "calculatedTaxes": { + "description": "Contains calculated taxes based on shipping costs/methods." + }, + "taxRules": { + "description": "Pricing based on multiple taxes." + }, + "referencePrice": { + "description": "Original cost price of the product." + }, + "listPrice": { + "properties": { + "price": { + "description": "Price of each line item." + }, + "discount": { + "description": "Absolute discount on each line item." + }, + "percentage": { + "description": "Discount in percentage." + } + } + }, + "regulationPrice": { + "properties": { + "price": { + "description": "Contains cheapest price from last 30 days as per EU law." + } + } + } } - }, - "extensions": { - "description": "To store additional data to an order from extensions." - } - }, - "type": "object" - }, - "AppMcpResource": { - "description": "Added since version: 6.7.11.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" } }, "type": "object" }, - "DocumentBaseConfig": { - "description": "Added since version: 6.0.0.0", + "OrderTransactionCaptureRefund": { + "description": "Added since version: 6.4.12.0", "required": [ "id", - "documentTypeId", - "name" + "captureId", + "stateId", + "amount" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the document base config." + "description": "Unique identity of order transaction capture refund." }, - "documentTypeId": { - "description": "Unique identity of the document type.", + "versionId": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of order transaction capture refund's version." }, - "logoId": { - "description": "Unique identity of the company logo.", + "captureId": { + "description": "Unique identity of order transaction capture.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "name": { - "description": "Name of the document.", - "type": "string" + "captureVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of order transaction capture's version." }, - "filenamePrefix": { - "description": "A prefix name added to the file name separated by an underscore.", - "type": "string" + "stateId": { + "description": "Unique identity of order state.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "filenameSuffix": { - "description": "A suffix name added to the file name separated by an underscore.", + "externalReference": { + "description": "External payment provider token. ", "type": "string" }, - "global": { - "description": "When set to `true`, the document can be used across all sales channels.", - "type": "boolean" - }, - "documentNumber": { - "description": "Unique number associated with every document.", + "reason": { + "description": "Reason for refunding the amount for an order.", "type": "string" }, + "amount": { + "required": [ + "unitPrice", + "totalPrice", + "quantity" + ], + "properties": { + "unitPrice": { + "type": "number", + "format": "float", + "description": "Price of product per item (where, quantity=1)." + }, + "totalPrice": { + "type": "number", + "format": "float", + "description": "Cost of product based on quantity." + }, + "quantity": { + "type": "integer", + "format": "int64", + "description": "Number of items of each product." + }, + "calculatedTaxes": { + "type": "object" + }, + "taxRules": { + "type": "object" + }, + "referencePrice": { + "type": "object" + }, + "listPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + }, + "discount": { + "type": "number", + "format": "float" + }, + "percentage": { + "type": "number", + "format": "float" + } + }, + "type": "object" + }, + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + } + }, + "type": "object" + } + }, + "type": "object" + }, "customFields": { "type": "object", "description": "Additional fields that offer a possibility to add own fields for the different program-areas." @@ -7130,62 +7368,171 @@ "format": "date-time", "readOnly": true }, - "config": { - "type": "object", - "deprecated": true, - "description": "Specifies detailed information about the component." - }, "updatedAt": { "type": "string", "format": "date-time", "readOnly": true }, - "logo": { - "$ref": "#/components/schemas/Media", - "description": "Logo in the document at the top-right corner." + "stateMachineState": { + "$ref": "#/components/schemas/StateMachineState" + }, + "transactionCapture": { + "$ref": "#/components/schemas/OrderTransactionCapture" + }, + "positions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrderTransactionCaptureRefundPosition" + } + }, + "shippingCosts": { + "properties": { + "calculatedTaxes": { + "description": "Contains calculated taxes based on shipping costs/methods." + }, + "taxRules": { + "description": "Pricing based on multiple taxes." + }, + "referencePrice": { + "description": "Original cost price of the product." + }, + "listPrice": { + "properties": { + "price": { + "description": "Price of each line item." + }, + "discount": { + "description": "Absolute discount on each line item." + }, + "percentage": { + "description": "Discount in percentage." + } + } + }, + "regulationPrice": { + "properties": { + "price": { + "description": "Contains cheapest price from last 30 days as per EU law." + } + } + } + } } }, "type": "object" }, - "ProductMedia": { - "description": "Added since version: 6.0.0.0", + "OrderTransactionCaptureRefundPosition": { + "description": "Added since version: 6.4.12.0", "required": [ - "media", "id", - "productId", - "mediaId" + "refundId", + "orderLineItemId", + "amount" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the Product Media." + "description": "Unique identity of order transaction capture refund position." }, "versionId": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the ProductMedia version." + "description": "Unique identity of order transaction capture refund position's version." }, - "productId": { - "description": "Unique identity of the product.", + "refundId": { + "description": "Unique identity of order transaction capture refund.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "productVersionId": { + "refundVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the product's version." + "description": "Unique identity of order transaction capture refund's version." }, - "mediaId": { - "description": "Unique identity of the media.", + "orderLineItemId": { + "description": "Unique identity of order line item.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "position": { - "description": "The order of the images to be displayed for a product.", + "orderLineItemVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of order line item version." + }, + "externalReference": { + "description": "External payment provider token.", + "type": "string" + }, + "reason": { + "description": "Reason for refunding the amount for an order.", + "type": "string" + }, + "quantity": { + "description": "Quantity of line item to be refunded.", "type": "integer", "format": "int64" }, + "amount": { + "required": [ + "unitPrice", + "totalPrice", + "quantity" + ], + "properties": { + "unitPrice": { + "type": "number", + "format": "float", + "description": "Price of product per item (where, quantity=1)." + }, + "totalPrice": { + "type": "number", + "format": "float", + "description": "Cost of product based on quantity." + }, + "quantity": { + "type": "integer", + "format": "int64", + "description": "Number of items of each product." + }, + "calculatedTaxes": { + "type": "object" + }, + "taxRules": { + "type": "object" + }, + "referencePrice": { + "type": "object" + }, + "listPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + }, + "discount": { + "type": "number", + "format": "float" + }, + "percentage": { + "type": "number", + "format": "float" + } + }, + "type": "object" + }, + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + } + }, + "type": "object" + } + }, + "type": "object" + }, "customFields": { "type": "object", "description": "Additional fields that offer a possibility to add own fields for the different program-areas." @@ -7200,146 +7547,103 @@ "format": "date-time", "readOnly": true }, - "media": { - "$ref": "#/components/schemas/Media" - } - }, - "type": "object" - }, - "StateMachine": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of state machine." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." + "orderLineItem": { + "$ref": "#/components/schemas/OrderLineItem" }, - "states": { - "type": "array", - "items": { - "$ref": "#/components/schemas/StateMachineState" - } + "orderTransactionCaptureRefund": { + "$ref": "#/components/schemas/OrderTransactionCaptureRefund" }, - "transitions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/StateMachineTransition" + "shippingCosts": { + "properties": { + "calculatedTaxes": { + "description": "Contains calculated taxes based on shipping costs/methods." + }, + "taxRules": { + "description": "Pricing based on multiple taxes." + }, + "referencePrice": { + "description": "Original cost price of the product." + }, + "listPrice": { + "properties": { + "price": { + "description": "Price of each line item." + }, + "discount": { + "description": "Absolute discount on each line item." + }, + "percentage": { + "description": "Discount in percentage." + } + } + }, + "regulationPrice": { + "properties": { + "price": { + "description": "Contains cheapest price from last 30 days as per EU law." + } + } + } } } }, "type": "object" }, - "CustomerAddress": { + "PaymentMethod": { "description": "Added since version: 6.0.0.0", "required": [ "id", - "customerId", - "countryId", - "firstName", - "lastName", - "city", - "street" + "technicalName", + "name" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of customer's address." - }, - "customerId": { - "description": "Unique identity of customer.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "description": "Unique identity of payment method." }, - "countryId": { - "description": "Unique identity of country.", + "name": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "description": "Name of the payment method." }, - "countryStateId": { - "description": "Unique identity of country's state.", + "distinguishableName": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "readOnly": true, + "description": "System identifier name for payment method." }, - "salutationId": { - "description": "Unique identity of salutation.", + "description": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "description": "First name of the customer.", - "type": "string" - }, - "lastName": { - "description": "Last name of the customer.", - "type": "string" - }, - "zipcode": { - "description": "Postal or zip code of customer's address.", - "type": "string" - }, - "city": { - "description": "Name of customer's city.", - "type": "string" - }, - "company": { - "description": "Name of customer's company.", - "type": "string" + "description": "A short description about the payment method." }, - "street": { - "description": "Name of customer's street.", - "type": "string" + "position": { + "description": "The order of the tabs of your defined payment methods in the storefront by entering numerical values like 1,2,3, etc.", + "type": "integer", + "format": "int64" }, - "department": { - "description": "Name of customer's department.", - "type": "string" + "active": { + "description": "When boolean value is `true`, the payment methods are available for selection in the storefront.", + "type": "boolean" }, - "title": { - "description": "Titles given to customer like Dr. , Prof., etc", - "type": "string" + "afterOrderEnabled": { + "description": "When set to true, customers are redirected to the payment options page to choose a new payment method on order failure.", + "type": "boolean" }, - "phoneNumber": { - "description": "Customer's phone number.", - "type": "string" + "customFields": { + "type": "object", + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, - "additionalAddressLine1": { - "description": "Additional customer's address information.", - "type": "string" + "mediaId": { + "description": "Unique identity of media.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "additionalAddressLine2": { - "description": "Additional customer's address information.", + "technicalName": { "type": "string" }, - "hash": { + "shortName": { "description": "Runtime field, cannot be used as part of the criteria.", "type": "string" }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "isDefaultBillingAddress": { - "description": "Added since version: 6.7.7.0. Runtime field, cannot be used as part of the criteria.", - "type": "boolean" - }, - "isDefaultShippingAddress": { - "description": "Added since version: 6.7.7.0. Runtime field, cannot be used as part of the criteria.", - "type": "boolean" - }, "createdAt": { "type": "string", "format": "date-time", @@ -7350,629 +7654,554 @@ "format": "date-time", "readOnly": true }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "$ref": "#/components/schemas/CountryState" + "translated": { + "type": "object", + "description": "Contains the translations of all translated fields." }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "media": { + "$ref": "#/components/schemas/Media", + "description": "Payment method logo or icon image" } }, "type": "object" }, - "MeasurementUnits": { + "Price": { "type": "object", - "description": "Configuration of the measurement system", + "description": "Price object", "properties": { - "system": { + "currencyId": { + "description": "Unique identity of the associated currency.", "type": "string", - "enum": [ - "metric", - "imperial" + "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" ], - "default": "metric", - "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." + "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" + ] }, - "units": { + "listPrice": { + "description": "Reference list price for displaying discounts.", "type": "object", - "description": "Units used in the measurement system.", "properties": { - "length": { + "currencyId": { + "description": "Unique identity of the associated currency.", "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm", - "description": "Unit of length." + "pattern": "^[0-9a-f]{32}$" }, - "weight": { + "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", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg", - "description": "Unit of weight." + "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" + ] }, - "ScheduledTask": { - "description": "Added since version: 6.0.0.0", + "Product": { + "description": "Represents a product along with detailed information required to display a variant selection.", + "required": [ + "apiAlias", + "calculatedPrice", + "calculatedPrices", + "seoCategory", + "type", + "translated", + "id", + "taxId", + "productNumber", + "stock", + "name" + ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of scheduled task." + "description": "Unique identity of the product." }, - "createdAt": { + "versionId": { "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of the product's version." }, - "updatedAt": { + "parentId": { "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "CalculatedPrice": { - "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", - "properties": { - "unitPrice": { - "type": "number" + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of the parent product." }, - "quantity": { - "type": "number" + "parentVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of the parent product's version." }, - "rawTotal": { - "type": "number" + "manufacturerId": { + "description": "Unique identity of the manufacturer.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "totalPrice": { - "type": "number" + "productManufacturerVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of the product's manufacturer version." }, - "taxStatus": { + "unitId": { + "description": "Unique identity of the unit.", "type": "string", - "enum": [ - "net", - "tax-free" - ] + "pattern": "^[0-9a-f]{32}$" }, - "calculatedTaxes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "const": "cart_tax_calculated" - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } + "taxId": { + "description": "Unique identifier of tax.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] + "coverId": { + "description": "Unique identifier of a ProductMedia item used as product cover.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] + "productMediaVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identifier of product's media version." }, - "positionPrice": { - "type": "number" - }, - "netPrice": { - "type": "number" - }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "const": "cart_regulation_price" - } - } - }, - { - "type": "null" - } - ] + "deliveryTimeId": { + "description": "Unique identifier of delivery time.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "hasRange": { - "type": "boolean" + "canonicalProductId": { + "description": "Unique identifier of canonical product.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } - ] + "canonicalProductVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "apiAlias": { + "cmsPageId": { + "description": "Unique identifier of CMS page.", "type": "string", - "const": "calculated_price" + "pattern": "^[0-9a-f]{32}$" }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } - } - }, - "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "referencePrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitPrice", - "positionPrice", - "netPrice", - "taxRules", - "rawTotal", - "taxStatus" - ] - }, - "App": { - "description": "Added since version: 6.3.1.0", - "properties": { - "id": { + "cmsPageVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of App." + "description": "Unique identifier of CMS page's version." }, - "createdAt": { + "openGraphMediaId": { + "description": "Media used as Open Graph image for social media sharing.", "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "updatedAt": { - "type": "string", - "format": "date-time", + "productNumber": { + "description": "Unique number assigned to individual products. Define rules for automatic assignment of every product creation as per your number range.", + "type": "string" + }, + "restockTime": { + "description": "The restock time in days indicates how long it will take until a sold out item is back in stock.", + "type": "integer", + "format": "int64" + }, + "active": { + "description": "When boolean value is `true`, the products are available for selection in the storefront for purchase.", + "type": "boolean" + }, + "available": { + "description": "Indicates weather the product is available or not.", + "type": "boolean", "readOnly": true }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." - } - }, - "type": "object" - }, - "CartListPrice": { - "type": "object", - "description": "", - "properties": { - "discount": { - "type": "number" + "isCloseout": { + "description": "When the value is set to true, the product is hidden when sold out.", + "type": "boolean" }, - "percentage": { - "type": "number" + "availableStock": { + "description": "Indicates the number of products still available. This value results from the stock minus the open orders.", + "type": "integer", + "format": "int64", + "readOnly": true }, - "price": { - "type": "number" + "stock": { + "description": "Indicate the number of product/s currently in stock. As soon as the order status of an order is set to completed, the stock is reduced.", + "type": "integer", + "format": "int64" }, - "apiAlias": { - "type": "string", - "const": "cart_list_price" - } - }, - "required": [ - "apiAlias" - ] - }, - "OrderDelivery": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "orderId", - "shippingOrderAddressId", - "shippingMethodId", - "stateId", - "shippingDateEarliest", - "shippingDateLatest" - ], - "properties": { - "id": { + "displayGroup": { + "description": "Runtime field, cannot be used as part of the criteria.", "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of Order's delivery." + "readOnly": true }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of OrderDelivery's version." + "manufacturerNumber": { + "description": "Unique number that describes the manufacturer.", + "type": "string" }, - "orderId": { - "description": "Unique identity of order.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "ean": { + "description": "Indicates EAN of the product.", + "type": "string" }, - "orderVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of order's version." + "purchaseSteps": { + "description": "Specifies the scales in which the item is to be offered. For example, a scale of 2 means that your customers can purchase 2, 4, 6 products, etc., but not 1, 3 or 5.", + "type": "integer", + "format": "int64" }, - "shippingOrderAddressId": { - "description": "Unique identity of order's shipping address.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "maxPurchase": { + "description": "Maximum number of items that can be purchased.", + "type": "integer", + "format": "int64" }, - "shippingOrderAddressVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of order's shipping address version." + "minPurchase": { + "description": "Minimum number of items that can be purchased.", + "type": "integer", + "format": "int64" }, - "shippingMethodId": { - "description": "Unique identity of shipping method.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "purchaseUnit": { + "description": "Quantity of the item purchased. For example, 500ml, 2kg, etc.", + "type": "number", + "format": "float" }, - "stateId": { - "description": "Unique identity of state.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "referenceUnit": { + "description": "Price of purchased item calculated as per the reference unit. Say, you bought 500ml of milk and the price is calculated in reference to 1000ml. ", + "type": "number", + "format": "float" }, - "trackingCodes": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Tracking code is a unique URL code assigned to each package, which allows you to monitor the movement of the parcel." + "shippingFree": { + "description": "Indicates weather the shipping price is free or not.", + "type": "boolean" }, - "shippingDateEarliest": { - "description": "Date and time of earliest delivery of products.", - "type": "string", - "format": "date-time" + "markAsTopseller": { + "description": "Indicates weather the product is top seller or not.", + "type": "boolean" }, - "shippingDateLatest": { - "description": "Date and time of latest delivery of products.", - "type": "string", - "format": "date-time" + "weight": { + "description": "The weight of the product.", + "type": "number", + "format": "float" }, - "shippingCosts": { - "required": [ - "unitPrice", - "totalPrice", - "quantity" - ], - "properties": { - "unitPrice": { - "type": "number", - "format": "float", - "description": "Shipping cost of product per item (where, quantity=1)." - }, - "totalPrice": { - "type": "number", - "format": "float", - "description": "Shipping cost of product based on quantity." - }, - "quantity": { - "type": "integer", - "format": "int64", - "description": "Number of items of each product." - }, - "calculatedTaxes": { - "type": "object", - "description": "Contains calculated taxes based on shipping costs/methods." - }, - "taxRules": { - "type": "object", - "description": "Pricing based on multiple taxes." - }, - "referencePrice": { - "type": "object", - "description": "Original cost price of the product." - }, - "listPrice": { - "properties": { - "price": { - "type": "number", - "format": "float", - "description": "Price of each line item." - }, - "discount": { - "type": "number", - "format": "float", - "description": "Absolute discount on each line item." - }, - "percentage": { - "type": "number", - "format": "float", - "description": "Discount in percentage." - } - }, - "type": "object" - }, - "regulationPrice": { - "properties": { - "price": { - "type": "number", - "format": "float", - "description": "Contains cheapest price from last 30 days as per EU law." - } - }, - "type": "object" - } - }, - "type": "object" + "width": { + "description": "The width of the product.", + "type": "number", + "format": "float" }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + "height": { + "description": "The height of the product.", + "type": "number", + "format": "float" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "length": { + "description": "The length of the product.", + "type": "number", + "format": "float" }, - "updatedAt": { + "releaseDate": { + "description": "The release date of a product or product model. This can be used to distinguish the exact variant of a product.", "type": "string", - "format": "date-time", + "format": "date-time" + }, + "ratingAverage": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "number", + "format": "float", "readOnly": true }, - "stateMachineState": { - "$ref": "#/components/schemas/StateMachineState", - "description": "Current delivery state (e.g., open, shipped, delivered, cancelled)" + "categoryTree": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true, + "description": "Runtime field, cannot be used as part of the criteria." }, - "shippingOrderAddress": { - "$ref": "#/components/schemas/OrderAddress", - "description": "Shipping address for this delivery" + "propertyIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true, + "description": "Runtime field, cannot be used as part of the criteria." }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod", - "description": "Shipping method used for this delivery" + "optionIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true, + "description": "Runtime field, cannot be used as part of the criteria." }, - "positions": { - "description": "Line items included in this delivery", + "streamIds": { "type": "array", "items": { - "$ref": "#/components/schemas/OrderDeliveryPosition" - } - } - }, - "type": "object" - }, - "OrderTransactionCapture": { - "description": "Added since version: 6.4.12.0", - "required": [ - "id", - "orderTransactionId", - "stateId", - "amount" - ], - "properties": { - "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true, + "description": "Runtime field, cannot be used as part of the criteria." + }, + "tagIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "categoryIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true, + "description": "Runtime field, cannot be used as part of the criteria." + }, + "childCount": { + "type": "integer", + "format": "int64", + "readOnly": true, + "description": "Runtime field, cannot be used as part of the criteria." + }, + "sales": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "integer", + "format": "int64", + "readOnly": true + }, + "metaDescription": { "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of order transaction capture." + "description": "A short description of the product for search results listings." }, - "versionId": { + "name": { "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of order transaction capture's version." + "description": "Name of the product." }, - "orderTransactionId": { - "description": "Unique identity of order transaction.", + "keywords": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "description": "Keywords that give additional information about the Product." }, - "orderTransactionVersionId": { + "description": { "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of order transaction version." + "description": "Description of the product." }, - "stateId": { - "description": "Unique identity of order state.", + "descriptionTeaser": { + "description": "Read-only, HTML-stripped excerpt of the description, derived on write.", "type": "string", - "pattern": "^[0-9a-f]{32}$" + "readOnly": true }, - "externalReference": { - "description": "External payment provider token.", + "metaTitle": { + "type": "string", + "description": "A page title indexed by search engines and appears in search results listings." + }, + "packUnit": { + "type": "string", + "description": "Type of packing. For example, bottle, tin, crate, etc." + }, + "packUnitPlural": { + "type": "string", + "description": "Type of packing in plural. For example, bottles, tins, crates, etc." + }, + "customFields": { + "type": "object", + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "ogTitle": { "type": "string" }, - "amount": { - "required": [ - "unitPrice", - "totalPrice", - "quantity" - ], - "properties": { - "unitPrice": { - "type": "number", - "format": "float", - "description": "Price of product per item (where, quantity=1)." - }, - "totalPrice": { - "type": "number", - "format": "float", - "description": "Cost of product based on quantity." - }, - "quantity": { - "type": "integer", - "format": "int64", - "description": "Number of items of each product." - }, - "calculatedTaxes": { - "type": "object" - }, - "taxRules": { - "type": "object" - }, - "referencePrice": { - "type": "object" - }, - "listPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - }, - "discount": { - "type": "number", - "format": "float" - }, - "percentage": { - "type": "number", - "format": "float" - } - }, - "type": "object" - }, - "regulationPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "ogDescription": { + "type": "string" }, - "updatedAt": { + "type": { + "description": "The type of the product, e.g., physical or digital.", "type": "string", - "format": "date-time", - "readOnly": true + "enum": [ + "physical", + "digital" + ] }, - "stateMachineState": { - "$ref": "#/components/schemas/StateMachineState" + "states": { + "type": "array", + "items": { + "type": "string" + }, + "readOnly": true, + "deprecated": true, + "description": "Internal field." }, - "transaction": { - "$ref": "#/components/schemas/OrderTransaction" + "calculatedPrice": { + "type": "object", + "$ref": "#/components/schemas/CalculatedPrice", + "description": "Runtime field, cannot be used as part of the criteria." }, - "refunds": { + "calculatedPrices": { "type": "array", "items": { - "$ref": "#/components/schemas/OrderTransactionCaptureRefund" - } + "type": "object", + "additionalProperties": false, + "allOf": [ + { + "$ref": "#/components/schemas/CalculatedPrice" + } + ] + }, + "description": "Runtime field, cannot be used as part of the criteria." }, - "shippingCosts": { + "calculatedMaxPurchase": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "integer", + "format": "int64" + }, + "calculatedCheapestPrice": { + "type": "object", "properties": { - "calculatedTaxes": { - "description": "Contains calculated taxes based on shipping costs/methods." + "unitPrice": { + "type": "number" }, - "taxRules": { - "description": "Pricing based on multiple taxes." + "quantity": { + "type": "number" + }, + "totalPrice": { + "type": "number" }, "referencePrice": { - "description": "Original cost price of the product." + "oneOf": [ + { + "$ref": "#/components/schemas/ReferencePrice" + }, + { + "type": "null" + } + ] }, "listPrice": { - "properties": { - "price": { - "description": "Price of each line item." - }, - "discount": { - "description": "Absolute discount on each line item." + "oneOf": [ + { + "$ref": "#/components/schemas/ListPrice" }, - "percentage": { - "description": "Discount in percentage." + { + "type": "null" } - } + ] }, "regulationPrice": { - "properties": { - "price": { - "description": "Contains cheapest price from last 30 days as per EU law." + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + } + }, + "required": [ + "price" + ] + }, + { + "type": "null" } - } + ] + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "" + }, + { + "type": "null" + } + ] + }, + "apiAlias": { + "type": "string", + "const": "calculated_cheapest_price" } - } - } - }, - "type": "object" - }, - "SeoUrlTemplate": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of Seo Url template." - }, - "salesChannelId": { - "description": "Unique identity of sales channel.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + }, + "description": "Runtime field, cannot be used as part of the criteria." }, - "isValid": { - "description": "Created SEO URL template can be made usable by setting `isValid` to true.", + "isNew": { + "description": "Runtime field, cannot be used as part of the criteria.", "type": "boolean" }, - "customFields": { + "sortedProperties": { + "type": "object" + }, + "measurements": { "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + "$ref": "#/components/schemas/ProductMeasurements" }, "createdAt": { "type": "string", @@ -7983,113 +8212,223 @@ "type": "string", "format": "date-time", "readOnly": true - } - }, - "type": "object" - }, - "CartItems": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { + }, + "translated": { + "type": "object", + "description": "Contains the translations of all translated fields." + }, + "downloads": { + "description": "Downloadable files associated with the product (e.g., manuals, digital content)", "type": "array", "items": { - "$ref": "#/components/schemas/LineItem" - }, - "properties": { - "id": { - "description": "Unique identity of cart item." - }, - "modified": { - "description": "When boolean value is `true`, the cart is said to be modified." - } + "$ref": "#/components/schemas/ProductDownload" } - } - } - }, - "ProductSearchConfigField": { - "description": "Added since version: 6.3.5.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of Product Search Configuration field." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "AppScriptCondition": { - "description": "Added since version: 6.4.10.3", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of app's script condition." + "parent": { + "$ref": "#/components/schemas/Product", + "description": "Unique identity of the product." }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "children": { + "description": "Product variants that inherit from this parent product", + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "deliveryTime": { + "$ref": "#/components/schemas/DeliveryTime", + "description": "Time taken for the product to reach the customer. If a delivery time is defined in the product, it overwrites the delivery time of a shipping method." }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." - } - }, - "type": "object" - }, - "NewsletterRecipient": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of newsletter recipient." + "tax": { + "$ref": "#/components/schemas/Tax", + "description": "Tax configuration (rate and calculation rules)" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "manufacturer": { + "$ref": "#/components/schemas/ProductManufacturer", + "description": "Product manufacturer or brand information" }, - "updatedAt": { + "unit": { + "$ref": "#/components/schemas/Unit", + "description": "Product unit of measure (e.g., piece, liter, kg)" + }, + "cover": { + "$ref": "#/components/schemas/ProductMedia", + "description": "Main product image displayed in listings and detail pages" + }, + "openGraphMedia": { + "$ref": "#/components/schemas/Media", + "description": "Open Graph image for social media sharing" + }, + "cmsPage": { + "$ref": "#/components/schemas/CmsPage", + "description": "Custom CMS page layout for the product detail page" + }, + "canonicalProduct": { + "$ref": "#/components/schemas/Product", + "description": "Canonical product reference for variant consolidation and SEO purposes" + }, + "media": { + "description": "Product images and media gallery", + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductMedia" + } + }, + "crossSellings": { + "description": "Cross-selling configurations (related products, accessories, similar items)", + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductCrossSelling" + } + }, + "configuratorSettings": { + "description": "Variant configurator settings defining available options for product variants", + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductConfiguratorSetting" + } + }, + "productReviews": { + "description": "Customer reviews and ratings for the product", + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductReview" + } + }, + "mainCategories": { + "description": "Primary category assignments per sales channel for SEO and navigation", + "type": "array", + "items": { + "$ref": "#/components/schemas/MainCategory" + } + }, + "seoUrls": { + "description": "SEO-friendly URLs for the product across different sales channels", + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" + } + }, + "options": { + "description": "Product variant options (e.g., size, color) that define different variants", + "type": "array", + "items": { + "$ref": "#/components/schemas/PropertyGroupOption" + } + }, + "properties": { + "description": "Product properties and characteristics for filtering", + "type": "array", + "items": { + "$ref": "#/components/schemas/PropertyGroupOption" + } + }, + "categories": { + "description": "Categories this product is assigned to", + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + } + }, + "streams": { + "description": "Dynamic product streams this product belongs to based on defined filters", + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductStream" + } + }, + "categoriesRo": { + "description": "Read-only category tree including all parent categories for optimized queries", + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + } + }, + "tags": { + "description": "Tags for organizing and filtering products", + "type": "array", + "items": { + "$ref": "#/components/schemas/Tag" + } + }, + "seoCategory": { + "$ref": "#/components/schemas/Category", + "description": "Main category used for SEO URL generation in the current sales channel" + }, + "apiAlias": { "type": "string", - "format": "date-time", - "readOnly": true + "const": "product" + }, + "variantListingConfig": { + "oneOf": [ + { + "type": "object", + "properties": { + "displayParent": { + "type": "boolean" + } + } + }, + { + "type": "null" + } + ] + }, + "mainVariantId": { + "description": "Unique identity of main variant." + }, + "externalReference": { + "description": "External payment provider token." } }, "type": "object" }, - "Tag": { + "ProductConfiguratorSetting": { "description": "Added since version: 6.0.0.0", "required": [ "id", - "name" + "productId", + "optionId" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of tag." + "description": "Unique identity of Product configurator setting." }, - "name": { - "type": "string" + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of Product configurator setting version." + }, + "productId": { + "description": "Unique identity of product.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of product version." + }, + "mediaId": { + "description": "Unique identity of media.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "optionId": { + "description": "Unique identity of option.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "position": { + "description": "The order of the tabs of your defined product configuration settings in the storefront by entering numerical values like 1,2,3, etc.", + "type": "integer", + "format": "int64" + }, + "customFields": { + "type": "object", + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, "createdAt": { "type": "string", @@ -8100,37 +8439,58 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "media": { + "$ref": "#/components/schemas/Media" + }, + "option": { + "$ref": "#/components/schemas/PropertyGroupOption" } }, "type": "object" }, - "MediaThumbnailSize": { - "description": "Added since version: 6.0.0.0", + "ProductCrossSelling": { + "description": "Added since version: 6.1.0.0", "required": [ "id", - "width", - "height" + "name" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of media thumbnail size defined." + "description": "Unique identity of product cross selling." }, - "width": { - "description": "Width of the thumbnail.", + "name": { + "type": "string", + "description": "Name defined for Product cross selling." + }, + "position": { + "description": "The order of the tabs of your defined cross-selling actions in the storefront by entering numerical values like 1,2,3, etc.", "type": "integer", "format": "int64" }, - "height": { - "description": "Height of the thumbnail.", + "sortBy": { + "description": "To sort the display of products by name, price or publication (descending, ascending) date.", + "type": "string" + }, + "sortDirection": { + "description": "To sort the display of products by ascending or descending order.", + "type": "string" + }, + "type": { + "description": "Type of product assignment for cross-selling. It can either be Dynamic product group or Manual assignment.", + "type": "string" + }, + "active": { + "description": "When set to active, the cross-selling feature is enabled.", + "type": "boolean" + }, + "limit": { + "description": "The maximum number of products to be displayed in cross-selling on the item detail page of your item.", "type": "integer", "format": "int64" }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, "createdAt": { "type": "string", "format": "date-time", @@ -8140,114 +8500,91 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "translated": { + "type": "object", + "description": "Contains the translations of all translated fields." } }, "type": "object" }, - "Flow": { - "description": "Added since version: 6.4.6.0", + "ProductDetailResponse": { + "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of flow." + "product": { + "$ref": "#/components/schemas/Product" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "configurator": { + "type": "array", + "description": "List of property groups with their corresponding options and information on how to display them.", + "items": { + "$ref": "#/components/schemas/PropertyGroup" + } }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "StateMachineState": { - "description": "Added since version: 6.0.0.0", - "required": [ - "translated", - "technicalName", - "name" - ], - "properties": { "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of state machine state." + "description": "Unique identity of product detail response." }, - "technicalName": { - "description": "Technical name of StateMachineState.", - "type": "string" + "available": { + "description": "When boolean value is true, the product is available for purchase." }, - "name": { - "type": "string", - "description": "Display name of StateMachineState." + "isCloseout": { + "description": "Boolean value to check if the product is still buyable when stock value is 0." }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + "displayGroup": { + "description": "Internal field." }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "manufacturerNumber": { + "description": "Unique number of the product manufacturer." }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "stock": { + "description": "Quantity of product available." }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." + "sortedProperties": { + "description": "Properties of the product that are sorted" } }, - "type": "object" + "required": [ + "product" + ] }, - "PromotionSalesChannel": { - "description": "Added since version: 6.0.0.0", + "ProductDownload": { + "description": "Added since version: 6.4.19.0", + "required": [ + "id", + "productId", + "mediaId" + ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of promotion on sales channel." + "description": "Unique identity downloaded product." }, - "createdAt": { + "versionId": { "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of downloaded product's version." }, - "updatedAt": { + "productId": { + "description": "Unique identity of Product.", "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "MailTemplateType": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "technicalName", - "name" - ], - "properties": { - "id": { + "pattern": "^[0-9a-f]{32}$" + }, + "productVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of mail template type." + "description": "Unique identity of Product version." }, - "name": { + "mediaId": { + "description": "Unique identity of media.", "type": "string", - "description": "Name of the mail template." + "pattern": "^[0-9a-f]{32}$" }, - "technicalName": { - "description": "Technical name of mail template.", - "type": "string" + "position": { + "description": "The order in which the digital products are downloaded, like 1,2,3, etc.to adjust their order of display.", + "type": "integer", + "format": "int64" }, "customFields": { "type": "object", @@ -8263,899 +8600,1642 @@ "format": "date-time", "readOnly": true }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." + "product": { + "$ref": "#/components/schemas/Product" + }, + "media": { + "$ref": "#/components/schemas/Media" } }, "type": "object" }, - "OrderTransaction": { + "ProductJsonApi": { "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "orderId", - "paymentMethodId", - "amount", - "stateId" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of order transaction." - }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of OrderTransaction's version." - }, - "orderId": { - "description": "Unique identity of an order.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "orderVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of an order's version." - }, - "paymentMethodId": { - "description": "Unique identity of payment method.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "allOf": [ + { + "$ref": "#/components/schemas/resource", + "required": [ + "options" + ], + "properties": { + "options": { + "type": "array", + "items": { + "type": "object", + "required": [ + "group", + "option", + "translated" + ], + "properties": { + "group": { + "type": "string" + }, + "option": { + "type": "string" + }, + "translated": { + "type": "object", + "properties": { + "group": { + "type": "string" + }, + "option": { + "type": "string" + } + }, + "required": [ + "group", + "option" + ] + } + } + } + } + } }, - "amount": { + { "required": [ - "unitPrice", - "totalPrice", - "quantity" + "id", + "taxId", + "productNumber", + "stock", + "name" ], "properties": { - "unitPrice": { - "type": "number", - "format": "float", - "description": "Price of product per item (where, quantity=1)." + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "totalPrice": { - "type": "number", - "format": "float", - "description": "Cost of product based on quantity." + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "quantity": { - "type": "integer", - "format": "int64", - "description": "Number of items of each product." + "parentId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "calculatedTaxes": { - "type": "object" + "parentVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "taxRules": { - "type": "object" + "manufacturerId": { + "description": "Unique identity of the manufacturer.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "referencePrice": { - "type": "object" + "productManufacturerVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "listPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - }, - "discount": { - "type": "number", - "format": "float" - }, - "percentage": { - "type": "number", - "format": "float" - } + "unitId": { + "description": "Unique identity of the unit.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "taxId": { + "description": "Unique identity of tax.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "coverId": { + "description": "Unique identity of a ProductMedia item used as product cover.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productMediaVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "deliveryTimeId": { + "description": "Unique identity of delivery time.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "canonicalProductId": { + "description": "Unique identity of canonical product.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "canonicalProductVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "cmsPageId": { + "description": "Unique identity of CMS page.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "cmsPageVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "openGraphMediaId": { + "description": "Media used as Open Graph image for social media sharing.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productNumber": { + "description": "Unique number assigned to individual products. Define rules for automatic assignment of every product creation as per your number range.", + "type": "string" + }, + "restockTime": { + "description": "The restock time in days indicates how long it will take until a sold out item is back in stock.", + "type": "integer", + "format": "int64" + }, + "active": { + "description": "When boolean value is `true`, the products are available for selection in the storefront for purchase.", + "type": "boolean" + }, + "available": { + "description": "Indicates weather the product is available or not.", + "type": "boolean", + "readOnly": true + }, + "isCloseout": { + "description": "When the value is set to true, the product is hidden when sold out.", + "type": "boolean" + }, + "availableStock": { + "description": "Indicates the number of products still available. This value results from the stock minus the open orders.", + "type": "integer", + "format": "int64", + "readOnly": true + }, + "stock": { + "description": "Indicates the number of products available.", + "type": "integer", + "format": "int64" + }, + "displayGroup": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "string", + "readOnly": true + }, + "manufacturerNumber": { + "description": "Unique number that describes the manufacturer.", + "type": "string" + }, + "ean": { + "description": "Indicates EAN of the product.", + "type": "string" + }, + "purchaseSteps": { + "description": "Specifies the scales in which the item is to be offered. For example, a scale of 2 means that your customers can purchase 2, 4, 6 products, etc., but not 1, 3 or 5.", + "type": "integer", + "format": "int64" + }, + "maxPurchase": { + "description": "Maximum number of items that can be purchased.", + "type": "integer", + "format": "int64" + }, + "minPurchase": { + "description": "Minimum number of items that can be purchased.", + "type": "integer", + "format": "int64" + }, + "purchaseUnit": { + "description": "Quantity of the item purchased. For example, 500ml, 2kg, etc.", + "type": "number", + "format": "float" + }, + "referenceUnit": { + "description": "Price of purchased item calculated as per the reference unit. Say, you bought 500ml of milk and the price is calculated in reference to 1000ml.", + "type": "number", + "format": "float" + }, + "shippingFree": { + "description": "Indicates weather the shipping price is free or not.", + "type": "boolean" + }, + "markAsTopseller": { + "description": "Indicates weather the product is top seller or not.", + "type": "boolean" + }, + "weight": { + "description": "The weight of the product.", + "type": "number", + "format": "float" + }, + "width": { + "description": "The width of the product.", + "type": "number", + "format": "float" + }, + "height": { + "description": "The height of the product.", + "type": "number", + "format": "float" + }, + "length": { + "description": "The length of the product.", + "type": "number", + "format": "float" + }, + "releaseDate": { + "description": "The release date of a product or product model. This can be used to distinguish the exact variant of a product.", + "type": "string", + "format": "date-time" + }, + "ratingAverage": { + "description": "Average of all the ratings.", + "type": "number", + "format": "float", + "readOnly": true + }, + "categoryTree": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "type": "object" + "readOnly": true }, - "regulationPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - } + "propertyIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "type": "object" - } - }, - "type": "object" - }, - "validationData": { - "type": "object" - }, - "stateId": { - "description": "Unique identity of state.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "stateMachineState": { - "$ref": "#/components/schemas/StateMachineState", - "description": "Current payment transaction state (e.g., open, paid, cancelled)" - }, - "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethod", - "description": "Payment method used for this transaction" - }, - "captures": { - "description": "Payment captures for this transaction", - "type": "array", - "items": { - "$ref": "#/components/schemas/OrderTransactionCapture" - } - }, - "shippingCosts": { - "properties": { - "calculatedTaxes": { - "description": "Contains calculated taxes based on shipping costs/methods." + "readOnly": true }, - "taxRules": { - "description": "Pricing based on multiple taxes." + "optionIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true }, - "referencePrice": { - "description": "Original cost price of the product." + "streamIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true }, - "listPrice": { - "properties": { - "price": { - "description": "Price of each line item." - }, - "discount": { - "description": "Absolute discount on each line item." - }, - "percentage": { - "description": "Discount in percentage." - } - } - }, - "regulationPrice": { - "properties": { - "price": { - "description": "Contains cheapest price from last 30 days as per EU law." - } - } - } - } - } - }, - "type": "object" - }, - "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" + "tagIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "max": { - "type": "integer", - "format": "int32" + "readOnly": true + }, + "categoryIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "unit": { + "readOnly": true + }, + "childCount": { + "type": "integer", + "format": "int64", + "readOnly": true + }, + "sales": { + "description": "Frequency of the product sales.", + "type": "integer", + "format": "int64", + "readOnly": true + }, + "metaDescription": { + "type": "string" + }, + "name": { + "type": "string" + }, + "keywords": { + "type": "string" + }, + "description": { + "type": "string" + }, + "descriptionTeaser": { + "description": "Read-only, HTML-stripped excerpt of the description, derived on write.", + "type": "string", + "readOnly": true + }, + "metaTitle": { + "type": "string" + }, + "packUnit": { + "type": "string" + }, + "packUnitPlural": { + "type": "string" + }, + "customFields": { + "type": "object" + }, + "ogTitle": { + "type": "string" + }, + "ogDescription": { + "type": "string" + }, + "type": { + "description": "The type of the product, e.g., physical or digital.", + "type": "string", + "enum": [ + "physical", + "digital" + ] + }, + "states": { + "type": "array", + "items": { "type": "string" + }, + "readOnly": true, + "deprecated": true + }, + "calculatedPrice": { + "type": "object" + }, + "calculatedPrices": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false } - } - }, - "translations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - } - } - } - }, - "orderDeliveries": { - "type": "array", - "items": { - "type": "object", + }, + "calculatedMaxPurchase": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "integer", + "format": "int64" + }, + "calculatedCheapestPrice": { + "type": "object" + }, + "isNew": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "boolean" + }, + "sortedProperties": { + "type": "object" + }, + "measurements": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + }, + "relationships": { "properties": { - "orderId": { - "type": "string" - }, - "shippingOrderAddressId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "shippingDateEarliest": { - "type": "string", - "format": "date-time" - }, - "shippingDateLatest": { - "type": "string", - "format": "date-time" + "downloads": { + "description": "Downloadable files associated with the product (e.g., manuals, digital content)", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/downloads" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product_download" + }, + "id": { + "type": "string", + "example": "d07d50a751bc6ddf12bf3af0efee9b45" + } + } + } + } + }, + "type": "object" }, - "stateId": { - "type": "string" - } - } - } - }, - "salesChannelDefaultAssignments": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" + "parent": { + "description": "Unique identity of the product.", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/parent" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "d0e45878043844ffc41aac437e86b602" + } + } + } + }, + "type": "object" }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" + "children": { + "description": "Product variants that inherit from this parent product", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/children" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product" + }, + "id": { + "type": "string", + "example": "268184c12df027f536154d099d497b31" + } + } + } + } + }, + "type": "object" }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" + "deliveryTime": { + "description": "Estimated delivery time for the product", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/deliveryTime" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "delivery_time" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "8c888ae25a7bd42057370e31f7e01044" + } + } + } + }, + "type": "object" }, - "footerCategoryId": { - "type": "string" + "tax": { + "description": "Tax configuration (rate and calculation rules)", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/tax" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "tax" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "06565e5611f23fdf8cc43e5077b92b54" + } + } + } + }, + "type": "object" }, - "serviceCategoryId": { - "type": "string" + "manufacturer": { + "description": "Product manufacturer or brand information", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/manufacturer" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product_manufacturer" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "c2904bca62b22443d6cf5e9d89cab204" + } + } + } + }, + "type": "object" }, - "name": { - "type": "string" + "unit": { + "description": "Product unit of measure (e.g., piece, liter, kg)", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/unit" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "unit" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "3e34bdebd9bd5edda27e8728904a2552" + } + } + } + }, + "type": "object" }, - "shortName": { - "type": "string" + "cover": { + "description": "Main product image displayed in listings and detail pages", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/cover" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product_media" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "41d0e299ca1abeb2094852da042165c7" + } + } + } + }, + "type": "object" }, - "accessKey": { - "type": "string" + "openGraphMedia": { + "description": "Open Graph image for social media sharing", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/openGraphMedia" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "media" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "bbda52d941a3452369a00f2880f4f358" + } + } + } + }, + "type": "object" }, - "active": { - "type": "boolean" + "cmsPage": { + "description": "Custom CMS page layout for the product detail page", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/cmsPage" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "cms_page" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "7b1460918b1abb93311108f3dc021c9b" + } + } + } + }, + "type": "object" }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpAllowlist": { - "type": "string" - }, - "maintenanceIpWhitelist": { - "deprecated": true, - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" - }, - "hreflangDefaultDomainId": { - "type": "string" - } - } - } - }, - "salesChannels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" + "canonicalProduct": { + "description": "Canonical product reference for variant consolidation and SEO purposes", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/canonicalProduct" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "023995a50b56c0de077323e958b2bbcd" + } + } + } + }, + "type": "object" }, - "countryId": { - "type": "string" + "media": { + "description": "Product images and media gallery", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/media" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product_media" + }, + "id": { + "type": "string", + "example": "62933a2951ef01f4eafd9bdf4d3cd2f0" + } + } + } + } + }, + "type": "object" }, - "navigationCategoryId": { - "type": "string" + "crossSellings": { + "description": "Cross-selling configurations (related products, accessories, similar items)", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/crossSellings" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product_cross_selling" + }, + "id": { + "type": "string", + "example": "89936e14544d1b403cecef938101b6b0" + } + } + } + } + }, + "type": "object" }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" + "configuratorSettings": { + "description": "Variant configurator settings defining available options for product variants", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/configuratorSettings" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product_configurator_setting" + }, + "id": { + "type": "string", + "example": "c0827fee13725d41f1fd7e292243f5aa" + } + } + } + } + }, + "type": "object" }, - "footerCategoryId": { - "type": "string" + "productReviews": { + "description": "Customer reviews and ratings for the product", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/productReviews" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product_review" + }, + "id": { + "type": "string", + "example": "01e78541ea343ed72424a5222796a4cd" + } + } + } + } + }, + "type": "object" }, - "serviceCategoryId": { - "type": "string" + "mainCategories": { + "description": "Primary category assignments per sales channel for SEO and navigation", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/mainCategories" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "main_category" + }, + "id": { + "type": "string", + "example": "1fb731fc4139cbb575429e28846f0c39" + } + } + } + } + }, + "type": "object" }, - "name": { - "type": "string" + "seoUrls": { + "description": "SEO-friendly URLs for the product across different sales channels", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/seoUrls" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "seo_url" + }, + "id": { + "type": "string", + "example": "5321b5a71127b8b98cdd4b068ad56c4c" + } + } + } + } + }, + "type": "object" }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" + "options": { + "description": "Product variant options (e.g., size, color) that define different variants", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/options" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "property_group_option" + }, + "id": { + "type": "string", + "example": "93da65a9fd0004d9477aeac024e08e15" + } + } + } + } + }, + "type": "object" }, - "maintenanceIpAllowlist": { - "type": "string" + "properties": { + "description": "Product properties and characteristics for filtering", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/properties" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "property_group_option" + }, + "id": { + "type": "string", + "example": "74693d2fc58b46bd06410f278e39aa71" + } + } + } + } + }, + "type": "object" }, - "maintenanceIpWhitelist": { - "deprecated": true, - "type": "string" + "categories": { + "description": "Categories this product is assigned to", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/categories" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "category" + }, + "id": { + "type": "string", + "example": "b0b5ccb4a195a07fd3eed14affb8695f" + } + } + } + } + }, + "type": "object" }, - "mailHeaderFooterId": { - "type": "string" + "streams": { + "description": "Dynamic product streams this product belongs to based on defined filters", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/streams" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product_stream" + }, + "id": { + "type": "string", + "example": "2f6f4768f1c2d7c8f1f54823723f1a70" + } + } + } + } + }, + "type": "object" }, - "customerGroupId": { - "type": "string" + "categoriesRo": { + "description": "Read-only category tree including all parent categories for optimized queries", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/categoriesRo" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "category" + }, + "id": { + "type": "string", + "example": "7f0702d3a90d965b8c9158c451f43fdb" + } + } + } + } + }, + "type": "object" }, - "hreflangActive": { - "type": "boolean" + "tags": { + "description": "Tags for organizing and filtering products", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/tags" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "tag" + }, + "id": { + "type": "string", + "example": "d57ac45256849d9b13e2422d91580fb9" + } + } + } + } + }, + "type": "object" }, - "hreflangDefaultDomainId": { - "type": "string" + "seoCategory": { + "description": "Main category used for SEO URL generation in the current sales channel", + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/seoCategory" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "category" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "9354d004d12e03d35ad8292bf0bb234d" + } + } + } + }, + "type": "object" } - } - } - }, - "availabilityRule": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" }, - "priority": { - "type": "integer", - "format": "int32" - }, - "invalid": { - "type": "boolean" - } + "type": "object" } }, - "availabilityRuleId": { - "type": "string" - }, - "prices": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "ruleId": { - "type": "string" - }, - "calculation": { - "type": "integer", - "format": "int32" - }, - "quantityStart": { - "type": "number", - "format": "float" - }, - "quantityEnd": { - "type": "number", - "format": "float" - }, - "price": { - "type": "number", - "format": "float" - }, - "calculationRuleId": { - "type": "string" - } - } - } - }, - "mediaId": { - "type": "string" - }, - "media": { - "type": "object", + "type": "object" + } + ] + }, + "ProductListingCriteria": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + }, + { + "type": "object", + "description": "Additional search parameters for product listings", + "properties": { + "order": { + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "type": "string" + }, + "limit": { + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "type": "integer", + "minimum": 0 + }, + "p": { + "description": "Search result page", + "type": "integer", + "default": 1 + }, + "manufacturer": { + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "type": "string" + }, + "min-price": { + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "max-price": { + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "rating": { + "description": "Filter products with a minimum average rating.", + "type": "integer" + }, + "shipping-free": { + "description": "Filters products that are marked as shipping-free.", + "type": "boolean", + "default": false + }, "properties": { - "userId": { - "type": "string" - }, - "mimeType": { - "type": "string" - }, - "fileExtension": { - "type": "string" - }, - "fileSize": { - "type": "integer", - "format": "int32" - }, - "title": { - "type": "string" - }, - "metaDataRaw": { - "type": "string" - }, - "mediaTypeRaw": { - "type": "string" - }, - "uploadedAt": { - "type": "string", - "format": "date-time" - }, - "alt": { - "type": "string" - }, - "url": { - "type": "string" - }, - "fileName": { - "type": "string" - }, - "mediaFolderId": { - "type": "string" - }, - "private": { - "type": "boolean" - }, - "thumbnailsRo": { - "type": "string" - } - } - }, - "tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "type": "string" + }, + "manufacturer-filter": { + "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "price-filter": { + "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "rating-filter": { + "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "shipping-free-filter": { + "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-filter": { + "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-whitelist": { + "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", + "type": "string" + }, + "reduce-aggregations": { + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "oneOf": [ + { "type": "string" + }, + { + "type": "null" } - } + ] } } } - }, + ], "properties": { - "name": { - "description": "Name of the shipping method." - }, - "active": { - "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." - }, - "description": { - "description": "The order of the tabs of your defined shipping methods in the storefront by entering numerical values like 1,2,3, etc." - }, - "deliveryTimeId": { - "description": "Unique identity of the delivery time." - }, - "deliveryTime": { + "filter": { "properties": { - "name": { - "description": "Name given to delivery time." - }, - "min": { - "description": "Minimum delivery time taken." + "type": { + "description": "To filter the results and aggregations with filter types like ==, >=, etc." }, - "max": { - "description": "Maximum delivery time taken." + "field": { + "description": "To filter the results and aggregations by field like an property identifier." }, - "unit": { - "description": "Unit in which the delivery time is defined. For example, days or hours." + "value": { + "description": "To filter the results and aggregations by value." } } }, - "translations": { + "sort": { "properties": { - "shippingMethodId": { - "description": "Unique identity of shipping method." + "field": { + "description": "Sort the search results by field like an property identifier." }, - "name": { - "description": "Name of the shipping method." + "order": { + "description": "Sort the search results of orders by ascending or descending." }, - "description": { - "description": "A short description of the shipping method." + "naturalSorting": { + "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." } } }, - "orderDeliveries": { + "post-filter": { "properties": { - "orderId": { - "description": "Unique identity of order." - }, - "shippingOrderAddressId": { - "description": "Unique identity of shipping order address." + "type": { + "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." }, - "shippingMethodId": { - "description": "Unique identity of shipping method." + "field": { + "description": "To filter only the results but not the aggregations by field like an property identifier." }, - "shippingDateEarliest": { - "description": "Date and time of earliest delivery of products." + "value": { + "description": "To filter only the results but not the aggregations by value." + } + } + } + } + }, + "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" }, - "shippingDateLatest": { - "description": "Date and time of latest delivery of products." + { + "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" }, - "stateId": { - "description": "Unique identity of state." + { + "type": "null" } - } + ] + } + } + }, + "ProductListingResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EntitySearchResult" }, - "salesChannelDefaultAssignments": { + { + "type": "object", "properties": { - "stateId": { - "description": "Unique identity of state." - }, - "languageId": { - "description": "Unique identity of language." - }, - "currencyId": { - "description": "Unique identity of currency." - }, - "paymentMethodId": { - "description": "Unique identity of payment method." - }, - "shippingMethodId": { - "description": "Unique identity of shipping method." - }, - "countryId": { - "description": "Unique identity of country." - }, - "navigationCategoryId": { - "description": "Unique identity of navigation category." - }, - "navigationCategoryDepth": { - "description": "It determines the number of levels of subcategories in the storefront category menu." - }, - "footerCategoryId": { - "description": "Unique identity of footer category." - }, - "serviceCategoryId": { - "description": "Unique identity of service category." - }, - "name": { - "description": "Name of the sales channel." - }, - "shortName": { - "description": "A short name for sales channel." - }, - "accessKey": { - "description": "Access key to store api." - }, - "active": { - "description": "When boolean value is `true`, the shipping methods are available for selection in the sales channel's storefront." + "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" + ] }, - "maintenance": { - "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." + "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", + "const": "product_sorting" + } + }, + "required": [ + "label", + "translated", + "key", + "priority", + "apiAlias" + ] + } }, - "maintenanceIpWhitelist": { - "description": "Array of IP address allowed to access the sales channel." + "sorting": { + "type": "string" }, - "mailHeaderFooterId": { - "description": "Unique identity of mail header and footer." + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } }, - "customerGroupId": { - "description": "Unique identity of customer group." + "entity": { + "type": "string", + "enum": [ + "product" + ] }, - "hreflangActive": { - "description": "When boolean value is `true`, the sales channel pages are available in different languages." + "apiAlias": { + "type": "string", + "const": "product_listing" + } + }, + "required": [ + "elements", + "availableSortings", + "currentFilters", + "apiAlias" + ] + } + ] + }, + "ProductManufacturer": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of the Product Manufacturer." + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of the ProductManufacturer's version." + }, + "mediaId": { + "description": "Unique identity of the media.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "link": { + "type": "string", + "description": "URL of the manufacturer's portal." + }, + "name": { + "type": "string", + "description": "Name of the product manufacturer." + }, + "description": { + "type": "string", + "description": "A detailed description of product manufacturer." + }, + "customFields": { + "type": "object", + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object", + "description": "Contains the translations of all translated fields." + }, + "media": { + "$ref": "#/components/schemas/Media" + } + }, + "type": "object" + }, + "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" }, - "hreflangDefaultDomainId": { - "description": "Unique identity of hreflangDefaultDomain." + "value": { + "type": "number" } } }, - "salesChannels": { + "height": { + "type": "object", "properties": { - "stateId": { - "description": "Unique identity of state." - }, - "languageId": { - "description": "Unique identity of language." - }, - "currencyId": { - "description": "Unique identity of currency." - }, - "paymentMethodId": { - "description": "Unique identity of payment method." - }, - "shippingMethodId": { - "description": "Unique identity of shipping method." - }, - "countryId": { - "description": "Unique identity of country." - }, - "navigationCategoryId": { - "description": "Unique identity of navigation category." - }, - "navigationCategoryDepth": { - "description": "It determines the number of levels of subcategories in the storefront category menu." - }, - "footerCategoryId": { - "description": "Unique identity of footer category." - }, - "serviceCategoryId": { - "description": "Unique identity of service category." - }, - "name": { - "description": "Name of the sales channel." - }, - "shortName": { - "description": "A short name for sales channel." - }, - "accessKey": { - "description": "Access key to store api." - }, - "active": { - "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." - }, - "maintenance": { - "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." - }, - "maintenanceIpWhitelist": { - "description": "Array of IP address allowed to access the sales channel." - }, - "mailHeaderFooterId": { - "description": "Unique identity of mail header and footer." - }, - "customerGroupId": { - "description": "Unique identity of customer group." - }, - "hreflangActive": { - "description": "When boolean value is `true``, the sales channel pages are available in different languages." - }, - "hreflangDefaultDomainId": { - "description": "Unique identity of hreflangDefaultDomain." - } - } - }, - "availabilityRule": { - "properties": { - "name": { - "description": "Unique name for the rule." - }, - "description": { - "description": "A short description about the rule." - }, - "priority": { - "description": "A numerical value to prioritize one of the rules from the list." - }, - "invalid": { - "description": "When the boolean value is `true`, the rule is no more available for usage." - } - } - }, - "availabilityRuleId": { - "description": "Unique identity of availability rule." - }, - "prices": { - "properties": { - "shippingMethodId": { - "description": "Unique identity of shipping method." - }, - "currencyId": { - "description": "Unique identity of currency." - }, - "ruleId": { - "description": "Unique identity of rule." - }, - "calculation": { - "description": "Shipping price calculated based on quantity, price, weight or volume of items." - }, - "quantityStart": { - "description": "Starting range of quantity of an item." - }, - "quantityEnd": { - "description": "Ending range of quantity of an item." - }, - "price": { - "description": "Shipping method price after applied rules." + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" }, - "calculationRuleId": { - "description": "Unique identity of calculation rule." + "value": { + "type": "number" } } }, - "mediaId": { - "description": "Unique identity of media." - }, - "media": { + "length": { + "type": "object", "properties": { - "userId": { - "description": "Unique identity of user." - }, - "mimeType": { - "description": "A string sent along with a file indicating the type of the file. For example: image/jpeg." - }, - "fileExtension": { - "description": "Type of file indication. For example: jpeg, png." - }, - "fileSize": { - "description": "Size of the file media file uploaded." - }, - "title": { - "description": "Title name give to the media." - }, - "metaDataRaw": { - "description": "Details of the media file uploaded." - }, - "alt": { - "description": "Alternate text for media." - }, - "url": { - "description": "Runtime field, cannot be used as part of the criteria." - }, - "fileName": { - "description": "Name of the media file uploaded." - }, - "mediaFolderId": { - "description": "Unique identity of media folder." + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" }, - "private": { - "description": "Boolean value is `true` to keep the media display private." - } - } - }, - "tags": { - "properties": { - "name": { - "description": "Name of the tag." + "value": { + "type": "number" } } - } - } - }, - "CartDeliveryInformation": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "const": "cart_delivery_information" - }, - "freeDelivery": { - "type": "boolean" }, - "deliveryTime": { + "weight": { "type": "object", "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer" - }, - "max": { - "type": "integer" - }, "unit": { - "type": "string" - }, - "apiAlias": { "type": "string", - "const": "cart_delivery_time" + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg" + }, + "value": { + "type": "number" } } - }, - "height": { - "type": "integer" - }, - "length": { - "type": "integer" - }, - "restockTime": { - "type": "integer" - }, - "stock": { - "type": "integer" - }, - "weight": { - "type": "integer" - }, - "width": { - "type": "integer" } - }, - "required": [ - "apiAlias" - ] + } }, - "ShippingMethod": { + "ProductMedia": { "description": "Added since version: 6.0.0.0", "required": [ + "media", "id", - "technicalName", - "deliveryTimeId", - "name" + "productId", + "mediaId" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of shipping method." + "description": "Unique identity of the Product Media." }, - "name": { + "versionId": { "type": "string", - "description": "Name of the shipping method." - }, - "technicalName": { - "type": "string" + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of the ProductMedia version." }, - "active": { - "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront.", - "type": "boolean" + "productId": { + "description": "Unique identity of the product.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "position": { - "description": "The order of the tabs of your defined shipping methods in the storefront by entering numerical values like 1,2,3, etc.", + "productVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of the product's version." + }, + "mediaId": { + "description": "Unique identity of the media.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "position": { + "description": "The order of the images to be displayed for a product.", "type": "integer", "format": "int64" }, @@ -9163,96 +10243,174 @@ "type": "object", "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, - "mediaId": { - "description": "Unique identity of media.", + "createdAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "deliveryTimeId": { - "description": "Unique identity of deliveryTime.", + "updatedAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "taxType": { - "description": "Refers `Free`, `Net` or `Gross` type of taxes.", - "type": "string" + "media": { + "$ref": "#/components/schemas/Media" + } + }, + "type": "object" + }, + "ProductPurchaseLimit": { + "type": "object", + "description": "Current quantity purchase limits for a product.", + "required": [ + "productId", + "minPurchase", + "purchaseSteps", + "maxPurchase", + "stock", + "apiAlias" + ], + "properties": { + "productId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "The product ID." }, - "description": { + "minPurchase": { + "type": "integer", + "description": "Minimum quantity a customer can purchase." + }, + "purchaseSteps": { + "type": "integer", + "description": "Step increment for quantity selection." + }, + "maxPurchase": { + "type": "integer", + "description": "Maximum quantity a customer can purchase, reflecting current stock for closeout products." + }, + "stock": { + "type": [ + "integer", + "null" + ], + "description": "Current stock level of the product." + }, + "apiAlias": { "type": "string", - "description": "Description of each shipping method." + "const": "product_purchase_limit" + } + } + }, + "ProductReview": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "productId", + "salesChannelId", + "languageId", + "title", + "content" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of the product's review." }, - "trackingUrl": { + "productId": { + "description": "Unique identity of the product.", "type": "string", - "description": "This URL allows to track packages." + "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { + "productVersionId": { "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of the product's version." }, - "updatedAt": { + "salesChannelId": { + "description": "Unique identity of the sales channel.", "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." + "languageId": { + "description": "Unique identity of the language.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "deliveryTime": { - "$ref": "#/components/schemas/DeliveryTime", - "description": "Estimated delivery time information" + "externalUser": { + "description": "External user name.", + "type": "string" }, - "availabilityRule": { - "$ref": "#/components/schemas/Rule", - "description": "Rule defining when this shipping method is available" + "title": { + "description": "Title of product review.", + "type": "string" }, - "prices": { - "description": "Shipping prices based on weight, volume, or cart value", - "type": "array", - "items": { - "$ref": "#/components/schemas/ShippingMethodPrice" - } + "content": { + "description": "Short description or subject of the project review.", + "type": "string" }, - "media": { - "$ref": "#/components/schemas/Media", - "description": "Shipping method logo or carrier image" + "points": { + "description": "A floating point number given to rate a product.", + "type": "number", + "format": "float" }, - "tags": { - "description": "Tags for organizing shipping methods", - "type": "array", - "items": { - "$ref": "#/components/schemas/Tag" - } + "status": { + "description": "When status is set, the rating is made visible.", + "type": "boolean" }, - "tax": { - "$ref": "#/components/schemas/Tax", - "description": "Tax configuration for shipping costs" + "comment": { + "description": "Detailed review about the product.", + "type": "string" + }, + "customFields": { + "type": "object", + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true } }, "type": "object" }, - "CustomerWishlist": { - "description": "Added since version: 6.3.4.0", + "ProductStream": { + "description": "Added since version: 6.0.0.0", "required": [ "id", - "customerId" + "name" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the customer's wishlist." + "description": "Unique identity of product stream." }, - "customerId": { - "description": "Unique identity of the customer.", + "name": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "description": "Name of the Dynamic Group to be created." + }, + "description": { + "type": "string", + "description": "Description of the Dynamic group to be created." }, "customFields": { "type": "object", "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, + "internal": { + "description": "When the boolean value is `true` indicating that it is for internal use only and will not appear in product stream listings.", + "type": "boolean" + }, + "displayAsGroup": { + "description": "When enabled, matching variants are grouped according to the product presentation setting. Disable to show them individually.", + "type": "boolean" + }, "createdAt": { "type": "string", "format": "date-time", @@ -9263,34 +10421,54 @@ "format": "date-time", "readOnly": true }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CustomerWishlistProduct" - } + "translated": { + "type": "object", + "description": "Contains the translations of all translated fields." } }, "type": "object" }, - "Rule": { + "PropertyGroup": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "name" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of rule." + "description": "Unique identity of property group." }, "name": { - "description": "Name of the rule defined.", - "type": "string" + "type": "string", + "description": "Name of the property group." }, "description": { - "description": "Description of the rule.", + "type": "string", + "description": "Description on property group." + }, + "displayType": { + "description": "Property groups can be displayed in the form of text, image, dropdown or color.", + "type": "string" + }, + "sortingType": { + "description": "Sorting the property group by name or position.", "type": "string" }, + "filterable": { + "description": "When set to true, the property will be displayed in the product filter of product lists.", + "type": "boolean" + }, + "visibleOnProductDetailPage": { + "description": "When set to true, the property groups are displayed on product detail page.", + "type": "boolean" + }, + "position": { + "type": "integer", + "format": "int64", + "description": "The order of the tabs of your defined property groups. Enter numerical values like 1,2,3, etc.to adjust their order of display." + }, "customFields": { "type": "object", "description": "Additional fields that offer a possibility to add own fields for the different program-areas." @@ -9305,8119 +10483,4721 @@ "format": "date-time", "readOnly": true }, - "extensions": { - "description": "To store additional data to a rule from extensions." + "translated": { + "type": "object", + "description": "Contains the translations of all translated fields." + }, + "options": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PropertyGroupOption" + } } }, "type": "object" }, - "ProductJsonApi": { + "PropertyGroupOption": { "description": "Added since version: 6.0.0.0", - "allOf": [ - { - "$ref": "#/components/schemas/resource", - "required": [ - "options" - ], - "properties": { - "options": { - "type": "array", - "items": { - "type": "object", - "required": [ - "group", - "option", - "translated" - ], - "properties": { - "group": { - "type": "string" - }, - "option": { - "type": "string" - }, - "translated": { - "type": "object", - "properties": { - "group": { - "type": "string" - }, - "option": { - "type": "string" - } - }, - "required": [ - "group", - "option" - ] - } + "required": [ + "group", + "option", + "translated", + "id", + "groupId", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of property group option." + }, + "groupId": { + "description": "Unique identity of property group.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "name": { + "type": "string", + "description": "Name of the property group option." + }, + "position": { + "type": "integer", + "format": "int64", + "description": "The order of the tabs of your defined property group options. Enter numerical values like 1,2,3, etc.to adjust their order of display." + }, + "colorHexCode": { + "description": "Property group options can be displayed in the form of color. For example: #98e3f5ff.", + "type": "string" + }, + "mediaId": { + "description": "Unique identity of media.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "combinable": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "boolean" + }, + "customFields": { + "type": "object", + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object", + "description": "Contains the translations of all translated fields." + }, + "media": { + "$ref": "#/components/schemas/Media" + }, + "group": { + "$ref": "#/components/schemas/PropertyGroup" + }, + "option": { + "type": "string" + } + }, + "type": "object" + }, + "ReferencePrice": { + "type": "object", + "properties": { + "purchaseUnit": { + "type": "number" + }, + "referenceUnit": { + "type": "number" + }, + "unitName": { + "type": "string" + }, + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "const": "cart_price_reference" + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/ListPrice" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "const": "cart_regulation_price" } } + }, + { + "type": "null" } - } + ] }, - { - "required": [ - "id", - "taxId", - "productNumber", - "stock", - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "parentId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "parentVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "manufacturerId": { - "description": "Unique identity of the manufacturer.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productManufacturerVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "unitId": { - "description": "Unique identity of the unit.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "taxId": { - "description": "Unique identity of tax.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "coverId": { - "description": "Unique identity of a ProductMedia item used as product cover.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productMediaVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "deliveryTimeId": { - "description": "Unique identity of delivery time.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "canonicalProductId": { - "description": "Unique identity of canonical product.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "canonicalProductVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "cmsPageId": { - "description": "Unique identity of CMS page.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "cmsPageVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "openGraphMediaId": { - "description": "Media used as Open Graph image for social media sharing.", + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productNumber": { - "description": "Unique number assigned to individual products. Define rules for automatic assignment of every product creation as per your number range.", - "type": "string" - }, - "restockTime": { - "description": "The restock time in days indicates how long it will take until a sold out item is back in stock.", - "type": "integer", - "format": "int64" - }, - "active": { - "description": "When boolean value is `true`, the products are available for selection in the storefront for purchase.", - "type": "boolean" - }, - "available": { - "description": "Indicates weather the product is available or not.", - "type": "boolean", - "readOnly": true - }, - "isCloseout": { - "description": "When the value is set to true, the product is hidden when sold out.", - "type": "boolean" + "format": "^[0-9a-f]{32}$" }, - "availableStock": { - "description": "Indicates the number of products still available. This value results from the stock minus the open orders.", - "type": "integer", - "format": "int64", - "readOnly": true - }, - "stock": { - "description": "Indicates the number of products available.", - "type": "integer", - "format": "int64" - }, - "displayGroup": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "string", - "readOnly": true - }, - "manufacturerNumber": { - "description": "Unique number that describes the manufacturer.", - "type": "string" - }, - "ean": { - "description": "Indicates EAN of the product.", - "type": "string" - }, - "purchaseSteps": { - "description": "Specifies the scales in which the item is to be offered. For example, a scale of 2 means that your customers can purchase 2, 4, 6 products, etc., but not 1, 3 or 5.", - "type": "integer", - "format": "int64" - }, - "maxPurchase": { - "description": "Maximum number of items that can be purchased.", - "type": "integer", - "format": "int64" - }, - "minPurchase": { - "description": "Minimum number of items that can be purchased.", - "type": "integer", - "format": "int64" - }, - "purchaseUnit": { - "description": "Quantity of the item purchased. For example, 500ml, 2kg, etc.", - "type": "number", - "format": "float" - }, - "referenceUnit": { - "description": "Price of purchased item calculated as per the reference unit. Say, you bought 500ml of milk and the price is calculated in reference to 1000ml.", - "type": "number", - "format": "float" - }, - "shippingFree": { - "description": "Indicates weather the shipping price is free or not.", - "type": "boolean" - }, - "markAsTopseller": { - "description": "Indicates weather the product is top seller or not.", - "type": "boolean" - }, - "weight": { - "description": "The weight of the product.", - "type": "number", - "format": "float" - }, - "width": { - "description": "The width of the product.", - "type": "number", - "format": "float" - }, - "height": { - "description": "The height of the product.", - "type": "number", - "format": "float" - }, - "length": { - "description": "The length of the product.", - "type": "number", - "format": "float" - }, - "releaseDate": { - "description": "The release date of a product or product model. This can be used to distinguish the exact variant of a product.", - "type": "string", - "format": "date-time" - }, - "ratingAverage": { - "description": "Average of all the ratings.", - "type": "number", - "format": "float", - "readOnly": true - }, - "categoryTree": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, - "propertyIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, - "optionIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, - "streamIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, - "tagIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, - "categoryIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, - "childCount": { - "type": "integer", - "format": "int64", - "readOnly": true - }, - "sales": { - "description": "Frequency of the product sales.", - "type": "integer", - "format": "int64", - "readOnly": true - }, - "metaDescription": { - "type": "string" - }, - "name": { - "type": "string" - }, - "keywords": { - "type": "string" - }, - "description": { - "type": "string" - }, - "descriptionTeaser": { - "description": "Read-only, HTML-stripped excerpt of the description, derived on write.", - "type": "string", - "readOnly": true - }, - "metaTitle": { - "type": "string" - }, - "packUnit": { - "type": "string" - }, - "packUnitPlural": { - "type": "string" - }, - "customFields": { - "type": "object" - }, - "ogTitle": { - "type": "string" - }, - "ogDescription": { - "type": "string" - }, - "type": { - "description": "The type of the product, e.g., physical or digital.", - "type": "string", - "enum": [ - "physical", - "digital" - ] - }, - "states": { - "type": "array", - "items": { - "type": "string" - }, - "readOnly": true, - "deprecated": true - }, - "calculatedPrice": { - "type": "object" - }, - "calculatedPrices": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": false - } - }, - "calculatedMaxPurchase": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "integer", - "format": "int64" - }, - "calculatedCheapestPrice": { - "type": "object" - }, - "isNew": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean" - }, - "sortedProperties": { - "type": "object" - }, - "measurements": { - "type": "object" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - }, - "relationships": { - "properties": { - "downloads": { - "description": "Downloadable files associated with the product (e.g., manuals, digital content)", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/downloads" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product_download" - }, - "id": { - "type": "string", - "example": "d07d50a751bc6ddf12bf3af0efee9b45" - } - } - } - } - }, - "type": "object" - }, - "parent": { - "description": "Unique identity of the product.", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/parent" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "d0e45878043844ffc41aac437e86b602" - } - } - } - }, - "type": "object" - }, - "children": { - "description": "Product variants that inherit from this parent product", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/children" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product" - }, - "id": { - "type": "string", - "example": "268184c12df027f536154d099d497b31" - } - } - } - } - }, - "type": "object" - }, - "deliveryTime": { - "description": "Estimated delivery time for the product", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/deliveryTime" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "delivery_time" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "8c888ae25a7bd42057370e31f7e01044" - } - } - } - }, - "type": "object" - }, - "tax": { - "description": "Tax configuration (rate and calculation rules)", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/tax" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "tax" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "06565e5611f23fdf8cc43e5077b92b54" - } - } - } - }, - "type": "object" - }, - "manufacturer": { - "description": "Product manufacturer or brand information", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/manufacturer" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product_manufacturer" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "c2904bca62b22443d6cf5e9d89cab204" - } - } - } - }, - "type": "object" - }, - "unit": { - "description": "Product unit of measure (e.g., piece, liter, kg)", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/unit" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "unit" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "3e34bdebd9bd5edda27e8728904a2552" - } - } - } - }, - "type": "object" - }, - "cover": { - "description": "Main product image displayed in listings and detail pages", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/cover" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product_media" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "41d0e299ca1abeb2094852da042165c7" - } - } - } - }, - "type": "object" - }, - "openGraphMedia": { - "description": "Open Graph image for social media sharing", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/openGraphMedia" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "media" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "bbda52d941a3452369a00f2880f4f358" - } - } - } - }, - "type": "object" - }, - "cmsPage": { - "description": "Custom CMS page layout for the product detail page", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/cmsPage" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "cms_page" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "7b1460918b1abb93311108f3dc021c9b" - } - } - } - }, - "type": "object" - }, - "canonicalProduct": { - "description": "Canonical product reference for variant consolidation and SEO purposes", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/canonicalProduct" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "023995a50b56c0de077323e958b2bbcd" - } - } - } - }, - "type": "object" - }, - "media": { - "description": "Product images and media gallery", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/media" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product_media" - }, - "id": { - "type": "string", - "example": "62933a2951ef01f4eafd9bdf4d3cd2f0" - } - } - } - } - }, - "type": "object" - }, - "crossSellings": { - "description": "Cross-selling configurations (related products, accessories, similar items)", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/crossSellings" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product_cross_selling" - }, - "id": { - "type": "string", - "example": "89936e14544d1b403cecef938101b6b0" - } - } - } - } - }, - "type": "object" - }, - "configuratorSettings": { - "description": "Variant configurator settings defining available options for product variants", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/configuratorSettings" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product_configurator_setting" - }, - "id": { - "type": "string", - "example": "c0827fee13725d41f1fd7e292243f5aa" - } - } - } - } - }, - "type": "object" - }, - "productReviews": { - "description": "Customer reviews and ratings for the product", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/productReviews" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product_review" - }, - "id": { - "type": "string", - "example": "01e78541ea343ed72424a5222796a4cd" - } - } - } - } - }, - "type": "object" - }, - "mainCategories": { - "description": "Primary category assignments per sales channel for SEO and navigation", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/mainCategories" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "main_category" - }, - "id": { - "type": "string", - "example": "1fb731fc4139cbb575429e28846f0c39" - } - } - } - } - }, - "type": "object" - }, - "seoUrls": { - "description": "SEO-friendly URLs for the product across different sales channels", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/seoUrls" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "seo_url" - }, - "id": { - "type": "string", - "example": "5321b5a71127b8b98cdd4b068ad56c4c" - } - } - } - } - }, - "type": "object" - }, - "options": { - "description": "Product variant options (e.g., size, color) that define different variants", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/options" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "property_group_option" - }, - "id": { - "type": "string", - "example": "93da65a9fd0004d9477aeac024e08e15" - } - } - } - } - }, - "type": "object" - }, - "properties": { - "description": "Product properties and characteristics for filtering", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/properties" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "property_group_option" - }, - "id": { - "type": "string", - "example": "74693d2fc58b46bd06410f278e39aa71" - } - } - } - } - }, - "type": "object" - }, - "categories": { - "description": "Categories this product is assigned to", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/categories" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "category" - }, - "id": { - "type": "string", - "example": "b0b5ccb4a195a07fd3eed14affb8695f" - } - } - } - } - }, - "type": "object" - }, - "streams": { - "description": "Dynamic product streams this product belongs to based on defined filters", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/streams" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product_stream" - }, - "id": { - "type": "string", - "example": "2f6f4768f1c2d7c8f1f54823723f1a70" - } - } - } - } - }, - "type": "object" - }, - "categoriesRo": { - "description": "Read-only category tree including all parent categories for optimized queries", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/categoriesRo" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "category" - }, - "id": { - "type": "string", - "example": "7f0702d3a90d965b8c9158c451f43fdb" - } - } - } - } - }, - "type": "object" - }, - "tags": { - "description": "Tags for organizing and filtering products", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/tags" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "tag" - }, - "id": { - "type": "string", - "example": "d57ac45256849d9b13e2422d91580fb9" - } - } - } - } - }, - "type": "object" - }, - "seoCategory": { - "description": "Main category used for SEO URL generation in the current sales channel", - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/seoCategory" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "category" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "9354d004d12e03d35ad8292bf0bb234d" - } - } - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - ] - }, - "PromotionIndividualCode": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of promotion individual code." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "Sitemap": { - "type": "object", - "properties": { - "filename": { - "type": "string", - "description": "Name of the file which holds a list of all URL's." - }, - "created": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "filename", - "created" - ] - }, - "UserRecovery": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of user recovery." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "PropertyGroup": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of property group." - }, - "name": { - "type": "string", - "description": "Name of the property group." - }, - "description": { - "type": "string", - "description": "Description on property group." - }, - "displayType": { - "description": "Property groups can be displayed in the form of text, image, dropdown or color.", - "type": "string" - }, - "sortingType": { - "description": "Sorting the property group by name or position.", - "type": "string" - }, - "filterable": { - "description": "When set to true, the property will be displayed in the product filter of product lists.", - "type": "boolean" - }, - "visibleOnProductDetailPage": { - "description": "When set to true, the property groups are displayed on product detail page.", - "type": "boolean" - }, - "position": { - "type": "integer", - "format": "int64", - "description": "The order of the tabs of your defined property groups. Enter numerical values like 1,2,3, etc.to adjust their order of display." - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." - }, - "options": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PropertyGroupOption" - } - } - }, - "type": "object" - }, - "ProductConfiguratorSetting": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "productId", - "optionId" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of Product configurator setting." - }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of Product configurator setting version." - }, - "productId": { - "description": "Unique identity of product.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of product version." - }, - "mediaId": { - "description": "Unique identity of media.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "optionId": { - "description": "Unique identity of option.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "position": { - "description": "The order of the tabs of your defined product configuration settings in the storefront by entering numerical values like 1,2,3, etc.", - "type": "integer", - "format": "int64" - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "media": { - "$ref": "#/components/schemas/Media" - }, - "option": { - "$ref": "#/components/schemas/PropertyGroupOption" - } - }, - "type": "object" - }, - "Association": { - "additionalProperties": { - "$ref": "#/components/schemas/Association" - } - }, - "StateMachineHistory": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of state machine history." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "fromStateMachineState": { - "$ref": "#/components/schemas/StateMachineState" - }, - "toStateMachineState": { - "$ref": "#/components/schemas/StateMachineState" - } - }, - "type": "object" - }, - "Currency": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "factor", - "symbol", - "isoCode", - "itemRounding", - "totalRounding", - "shortName", - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of currency." - }, - "factor": { - "description": "Currency exchange rate.", - "type": "number", - "format": "float" - }, - "symbol": { - "description": "A currency symbol is a graphical representation used as shorthand for a currency's name, for example US Dollar - $", - "type": "string" - }, - "isoCode": { - "description": "Standard international three digit code to represent currency. For example, USD.", - "type": "string" - }, - "shortName": { - "type": "string", - "description": "Acronym for international currencies. For example, USD." - }, - "name": { - "type": "string", - "description": "Full name of the currency. For example, US-Dollar." - }, - "position": { - "description": "The order of the tabs for multiple currencies defined.", - "type": "integer", - "format": "int64" - }, - "isSystemDefault": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean" - }, - "taxFreeFrom": { - "description": "The value from which the tax must be exempted.", - "type": "number", - "format": "float" - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "itemRounding": { - "required": [ - "decimals", - "interval", - "roundForNet" - ], - "properties": { - "decimals": { - "type": "integer", - "format": "int64", - "description": "It defines the cash round off applied on the cart line items to the nearest decimal points. If set to 2, it rounds off to two significant decimal points." - }, - "interval": { - "type": "number", - "format": "float", - "description": "The interval of item rounding defines the cash rounding interval in terms of how high or low should it be rounded. For example, 0.05 signifies the value gets rounded off to nearest 5 cents." - }, - "roundForNet": { - "type": "boolean", - "description": "The cash rounding applied on net prices. " - } - }, - "type": "object" - }, - "totalRounding": { - "required": [ - "decimals", - "interval", - "roundForNet" - ], - "properties": { - "decimals": { - "type": "integer", - "format": "int64", - "description": "It defines the round off amount to the nearest decimal points applied on the cart’s total amount. If set to 2, it rounds off to two significant decimal points." - }, - "interval": { - "type": "number", - "format": "float", - "description": "The interval defines the cart’s total amount round off interval in terms of how high or low should it be rounded. For example, 0.05 signifies the value gets rounded off to nearest 5 cents." - }, - "roundForNet": { - "type": "boolean", - "description": "The cash rounding applied on cart’s total net prices. " - } - }, - "type": "object" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." - } - }, - "type": "object" - }, - "SystemConfig": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "configurationKey", - "configurationValue" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of system configuration." - }, - "configurationKey": { - "description": "Config key for shop configurations.", - "type": "string" - }, - "configurationValue": { - "properties": { - "_value": { - "type": "object", - "description": "Config value for shop configurations." - } - }, - "type": "object" - }, - "salesChannelId": { - "description": "Unique identity of sales channel.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "salesChannel": { - "$ref": "#/components/schemas/SalesChannel" - } - }, - "type": "object" - }, - "Locale": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "code", - "name", - "territory" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of locale." - }, - "code": { - "description": "Code given to the locale. For example: en-CA.", - "type": "string" - }, - "name": { - "type": "string", - "description": "Name of the locale. For example: English." - }, - "territory": { - "type": "string", - "description": "Name of the location. For example: Canada." - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." - } - }, - "type": "object" - }, - "TaxRule": { - "description": "Added since version: 6.1.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of tax rule." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "Media": { - "description": "Added since version: 6.0.0.0", - "required": [ - "apiAlias", - "fileExtension", - "fileName", - "hasFile", - "path", - "private", - "url", - "id" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of media." - }, - "mimeType": { - "description": "A string sent along with a file indicating the type of the file. For example: image/jpeg.", - "type": "string" - }, - "fileExtension": { - "description": "Type of file indication. For example: jpeg, png.", - "type": "string" - }, - "uploadedAt": { - "description": "Date and time at which media was added.", - "type": "string", - "format": "date-time", - "readOnly": true - }, - "fileName": { - "description": "Name of the media file uploaded.", - "type": "string" - }, - "fileSize": { - "description": "Size of the file media file uploaded.", - "type": "integer", - "format": "int64", - "readOnly": true - }, - "metaData": { - "type": "object", - "readOnly": true, - "properties": { - "height": { - "type": "integer", - "format": "int64" - }, - "width": { - "type": "integer", - "format": "int64" - } - }, - "description": "Details of the media file uploaded." - }, - "config": { - "type": "object" - }, - "alt": { - "type": "string", - "description": "Alternate text for media." - }, - "title": { - "type": "string", - "description": "Title name give to the media." - }, - "url": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "string" - }, - "path": { - "type": "string" - }, - "hasFile": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean" - }, - "private": { - "description": "When `true`, the media display is kept private.", - "type": "boolean" - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." - }, - "thumbnails": { - "description": "Generated thumbnail images in various sizes", - "type": "array", - "items": { - "$ref": "#/components/schemas/MediaThumbnail" - } - }, - "apiAlias": { - "type": "string", - "const": "media" - }, - "extensions": { - "description": "To store additional data to a media from extensions." - } - }, - "type": "object" - }, - "ProductExport": { - "description": "Added since version: 6.1.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of Exported Product." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "CountryState": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "countryId", - "shortCode", - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the country's state." - }, - "countryId": { - "description": "Unique identity of the country.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shortCode": { - "description": "An abbreviation for the country's state.", - "type": "string" - }, - "name": { - "type": "string", - "description": "Name of the country's state." - }, - "position": { - "description": "Numerical value that indicates the order in which the defined states must be displayed in the frontend.", - "type": "integer", - "format": "int64" - }, - "active": { - "description": "When boolean value is `true`, the country's state is available for selection in the storefront.", - "type": "boolean" - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." - } - }, - "type": "object" - }, - "MediaDefaultFolder": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of media default folder." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "SeoUrl": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "languageId", - "foreignKey", - "routeName", - "pathInfo", - "seoPathInfo" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of Seo Url." - }, - "salesChannelId": { - "description": "Unique identity of sales channel.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "languageId": { - "description": "Unique identity of language.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "foreignKey": { - "description": "The key that references to product or category entity ID.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "routeName": { - "description": "A destination routeName that has been registered somewhere in the app's router. For example: \"frontend.detail.page\"", - "type": "string", - "enum": [ - "frontend.navigation.page", - "frontend.landing.page", - "frontend.detail.page" - ] - }, - "pathInfo": { - "description": "Path to product URL. For example: \"/detail/bbf36734504741c79a3bbe3795b91564\"", - "type": "string" - }, - "seoPathInfo": { - "description": "Seo path to product. For example: \"Pepper-white-ground-pearl/SW10098\"", - "type": "string" - }, - "isCanonical": { - "description": "When set to true, search redirects to the main URL.", - "type": "boolean" - }, - "isModified": { - "description": "When boolean value is `true`, the seo url is changed.", - "type": "boolean" - }, - "isDeleted": { - "description": "When set to true, the URL is deleted and cannot be used any more but it is still available on table and can be restored later.", - "type": "boolean" - }, - "error": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "string" - }, - "url": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "string" - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object", - "title": "SeoUrlEntity" - }, - "ProductDownload": { - "description": "Added since version: 6.4.19.0", - "required": [ - "id", - "productId", - "mediaId" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity downloaded product." - }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of downloaded product's version." - }, - "productId": { - "description": "Unique identity of Product.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of Product version." - }, - "mediaId": { - "description": "Unique identity of media.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "position": { - "description": "The order in which the digital products are downloaded, like 1,2,3, etc.to adjust their order of display.", - "type": "integer", - "format": "int64" - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "product": { - "$ref": "#/components/schemas/Product" - }, - "media": { - "$ref": "#/components/schemas/Media" - } - }, - "type": "object" - }, - "MailTemplate": { - "description": "Added since version: 6.0.0.0", - "required": [ - "contentHtml", - "contentPlain" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of mail template." - }, - "systemDefault": { - "type": "boolean", - "description": "Unused field. To be removed in future." - }, - "senderName": { - "type": "string", - "description": "Name of the sender in the mail." - }, - "contentHtml": { - "type": "string", - "description": "HTML content in the mail." - }, - "contentPlain": { - "type": "string", - "description": "Textual content in the mail." - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." - }, - "mailTemplateType": { - "$ref": "#/components/schemas/MailTemplateType" - }, - "media": { - "type": "array", - "items": { - "$ref": "#/components/schemas/MailTemplateMedia" - } - } - }, - "type": "object" - }, - "SalesChannelFile": { - "description": "Added since version: 6.7.12.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "CmsPage": { - "description": "Added since version: 6.0.0.0", - "required": [ - "apiAlias", - "sections", - "id", - "type" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of CMS page." - }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of CMS page version." - }, - "name": { - "type": "string", - "description": "Name of the CMS page." - }, - "type": { - "description": "CMS page types can be `landingpage`, `page`, `product_list`, `product_detail`.", - "type": "string" - }, - "entity": { - "description": "This field will be implemented in the future.", - "type": "string" - }, - "cssClass": { - "description": "One or more CSS classes added and separated by spaces.", - "type": "string" - }, - "config": { - "properties": { - "backgroundColor": { - "type": "string", - "description": "Background color of the CMS page." - } - }, - "type": "object" - }, - "previewMediaId": { - "description": "Unique identity of media to be previewed.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." - }, - "sections": { - "description": "Content sections within the CMS page (layout blocks containing slots)", - "type": "array", - "items": { - "$ref": "#/components/schemas/CmsSection" - } - }, - "previewMedia": { - "$ref": "#/components/schemas/Media", - "description": "Preview image for the CMS page in admin panel and page selection" - }, - "landingPages": { - "description": "Landing pages using this CMS layout", - "type": "array", - "items": { - "$ref": "#/components/schemas/LandingPage" - } - }, - "apiAlias": { - "type": "string", - "const": "cms_page" - } - }, - "type": "object" - }, - "CmsBlock": { - "description": "Added since version: 6.0.0.0", - "required": [ - "apiAlias", - "slots", - "id", - "position", - "type", - "sectionId" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of CMS Block version." - }, - "cmsSectionVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of CMS Section version." - }, - "position": { - "description": "Order of the block indicated by number like 0, 1, 2,...", - "type": "integer", - "format": "int64" - }, - "type": { - "description": "Type of block can be 'image`, `text`, 'product-listing`, `image-two-column`, etc.", - "type": "string" - }, - "name": { - "description": "Unique name of the CMS Block.", - "type": "string" - }, - "sectionPosition": { - "description": "Position of the section. It can either be `main` or `sidebar`.", - "type": "string" - }, - "marginTop": { - "description": "Defines the margin area on the top of an element.", - "type": "string" - }, - "marginBottom": { - "description": "Defines for the margin area on the bottom of an element.", - "type": "string" - }, - "marginLeft": { - "description": "Defines for the margin area on the left of an element.", - "type": "string" - }, - "marginRight": { - "description": "Defines the margin area on the right of an element.", - "type": "string" - }, - "backgroundColor": { - "description": "Defines the background color of an element.", - "type": "string" - }, - "backgroundMediaId": { - "description": "Unique identity of background media.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "backgroundMediaMode": { - "description": "Background media mode accept values `cover`, `auto`, `contain`.", - "type": "string" - }, - "cssClass": { - "description": "One or more CSS classes added and separated by spaces.", - "type": "string" - }, - "visibility": { - "properties": { - "mobile": { - "type": "boolean" - }, - "desktop": { - "type": "boolean" - }, - "tablet": { - "type": "boolean" - } - }, - "type": "object" - }, - "sectionId": { - "description": "Unique identity of section.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "backgroundMedia": { - "$ref": "#/components/schemas/Media" - }, - "slots": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CmsSlot" - } - }, - "apiAlias": { - "type": "string", - "const": "cms_block" - } - }, - "type": "object" - }, - "CustomField": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of a custom field." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "SalesChannel": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "languageId", - "customerGroupId", - "currencyId", - "paymentMethodId", - "shippingMethodId", - "countryId", - "navigationCategoryId", - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of sales channel." - }, - "languageId": { - "description": "Unique identity of language used.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "customerGroupId": { - "description": "Unique identity of customer group.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "currencyId": { - "description": "Unique identity of currency used.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "paymentMethodId": { - "description": "Unique identity of payment method used.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shippingMethodId": { - "description": "Unique identity of shipping method.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryId": { - "description": "Unique identity of country.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "navigationCategoryId": { - "description": "Unique identity of navigation category.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "navigationCategoryVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of navigation category's version." - }, - "navigationCategoryDepth": { - "description": "It determines the number of levels of subcategories in the storefront category menu.", - "type": "integer", - "format": "int64" - }, - "footerCategoryId": { - "description": "Unique identity of footer category.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "footerCategoryVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of footer category's version." - }, - "serviceCategoryId": { - "description": "Unique identity of service category.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "serviceCategoryVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of service category's version." - }, - "mailHeaderFooterId": { - "description": "Unique identity of mail header and footer.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "hreflangDefaultDomainId": { - "description": "Unique identity of hreflangDefaultDomain.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "measurementUnits": { - "$ref": "#/components/schemas/MeasurementUnits" - }, - "businessTimeZone": { - "description": "Business timezone used for sales-channel-specific rendering. Added since version: 6.7.13.0.", - "type": "string" - }, - "name": { - "type": "string", - "description": "Name of the sales channel." - }, - "shortName": { - "description": "A short name for sales channel.", - "type": "string" - }, - "taxCalculationType": { - "description": "Tax calculation types are `horizontal` and `vertical`.", - "type": "string" - }, - "configuration": { - "type": "object" - }, - "active": { - "description": "When boolean value is `true`, the sales channel is enabled.", - "type": "boolean" - }, - "hreflangActive": { - "description": "When set to true, the sales channel pages are available in different languages.", - "type": "boolean" - }, - "maintenance": { - "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period.", - "type": "boolean" - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." - }, - "language": { - "$ref": "#/components/schemas/Language", - "description": "Default language for the sales channel" - }, - "currency": { - "$ref": "#/components/schemas/Currency", - "description": "Default currency for the sales channel" - }, - "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethod", - "description": "Default payment method for the sales channel" - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod", - "description": "Default shipping method for the sales channel" - }, - "country": { - "$ref": "#/components/schemas/Country", - "description": "Default country for the sales channel" - }, - "domains": { - "description": "Domain URLs configured for the sales channel", - "type": "array", - "items": { - "$ref": "#/components/schemas/SalesChannelDomain" - } - }, - "navigationCategory": { - "$ref": "#/components/schemas/Category", - "description": "Root category for navigation menu" - }, - "footerCategory": { - "$ref": "#/components/schemas/Category", - "description": "Root category for footer navigation" - }, - "serviceCategory": { - "$ref": "#/components/schemas/Category", - "description": "Root category for service pages" - }, - "hreflangDefaultDomain": { - "$ref": "#/components/schemas/SalesChannelDomain" - } - }, - "type": "object" - }, - "CustomerWishlistProduct": { - "description": "Added since version: 6.3.4.0", - "required": [ - "id", - "productId" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the product in customer wishlist." - }, - "productId": { - "description": "Unique identity of the product.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the product's version." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "Country": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "name", - "addressFormat" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the country." - }, - "name": { - "type": "string", - "description": "Name of the country." - }, - "iso": { - "description": "Internationally recognized two-letter country codes. For example, DE, IN, NO, etc.", - "type": "string" - }, - "position": { - "description": "Numerical value that indicates the order in which the defined countries must be displayed in the frontend.", - "type": "integer", - "format": "int64" - }, - "active": { - "description": "When boolean value is `true`, the country is available for selection in the storefront.", - "type": "boolean" - }, - "shippingAvailable": { - "description": "The shipping availability for a country is enabled when boolean value is `true`.", - "type": "boolean" - }, - "iso3": { - "description": "Internationally recognized three-letter country codes. For example, DEU, IND, NOR, etc.", - "type": "string" - }, - "displayStateInRegistration": { - "description": "The country's state is displayed in the address when boolean value is `true`.", - "type": "boolean" - }, - "forceStateInRegistration": { - "description": "State details in the address are force included when boolean value is `true`.", - "type": "boolean" - }, - "checkVatIdPattern": { - "description": "Verify if VAT ID is valid or not.", - "type": "boolean" - }, - "vatIdRequired": { - "description": "Set to true, if VAT ID is to be made mandatory.", - "type": "boolean" - }, - "vatIdPattern": { - "description": "Unique VAT ID with country code and numbers, for example - GB999 9999", - "type": "string" - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "customerTax": { - "required": [ - "enabled", - "currencyId", - "amount" - ], - "properties": { - "enabled": { - "type": "boolean", - "description": "The boolean value is `true` if the tax for the customer apply." - }, - "currencyId": { - "type": "string", - "description": "Unique identity of currency." - }, - "amount": { - "type": "number", - "format": "float", - "description": "Sum of money to be paid by the customer." - } - }, - "type": "object" - }, - "companyTax": { - "required": [ - "enabled", - "currencyId", - "amount" - ], - "properties": { - "enabled": { - "type": "boolean", - "description": "The boolean value is `true`, if the tax for the company apply." - }, - "currencyId": { - "type": "string", - "description": "Unique identity of currency." - }, - "amount": { - "type": "number", - "format": "float", - "description": "Sum of money to be paid by the company." - } - }, - "type": "object" - }, - "postalCodeRequired": { - "description": "The postal code is made mandatory specification in the address, when boolean value is `true`.", - "type": "boolean" - }, - "checkPostalCodePattern": { - "description": "Verify for valid postal code pattern.", - "type": "boolean" - }, - "checkAdvancedPostalCodePattern": { - "description": "Verify for advanced postal code pattern.", - "type": "boolean" - }, - "advancedPostalCodePattern": { - "description": "Wildcard formatted zip codes to allow easy searching in the frontend based on initial constants, for example - 24****, 1856**.", - "type": "string" - }, - "addressFormat": { - "type": "object", - "description": "The address format with recipient's name, building number, street name, city, state and ZIP code on different lines as required." - }, - "defaultPostalCodePattern": { - "description": "Default pattern of postal or zip code.", - "type": "string" - }, - "isEu": { - "type": "boolean" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." - }, - "states": { - "description": "States/provinces/regions within the country", - "type": "array", - "items": { - "$ref": "#/components/schemas/CountryState" - } - }, - "taxFree": { - "description": "When tax doesn't apply for a particular country, then the boolean value is `true`." - }, - "companyTaxFree": { - "description": "When a registered company is free from paying taxes, then the boolean value is `true`." - } - }, - "type": "object" - }, - "AppFlowEvent": { - "description": "Added since version: 6.5.2.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of App flow event." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "ProductSorting": { - "description": "Added since version: 6.3.2.0", - "required": [ - "key", - "priority", - "label" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of Product sorting." - }, - "key": { - "type": "string", - "description": "A keyword associated to identify product sorting." - }, - "priority": { - "type": "integer", - "format": "int64", - "description": "A numerical value to prioritize the product sorting." - }, - "label": { - "type": "string", - "description": "Label given to a product sorting." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." - } - }, - "type": "object" - }, - "CurrencyCountryRounding": { - "description": "Added since version: 6.4.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the country's currency rounding." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "NavigationType": { - "type": "string", - "enum": [ - "main-navigation", - "footer-navigation", - "service-navigation" - ] - }, - "SuccessResponse": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - } - } - }, - "DeliveryTime": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "name", - "min", - "max", - "unit" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of delivery time." - }, - "name": { - "type": "string", - "description": "Name given to delivery time." - }, - "min": { - "description": "Minimum delivery time taken.", - "type": "integer", - "format": "int64" - }, - "max": { - "description": "Maximum delivery time taken.", - "type": "integer", - "format": "int64" - }, - "unit": { - "description": "Unit in which the delivery time is defined. For example, days or hours.", - "type": "string" - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." - } - }, - "type": "object" - }, - "SalesChannelType": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of sales channel type." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." - } - }, - "type": "object" - }, - "MeasurementSystem": { - "description": "Added since version: 6.7.1.0", - "required": [ - "id", - "technicalName" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "technicalName": { - "type": "string" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - }, - "units": { - "type": "array", - "items": { - "$ref": "#/components/schemas/MeasurementDisplayUnit" - } - } - }, - "type": "object" - }, - "MediaFolderConfiguration": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of media folder configuration." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "StateMachineTransition": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of state machine transition." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "ReferencePrice": { - "type": "object", - "properties": { - "purchaseUnit": { - "type": "number" - }, - "referenceUnit": { - "type": "number" - }, - "unitName": { - "type": "string" - }, - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "const": "cart_price_reference" - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/ListPrice" - }, - { - "type": "null" - } - ] - }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "const": "cart_regulation_price" - } - } - }, - { - "type": "null" - } - ] - }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "hasRange", - "regulationPrice", - "listPrice", - "unitName" - ] - }, - "SnippetSet": { - "description": "Added since version: 6.0.0.0", - "required": [ - "name", - "iso" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of snippet set." - }, - "name": { - "description": "Name of snippet set.", - "type": "string" - }, - "iso": { - "description": "ISO nomenclature used to classify languages.", - "type": "string" - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "snippets": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Snippet" - } - } - }, - "type": "object" - }, - "OrderAddress": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "countryId", - "firstName", - "lastName", - "street", - "city" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of order's address." - }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of OrderAddresses version." - }, - "countryId": { - "description": "Unique identity of country.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryStateId": { - "description": "Unique identity of state.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "description": "First name of the customer.", - "type": "string" - }, - "lastName": { - "description": "Last name of the customer.", - "type": "string" - }, - "street": { - "description": "Street address", - "type": "string" - }, - "zipcode": { - "description": "Zip code of the country.", - "type": "string" - }, - "city": { - "description": "Name of the city.", - "type": "string" - }, - "company": { - "description": "Name of the company.", - "type": "string" - }, - "department": { - "description": "Name of the department.", - "type": "string" - }, - "title": { - "description": "Title name given to customer like DR. , Prof., etc.", - "type": "string" - }, - "phoneNumber": { - "description": "Phone number of the customer.", - "type": "string" - }, - "additionalAddressLine1": { - "description": "Additional address input if necessary.", - "type": "string" - }, - "additionalAddressLine2": { - "description": "Additional address input if necessary.", - "type": "string" - }, - "hash": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "string" - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "vatId": { - "description": "Unique identity of VAT.", - "type": "string", - "deprecated": true - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "$ref": "#/components/schemas/CountryState" - }, - "salutation": { - "$ref": "#/components/schemas/Salutation" - } - }, - "type": "object" - }, - "ListPrice": { - "type": "object", - "description": "", - "properties": { - "discount": { - "type": "number" - }, - "percentage": { - "type": "number" - }, - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "const": "cart_list_price" - } - }, - "required": [ - "apiAlias" - ] - }, - "OrderLineItem": { - "description": "Added since version: 6.0.0.0", - "required": [ - "apiAlias", - "id", - "orderId", - "identifier", - "quantity", - "label", - "children", - "states" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of OrderLineItem." - }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of OrderLineItem's version." - }, - "orderId": { - "description": "Unique identity of order.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "orderVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of order's version." - }, - "productId": { - "description": "Unique identity of product.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of products's version." - }, - "promotionId": { - "description": "Unique identity of product.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "parentId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of parent product." - }, - "parentVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of parent's version." - }, - "coverId": { - "description": "Unique identity of cover image.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "identifier": { - "description": "It is a unique identity of an item in cart before its converted to an order.", - "type": "string" - }, - "referencedId": { - "description": "Unique identity of type of entity.", - "type": "string" - }, - "quantity": { - "description": "Number of items of product.", - "type": "integer", - "format": "int64" - }, - "label": { - "description": "It is a typical product name given to the line item.", - "type": "string" - }, - "payload": { - "type": "object", - "properties": { - "categoryIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "customFields": { - "type": "object" - }, - "features": { - "type": "array" - }, - "isCloseout": { - "type": "boolean" - }, - "isNew": { - "type": "boolean" - }, - "manufacturerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "markAsTopseller": { - "type": "boolean" - }, - "optionIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, - "options": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PropertyGroupOption" - } - }, - "parentId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productNumber": { - "type": "string" - }, - "propertyIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, - "releaseDate": { - "type": "string", - "format": "date-time" - }, - "stock": { - "type": "integer", - "format": "int64" - }, - "streamIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, - "tagIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, - "taxId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productType": { - "$ref": "#/components/schemas/Product/properties/type" - } - }, - "description": "Any data related to product is passed." - }, - "good": { - "description": "When set to true, it indicates the line item is physical else it is virtual.", - "type": "boolean" - }, - "removable": { - "description": "Allows the line item to be removable from the cart when set to true.", - "type": "boolean" - }, - "stackable": { - "description": "Allows to change the quantity of the line item when set to true.", - "type": "boolean" - }, - "position": { - "description": "Position of line items placed in an order.", - "type": "integer", - "format": "int64" - }, - "priceDefinition": { - "type": "object", - "$ref": "#/components/schemas/CartPriceQuantity", - "description": "Description of how the price has to be calculated. For example, in percentage or absolute value, etc." - }, - "unitPrice": { - "description": "Price of product per item (where, quantity=1).", - "type": "number", - "format": "float" - }, - "totalPrice": { - "description": "Cost of product based on quantity.", - "type": "number", - "format": "float" - }, - "description": { - "description": "Description of line items in an order.", - "type": "string" - }, - "type": { - "description": "Type refers to the entity type of an item whether it is product or promotion for instance.", - "type": "string", - "enum": [ - "product", - "credit", - "custom", - "promotion", - "container", - "discount", - "quantity" - ] - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "states": { - "type": "array", - "items": { - "type": "string" - }, - "deprecated": true, - "description": "Internal field." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "cover": { - "$ref": "#/components/schemas/Media", - "description": "Line item image or thumbnail" - }, - "product": { - "$ref": "#/components/schemas/Product", - "description": "Referenced product if this is a product line item" - }, - "orderDeliveryPositions": { - "description": "Delivery positions for this line item", - "type": "array", - "items": { - "$ref": "#/components/schemas/OrderDeliveryPosition" - } - }, - "downloads": { - "description": "Digital downloads associated with this line item", - "type": "array", - "items": { - "$ref": "#/components/schemas/OrderLineItemDownload" - } - }, - "parent": { - "$ref": "#/components/schemas/OrderLineItem" - }, - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrderLineItem" - } - }, - "apiAlias": { - "type": "string", - "const": "order_line_item" - }, - "extensions": { - "type": "object", - "description": "To store additional data to an order line item from extensions." - }, - "translated": { - "type": "object" - } - }, - "type": "object" - }, - "NumberRangeType": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of number range's type." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." - } - }, - "type": "object" - }, - "TaxProvider": { - "description": "Added since version: 6.5.0.0", - "required": [ - "id", - "priority", - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of tax provider." - }, - "active": { - "description": "When boolean value is `true`, the tax providers are available for selection in the storefront.", - "type": "boolean" - }, - "name": { - "type": "string", - "description": "Name of the tax provider." - }, - "priority": { - "description": "A numerical value to prioritize one the tax providers from the list.", - "type": "integer", - "format": "int64" - }, - "processUrl": { - "description": "External URL makes request to get tax info.", - "type": "string" - }, - "appId": { - "description": "Unique identity of app.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." - } - }, - "type": "object" - }, - "Language": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "localeId", - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of language." - }, - "parentId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of parent language." - }, - "localeId": { - "description": "Unique identity of locale.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "translationCodeId": { - "description": "Unique identity of translation code.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "name": { - "description": "Name of the language.", - "type": "string" - }, - "active": { - "type": "boolean" - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "parent": { - "$ref": "#/components/schemas/Language", - "description": "Unique identity of language." - }, - "locale": { - "$ref": "#/components/schemas/Locale", - "description": "Locale defining regional settings (date, time, number formats)" - }, - "translationCode": { - "$ref": "#/components/schemas/Locale", - "description": "Locale used for translating content" - }, - "children": { - "description": "Child languages inheriting from this parent language", - "type": "array", - "items": { - "$ref": "#/components/schemas/Language" - } - } - }, - "type": "object" - }, - "ImportExportFile": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of import-export file." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "NumberRange": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of number range." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." - } - }, - "type": "object" - }, - "Category": { - "description": "Added since version: 6.0.0.0", - "required": [ - "apiAlias", - "breadcrumb", - "children", - "childCount", - "translated", - "type", - "id", - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of category's version." - }, - "parentId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of parent category." - }, - "parentVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of parent category's version." - }, - "afterCategoryId": { - "description": "Unique identity of the category under which the new category is to be created.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "afterCategoryVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the category's version under which the new category is to be created." - }, - "mediaId": { - "description": "Unique identity of media added to identify category.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "displayNestedProducts": { - "description": "Shows nested categories on a product category page.", - "type": "boolean" - }, - "breadcrumb": { - "type": "array", - "items": { - "type": "string", - "additionalProperties": false - }, - "readOnly": true, - "description": "Breadcrumbs offer the users on the website the option to quickly find their way back to the homepage or another level of the website using internal links." - }, - "level": { - "description": "An integer value that denotes the level of nesting of a particular category located in an hierarchical category tree. ", - "type": "integer", - "format": "int64", - "readOnly": true - }, - "path": { - "description": "A relative URL to the category.", - "type": "string", - "readOnly": true - }, - "childCount": { - "type": "number", - "format": "int64", - "readOnly": true, - "description": "Number of categories below the main category." - }, - "type": { - "description": "Type of categories like `page`, `folder`, `link`.", - "type": "string", - "enum": [ - "page", - "link", - "folder" - ] - }, - "productAssignmentType": { - "description": "Type of product assignment: Dynamic product group as or `product_stream` or Manual assignment as `product`.", - "type": "string" - }, - "visible": { - "description": "Displays categories on category page when true.", - "type": "boolean" - }, - "active": { - "description": "When boolean value is `true`, the category is listed for selection.", - "type": "boolean" - }, - "visibleChildCount": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string", - "description": "Name of the category." - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "linkType": { - "type": "string", - "enum": [ - "category", - "product", - "external", - "landing_page" - ], - "description": "linkType : `external`, `category`, `product`, `landing_page`." - }, - "internalLink": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "When a particular category is clicked, it gets redirected to internal link." - }, - "externalLink": { - "type": "string", - "description": "When a particular category is clicked, it gets redirected to external link." - }, - "linkNewTab": { - "type": "boolean", - "description": "Category opens in a new tab of the browser." - }, - "description": { - "type": "string", - "description": "Information about the category." - }, - "metaTitle": { - "type": "string", - "description": "A page title indexed by search engines and appears in search results listings." - }, - "metaDescription": { - "type": "string", - "description": "A short description of the page for search results listings." - }, - "keywords": { - "type": "string", - "description": "Keywords that help to search the category." - }, - "cmsPageId": { - "description": "Unique identity of CMS page.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "cmsPageVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of CMS page's version." - }, - "customEntityTypeId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "cmsPageIdSwitched": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean", - "deprecated": true - }, - "seoUrl": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "string" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object", - "additionalProperties": true, - "properties": { - "breadcrumb": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "breadcrumb" - ], - "description": "Contains the translations of all translated fields." - }, - "parent": { - "$ref": "#/components/schemas/Category", - "description": "Unique identity of category." - }, - "children": { - "description": "Child categories within this category for hierarchical navigation", - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - }, - "media": { - "$ref": "#/components/schemas/Media", - "description": "Category image or banner" - }, - "tags": { - "description": "Tags for organizing and filtering categories", - "type": "array", - "items": { - "$ref": "#/components/schemas/Tag" - } - }, - "cmsPage": { - "$ref": "#/components/schemas/CmsPage", - "description": "CMS page layout for the category" - }, - "seoUrls": { - "description": "SEO-friendly URLs for the category across different sales channels", - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } - }, - "apiAlias": { - "type": "string", - "const": "category" - } - }, - "type": "object" - }, - "ProductKeywordDictionary": { - "description": "Added since version: 6.0.0.0", - "required": [ - "languageId", - "keyword" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of product keyword." - }, - "languageId": { - "description": "Unique identity of the language.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "keyword": { - "description": "The keywords that help to search the product.", - "type": "string" - } - }, - "type": "object" - }, - "AppAdministrationSnippet": { - "description": "Added since version: 6.4.15.0", - "required": [ - "value", - "appId", - "localeId" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of app snippet." - }, - "value": { - "type": "string", - "description": "Value of App Administration Snippet." - }, - "appId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of app in app snippet." - }, - "localeId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity that specifies the language and country." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "success": { - "type": "object", - "required": [ - "data" - ], - "additionalProperties": false, - "properties": { - "meta": { - "$ref": "#/components/schemas/meta" - }, - "links": { - "description": "Link members related to the primary data.", - "allOf": [ - { - "$ref": "#/components/schemas/links" - }, - { - "$ref": "#/components/schemas/pagination" - } - ] - }, - "data": { - "$ref": "#/components/schemas/data" - }, - "included": { - "description": "To reduce the number of HTTP requests, servers **MAY** allow responses that include related resources along with the requested primary resources. Such responses are called \"compound documents\".", - "type": "array", - "items": { - "$ref": "#/components/schemas/resource" - }, - "uniqueItems": true - } - } - }, - "failure": { - "type": "object", - "required": [ - "errors" - ], - "additionalProperties": false, - "properties": { - "meta": { - "$ref": "#/components/schemas/meta" - }, - "links": { - "$ref": "#/components/schemas/links" - }, - "errors": { - "type": "array", - "items": { - "$ref": "#/components/schemas/error" - }, - "uniqueItems": true - } - } - }, - "info": { - "type": "object", - "required": [ - "meta" - ], - "properties": { - "meta": { - "$ref": "#/components/schemas/meta" - }, - "links": { - "$ref": "#/components/schemas/links" - }, - "jsonapi": { - "$ref": "#/components/schemas/jsonapi" - } - } - }, - "meta": { - "description": "Non-standard meta-information that can not be represented as an attribute or relationship.", - "type": "object", - "additionalProperties": true - }, - "data": { - "description": "The document's \"primary data\" is a representation of the resource or collection of resources targeted by a request.", - "oneOf": [ - { - "$ref": "#/components/schemas/resource" - }, - { - "description": "An array of resource objects, an array of resource identifier objects, or an empty array ([]), for requests that target resource collections.", - "type": "array", - "items": { - "$ref": "#/components/schemas/resource" - }, - "uniqueItems": true - } - ] - }, - "resource": { - "description": "\"Resource objects\" appear in a JSON API document to represent resources.", - "type": "object", - "required": [ - "type", - "id" - ], - "properties": { - "type": { - "type": "string" - }, - "id": { - "type": "string" - }, - "attributes": { - "$ref": "#/components/schemas/attributes" - }, - "relationships": { - "$ref": "#/components/schemas/relationships" - }, - "links": { - "$ref": "#/components/schemas/links" - }, - "meta": { - "$ref": "#/components/schemas/meta" - } - } - }, - "relationshipLinks": { - "description": "A resource object **MAY** contain references to other resource objects (\"relationships\"). Relationships may be to-one or to-many. Relationships can be specified by including a member in a resource's links object.", - "type": "object", - "additionalProperties": true, - "properties": { - "self": { - "allOf": [ - { - "description": "A `self` member, whose value is a URL for the relationship itself (a \"relationship URL\"). This URL allows the client to directly manipulate the relationship. For example, it would allow a client to remove an `author` from an `article` without deleting the people resource itself.", - "type": "array", - "items": { - "type": "object" - } - }, - { - "$ref": "#/components/schemas/link" - } - ] - }, - "related": { - "$ref": "#/components/schemas/link" - } - } - }, - "links": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/link" - } - }, - "link": { - "description": "A link **MUST** be represented as either: a string containing the link's URL or a link object.", - "oneOf": [ - { - "description": "A string containing the link's URL.", - "type": "string", - "format": "uri-reference" - }, - { - "type": "object", - "required": [ - "href" - ], - "properties": { - "href": { - "description": "A string containing the link's URL.", - "type": "string", - "format": "uri-reference" - }, - "meta": { - "$ref": "#/components/schemas/meta" - } - } - } - ] - }, - "attributes": { - "description": "Members of the attributes object (\"attributes\") represent information about the resource object in which it's defined.", - "type": "object", - "additionalProperties": true - }, - "relationships": { - "description": "Members of the relationships object (\"relationships\") represent references from the resource object in which it's defined to other resource objects.", - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/relationship" - } - }, - "relationship": { - "description": "A relationship object describes links, resource linkage, or meta-information for a related resource.", - "type": "object", - "minProperties": 1, - "properties": { - "links": { - "$ref": "#/components/schemas/relationshipLinks" - }, - "data": { - "description": "Member, whose value represents \"resource linkage\".", - "oneOf": [ - { - "$ref": "#/components/schemas/relationshipToOne" - }, - { - "$ref": "#/components/schemas/relationshipToMany" - } - ] - }, - "meta": { - "$ref": "#/components/schemas/meta" - } - }, - "additionalProperties": false - }, - "relationshipToOne": { - "allOf": [ - { - "description": "References to other resource objects in a to-one (\"relationship\"). Relationships can be specified by including a member in a resource's links object." - }, - { - "$ref": "#/components/schemas/linkage" - } - ] - }, - "relationshipToMany": { - "description": "An array of objects each containing \"type\" and \"id\" members for to-many relationships.", - "type": "array", - "items": { - "$ref": "#/components/schemas/linkage" - }, - "uniqueItems": true - }, - "linkage": { - "description": "The \"type\" and \"id\" to non-empty members.", - "type": "object", - "required": [ - "type", - "id" - ], - "properties": { - "type": { - "type": "string" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "meta": { - "$ref": "#/components/schemas/meta" - } - }, - "additionalProperties": false - }, - "pagination": { - "type": "object", - "properties": { - "first": { - "description": "The first page of data", - "type": "string", - "format": "uri-reference" - }, - "last": { - "description": "The last page of data", - "type": "string", - "format": "uri-reference" - }, - "prev": { - "description": "The previous page of data", - "type": "string", - "format": "uri-reference" - }, - "next": { - "description": "The next page of data", - "type": "string", - "format": "uri-reference" - } - } - }, - "jsonapi": { - "description": "An object describing the server's implementation", - "type": "object", - "properties": { - "version": { - "type": "string" - }, - "meta": { - "$ref": "#/components/schemas/meta" - } - }, - "additionalProperties": false - }, - "error": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "A unique identifier for this particular occurrence of the problem." - }, - "links": { - "$ref": "#/components/schemas/links" - }, - "status": { - "type": "string", - "description": "The HTTP status code applicable to this problem, expressed as a string value." - }, - "code": { - "type": "string", - "description": "An application-specific error code, expressed as a string value." - }, - "title": { - "type": "string", - "description": "A short, human-readable summary of the problem. It **SHOULD NOT** change from occurrence to occurrence of the problem, except for purposes of localization." - }, - "detail": { - "type": "string", - "description": "A human-readable explanation specific to this occurrence of the problem." - }, - "description": { - "type": "string", - "description": "A human-readable description of the problem." - }, - "source": { - "type": "object", - "properties": { - "pointer": { - "type": "string", - "description": "A JSON Pointer [RFC6901] to the associated entity in the request document [e.g. \"/data\" for a primary data object, or \"/data/attributes/title\" for a specific attribute]." - }, - "parameter": { - "type": "string", - "description": "A string indicating which query parameter caused the error." - } - } - }, - "meta": { - "$ref": "#/components/schemas/meta" - } - }, - "additionalProperties": false - }, - "DocumentType": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "technicalName", - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the document type." - }, - "name": { - "type": "string", - "description": "Name of the document type." - }, - "technicalName": { - "description": "Technical name of document type.", - "type": "string" - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." - } - }, - "type": "object" - }, - "CustomerRecovery": { - "description": "Added since version: 6.1.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the customer recovery account." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "Integration": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "LineItemType": { - "type": "string", - "deprecated": true, - "enum": [ - "product", - "credit", - "custom", - "promotion", - "discount", - "container", - "quantity" - ] - }, - "LineItem": { - "type": "object", - "properties": { - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - }, - "cover": { - "$ref": "#/components/schemas/Media" - }, - "dataContextHash": { - "type": "string" - }, - "dataTimestamp": { - "type": "string" - }, - "deliveryInformation": { - "$ref": "#/components/schemas/CartDeliveryInformation" - }, - "description": { - "type": "string", - "description": "Description of line items in an order." - }, - "good": { - "type": "boolean", - "description": "When set to true, it indicates the line item is physical else it is virtual." - }, - "id": { - "type": "string", - "description": "Unique identity of line item." - }, - "label": { - "type": "string", - "description": "It is a typical product name given to the line item." - }, - "modified": { - "type": "boolean", - "description": "When boolean value is `true`, line items are said to be modified." - }, - "modifiedByApp": { - "type": "boolean" - }, - "payload": { - "$ref": "#/components/schemas/ProductJsonApi" - }, - "price": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "const": "calculated_price" - }, - "calculatedTaxes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "const": "cart_tax_calculated" - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] - }, - "quantity": { - "type": "number" - }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] - }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "const": "cart_regulation_price" - } - } - }, - { - "type": "null" - } - ] - }, - "totalPrice": { - "type": "number" - }, - "unitPrice": { - "type": "number" - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } - } - }, - "required": [ - "apiAlias", - "totalPrice", - "quantity", - "unitPrice" - ] - }, - "priceDefinition": { - "$ref": "#/components/schemas/CartPriceQuantity" - }, - "quantity": { - "type": "number", - "description": "Number of items of product." - }, - "quantityInformation": { - "type": "object", - "properties": { - "maxPurchase": { - "type": "number" - }, - "minPurchase": { - "type": "number" - }, - "purchaseSteps": { - "type": "number" - } - } - }, - "referencedId": { - "type": "string", - "description": "Unique identity of type of entity." - }, - "removable": { - "type": "boolean", - "description": "Allows the line item to be removable from the cart when set to true." - }, - "stackable": { - "type": "boolean", - "description": "Allows to change the quantity of the line item when set to true." - }, - "states": { - "deprecated": true, - "type": "array", - "items": { - "type": "string", - "enum": [ - "is-physical", - "is-download" - ] - } - }, - "type": { - "$ref": "#/components/schemas/OrderLineItem/properties/type", - "description": "Type refers to the entity type of an item whether it is product or promotion for instance." - }, - "uniqueIdentifier": { - "type": "string" - } - }, - "required": [ - "id", - "type" - ] - }, - "OrderCustomer": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "email", - "firstName", - "lastName" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of order customer." - }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of OrderCustomer's version." - }, - "email": { - "description": "Email address of the customer.", - "type": "string" - }, - "salutationId": { - "description": "Unique identity of salutation.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "description": "First name of the customer.", - "type": "string" - }, - "lastName": { - "description": "Last name of the customer.", - "type": "string" - }, - "company": { - "description": "Name of the company.", - "type": "string" - }, - "title": { - "description": "Title name given to the customer like Dr, prof. etc.", - "type": "string" - }, - "vatIds": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Unique identity of VAT." - }, - "customerNumber": { - "description": "Unique number assigned to the customer.", - "type": "string" - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "salutation": { - "$ref": "#/components/schemas/Salutation" - } - }, - "type": "object" - }, - "Unit": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "shortCode", - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of Unit." - }, - "shortCode": { - "type": "string", - "description": "Short name for unit, e.g., m, kg." - }, - "name": { - "type": "string", - "description": "Full name of the unit, e.g., Meter, kilogram." - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." - } - }, - "type": "object" - }, - "AppMcpPrompt": { - "description": "Added since version: 6.7.11.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - } - }, - "type": "object" - }, - "CustomFieldSetRelation": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of a custom field set relation." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "Promotion": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of promotion." - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." - } - }, - "type": "object" - }, - "FlowTemplate": { - "description": "Added since version: 6.4.18.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of flow template." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "CookieEntry": { - "type": "object", - "properties": { - "cookie": { - "type": "string" - }, - "value": { - "type": "string" - }, - "expiration": { - "type": "integer" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "hidden": { - "type": "boolean" - }, - "apiAlias": { - "type": "string", - "const": "cookie_entry" - } - }, - "required": [ - "cookie", - "hidden", - "apiAlias" - ] - }, - "FindProductVariantRouteResponse": { - "type": "object", - "properties": { - "foundCombination": { - "type": "object", - "properties": { - "variantId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of a variant." - }, - "options": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Available product variant options. For example, for variant `Size`, option would be `XS`, `S`, `M`, `L`, `XL`." - } - } - } - } - }, - "OrderTransactionCaptureRefund": { - "description": "Added since version: 6.4.12.0", - "required": [ - "id", - "captureId", - "stateId", - "amount" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of order transaction capture refund." - }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of order transaction capture refund's version." - }, - "captureId": { - "description": "Unique identity of order transaction capture.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "captureVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of order transaction capture's version." - }, - "stateId": { - "description": "Unique identity of order state.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "externalReference": { - "description": "External payment provider token. ", - "type": "string" - }, - "reason": { - "description": "Reason for refunding the amount for an order.", - "type": "string" - }, - "amount": { - "required": [ - "unitPrice", - "totalPrice", - "quantity" - ], - "properties": { - "unitPrice": { - "type": "number", - "format": "float", - "description": "Price of product per item (where, quantity=1)." - }, - "totalPrice": { - "type": "number", - "format": "float", - "description": "Cost of product based on quantity." - }, - "quantity": { - "type": "integer", - "format": "int64", - "description": "Number of items of each product." - }, - "calculatedTaxes": { - "type": "object" - }, - "taxRules": { - "type": "object" - }, - "referencePrice": { - "type": "object" - }, - "listPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - }, - "discount": { - "type": "number", - "format": "float" - }, - "percentage": { - "type": "number", - "format": "float" - } - }, - "type": "object" - }, - "regulationPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "stateMachineState": { - "$ref": "#/components/schemas/StateMachineState" - }, - "transactionCapture": { - "$ref": "#/components/schemas/OrderTransactionCapture" - }, - "positions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrderTransactionCaptureRefundPosition" - } - }, - "shippingCosts": { - "properties": { - "calculatedTaxes": { - "description": "Contains calculated taxes based on shipping costs/methods." - }, - "taxRules": { - "description": "Pricing based on multiple taxes." - }, - "referencePrice": { - "description": "Original cost price of the product." - }, - "listPrice": { - "properties": { - "price": { - "description": "Price of each line item." - }, - "discount": { - "description": "Absolute discount on each line item." - }, - "percentage": { - "description": "Discount in percentage." - } - } - }, - "regulationPrice": { - "properties": { - "price": { - "description": "Contains cheapest price from last 30 days as per EU law." - } - } - } - } - } - }, - "type": "object" - }, - "ImportExportProfile": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of import-export profile." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - }, - "Integration": { - "description": "Unique identity of integration." - } - }, - "type": "object" - }, - "PromotionDiscountPrices": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of promotion discount price." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "AppFlowAction": { - "description": "Added since version: 6.4.10.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of app's flow action." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." - } - }, - "type": "object" - }, - "CartDeliveryPosition": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" - } - } - }, - "identifier": { - "type": "string" - }, - "lineItem": { - "$ref": "#/components/schemas/LineItem" - }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" - } - } - }, - "ProductStreamFilter": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of product stream filter." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "MailHeaderFooter": { - "description": "Added since version: 6.0.0.0", - "required": [ - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of mail's header and footer component." - }, - "systemDefault": { - "type": "boolean", - "description": "Unused field. To be removed in future." - }, - "name": { - "type": "string", - "description": "Name of the MailHeaderFooter." - }, - "description": { - "type": "string", - "description": "Description of the MailHeaderFooter." - }, - "headerHtml": { - "type": "string", - "description": "HTML header content." - }, - "headerPlain": { - "type": "string", - "description": "Textual header content." - }, - "footerHtml": { - "type": "string", - "description": "HTML footer content." - }, - "footerPlain": { - "type": "string", - "description": "Textual footer content." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." - } - }, - "type": "object" - }, - "AppTemplate": { - "description": "Added since version: 6.3.1.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of App template." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "CmsSection": { - "description": "Added since version: 6.0.0.0", - "required": [ - "apiAlias", - "blocks", - "id", - "position", - "type", - "pageId" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of CMS section." - }, - "cmsPageVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of CMS page version." - }, - "position": { - "description": "Position of occurrence of each section denoted by numerical values 0, 1, 2...", - "type": "integer", - "format": "int64" - }, - "type": { - "description": "Types of sections can be `sidebar` or `fullwidth`.", - "type": "string", - "enum": [ - "default", - "sidebar" - ] - }, - "name": { - "description": "Name of the CMS section defined.", - "type": "string" - }, - "sizingMode": { - "description": "Sizing mode can be `boxed` or `full_width`.", - "type": "string" - }, - "mobileBehavior": { - "description": "Hides the sidebar on mobile viewports. It can hold values such as 'mobile', 'wrap', any other string or be unset.", - "type": "string" - }, - "backgroundColor": { - "description": "Background color of CMS page.", - "type": "string" - }, - "backgroundMediaId": { - "description": "Unique identity of CMS section's background media.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "backgroundMediaMode": { - "description": "Background media mode can be `cover`, `auto` or `contain`.", - "type": "string" - }, - "cssClass": { - "description": "One or more CSS classes added and separated by spaces.", - "type": "string" - }, - "pageId": { - "description": "Unique identity of page where CMS section is defined.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "visibility": { - "properties": { - "mobile": { - "type": "boolean", - "description": "When `true`, CMS layout can be viewed in mobile mode." - }, - "desktop": { - "type": "boolean", - "description": "When `true`, CMS layout can be viewed in desktop mode." - }, - "tablet": { - "type": "boolean", - "description": "When `true`, CMS layout can be viewed in tablet mode." - } - }, - "type": "object" - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "page": { - "$ref": "#/components/schemas/CmsPage" - }, - "backgroundMedia": { - "$ref": "#/components/schemas/Media" - }, - "blocks": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CmsBlock" - } - }, - "apiAlias": { - "type": "string", - "const": "cms_section" - } - }, - "type": "object" - }, - "Script": { - "description": "Added since version: 6.4.7.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of a script." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "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" - } - } - } - } - } - } - } - }, - "PropertyGroupOption": { - "description": "Added since version: 6.0.0.0", - "required": [ - "group", - "option", - "translated", - "id", - "groupId", - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of property group option." - }, - "groupId": { - "description": "Unique identity of property group.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "name": { - "type": "string", - "description": "Name of the property group option." - }, - "position": { - "type": "integer", - "format": "int64", - "description": "The order of the tabs of your defined property group options. Enter numerical values like 1,2,3, etc.to adjust their order of display." - }, - "colorHexCode": { - "description": "Property group options can be displayed in the form of color. For example: #98e3f5ff.", - "type": "string" - }, - "mediaId": { - "description": "Unique identity of media.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "combinable": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean" - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." - }, - "media": { - "$ref": "#/components/schemas/Media" - }, - "group": { - "$ref": "#/components/schemas/PropertyGroup" - }, - "option": { - "type": "string" - } - }, - "type": "object" - }, - "SalesChannelDomain": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "url", - "salesChannelId", - "languageId", - "currencyId", - "snippetSetId" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of sales channel domain." - }, - "url": { - "description": "URL of the sales channel domain.", - "type": "string" - }, - "salesChannelId": { - "description": "Unique identity of sales channel.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "languageId": { - "description": "Unique identity of language used.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "currencyId": { - "description": "Unique identity of currency.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "snippetSetId": { - "description": "Unique identity of snippet set.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "measurementUnits": { - "$ref": "#/components/schemas/MeasurementUnits" - }, - "hreflangUseOnlyLocale": { - "description": "This is used to toggle the language configurations, say between DE and DE-DE for instance.", - "type": "boolean" - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "language": { - "$ref": "#/components/schemas/Language" - }, - "currency": { - "$ref": "#/components/schemas/Currency" - }, - "salesChannelDefaultHreflang": { - "$ref": "#/components/schemas/SalesChannel" - } - }, - "type": "object" - }, - "LandingPage": { - "description": "Added since version: 6.4.0.0", - "required": [ - "apiAlias", - "id", - "name", - "url" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of landing page." - }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of landing page version." - }, - "active": { - "type": "boolean", - "description": "When boolean value is `true`, respective landing pages are enlisted for use." - }, - "name": { - "type": "string", - "description": "Name of landing page." - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "slotConfig": { - "type": "object" - }, - "metaTitle": { - "type": "string", - "description": "A page title indexed by search engines and appears in search results listings." - }, - "metaDescription": { - "type": "string", - "description": "A short description of the page for search results listings." - }, - "keywords": { - "type": "string", - "description": "The keywords that help to search the landing page." - }, - "url": { - "type": "string", - "description": "URL of the landing page." - }, - "cmsPageId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the CMS Page." - }, - "cmsPageVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of the CMS Page's version." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." - }, - "cmsPage": { - "$ref": "#/components/schemas/CmsPage", - "description": "CMS page layout for the landing page" - }, - "seoUrls": { - "description": "SEO-friendly URLs for the landing page across different sales channels", - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } - }, - "apiAlias": { - "type": "string", - "const": "landing_page" - } - }, - "type": "object" - }, - "WebhookEventLog": { - "description": "Added since version: 6.4.1.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of webhook event log." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "CookieGroup": { - "type": "object", - "properties": { - "isRequired": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "cookie": { - "type": "string" - }, - "value": { - "type": "string" - }, - "expiration": { - "type": "integer" - }, - "entries": { - "$ref": "#/components/schemas/CookieEntryCollection" - }, - "apiAlias": { - "type": "string", - "const": "cookie_group" - } - }, - "not": { - "allOf": [ - { - "properties": { - "cookie": { - "type": "string" - } - }, - "required": [ - "cookie" - ] - }, - { - "properties": { - "entries": { - "$ref": "#/components/schemas/CookieEntryCollection" - } - }, - "required": [ - "entries" - ] - } - ] - }, - "required": [ - "name", - "isRequired", - "apiAlias" - ] - }, - "Theme": { - "description": "Added since version: 6.0.0.0", - "required": [ - "id", - "name", - "author", - "active" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of Theme." - }, - "technicalName": { - "type": "string", - "description": "Technical name of Theme." - }, - "name": { - "type": "string", - "description": "Name of theme which is translatable." - }, - "author": { - "type": "string", - "description": "Name of the company." - }, - "description": { - "type": "string", - "description": "Description of the theme." - }, - "labels": { - "type": "object", - "description": "Identification label given to theme." - }, - "helpTexts": { - "type": "object", - "description": "Texts from config element." - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "previewMediaId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of media used for previewing the theme." - }, - "parentThemeId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of parent theme." - }, - "baseConfig": { - "type": "object", - "description": "Config elements of theme like header, color, etc" - }, - "configValues": { - "type": "object" - }, - "active": { - "type": "boolean", - "description": "When boolean value is `true`, the created theme can be made usable." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." - }, - "media": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Media" - } - }, - "ConfigValues": { - "description": "Chosen values for the configuration." - } - }, - "type": "object" - }, - "Webhook": { - "description": "Added since version: 6.3.1.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of webhook." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "AppActionButton": { - "description": "Added since version: 6.3.1.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of app's action button." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object", - "description": "Contains the translations of all translated fields." - } - }, - "type": "object" - }, - "CustomFieldSet": { - "description": "Added since version: 6.0.0.0", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of a custom field set." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "OrderLineItemDownload": { - "description": "Added since version: 6.4.19.0", - "required": [ - "media", - "id", - "orderLineItemId", - "mediaId", - "position", - "accessGranted" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of Order line item downloaded digital products." - }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of Order line item downloaded version." - }, - "orderLineItemId": { - "description": "Unique identity of Order line item.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "orderLineItemVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of Order line item's version." - }, - "mediaId": { - "description": "Unique identity of media.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "position": { - "description": "The order of downloaded digital products displayed in the storefront by mentioning numerical values like 1,2,3, etc.", - "type": "integer", - "format": "int64" - }, - "accessGranted": { - "description": "When boolean value is `true`, the digital product is allowed to download.", - "type": "boolean" - }, - "customFields": { - "type": "object", - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "orderLineItem": { - "$ref": "#/components/schemas/OrderLineItem" - }, - "media": { - "$ref": "#/components/schemas/Media" - } - }, - "type": "object" - }, - "AccountNewsletterRecipientResult": { - "properties": { - "status": { - "description": "Status indicates if the customer has subscribed to the news letter or not." - } - } - }, - "OrderProductWarehouse": { - "properties": { - "id": { - "description": "Unique identity of order's product warehouse." - } - } - }, - "OrderReturn": { - "properties": { - "id": { - "description": "Unique identity of order return." - }, - "versionId": { - "description": "Unique identity of order return's version." - }, - "orderId": { - "description": "Unique identity of order." - }, - "orderVersionId": { - "description": "Unique identity of order return version." - }, - "price": { - "properties": { - "netPrice": { - "description": "Net price of the product." - }, - "totalPrice": { - "description": "Gross price of the product." - }, - "calculatedTaxes": { - "description": "Contains calculated tax on order delivery price." - }, - "taxRules": { - "description": "Pricing based on multiple taxes." - }, - "positionPrice": { - "description": "Price of each line item in the cart multiplied by its quantity excluding charges like shipping cost, rules, taxes etc." - }, - "rawTotal": { - "description": "The total value before rounding off." - }, - "taxStatus": { - "description": "TaxStatus takes `Free`, `Net` or `Gross` as values." - } - } - }, - "shippingCosts": { - "properties": { - "unitPrice": { - "description": "Shipping cost of product per item (where, quantity=1)." - }, - "totalPrice": { - "description": "Shipping cost of product based on quantity." - }, - "quantity": { - "description": "Number of items of each product." - }, - "calculatedTaxes": { - "description": "Contains calculated taxes based on shipping costs/methods." - }, - "taxRules": { - "description": "Pricing based on multiple taxes." - }, - "referencePrice": { - "description": "Original cost price of the product." - }, - "listPrice": { - "properties": { - "price": { - "description": "Price of each line item." - }, - "discount": { - "description": "Absolute discount on each line item." - }, - "percentage": { - "description": "Discount in percentage." - } - } - }, - "regulationPrice": { - "properties": { - "price": { - "description": "Contains cheapest price from last 30 days as per EU law." - } - } - } - } - }, - "stateId": { - "description": "Unique identity of state." - }, - "returnNumber": { - "description": "Reference number for returning order." - }, - "requestedAt": { - "description": "Date and time when the order return was requested." - }, - "amountTotal": { - "description": "Gross price of the order." - }, - "amountNet": { - "description": "Net price of the order." - } - } - }, - "OrderReturnLineItem": { - "properties": { - "id": { - "description": "Unique identity of order return line item." - }, - "versionId": { - "description": "Unique identity of order return line item's version." - }, - "orderReturnId": { - "description": "Unique identity of order return." - }, - "orderReturnVersionId": { - "description": "Unique identity of order return version." - }, - "orderLineItemId": { - "description": "Unique identity of order line item." - }, - "orderLineItemVersionId": { - "description": "Unique identity of order line items's version." - }, - "reasonId": { - "description": "Unique identity of reason for return." - }, - "quantity": { - "description": "Number of line items returned." - }, - "refundAmount": { - "description": "Amount to be refunded." - }, - "restockQuantity": { - "description": "Update of stock quantity after the return of certain line items are initiated." - }, - "customFields": { - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "stateId": { - "description": "Unique identity of state." - } - } - }, - "OrderReturnLineItemReason": { - "properties": { - "id": { - "description": "Unique identity for reason of return." - }, - "reasonKey": { - "description": "Unique key associated with reason for the order return. " - }, - "content": { - "description": "Description of the reason of return." - }, - "translated": { - "description": "Contains the translations of all translated fields." - } - } - }, - "OrderWarehouseGroup": { - "properties": { - "id": { - "description": "Unique identity of order warehouse group." - } - } - }, - "ProductReviewSummary": { - "properties": { - "id": { - "description": "Unique identity of products's review summary." - }, - "productId": { - "description": "Unique identity of products." - }, - "salesChannelId": { - "description": "Unique identity of sales channel." - }, - "summary": { - "description": "Unique identity of products's review summary." - }, - "visible": { - "description": "When boolean value is `true`, the review is displayed to the customer." - }, - "translated": { - "description": "Contains the translations of all translated fields." - } - } - }, - "ProductWarehouse": { - "properties": { - "id": { - "description": "Unique identity of warehouse of product." - } - } - }, - "Subscription": { - "properties": { - "id": { - "description": "Unique identity of subscription." - }, - "convertedOrder": { - "description": "An array loaded with persistent information related to cart data." - }, - "subscriptionNumber": { - "description": "Unique number associated with subscription." - }, - "nextSchedule": { - "description": "Date and time of next scheduled subscription for example: `yyyy-mm-dd hh:mm:ss` - `2023-08-15 15:25:32`." - }, - "salesChannelId": { - "description": "Unique identity of sales channel." - }, - "subscriptionPlanId": { - "description": "Unique identity of subscription plan." - }, - "subscriptionPlanName": { - "description": "Unique name for subscription plan." - }, - "subscriptionIntervalId": { - "description": "Unique identity for subscription interval." - }, - "subscriptionIntervalName": { - "description": "Unique name for subscription interval." - }, - "dateInterval": { - "description": "Relative interval data. For example, `every 3 days`, `every 2 months`, etc." - }, - "cronInterval": { - "description": "Absolute interval data. For example, `only on January`, `only on Mondays`, etc." - }, - "billingAddressId": { - "description": "Unique identity of billing address." - }, - "shippingAddressId": { - "description": "Unique identity of shipping address." - }, - "shippingMethodId": { - "description": "Unique identity of shipping method." - }, - "paymentMethodId": { - "description": "Unique identity of payment method." - }, - "currencyId": { - "description": "Unique identity of currency." - }, - "languageId": { - "description": "Unique identity of language." - }, - "customFields": { - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - } - } - }, - "SubscriptionAddress": { - "properties": { - "id": { - "description": "Unique identity of subscription address." - }, - "countryId": { - "description": "Unique identity of country." - }, - "subscriptionId": { - "description": "Unique identity of subscription." - }, - "countryStateId": { - "description": "Unique identity of state of the country." - }, - "salutationId": { - "description": "Unique identity of salutation." - }, - "firstName": { - "description": "First name of the subscribed customer." - }, - "lastName": { - "description": "Last name of the subscribed customer." - }, - "street": { - "description": "Street address" - }, - "zipcode": { - "description": "Zip code of the country." - }, - "company": { - "description": "Name of the company." - }, - "department": { - "description": "Name of the department." - }, - "title": { - "description": "Title name given to customer's order address." - }, - "vatId": { - "description": "Unique identity of VAT." - }, - "phoneNumber": { - "description": "Phone number of the customer." - }, - "additionalAddressLine1": { - "description": "Additional address input if necessary." - }, - "additionalAddressLine2": { - "description": "Additional address input if necessary." - }, - "customFields": { - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - }, - "email": { - "description": "Last name of the subscribed customer. " - } - } - }, - "SubscriptionCustomer": { - "properties": { - "id": { - "description": "Unique identity of subscription customer." - }, - "customerId": { - "description": "Unique identity of the customer." - }, - "salutationId": { - "description": "Unique identity of salutation." - }, - "firstName": { - "description": "Email address of the subscribed customer." - }, - "lastName": { - "description": "Last name of the subscribed customer. " - }, - "company": { - "description": "Name of the customer's company." - }, - "title": { - "description": "Title name given to customer's order address." - }, - "customerNumber": { - "description": "Unique number for subscribed customer." - }, - "vatId": { - "description": "Unique identity of VAT." - }, - "customFields": { - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." - } - } - }, - "SubscriptionInterval": { - "properties": { - "id": { - "description": "Unique identity of subscription interval." - }, - "name": { - "description": "Name of the subscription interval." - }, - "active": { - "description": "When `true`, the defined subscription interval is available for selection in storefront." - }, - "dateInterval": { - "description": "Relative interval data. For example, `every 3 days`, `every 2 months`, etc." - }, - "cronInterval": { - "description": "Absolute interval data. For example, `only on January`, `only on Mondays`, etc." - }, - "availabilityRuleId": { - "description": "Unique identity of rule." - }, - "translated": { - "description": "Contains the translations of all translated fields." - } - } - }, - "SubscriptionPlan": { - "properties": { - "id": { - "description": "Unique identity of subscription plan." - }, - "name": { - "description": "Name of the subscription plan." - }, - "description": { - "description": "A short description about the subscription plan." - }, - "active": { - "description": "When `true`, the subscription plan is available for selection in storefront." - }, - "activeStorefrontLabel": { - "description": "When boolean value id `true`, the label overrides the plan name." - }, - "availabilityRuleId": { - "description": "Unique identity of rule." - }, - "label": { - "description": "Label that can overwrite the active plan name. " - }, - "translated": { - "description": "Contains the translations of all translated fields." - } - } - }, - "SubscriptionPlanIntervalMapping": { - "properties": { - "id": { - "description": "Unique identity of subscription plan interval mapping." - }, - "subscriptionIntervalId": { - "description": "Unique identity of subscription interval." - }, - "subscriptionPlanId": { - "description": "Unique identity of subscription plan." - } - } - }, - "SubscriptionPlanProductMapping": { - "properties": { - "id": { - "description": "Unique identity of subscription plan for product mapping." - }, - "productId": { - "description": "Unique identity of product." - }, - "productVersionId": { - "description": "Unique identity of product's version." - }, - "subscriptionPlanId": { - "description": "Unique identity of subscription plan." - } - } - }, - "SubscriptionTagMapping": { - "properties": { - "id": { - "description": "Unique identity of subscription tag." - }, - "subscriptionId": { - "description": "Unique identity of subscription." - }, - "tagId": { - "description": "Unique identity of subscription tag." - } - } - }, - "SwagDelayAction": { - "properties": { - "id": { - "description": "Unique identity of swag delay action for flow builder" - }, - "orderId": { - "description": "Unique identity of order." - }, - "customerId": { - "description": "Unique identity of customer." - } - } - }, - "Warehouse": { - "properties": { - "id": { - "description": "Unique identity of warehouse." - } - } - }, - "WarehouseGroup": { - "properties": { - "id": { - "description": "Unique identity of warehouse group." - } - } - }, - "CustomPrice": { - "properties": { - "id": { - "description": "Unique identity of the custom price." - }, - "productId": { - "description": "Unique identity of the product." - }, - "productVersionId": { - "description": "Unique identity of the product's version." - }, - "customerId": { - "description": "Unique identity of the customer." - }, - "customerGroupId": { - "description": "Unique identity of the customer's group." - }, - "price": { - "description": "Detailed information of price." - } - } - }, - "CustomerSpecificFeatures": { - "properties": { - "id": { - "description": "Unique identity of the customer specific features." - }, - "customerId": { - "description": "Unique identity of the customer." - } - } - }, - "MediaAiTag": { - "properties": { - "id": { - "description": "Unique identity of the AI media tag." - }, - "tag": { - "description": "Tag that indicates if the media is made by AI or not." - }, - "translated": { - "description": "Contains the translations of all translated fields." - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ], - "paths": { - "/_info/openapi3.json": { - "get": { - "tags": [ - "System Info & Health Check" - ], - "summary": "Get OpenAPI Specification", - "description": "Get information about the store API in OpenAPI format.", - "operationId": "api-info", - "parameters": [ - { - "name": "type", - "in": "query", - "description": "Type of the api", - "schema": { - "type": "string", - "enum": [ - "jsonapi", - "json" - ] - } - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/OpenApi3" - } - } - } - }, - "/shipping-method": { - "post": { - "tags": [ - "Payment & Shipping", - "Endpoints supporting Criteria " - ], - "summary": "Fetch shipping methods", - "description": "Perform a filtered search for shipping methods.\n\n**Available Associations:**\n- `prices` - Shipping method price configurations (based on current cart and context)\n- `deliveryTime` - Delivery time information (min/max days, unit)\n- `media` - Media/images associated with the shipping method (loaded by default)\n- `availabilityRule` - Availability rule determining when this method is available\n- `tax` - Tax configuration for the shipping method\n\n**Example with associations:**\n```json\n{\n \"associations\": {\n \"prices\": {},\n \"deliveryTime\": {}\n }\n}\n```\n\nNote: The `prices` association is essential for accessing shipping cost configurations.", - "operationId": "readShippingMethod", - "parameters": [ - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } - }, - { - "name": "onlyAvailable", - "in": "query", - "description": "List only available shipping methods. This filters shipping methods methods which can not be used in the actual context because of their availability rule.", - "schema": { - "type": "boolean" - } - }, - { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "required": [ - "elements" - ], - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - }, - "get": { - "tags": [ - "Payment & Shipping", - "Endpoints supporting Criteria " - ], - "summary": "Fetch shipping methods", - "description": "Perform a filtered search for shipping methods.\n\n**Available Associations:**\n- `prices` - Shipping method price configurations (graduated prices, quantity-based pricing)\n- `deliveryTime` - Delivery time information (min/max days, unit)\n- `media` - Media/images associated with the shipping method (loaded by default)\n- `availabilityRule` - Availability rule determining when this method is available\n- `tax` - Tax configuration for the shipping method\n\nNote: The `prices` association is essential for accessing shipping cost configurations.", - "operationId": "readShippingMethodGet", - "parameters": [ - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaFields" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "$ref": "#/components/parameters/CompressedCriteria" - }, - { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/ShippingMethodListResponse" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/product/{productId}/garan-label": { - "get": { - "tags": [ - "Product" - ], - "summary": "Render an EU GARAN label", - "description": "This route renders an EU GARAN label SVG for a product.", - "operationId": "renderGaranLabel", - "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Product ID", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "responses": { - "200": { - "description": "Rendered GARAN label SVG.", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "svg": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "svg" - ] - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/_mcp": { - "post": { - "tags": [ - "MCP", - "Experimental" - ], - "summary": "MCP JSON-RPC endpoint (Store API)", - "description": "Handles Model Context Protocol (MCP) requests using the Streamable HTTP transport for the Store API. Accepts JSON-RPC 2.0 messages. Requires a valid Store API access key. Streaming responses are delivered as a `text/event-stream` body on this POST operation; a standalone GET SSE stream is not supported. Experimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", - "operationId": "storeApiMcpPost", - "parameters": [ - { - "name": "mcp-session-id", - "in": "header", - "required": false, - "description": "Session ID returned by the server in the `mcp-session-id` response header after a successful `initialize` request. Required for all subsequent requests within the same session.", - "schema": { - "type": "string", - "format": "uuid" - } - }, - { - "name": "sw-context-token", - "in": "header", - "required": false, - "description": "Standard Store API context token identifying the customer session. When provided, MCP tools operate in the context of that customer. Same semantics as all other Store API endpoints.", - "schema": { - "type": "string" - } - }, - { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "requestBody": { - "required": true, - "description": "A JSON-RPC 2.0 request object. Omit `id` for notifications (no response expected). The `params` shape depends on the `method`; extensions may register additional methods beyond the variants listed here.", - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "jsonrpc", - "method" - ], - "properties": { - "jsonrpc": { - "type": "string", - "enum": [ - "2.0" - ] - }, - "id": { - "description": "Request identifier. Omit for notifications (fire-and-forget). Present for requests that expect a response.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "integer" - } - ] - }, - "method": { - "type": "string", - "description": "MCP method name." - }, - "params": { - "type": "object", - "description": "Method-specific parameters, see the request variants." - } - }, - "oneOf": [ - { - "title": "initialize", - "properties": { - "method": { - "const": "initialize" - }, - "params": { - "type": "object", - "required": [ - "protocolVersion", - "capabilities", - "clientInfo" - ], - "properties": { - "protocolVersion": { - "type": "string", - "description": "MCP protocol version the client supports, e.g. `2025-03-26`." - }, - "capabilities": { - "type": "object", - "description": "Capabilities the client supports.", - "additionalProperties": true - }, - "clientInfo": { - "type": "object", - "required": [ - "name", - "version" - ], - "properties": { - "name": { - "type": "string" - }, - "version": { - "type": "string" - } - } - } - } - } - }, - "required": [ - "params" - ] - }, - { - "title": "tools/list", - "properties": { - "method": { - "const": "tools/list" - }, - "params": { - "type": "object", - "properties": { - "cursor": { - "type": "string", - "description": "Opaque pagination cursor from a previous `tools/list` result." - } - } - } - } - }, - { - "title": "tools/call", - "properties": { - "method": { - "const": "tools/call" - }, - "params": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string", - "description": "Name of the tool to invoke, as returned by `tools/list`." - }, - "arguments": { - "type": "object", - "description": "Tool arguments matching the tool's `inputSchema`.", - "additionalProperties": true - } - } - } - }, - "required": [ - "params" - ] - }, - { - "title": "resources/list", - "properties": { - "method": { - "const": "resources/list" - }, - "params": { - "type": "object", - "properties": { - "cursor": { - "type": "string", - "description": "Opaque pagination cursor from a previous `resources/list` result." - } - } - } - } - }, - { - "title": "resources/read", - "properties": { - "method": { - "const": "resources/read" - }, - "params": { - "type": "object", - "required": [ - "uri" - ], - "properties": { - "uri": { - "type": "string", - "description": "URI of the resource to read, as returned by `resources/list`." - } - } - } - }, - "required": [ - "params" - ] - }, - { - "title": "prompts/list", - "properties": { - "method": { - "const": "prompts/list" - }, - "params": { - "type": "object", - "properties": { - "cursor": { - "type": "string", - "description": "Opaque pagination cursor from a previous `prompts/list` result." - } - } - } - } - }, - { - "title": "prompts/get", - "properties": { - "method": { - "const": "prompts/get" - }, - "params": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string", - "description": "Name of the prompt, as returned by `prompts/list`." - }, - "arguments": { - "type": "object", - "description": "Prompt arguments as string values.", - "additionalProperties": { - "type": "string" - } - } - } - } - }, - "required": [ - "params" - ] - }, - { - "title": "ping", - "properties": { - "method": { - "const": "ping" - } - } - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "JSON-RPC response or Server-Sent Events stream for streaming responses. Contains either a `result` (success) or an `error` (failure), never both.", - "headers": { - "mcp-session-id": { - "description": "Session ID assigned by the server. Returned on the `initialize` response and echoed on subsequent responses. Send it as a request header on all following requests.", - "schema": { - "type": "string", - "format": "uuid" - } - } - }, - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "jsonrpc", - "id" - ], - "properties": { - "jsonrpc": { - "type": "string", - "enum": [ - "2.0" - ] - }, - "id": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "integer" - }, - { - "type": "null" - } - ] - } - }, - "oneOf": [ - { - "required": [ - "result" - ], - "properties": { - "result": { - "description": "Method-specific result payload, one of the variants below depending on the requested method.", - "oneOf": [ - { - "title": "initialize result", - "type": "object", - "required": [ - "protocolVersion", - "capabilities", - "serverInfo" - ], - "properties": { - "protocolVersion": { - "type": "string" - }, - "capabilities": { - "type": "object", - "description": "Capabilities the server supports (tools, resources, prompts, logging, ...).", - "additionalProperties": true - }, - "serverInfo": { - "type": "object", - "required": [ - "name", - "version" - ], - "properties": { - "name": { - "type": "string" - }, - "version": { - "type": "string" - } - } - }, - "instructions": { - "type": "string", - "description": "Usage instructions for the client / model." - } - }, - "additionalProperties": true - }, - { - "title": "tools/list result", - "type": "object", - "required": [ - "tools" - ], - "properties": { - "tools": { - "type": "array", - "items": { - "type": "object", - "required": [ - "name", - "inputSchema" - ], - "properties": { - "name": { - "type": "string" - }, - "title": { - "type": "string" - }, - "description": { - "type": "string" - }, - "inputSchema": { - "type": "object", - "description": "JSON Schema describing the tool arguments.", - "additionalProperties": true - } - }, - "additionalProperties": true - } - }, - "nextCursor": { - "type": "string", - "description": "Pagination cursor for the next page, absent on the last page." - } - }, - "additionalProperties": true - }, - { - "title": "tools/call result", - "type": "object", - "required": [ - "content" - ], - "properties": { - "content": { - "type": "array", - "items": { - "type": "object", - "required": [ - "type" - ], - "description": "Content block. `type` is one of `text` (with `text`), `image`/`audio` (with base64 `data` and `mimeType`) or `resource` (with embedded `resource`).", - "properties": { - "type": { - "type": "string", - "enum": [ - "text", - "image", - "audio", - "resource" - ] - }, - "text": { - "type": "string" - }, - "data": { - "type": "string" - }, - "mimeType": { - "type": "string" - }, - "resource": { - "type": "object", - "additionalProperties": true - } - }, - "additionalProperties": true - } - }, - "structuredContent": { - "type": "object", - "description": "Structured tool output matching the tool's declared output schema.", - "additionalProperties": true - }, - "isError": { - "type": "boolean", - "description": "True when the tool execution failed; error details are in `content`." - } - }, - "additionalProperties": true - }, - { - "title": "resources/list result", - "type": "object", - "required": [ - "resources" - ], - "properties": { - "resources": { - "type": "array", - "items": { - "type": "object", - "required": [ - "uri", - "name" - ], - "properties": { - "uri": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "mimeType": { - "type": "string" - } - }, - "additionalProperties": true - } - }, - "nextCursor": { - "type": "string", - "description": "Pagination cursor for the next page, absent on the last page." - } - }, - "additionalProperties": true - }, - { - "title": "resources/read result", - "type": "object", - "required": [ - "contents" - ], - "properties": { - "contents": { - "type": "array", - "items": { - "type": "object", - "required": [ - "uri" - ], - "description": "Resource content with either `text` or base64 `blob`.", - "properties": { - "uri": { - "type": "string" - }, - "mimeType": { - "type": "string" - }, - "text": { - "type": "string" - }, - "blob": { - "type": "string" - } - }, - "additionalProperties": true - } - } - }, - "additionalProperties": true - }, - { - "title": "prompts/list result", - "type": "object", - "required": [ - "prompts" - ], - "properties": { - "prompts": { - "type": "array", - "items": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "title": { - "type": "string" - }, - "description": { - "type": "string" - }, - "arguments": { - "type": "array", - "items": { - "type": "object", - "required": [ - "name" - ], - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "required": { - "type": "boolean" - } - }, - "additionalProperties": true - } - } - }, - "additionalProperties": true - } - }, - "nextCursor": { - "type": "string", - "description": "Pagination cursor for the next page, absent on the last page." - } - }, - "additionalProperties": true - }, - { - "title": "prompts/get result", - "type": "object", - "required": [ - "messages" - ], - "properties": { - "description": { - "type": "string" - }, - "messages": { - "type": "array", - "items": { - "type": "object", - "required": [ - "role", - "content" - ], - "properties": { - "role": { - "type": "string", - "enum": [ - "user", - "assistant" - ] - }, - "content": { - "type": "object", - "description": "Content block, same shape as in `tools/call` results.", - "additionalProperties": true - } - }, - "additionalProperties": true - } - } - }, - "additionalProperties": true - }, - { - "title": "ping result", - "type": "object", - "description": "Empty object.", - "additionalProperties": false - } - ] - } + { + "type": "null" + } + ] + } + }, + "required": [ + "hasRange", + "regulationPrice", + "listPrice", + "unitName" + ] + }, + "Rule": { + "description": "Added since version: 6.0.0.0", + "required": [ + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of rule." + }, + "name": { + "description": "Name of the rule defined.", + "type": "string" + }, + "description": { + "description": "Description of the rule.", + "type": "string" + }, + "customFields": { + "type": "object", + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "extensions": { + "description": "To store additional data to a rule from extensions." + } + }, + "type": "object" + }, + "SalesChannel": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "languageId", + "customerGroupId", + "currencyId", + "paymentMethodId", + "shippingMethodId", + "countryId", + "navigationCategoryId", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of sales channel." + }, + "languageId": { + "description": "Unique identity of language used.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "customerGroupId": { + "description": "Unique identity of customer group.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "currencyId": { + "description": "Unique identity of currency used.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "paymentMethodId": { + "description": "Unique identity of payment method used.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingMethodId": { + "description": "Unique identity of shipping method.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryId": { + "description": "Unique identity of country.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "navigationCategoryId": { + "description": "Unique identity of navigation category.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "navigationCategoryVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of navigation category's version." + }, + "navigationCategoryDepth": { + "description": "It determines the number of levels of subcategories in the storefront category menu.", + "type": "integer", + "format": "int64" + }, + "footerCategoryId": { + "description": "Unique identity of footer category.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "footerCategoryVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of footer category's version." + }, + "serviceCategoryId": { + "description": "Unique identity of service category.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "serviceCategoryVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of service category's version." + }, + "mailHeaderFooterId": { + "description": "Unique identity of mail header and footer.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "hreflangDefaultDomainId": { + "description": "Unique identity of hreflangDefaultDomain.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "measurementUnits": { + "$ref": "#/components/schemas/MeasurementUnits" + }, + "businessTimeZone": { + "description": "Business timezone used for sales-channel-specific rendering. Added since version: 6.7.13.0.", + "type": "string" + }, + "name": { + "type": "string", + "description": "Name of the sales channel." + }, + "shortName": { + "description": "A short name for sales channel.", + "type": "string" + }, + "taxCalculationType": { + "description": "Tax calculation types are `horizontal` and `vertical`.", + "type": "string" + }, + "configuration": { + "type": "object" + }, + "active": { + "description": "When boolean value is `true`, the sales channel is enabled.", + "type": "boolean" + }, + "hreflangActive": { + "description": "When set to true, the sales channel pages are available in different languages.", + "type": "boolean" + }, + "maintenance": { + "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period.", + "type": "boolean" + }, + "customFields": { + "type": "object", + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object", + "description": "Contains the translations of all translated fields." + }, + "language": { + "$ref": "#/components/schemas/Language", + "description": "Default language for the sales channel" + }, + "currency": { + "$ref": "#/components/schemas/Currency", + "description": "Default currency for the sales channel" + }, + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod", + "description": "Default payment method for the sales channel" + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod", + "description": "Default shipping method for the sales channel" + }, + "country": { + "$ref": "#/components/schemas/Country", + "description": "Default country for the sales channel" + }, + "domains": { + "description": "Domain URLs configured for the sales channel", + "type": "array", + "items": { + "$ref": "#/components/schemas/SalesChannelDomain" + } + }, + "navigationCategory": { + "$ref": "#/components/schemas/Category", + "description": "Root category for navigation menu" + }, + "footerCategory": { + "$ref": "#/components/schemas/Category", + "description": "Root category for footer navigation" + }, + "serviceCategory": { + "$ref": "#/components/schemas/Category", + "description": "Root category for service pages" + }, + "hreflangDefaultDomain": { + "$ref": "#/components/schemas/SalesChannelDomain" + } + }, + "type": "object" + }, + "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", + "description": "Name of customer group to which the customer belongs within the specific sales channel they are currently interacting with." + }, + "displayGross": { + "type": "boolean", + "description": "When `true`, product's gross price is displayed for that customer group who belongs to the specific sales channel they are currently interacting with." + } + } + }, + "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", + "properties": { + "isoCode": { + "description": "Standard international three digit code to represent currency in a given sales channel. For example, USD." + }, + "factor": { + "description": "Currency exchange rate in a specific sales channel the customer is currently interacting with." + }, + "symbol": { + "description": "A currency symbol is a graphical representation used as shorthand for a currency's name, for example US Dollar - $ in a given sales channel." + }, + "shortName": { + "description": "Acronym for international currencies, for example, USD in a given sales channel." + }, + "name": { + "description": "Full name of the currency in a given sales channel. For example, US-Dollar." + }, + "position": { + "description": "The order of the tabs for multiple currencies defined in a given sales channel." + }, + "decimalPrecision": { + "description": "It defines the round off value for currency to the nearest decimal point in a given sales channel. If set to 2, it rounds off to two significant decimal points." + }, + "isSystemDefault": { + "description": "Runtime field, cannot be used as part of the criteria." + } + } + }, + "salesChannel": { + "$ref": "#/components/schemas/SalesChannel", + "properties": { + "typeId": { + "description": "Unique identity of a sales channel's type within a specific sales channel." + }, + "languageId": { + "description": "Unique identity of a sales channel's language within a specific sales channel." + }, + "currencyId": { + "description": "Unique identity of a sales channel's currency within a specific sales channel." + }, + "paymentMethodId": { + "description": "Unique identity of a sales channel's payment method within a specific sales channel." + }, + "shippingMethodId": { + "description": "Unique identity of a sales channel's shipping method within a specific sales channel." + }, + "countryId": { + "description": "Unique identity of a sales channel's country within a specific sales channel." + }, + "navigationCategoryId": { + "description": "Unique identity of a sales channel's navigation category within a specific sales channel." + }, + "navigationCategoryDepth": { + "description": "It determines the number of levels of subcategories in the storefront category menu within a specific sales channel." + }, + "footerCategoryId": { + "description": "Unique identity of a sales channel's footer category within a specific sales channel." + }, + "serviceCategoryId": { + "description": "Unique identity of a sales channel's service category within a specific sales channel." + }, + "name": { + "description": "Name of the sales channel." + }, + "shortName": { + "description": "A short name for sales channel." + }, + "accessKey": { + "description": "Access key to store api." + }, + "active": { + "description": "When `true`, the sales channel is enabled." + }, + "maintenance": { + "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." + }, + "maintenanceIpWhitelist": { + "description": "Array of IP address allowed to access the sales channel." + }, + "mailHeaderFooterId": { + "description": "Unique identity of a sales channel's mail header and footer within a specific sales channel." + }, + "customerGroupId": { + "description": "Unique identity of a sales channel's customer group within a specific sales channel." + }, + "hreflangActive": { + "description": "When `true`, the sales channel pages are available in different languages within a specific sales channel." + }, + "hreflangDefaultDomainId": { + "description": "Unique identity of a sales channel's hreflangDefaultDomain within a specific sales channel." + }, + "analyticsId": { + "description": "Unique identity of a sales channel's analytics within a specific sales channel." + } + } + }, + "measurementSystem": { + "$ref": "#/components/schemas/ContextMeasurementSystemInfo" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + }, + "properties": { + "taxRate": { + "description": "Rate of tax within a specific sales channel." + }, + "name": { + "description": "Name defined for a Tax within a specific sales channel." + } + } + }, + "customer": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/Customer" + } + ], + "properties": { + "groupId": { + "description": "Unique identity of a customer's group within a specific sales channel." + }, + "defaultPaymentMethodId": { + "description": "Unique identity of a customer's default payment method within a specific sales channel." + }, + "salesChannelId": { + "description": "Unique identity of sales channel the customer is currently interacting with." + }, + "languageId": { + "description": "Unique identity of language within a specific sales channel the customer is interacting." + }, + "lastPaymentMethodId": { + "description": "Unique identity of customer's last payment method within a specific sales channel." + }, + "defaultBillingAddressId": { + "description": "Unique identity of customer's default billing address within a specific sales channel." + }, + "defaultShippingAddressId": { + "description": "Unique identity of customer's default shipping address within a specific sales channel." + }, + "customerNumber": { + "description": "Name of the customer within a specific sales channel the customer is interacting." + }, + "salutationId": { + "description": "Unique identity of customer's default shipping address within a specific sales channel." + }, + "firstName": { + "description": "First name of the customer within a specific sales channel." + }, + "lastName": { + "description": "Last name of the customer within a specific sales channel." + }, + "company": { + "description": "Company name of the customer within a specific sales channel." + }, + "password": { + "description": "Password of the customer within a specific sales channel." + }, + "email": { + "description": "Email of the customer within a specific sales channel." + }, + "title": { + "description": "Customer's title or honorifics like Mr, Mrs, etc within a specific sales channel." + }, + "affiliateCode": { + "description": "An affiliate code is an identification option with which website operators can mark outgoing links within a specific sales channel." + }, + "campaignCode": { + "description": "A unique identifier for a campaign within a specific sales channel." + }, + "active": { + "description": "When `true`, the status of the customer is set active within a specific sales channel." + }, + "doubleOptInRegistration": { + "description": "When `true`, user subscriptions to an email marketing list is allowed within a specific sales channel." + }, + "doubleOptInEmailSentDate": { + "description": "Date and time when the double opt-in email was sent within a specific sales channel." + }, + "doubleOptInConfirmDate": { + "description": "Date and time when the double opt-in email was confirmed within a specific sales channel." + }, + "hash": { + "description": "Password hash for account recovery within a specific sales channel." + }, + "guest": { + "description": "Boolean value is `true` for a guest account within a specific sales channel." + }, + "firstLogin": { + "description": "Captures date and time of customer's first login within a specific sales channel." + }, + "lastLogin": { + "description": "Captures date and time of customer's last login within a specific sales channel." + }, + "newsletter": { + "description": "When `true`, then the customer gets subscribe to the newsletter" + }, + "birthday": { + "description": "Captures customer's birthday details within a specific sales channel." + }, + "lastOrderDate": { + "description": "Captures customer's last order date within a specific sales channel." + }, + "orderCount": { + "description": "Captures the number of orders placed by a customer within a specific sales channel." + }, + "legacyEncoder": { + "description": "encapsulates shop credentials when needed to migrate shop system from old instance to new instance" + }, + "legacyPassword": { + "description": "Hashed password of the old shop system" + }, + "autoIncrement": { + "description": "Internal field. " + }, + "remoteAddress": { + "description": "Anonymous IP address of the customer for last session." + } + } + }, + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod", + "properties": { + "pluginId": { + "description": "Unique identity of payment plugin within a specific sales channel." + }, + "handlerIdentifier": { + "description": "Internal field that contains system identifier details for payment methods like Paypal." + }, + "name": { + "description": "Name of the payment method within a specific sales channel." + }, + "description": { + "description": "A short description about the payment method within a specific sales channel." + }, + "position": { + "description": "The order of the tabs of your defined payment methods in the storefront by entering numerical values like 1,2,3, etc within a specific sales channel." + }, + "active": { + "description": "When `true`, the payment method is available for usage within a specific sales channel." + }, + "availabilityRuleId": { + "description": "Unique identity of the rule for the payment method." + }, + "mediaId": { + "description": "Unique identity of media used in payment method within a specific sales channel." + }, + "formattedHandlerIdentifier": { + "description": "Internal field that contains system identifier details for payment methods like Paypal." + } + } + }, + "shippingLocation": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "const": "cart_delivery_shipping_location" + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + } + } + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod", + "properties": { + "name": { + "description": "Name of the shipping method within a specific sales channel." + }, + "active": { + "description": "When `true`, the shipping method is available for usage within a specific sales channel." + }, + "description": { + "description": "A short description about the shipping method within a specific sales channel." + }, + "trackingUrl": { + "description": "URL that allows to track packages for a specific sales channel." + }, + "deliveryTimeId": { + "description": "Unique identity of deliveryTime within a specific sales channel." + }, + "availabilityRuleId": { + "description": "Unique identity of the rule for the payment method." + }, + "mediaId": { + "description": "Unique identity of media used in shipping method within a specific sales channel." + } + } + }, + "context": { + "description": "Core context with general configuration values and state", + "type": "object", + "properties": { + "versionId": { + "type": "string", + "description": "Unique identity of context's version in a specific sales channel." + }, + "currencyId": { + "type": "string", + "description": "Unique identity of currency context in a specific sales channel." + }, + "currencyFactor": { + "type": "integer", + "description": "Unique identity of currency factor context in a specific sales channel." + }, + "currencyPrecision": { + "type": "integer", + "format": "int32", + "description": "It defines the round off value of currency to the nearest decimal point. If set to 2, it rounds off to two significant decimal points." + }, + "languageIdChain": { + "type": "array", + "items": { + "type": "string" + } + }, + "scope": { + "type": "string", + "description": "Scope defines if its related to system or user context." + }, + "source": { + "type": "object", + "required": [ + "salesChannelId", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "sales-channel", + "shop-api" + ] + }, + "salesChannelId": { + "type": "string" + } + }, + "description": "When context is related to user in the source, then there is userId." + }, + "taxState": { + "type": "string", + "description": "Tax state can either be `gross` or `net`." + }, + "useCache": { + "type": "boolean", + "description": "When boolean value is `true`, caching is used." + } + } + }, + "itemRounding": { + "type": "object", + "required": [ + "decimals", + "interval", + "roundForNet", + "apiAlias" + ], + "properties": { + "apiAlias": { + "type": "string", + "const": "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", + "const": "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", + "const": "sales_channel_context" + } + }, + "required": [ + "salesChannel", + "apiAlias", + "itemRounding", + "totalRounding", + "languageInfo" + ] + }, + "SalesChannelDomain": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "url", + "salesChannelId", + "languageId", + "currencyId", + "snippetSetId" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of sales channel domain." + }, + "url": { + "description": "URL of the sales channel domain.", + "type": "string" + }, + "salesChannelId": { + "description": "Unique identity of sales channel.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "languageId": { + "description": "Unique identity of language used.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "currencyId": { + "description": "Unique identity of currency.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "snippetSetId": { + "description": "Unique identity of snippet set.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "measurementUnits": { + "$ref": "#/components/schemas/MeasurementUnits" + }, + "hreflangUseOnlyLocale": { + "description": "This is used to toggle the language configurations, say between DE and DE-DE for instance.", + "type": "boolean" + }, + "customFields": { + "type": "object", + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "language": { + "$ref": "#/components/schemas/Language" + }, + "currency": { + "$ref": "#/components/schemas/Currency" + }, + "salesChannelDefaultHreflang": { + "$ref": "#/components/schemas/SalesChannel" + } + }, + "type": "object" + }, + "Salutation": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "salutationKey", + "displayName", + "letterName" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of salutation." + }, + "salutationKey": { + "description": "Technical name given to salutation. For example: mr", + "type": "string" + }, + "displayName": { + "type": "string", + "description": "Name given for salutation and displayed in storefront. For example: Mr" + }, + "letterName": { + "type": "string", + "description": "Name given for salutation and used in the mail templates. For example, Dear Mr" + }, + "customFields": { + "type": "object", + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "position": { + "description": "Numerical value that indicates the order in which the defined salutations must be displayed in the frontend.", + "type": "integer", + "format": "int64" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object", + "description": "Contains the translations of all translated fields." + } + }, + "type": "object" + }, + "SeoUrl": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "languageId", + "foreignKey", + "routeName", + "pathInfo", + "seoPathInfo" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of Seo Url." + }, + "salesChannelId": { + "description": "Unique identity of sales channel.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "languageId": { + "description": "Unique identity of language.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "foreignKey": { + "description": "The key that references to product or category entity ID.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "routeName": { + "description": "A destination routeName that has been registered somewhere in the app's router. For example: \"frontend.detail.page\"", + "type": "string", + "enum": [ + "frontend.navigation.page", + "frontend.landing.page", + "frontend.detail.page" + ] + }, + "pathInfo": { + "description": "Path to product URL. For example: \"/detail/bbf36734504741c79a3bbe3795b91564\"", + "type": "string" + }, + "seoPathInfo": { + "description": "Seo path to product. For example: \"Pepper-white-ground-pearl/SW10098\"", + "type": "string" + }, + "isCanonical": { + "description": "When set to true, search redirects to the main URL.", + "type": "boolean" + }, + "isModified": { + "description": "When boolean value is `true`, the seo url is changed.", + "type": "boolean" + }, + "isDeleted": { + "description": "When set to true, the URL is deleted and cannot be used any more but it is still available on table and can be restored later.", + "type": "boolean" + }, + "error": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "string" + }, + "url": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "string" + }, + "customFields": { + "type": "object", + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object", + "title": "SeoUrlEntity" + }, + "ShippingMethod": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "technicalName", + "deliveryTimeId", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of shipping method." + }, + "name": { + "type": "string", + "description": "Name of the shipping method." + }, + "technicalName": { + "type": "string" + }, + "active": { + "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront.", + "type": "boolean" + }, + "position": { + "description": "The order of the tabs of your defined shipping methods in the storefront by entering numerical values like 1,2,3, etc.", + "type": "integer", + "format": "int64" + }, + "customFields": { + "type": "object", + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "mediaId": { + "description": "Unique identity of media.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "deliveryTimeId": { + "description": "Unique identity of deliveryTime.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "taxType": { + "description": "Refers `Free`, `Net` or `Gross` type of taxes.", + "type": "string" + }, + "description": { + "type": "string", + "description": "Description of each shipping method." + }, + "trackingUrl": { + "type": "string", + "description": "This URL allows to track packages." + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object", + "description": "Contains the translations of all translated fields." + }, + "deliveryTime": { + "$ref": "#/components/schemas/DeliveryTime", + "description": "Estimated delivery time information" + }, + "availabilityRule": { + "$ref": "#/components/schemas/Rule", + "description": "Rule defining when this shipping method is available" + }, + "prices": { + "description": "Shipping prices based on weight, volume, or cart value", + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingMethodPrice" + } + }, + "media": { + "$ref": "#/components/schemas/Media", + "description": "Shipping method logo or carrier image" + }, + "tags": { + "description": "Tags for organizing shipping methods", + "type": "array", + "items": { + "$ref": "#/components/schemas/Tag" + } + }, + "tax": { + "$ref": "#/components/schemas/Tax", + "description": "Tax configuration for shipping costs" + } + }, + "type": "object" + }, + "ShippingMethodPrice": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "shippingMethodId" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of shipping method price." + }, + "shippingMethodId": { + "description": "Unique identity of shipping method.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "ruleId": { + "description": "Unique identity of rule.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "calculation": { + "description": "Shipping price calculated based on quantity, price, weight or volume of items.", + "type": "integer", + "format": "int64" + }, + "calculationRuleId": { + "description": "Unique identity of rule calculation.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "quantityStart": { + "description": "Starting range of quantity of an item.", + "type": "number", + "format": "float" + }, + "quantityEnd": { + "description": "Ending range of quantity of an item.", + "type": "number", + "format": "float" + }, + "currencyPrice": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Price" + }, + "description": "Contains currency-based price." + }, + "customFields": { + "type": "object", + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "Sitemap": { + "type": "object", + "properties": { + "filename": { + "type": "string", + "description": "Name of the file which holds a list of all URL's." + }, + "created": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "filename", + "created" + ] + }, + "StateMachineState": { + "description": "Added since version: 6.0.0.0", + "required": [ + "translated", + "technicalName", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of state machine state." + }, + "technicalName": { + "description": "Technical name of StateMachineState.", + "type": "string" + }, + "name": { + "type": "string", + "description": "Display name of StateMachineState." + }, + "customFields": { + "type": "object", + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object", + "description": "Contains the translations of all translated fields." + } + }, + "type": "object" + }, + "SuccessResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + } + } + }, + "Tag": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of tag." + }, + "name": { + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "Tax": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "taxRate", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of tax." + }, + "taxRate": { + "description": "Rate of tax.", + "type": "number", + "format": "float" + }, + "name": { + "description": "Name defined for a Tax.", + "type": "string" + }, + "position": { + "description": "The order of the tabs of your defined taxes in the storefront by entering numerical values like 1,2,3, etc.", + "type": "integer", + "format": "int64" + }, + "customFields": { + "type": "object", + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "Unit": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "shortCode", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of Unit." + }, + "shortCode": { + "type": "string", + "description": "Short name for unit, e.g., m, kg." + }, + "name": { + "type": "string", + "description": "Full name of the unit, e.g., Meter, kilogram." + }, + "customFields": { + "type": "object", + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object", + "description": "Contains the translations of all translated fields." + } + }, + "type": "object" + }, + "WishlistLoadRouteResponse": { + "type": "object", + "required": [ + "products" + ], + "properties": { + "wishlist": { + "type": "object", + "properties": { + "customerId": { + "type": "string", + "description": "Unique identity of the customer." + }, + "salesChannelId": { + "type": "string", + "description": "Unique identity of the sales channel." + } + } + }, + "products": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + }, + "BreadcrumbCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Breadcrumb" + } + }, + "AccountNewsletterRecipientResult": { + "properties": { + "status": { + "description": "Status indicates if the customer has subscribed to the news letter or not." + } + } + }, + "ShippingMethodPageRouteResponse": { + "properties": { + "name": { + "description": "Name of the shipping method." + }, + "active": { + "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." + }, + "description": { + "description": "The order of the tabs of your defined shipping methods in the storefront by entering numerical values like 1,2,3, etc." + }, + "deliveryTimeId": { + "description": "Unique identity of the delivery time." + }, + "deliveryTime": { + "properties": { + "name": { + "description": "Name given to delivery time." + }, + "min": { + "description": "Minimum delivery time taken." + }, + "max": { + "description": "Maximum delivery time taken." + }, + "unit": { + "description": "Unit in which the delivery time is defined. For example, days or hours." + } + } + }, + "translations": { + "properties": { + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "name": { + "description": "Name of the shipping method." + }, + "description": { + "description": "A short description of the shipping method." + } + } + }, + "orderDeliveries": { + "properties": { + "orderId": { + "description": "Unique identity of order." + }, + "shippingOrderAddressId": { + "description": "Unique identity of shipping order address." + }, + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "shippingDateEarliest": { + "description": "Date and time of earliest delivery of products." + }, + "shippingDateLatest": { + "description": "Date and time of latest delivery of products." + }, + "stateId": { + "description": "Unique identity of state." + } + } + }, + "salesChannelDefaultAssignments": { + "properties": { + "stateId": { + "description": "Unique identity of state." + }, + "languageId": { + "description": "Unique identity of language." + }, + "currencyId": { + "description": "Unique identity of currency." + }, + "paymentMethodId": { + "description": "Unique identity of payment method." + }, + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "countryId": { + "description": "Unique identity of country." + }, + "navigationCategoryId": { + "description": "Unique identity of navigation category." + }, + "navigationCategoryDepth": { + "description": "It determines the number of levels of subcategories in the storefront category menu." + }, + "footerCategoryId": { + "description": "Unique identity of footer category." + }, + "serviceCategoryId": { + "description": "Unique identity of service category." + }, + "name": { + "description": "Name of the sales channel." + }, + "shortName": { + "description": "A short name for sales channel." + }, + "accessKey": { + "description": "Access key to store api." + }, + "active": { + "description": "When boolean value is `true`, the shipping methods are available for selection in the sales channel's storefront." + }, + "maintenance": { + "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." + }, + "maintenanceIpWhitelist": { + "description": "Array of IP address allowed to access the sales channel." + }, + "mailHeaderFooterId": { + "description": "Unique identity of mail header and footer." + }, + "customerGroupId": { + "description": "Unique identity of customer group." + }, + "hreflangActive": { + "description": "When boolean value is `true`, the sales channel pages are available in different languages." + }, + "hreflangDefaultDomainId": { + "description": "Unique identity of hreflangDefaultDomain." + } + } + }, + "salesChannels": { + "properties": { + "stateId": { + "description": "Unique identity of state." + }, + "languageId": { + "description": "Unique identity of language." + }, + "currencyId": { + "description": "Unique identity of currency." + }, + "paymentMethodId": { + "description": "Unique identity of payment method." + }, + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "countryId": { + "description": "Unique identity of country." + }, + "navigationCategoryId": { + "description": "Unique identity of navigation category." + }, + "navigationCategoryDepth": { + "description": "It determines the number of levels of subcategories in the storefront category menu." + }, + "footerCategoryId": { + "description": "Unique identity of footer category." + }, + "serviceCategoryId": { + "description": "Unique identity of service category." + }, + "name": { + "description": "Name of the sales channel." + }, + "shortName": { + "description": "A short name for sales channel." + }, + "accessKey": { + "description": "Access key to store api." + }, + "active": { + "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." + }, + "maintenance": { + "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." + }, + "maintenanceIpWhitelist": { + "description": "Array of IP address allowed to access the sales channel." + }, + "mailHeaderFooterId": { + "description": "Unique identity of mail header and footer." + }, + "customerGroupId": { + "description": "Unique identity of customer group." + }, + "hreflangActive": { + "description": "When boolean value is `true``, the sales channel pages are available in different languages." + }, + "hreflangDefaultDomainId": { + "description": "Unique identity of hreflangDefaultDomain." + } + } + }, + "availabilityRule": { + "properties": { + "name": { + "description": "Unique name for the rule." + }, + "description": { + "description": "A short description about the rule." + }, + "priority": { + "description": "A numerical value to prioritize one of the rules from the list." + }, + "invalid": { + "description": "When the boolean value is `true`, the rule is no more available for usage." + } + } + }, + "availabilityRuleId": { + "description": "Unique identity of availability rule." + }, + "prices": { + "properties": { + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "currencyId": { + "description": "Unique identity of currency." + }, + "ruleId": { + "description": "Unique identity of rule." + }, + "calculation": { + "description": "Shipping price calculated based on quantity, price, weight or volume of items." + }, + "quantityStart": { + "description": "Starting range of quantity of an item." + }, + "quantityEnd": { + "description": "Ending range of quantity of an item." + }, + "price": { + "description": "Shipping method price after applied rules." + }, + "calculationRuleId": { + "description": "Unique identity of calculation rule." + } + } + }, + "mediaId": { + "description": "Unique identity of media." + }, + "media": { + "properties": { + "userId": { + "description": "Unique identity of user." + }, + "mimeType": { + "description": "A string sent along with a file indicating the type of the file. For example: image/jpeg." + }, + "fileExtension": { + "description": "Type of file indication. For example: jpeg, png." + }, + "fileSize": { + "description": "Size of the file media file uploaded." + }, + "title": { + "description": "Title name give to the media." + }, + "metaDataRaw": { + "description": "Details of the media file uploaded." + }, + "alt": { + "description": "Alternate text for media." + }, + "url": { + "description": "Runtime field, cannot be used as part of the criteria." + }, + "fileName": { + "description": "Name of the media file uploaded." + }, + "mediaFolderId": { + "description": "Unique identity of media folder." + }, + "private": { + "description": "Boolean value is `true` to keep the media display private." + } + } + }, + "tags": { + "properties": { + "name": { + "description": "Name of the tag." + } + } + } + } + }, + "OrderProductWarehouse": { + "properties": { + "id": { + "description": "Unique identity of order's product warehouse." + } + } + }, + "OrderReturn": { + "properties": { + "id": { + "description": "Unique identity of order return." + }, + "versionId": { + "description": "Unique identity of order return's version." + }, + "orderId": { + "description": "Unique identity of order." + }, + "orderVersionId": { + "description": "Unique identity of order return version." + }, + "price": { + "properties": { + "netPrice": { + "description": "Net price of the product." + }, + "totalPrice": { + "description": "Gross price of the product." + }, + "calculatedTaxes": { + "description": "Contains calculated tax on order delivery price." + }, + "taxRules": { + "description": "Pricing based on multiple taxes." + }, + "positionPrice": { + "description": "Price of each line item in the cart multiplied by its quantity excluding charges like shipping cost, rules, taxes etc." + }, + "rawTotal": { + "description": "The total value before rounding off." + }, + "taxStatus": { + "description": "TaxStatus takes `Free`, `Net` or `Gross` as values." + } + } + }, + "shippingCosts": { + "properties": { + "unitPrice": { + "description": "Shipping cost of product per item (where, quantity=1)." + }, + "totalPrice": { + "description": "Shipping cost of product based on quantity." + }, + "quantity": { + "description": "Number of items of each product." + }, + "calculatedTaxes": { + "description": "Contains calculated taxes based on shipping costs/methods." + }, + "taxRules": { + "description": "Pricing based on multiple taxes." + }, + "referencePrice": { + "description": "Original cost price of the product." + }, + "listPrice": { + "properties": { + "price": { + "description": "Price of each line item." + }, + "discount": { + "description": "Absolute discount on each line item." + }, + "percentage": { + "description": "Discount in percentage." + } + } + }, + "regulationPrice": { + "properties": { + "price": { + "description": "Contains cheapest price from last 30 days as per EU law." + } + } + } + } + }, + "stateId": { + "description": "Unique identity of state." + }, + "returnNumber": { + "description": "Reference number for returning order." + }, + "requestedAt": { + "description": "Date and time when the order return was requested." + }, + "amountTotal": { + "description": "Gross price of the order." + }, + "amountNet": { + "description": "Net price of the order." + } + } + }, + "OrderReturnLineItem": { + "properties": { + "id": { + "description": "Unique identity of order return line item." + }, + "versionId": { + "description": "Unique identity of order return line item's version." + }, + "orderReturnId": { + "description": "Unique identity of order return." + }, + "orderReturnVersionId": { + "description": "Unique identity of order return version." + }, + "orderLineItemId": { + "description": "Unique identity of order line item." + }, + "orderLineItemVersionId": { + "description": "Unique identity of order line items's version." + }, + "reasonId": { + "description": "Unique identity of reason for return." + }, + "quantity": { + "description": "Number of line items returned." + }, + "refundAmount": { + "description": "Amount to be refunded." + }, + "restockQuantity": { + "description": "Update of stock quantity after the return of certain line items are initiated." + }, + "customFields": { + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "stateId": { + "description": "Unique identity of state." + } + } + }, + "OrderReturnLineItemReason": { + "properties": { + "id": { + "description": "Unique identity for reason of return." + }, + "reasonKey": { + "description": "Unique key associated with reason for the order return. " + }, + "content": { + "description": "Description of the reason of return." + }, + "translated": { + "description": "Contains the translations of all translated fields." + } + } + }, + "OrderTag": { + "properties": { + "id": { + "description": "Unique identity of order tag." + }, + "orderId": { + "description": "Unique identity of order." + }, + "orderVersionId": { + "description": "Unique identity of order's version." + }, + "tagId": { + "description": "Unique identity of tag given for an order." + } + } + }, + "OrderWarehouseGroup": { + "properties": { + "id": { + "description": "Unique identity of order warehouse group." + } + } + }, + "Plugin": { + "properties": { + "id": { + "description": "Unique identity of a plugin." + }, + "translated": { + "description": "Contains the translations of all translated fields." + } + } + }, + "ProductCrossSellingAssignedProducts": { + "properties": { + "id": { + "description": "Unique identity of Product CrossSelling Assigned Products." + } + } + }, + "ProductExport": { + "properties": { + "id": { + "description": "Unique identity of Exported Product." + } + } + }, + "ProductFeatureSet": { + "properties": { + "id": { + "description": "Unique identity of product feature set." + }, + "translated": { + "description": "Contains the translations of all translated fields." + } + } + }, + "ProductKeywordDictionary": { + "properties": { + "id": { + "description": "Unique identity of product keyword." + }, + "languageId": { + "description": "Unique identity of the language." + }, + "keyword": { + "description": "The keywords that help to search the product." + } + } + }, + "ProductPrice": { + "properties": { + "id": { + "description": "Unique identity of the product's price." + } + } + }, + "ProductReviewSummary": { + "properties": { + "id": { + "description": "Unique identity of products's review summary." + }, + "productId": { + "description": "Unique identity of products." + }, + "salesChannelId": { + "description": "Unique identity of sales channel." + }, + "summary": { + "description": "Unique identity of products's review summary." + }, + "visible": { + "description": "When boolean value is `true`, the review is displayed to the customer." + }, + "translated": { + "description": "Contains the translations of all translated fields." + } + } + }, + "ProductSearchConfig": { + "properties": { + "id": { + "description": "Unique identity of Product Search Configuration." + } + } + }, + "ProductSearchConfigField": { + "properties": { + "id": { + "description": "Unique identity of Product Search Configuration field." + } + } + }, + "ProductSearchKeyword": { + "properties": { + "id": { + "description": "Unique identity of Product Search Keyword." + } + } + }, + "ProductSorting": { + "properties": { + "id": { + "description": "Unique identity of Product sorting." + }, + "key": { + "description": "A keyword associated to identify product sorting." + }, + "priority": { + "description": "A numerical value to prioritize the product sorting." + }, + "label": { + "description": "Label given to a product sorting." + }, + "translated": { + "description": "Contains the translations of all translated fields." + } + } + }, + "ProductStreamFilter": { + "properties": { + "id": { + "description": "Unique identity of product stream filter." + } + } + }, + "ProductVisibility": { + "properties": { + "id": { + "description": "Unique identity of product visibility." + } + } + }, + "ProductWarehouse": { + "properties": { + "id": { + "description": "Unique identity of warehouse of product." + } + } + }, + "Promotion": { + "properties": { + "id": { + "description": "Unique identity of promotion." + }, + "customFields": { + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "translated": { + "description": "Contains the translations of all translated fields." + } + } + }, + "PromotionDiscount": { + "properties": { + "id": { + "description": "Unique identity of promotion discount." + } + } + }, + "PromotionDiscountPrices": { + "properties": { + "id": { + "description": "Unique identity of promotion discount price." + } + } + }, + "PromotionIndividualCode": { + "properties": { + "id": { + "description": "Unique identity of promotion individual code." + } + } + }, + "PromotionSalesChannel": { + "properties": { + "id": { + "description": "Unique identity of promotion on sales channel." + } + } + }, + "PromotionSetgroup": { + "properties": { + "id": { + "description": "Unique identity of promotion set group." + } + } + }, + "RuleCondition": { + "properties": { + "id": { + "description": "Unique identity of rule condition." + } + } + }, + "SalesChannelAnalytics": { + "properties": { + "id": { + "description": "Unique identity of sales channel analytics." + } + } + }, + "SalesChannelType": { + "properties": { + "id": { + "description": "Unique identity of sales channel type." + }, + "translated": { + "description": "Contains the translations of all translated fields." + } + } + }, + "ScheduledTask": { + "properties": { + "id": { + "description": "Unique identity of scheduled task." + } + } + }, + "Script": { + "properties": { + "id": { + "description": "Unique identity of a script." + } + } + }, + "SeoUrlTemplate": { + "properties": { + "id": { + "description": "Unique identity of Seo Url template." + }, + "salesChannelId": { + "description": "Unique identity of sales channel." + }, + "isValid": { + "description": "Created SEO URL template can be made usable by setting `isValid` to true." + }, + "customFields": { + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + } + } + }, + "Snippet": { + "properties": { + "id": { + "description": "Unique identity of snippet." + }, + "setId": { + "description": "Unique identity od snippet set." + }, + "translationKey": { + "description": "Reference to the snippet in the template." + }, + "value": { + "description": "Value of the key." + }, + "customFields": { + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + } + } + }, + "SnippetSet": { + "properties": { + "id": { + "description": "Unique identity of snippet set." + }, + "name": { + "description": "Name of snippet set." + }, + "iso": { + "description": "ISO nomenclature used to classify languages." + }, + "customFields": { + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + } + } + }, + "StateMachine": { + "properties": { + "id": { + "description": "Unique identity of state machine." + }, + "translated": { + "description": "Contains the translations of all translated fields." + } + } + }, + "StateMachineHistory": { + "properties": { + "id": { + "description": "Unique identity of state machine history." + } + } + }, + "StateMachineTransition": { + "properties": { + "id": { + "description": "Unique identity of state machine transition." + } + } + }, + "Subscription": { + "properties": { + "id": { + "description": "Unique identity of subscription." + }, + "convertedOrder": { + "description": "An array loaded with persistent information related to cart data." + }, + "subscriptionNumber": { + "description": "Unique number associated with subscription." + }, + "nextSchedule": { + "description": "Date and time of next scheduled subscription for example: `yyyy-mm-dd hh:mm:ss` - `2023-08-15 15:25:32`." + }, + "salesChannelId": { + "description": "Unique identity of sales channel." + }, + "subscriptionPlanId": { + "description": "Unique identity of subscription plan." + }, + "subscriptionPlanName": { + "description": "Unique name for subscription plan." + }, + "subscriptionIntervalId": { + "description": "Unique identity for subscription interval." + }, + "subscriptionIntervalName": { + "description": "Unique name for subscription interval." + }, + "dateInterval": { + "description": "Relative interval data. For example, `every 3 days`, `every 2 months`, etc." + }, + "cronInterval": { + "description": "Absolute interval data. For example, `only on January`, `only on Mondays`, etc." + }, + "billingAddressId": { + "description": "Unique identity of billing address." + }, + "shippingAddressId": { + "description": "Unique identity of shipping address." + }, + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "paymentMethodId": { + "description": "Unique identity of payment method." + }, + "currencyId": { + "description": "Unique identity of currency." + }, + "languageId": { + "description": "Unique identity of language." + }, + "customFields": { + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + } + } + }, + "SubscriptionAddress": { + "properties": { + "id": { + "description": "Unique identity of subscription address." + }, + "countryId": { + "description": "Unique identity of country." + }, + "subscriptionId": { + "description": "Unique identity of subscription." + }, + "countryStateId": { + "description": "Unique identity of state of the country." + }, + "salutationId": { + "description": "Unique identity of salutation." + }, + "firstName": { + "description": "First name of the subscribed customer." + }, + "lastName": { + "description": "Last name of the subscribed customer." + }, + "street": { + "description": "Street address" + }, + "zipcode": { + "description": "Zip code of the country." + }, + "company": { + "description": "Name of the company." + }, + "department": { + "description": "Name of the department." + }, + "title": { + "description": "Title name given to customer's order address." + }, + "vatId": { + "description": "Unique identity of VAT." + }, + "phoneNumber": { + "description": "Phone number of the customer." + }, + "additionalAddressLine1": { + "description": "Additional address input if necessary." + }, + "additionalAddressLine2": { + "description": "Additional address input if necessary." + }, + "customFields": { + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "email": { + "description": "Last name of the subscribed customer. " + } + } + }, + "SubscriptionCustomer": { + "properties": { + "id": { + "description": "Unique identity of subscription customer." + }, + "customerId": { + "description": "Unique identity of the customer." + }, + "salutationId": { + "description": "Unique identity of salutation." + }, + "firstName": { + "description": "Email address of the subscribed customer." + }, + "lastName": { + "description": "Last name of the subscribed customer. " + }, + "company": { + "description": "Name of the customer's company." + }, + "title": { + "description": "Title name given to customer's order address." + }, + "customerNumber": { + "description": "Unique number for subscribed customer." + }, + "vatId": { + "description": "Unique identity of VAT." + }, + "customFields": { + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + } + } + }, + "SubscriptionInterval": { + "properties": { + "id": { + "description": "Unique identity of subscription interval." + }, + "name": { + "description": "Name of the subscription interval." + }, + "active": { + "description": "When `true`, the defined subscription interval is available for selection in storefront." + }, + "dateInterval": { + "description": "Relative interval data. For example, `every 3 days`, `every 2 months`, etc." + }, + "cronInterval": { + "description": "Absolute interval data. For example, `only on January`, `only on Mondays`, etc." + }, + "availabilityRuleId": { + "description": "Unique identity of rule." + }, + "translated": { + "description": "Contains the translations of all translated fields." + } + } + }, + "SubscriptionPlan": { + "properties": { + "id": { + "description": "Unique identity of subscription plan." + }, + "name": { + "description": "Name of the subscription plan." + }, + "description": { + "description": "A short description about the subscription plan." + }, + "active": { + "description": "When `true`, the subscription plan is available for selection in storefront." + }, + "activeStorefrontLabel": { + "description": "When boolean value id `true`, the label overrides the plan name." + }, + "availabilityRuleId": { + "description": "Unique identity of rule." + }, + "label": { + "description": "Label that can overwrite the active plan name. " + }, + "translated": { + "description": "Contains the translations of all translated fields." + } + } + }, + "SubscriptionPlanIntervalMapping": { + "properties": { + "id": { + "description": "Unique identity of subscription plan interval mapping." + }, + "subscriptionIntervalId": { + "description": "Unique identity of subscription interval." + }, + "subscriptionPlanId": { + "description": "Unique identity of subscription plan." + } + } + }, + "SubscriptionPlanProductMapping": { + "properties": { + "id": { + "description": "Unique identity of subscription plan for product mapping." + }, + "productId": { + "description": "Unique identity of product." + }, + "productVersionId": { + "description": "Unique identity of product's version." + }, + "subscriptionPlanId": { + "description": "Unique identity of subscription plan." + } + } + }, + "SubscriptionTagMapping": { + "properties": { + "id": { + "description": "Unique identity of subscription tag." + }, + "subscriptionId": { + "description": "Unique identity of subscription." + }, + "tagId": { + "description": "Unique identity of subscription tag." + } + } + }, + "SwagDelayAction": { + "properties": { + "id": { + "description": "Unique identity of swag delay action for flow builder" + }, + "orderId": { + "description": "Unique identity of order." + }, + "customerId": { + "description": "Unique identity of customer." + } + } + }, + "SystemConfig": { + "properties": { + "id": { + "description": "Unique identity of system configuration." + }, + "configurationKey": { + "description": "Config key for shop configurations." + }, + "configurationValue": { + "properties": { + "_value": { + "description": "Config value for shop configurations." + } + } + }, + "salesChannelId": { + "description": "Unique identity of sales channel." + } + } + }, + "TaxProvider": { + "properties": { + "id": { + "description": "Unique identity of tax provider." + }, + "active": { + "description": "When boolean value is `true`, the tax providers are available for selection in the storefront." + }, + "name": { + "description": "Name of the tax provider." + }, + "priority": { + "description": "A numerical value to prioritize one the tax providers from the list." + }, + "processUrl": { + "description": "External URL makes request to get tax info." + }, + "appId": { + "description": "Unique identity of app." + }, + "customFields": { + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "translated": { + "description": "Contains the translations of all translated fields." + } + } + }, + "TaxRule": { + "properties": { + "id": { + "description": "Unique identity of tax rule." + } + } + }, + "TaxRuleType": { + "properties": { + "id": { + "description": "Unique identity of tax rule type." + }, + "translated": { + "description": "Contains the translations of all translated fields." + } + } + }, + "Theme": { + "properties": { + "id": { + "description": "Unique identity of Theme." + }, + "technicalName": { + "description": "Technical name of Theme." + }, + "name": { + "description": "Name of theme which is translatable." + }, + "author": { + "description": "Name of the company." + }, + "description": { + "description": "Description of the theme." + }, + "labels": { + "description": "Identification label given to theme." + }, + "helpTexts": { + "description": "Texts from config element." + }, + "customFields": { + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "previewMediaId": { + "description": "Unique identity of media used for previewing the theme." + }, + "parentThemeId": { + "description": "Unique identity of parent theme." + }, + "baseConfig": { + "description": "Config elements of theme like header, color, etc" + }, + "ConfigValues": { + "description": "Chosen values for the configuration." + }, + "active": { + "description": "When boolean value is `true`, the created theme can be made usable." + }, + "translated": { + "description": "Contains the translations of all translated fields." + } + } + }, + "User": { + "properties": { + "id": { + "description": "Unique identity of user." + } + } + }, + "UserAccessKey": { + "properties": { + "id": { + "description": "Unique identity of user access key." + } + } + }, + "UserConfig": { + "properties": { + "id": { + "description": "Unique identity of user configuration." + } + } + }, + "UserRecovery": { + "properties": { + "id": { + "description": "Unique identity of user recovery." + } + } + }, + "Warehouse": { + "properties": { + "id": { + "description": "Unique identity of warehouse." + } + } + }, + "WarehouseGroup": { + "properties": { + "id": { + "description": "Unique identity of warehouse group." + } + } + }, + "Webhook": { + "properties": { + "id": { + "description": "Unique identity of webhook." + } + } + }, + "WebhookEventLog": { + "properties": { + "id": { + "description": "Unique identity of webhook event log." + } + } + }, + "App": { + "properties": { + "translated": { + "description": "Contains the translations of all translated fields." + }, + "id": { + "description": "Unique identity of App." + } + } + }, + "AclRole": { + "properties": { + "id": { + "description": "Unique identity of ACL role." + } + } + }, + "AppActionButton": { + "properties": { + "id": { + "description": "Unique identity of app's action button." + }, + "translated": { + "description": "Contains the translations of all translated fields." + } + } + }, + "AppAdministrationSnippet": { + "properties": { + "id": { + "description": "Unique identity of app snippet." + }, + "appId": { + "description": "Unique identity of app in app snippet." + }, + "localeId": { + "description": "Unique identity that specifies the language and country." + }, + "value": { + "description": "Value of App Administration Snippet." + } + } + }, + "AppCmsBlock": { + "properties": { + "id": { + "description": "Unique identity of app's CMS block." + }, + "translated": { + "description": "Contains the translations of all translated fields." + } + } + }, + "AppFlowAction": { + "properties": { + "id": { + "description": "Unique identity of app's flow action." + }, + "translated": { + "description": "Contains the translations of all translated fields." + } + } + }, + "AppPaymentMethod": { + "properties": { + "id": { + "description": "Unique identity of app's payment method." + } + } + }, + "AppScriptCondition": { + "properties": { + "id": { + "description": "Unique identity of app's script condition." + }, + "translated": { + "description": "Contains the translations of all translated fields." + } + } + }, + "AppFlowEvent": { + "properties": { + "id": { + "description": "Unique identity of App flow event." + } + } + }, + "AppTemplate": { + "properties": { + "id": { + "description": "Unique identity of App template." + } + } + }, + "CurrencyCountryRounding": { + "properties": { + "id": { + "description": "Unique identity of the country's currency rounding." + } + } + }, + "CustomEntity": { + "properties": { + "id": { + "description": "Unique identity of a custom entity." + } + } + }, + "CustomField": { + "properties": { + "id": { + "description": "Unique identity of a custom field." + } + } + }, + "CustomFieldSet": { + "properties": { + "id": { + "description": "Unique identity of a custom field set." + } + } + }, + "CustomFieldSetRelation": { + "properties": { + "id": { + "description": "Unique identity of a custom field set relation." + } + } + }, + "CustomPrice": { + "properties": { + "id": { + "description": "Unique identity of the custom price." + }, + "productId": { + "description": "Unique identity of the product." + }, + "productVersionId": { + "description": "Unique identity of the product's version." + }, + "customerId": { + "description": "Unique identity of the customer." + }, + "customerGroupId": { + "description": "Unique identity of the customer's group." + }, + "price": { + "description": "Detailed information of price." + } + } + }, + "CustomerRecovery": { + "properties": { + "id": { + "description": "Unique identity of the customer recovery account." + } + } + }, + "CustomerSpecificFeatures": { + "properties": { + "id": { + "description": "Unique identity of the customer specific features." + }, + "customerId": { + "description": "Unique identity of the customer." + } + } + }, + "CustomerTag": { + "properties": { + "id": { + "description": "Unique identity of the customer tag." + }, + "customerId": { + "description": "Unique identity of the customer." + }, + "tagId": { + "description": "Unique identity of the tag." + } + } + }, + "CustomerWishlist": { + "properties": { + "id": { + "description": "Unique identity of the customer's wishlist." + }, + "customerId": { + "description": "Unique identity of the customer." + }, + "customFields": { + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + } + } + }, + "CustomerWishlistProduct": { + "properties": { + "id": { + "description": "Unique identity of the product in customer wishlist." + }, + "productId": { + "description": "Unique identity of the product." + }, + "productVersionId": { + "description": "Unique identity of the product's version." + } + } + }, + "DocumentBaseConfig": { + "properties": { + "id": { + "description": "Unique identity of the document base config." + }, + "documentTypeId": { + "description": "Unique identity of the document type." + }, + "logoId": { + "description": "Unique identity of the company logo." + }, + "name": { + "description": "Name of the document." + }, + "filenamePrefix": { + "description": "A prefix name added to the file name separated by an underscore." + }, + "filenameSuffix": { + "description": "A suffix name added to the file name separated by an underscore." + }, + "global": { + "description": "When set to `true`, the document can be used across all sales channels." + }, + "documentNumber": { + "description": "Unique number associated with every document." + }, + "config": { + "description": "Specifies detailed information about the component." + }, + "customFields": { + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "logo": { + "description": "Logo in the document at the top-right corner." + } + } + }, + "DocumentBaseConfigSalesChannel": { + "properties": { + "id": { + "description": "Unique identity of document's base config sales channel." + }, + "documentBaseConfigId": { + "description": "Unique identity of document's base config." + }, + "salesChannelId": { + "description": "Unique identity of sales channel." + }, + "documentTypeId": { + "description": "Unique identity of document type." + } + } + }, + "Flow": { + "properties": { + "id": { + "description": "Unique identity of flow." + } + } + }, + "FlowSequence": { + "properties": { + "id": { + "description": "Unique identity of flow." + } + } + }, + "FlowTemplate": { + "properties": { + "id": { + "description": "Unique identity of flow template." + } + } + }, + "ImportExportFile": { + "properties": { + "id": { + "description": "Unique identity of import-export file." + } + } + }, + "ImportExportLog": { + "properties": { + "id": { + "description": "Unique identity of import-export log." + } + } + }, + "ImportExportProfile": { + "properties": { + "id": { + "description": "Unique identity of import-export profile." + }, + "Integration": { + "description": "Unique identity of integration." + } + } + }, + "LogEntry": { + "properties": { + "id": { + "description": "Unique identity of log entry." + } + } + }, + "MailHeaderFooter": { + "properties": { + "id": { + "description": "Unique identity of mail's header and footer component." + }, + "systemDefault": { + "description": "Unused field. To be removed in future." + }, + "name": { + "description": "Name of the MailHeaderFooter." + }, + "description": { + "description": "Description of the MailHeaderFooter." + }, + "headerHtml": { + "description": "HTML header content." + }, + "headerPlain": { + "description": "Textual header content." + }, + "footerHtml": { + "description": "HTML footer content." + }, + "footerPlain": { + "description": "Textual footer content." + }, + "translated": { + "description": "Contains the translations of all translated fields." + } + } + }, + "MailTemplate": { + "properties": { + "id": { + "description": "Unique identity of mail template." + }, + "systemDefault": { + "description": "Unused field. To be removed in future." + }, + "senderName": { + "description": "Name of the sender in the mail." + }, + "contentHtml": { + "description": "HTML content in the mail." + }, + "contentPlain": { + "description": "Textual content in the mail." + }, + "customFields": { + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "translated": { + "description": "Contains the translations of all translated fields." + } + } + }, + "MailTemplateMedia": { + "properties": { + "id": { + "description": "Unique identity of mail template's media." + }, + "mailTemplateId": { + "description": "Unique identity of the mail template." + }, + "languageId": { + "description": "Unique identity of the language." + }, + "mediaId": { + "description": "Unique identity of the media." + }, + "position": { + "description": "The order of multiple media templates defined is specified using numerical values like 1,2,3, etc." + } + } + }, + "MailTemplateType": { + "properties": { + "id": { + "description": "Unique identity of mail template type." + }, + "name": { + "description": "Name of the mail template." + }, + "technicalName": { + "description": "Technical name of mail template." + }, + "customFields": { + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + }, + "translated": { + "description": "Contains the translations of all translated fields." + } + } + }, + "MediaAiTag": { + "properties": { + "id": { + "description": "Unique identity of the AI media tag." + }, + "tag": { + "description": "Tag that indicates if the media is made by AI or not." + }, + "translated": { + "description": "Contains the translations of all translated fields." + } + } + }, + "MediaDefaultFolder": { + "properties": { + "id": { + "description": "Unique identity of media default folder." + } + } + }, + "MediaFolder": { + "properties": { + "id": { + "description": "Unique identity of media folder." + } + } + }, + "MediaFolderConfiguration": { + "properties": { + "id": { + "description": "Unique identity of media folder configuration." + } + } + }, + "MediaTag": { + "properties": { + "id": { + "description": "Unique identity of the media tag." + }, + "mediaId": { + "description": "Unique identity of the media." + }, + "tagId": { + "description": "Unique identity of the tag." + } + } + }, + "MediaThumbnailSize": { + "properties": { + "id": { + "description": "Unique identity of media thumbnail size defined." + }, + "width": { + "description": "Width of the thumbnail." + }, + "height": { + "description": "Height of the thumbnail." + }, + "customFields": { + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + } + } + }, + "NewsletterRecipient": { + "properties": { + "id": { + "description": "Unique identity of newsletter recipient." + } + } + }, + "Notification": { + "properties": { + "id": { + "description": "Unique identity of notification." + } + } + }, + "NumberRange": { + "properties": { + "id": { + "description": "Unique identity of number range." + }, + "translated": { + "description": "Contains the translations of all translated fields." + } + } + }, + "NumberRangeSalesChannel": { + "properties": { + "id": { + "description": "Unique identity of Sales channels's number rage." + } + } + }, + "NumberRangeState": { + "properties": { + "id": { + "description": "Unique identity of number range's state." + } + } + }, + "NumberRangeType": { + "properties": { + "id": { + "description": "Unique identity of number range's type." + }, + "translated": { + "description": "Contains the translations of all translated fields." + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ], + "paths": { + "/account/newsletter-recipient": { + "post": { + "tags": [ + "Profile", + "Newsletter", + "Endpoints supporting Criteria" + ], + "summary": "Fetch newsletter recipients", + "description": "Perform a filtered search for newsletter recipients.", + "operationId": "readNewsletterRecipient", + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AccountNewsletterRecipient" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "403": { + "$ref": "#/components/responses/403", + "description": "No customer is logged in, or the logged in customer is a guest." + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ], + "parameters": [ + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/account/change-profile": { + "post": { + "tags": [ + "Profile" + ], + "summary": "Change the customer's information", + "description": "Make changes to a customer's account, like changing their name, salutation or title.", + "operationId": "changeProfile", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "firstName", + "lastName" + ], + "properties": { + "salutationId": { + "description": "Id of the salutation for the customer account. Fetch options using `salutation` endpoint.", + "type": "string" + }, + "title": { + "description": "(Academic) title of the customer", + "type": "string" + }, + "firstName": { + "description": "Customer first name. Value will be reused for shipping and billing address if not provided explicitly.", + "type": "string" + }, + "lastName": { + "description": "Customer last name. Value will be reused for shipping and billing address if not provided explicitly.", + "type": "string" + }, + "birthdayDay": { + "description": "Birthday day", + "type": "integer" + }, + "birthdayMonth": { + "description": "Birthday month", + "type": "integer" + }, + "birthdayYear": { + "description": "Birthday year", + "type": "integer" + } + }, + "oneOf": [ + { + "properties": { + "accountType": { + "description": "Type of the customer account. Default value is 'private'.", + "type": "string", + "enum": [ + "private" + ], + "default": "private" + }, + "company": { + "type": "null" + }, + "vatIds": { + "type": "null" + } + } + }, + { + "required": [ + "accountType", + "company", + "vatIds" + ], + "properties": { + "accountType": { + "description": "Type of the customer account. Can be `private` or `business`.", + "type": "string", + "enum": [ + "business" + ] + }, + "company": { + "description": "Company of the customer. Only required when `accountType` is `business`.", + "type": "string" + }, + "vatIds": { + "description": "VAT IDs of the customer's company. Only valid when `accountType` is `business`.", + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + } + } + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Returns a success response indicating a successful update", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The submitted profile data failed validation, e.g. a missing salutation, a missing company name for a business account or an invalid VAT ID." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "403": { + "$ref": "#/components/responses/403", + "description": "No customer is logged in." + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/account/change-email": { + "post": { + "tags": [ + "Profile" + ], + "summary": "Change the customer's email address", + "description": "Changes a customer's email address to a new email address, using their current password as a validation.", + "operationId": "changeEmail", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "email", + "emailConfirmation", + "password" + ], + "properties": { + "email": { + "description": "New email address. Has to be unique amongst all customers", + "type": "string" + }, + "emailConfirmation": { + "description": "Confirmation of the new email address.", + "type": "string" + }, + "password": { + "description": "Customer's current password", + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Returns a success response indicating a successful update", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The submitted data failed validation, e.g. a malformed email address, a confirmation that does not match, an email that is already in use or a wrong password." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "403": { + "$ref": "#/components/responses/403", + "description": "No customer is logged in, or the logged in customer is a guest." + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/account/change-language": { + "post": { + "tags": [ + "Profile" + ], + "summary": "Change the customer's language.", + "description": "Changes the language of the logged in customer", + "operationId": "changeLanguage", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "languageId" + ], + "properties": { + "languageId": { + "description": "New languageId", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Returns a success response indicating a successful update", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `languageId` is not a valid UUID or does not reference a language assigned to the current sales channel." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "403": { + "$ref": "#/components/responses/403", + "description": "No customer is logged in, or the logged in customer is a guest." + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/account/change-password": { + "post": { + "tags": [ + "Profile" + ], + "summary": "Change the customer's password", + "description": "Changes a customer's password using their current password as a validation.", + "operationId": "changePassword", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "password", + "newPassword", + "newPasswordConfirm" + ], + "properties": { + "password": { + "description": "Current password of the customer", + "type": "string" + }, + "newPassword": { + "description": "New Password for the customer", + "type": "string" + }, + "newPasswordConfirm": { + "description": "Confirmation of the new password", + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Returns a success response indicating a successful update.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The submitted data failed validation, e.g. a password confirmation that does not match, a new password below the configured minimum length or a wrong current password." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "403": { + "$ref": "#/components/responses/403", + "description": "No customer is logged in, or the logged in customer is a guest." + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/account/convert-guest": { + "post": { + "tags": [ + "Profile" + ], + "summary": "Convert a guest customer to a registered customer", + "description": "Takes a password to convert a guest customer to a registered customer. The customer can then log in with the provided password in the future.", + "operationId": "convertGuest", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "password" + ], + "properties": { + "password": { + "description": "New Password for the customer", + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Returns a success response indicating a successful update.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } + }, + "400": { + "description": "The customer is not a guest customer.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + } + } + } + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "403": { + "$ref": "#/components/responses/403", + "description": "No customer is logged in." + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/account/customer-recovery-is-expired": { + "post": { + "tags": [ + "Profile" + ], + "summary": "Checks if the customer recovery entry for a given hash is expired.", + "description": "This can be used to validate a provided hash has a valid and not expired customer recovery hash.", + "operationId": "getCustomerRecoveryIsExpired", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "hash" + ], + "properties": { + "hash": { + "description": "Parameter from the link in the confirmation mail sent in Step 1", + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Returns a CustomerRecoveryIsExpiredResponse that indicates if the hash is expired or not.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "isExpired": { + "type": "boolean" + } + }, + "required": [ + "isExpired" + ] } }, + "apiAlias": { + "type": "string", + "const": "array_struct" + } + } + } + } + } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `hash` is missing or is not a 32 character string." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "404": { + "$ref": "#/components/responses/404", + "description": "No customer recovery exists for the given `hash`." + } + }, + "security": [ + { + "ApiKey": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/account/customer": { + "post": { + "tags": [ + "Profile", + "Endpoints supporting Criteria " + ], + "summary": "Get information about current customer", + "description": "Returns information about the current customer.\n\n**Available Associations:**\n- `group` - Customer group determining pricing and permissions\n- `language` - Preferred language for customer communication\n- `lastPaymentMethod` - Last used payment method by the customer\n- `defaultBillingAddress` - Default billing address for the customer\n- `activeBillingAddress` - Currently active billing address in the session\n- `defaultShippingAddress` - Default shipping address for the customer\n- `activeShippingAddress` - Currently active shipping address in the session\n- `salutation` - Customer salutation (e.g., Mr., Mrs., Ms.)\n- `addresses` - All addresses saved for the customer\n- `tags` - Tags assigned to the customer for organization and segmentation", + "operationId": "readCustomer", + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/NoneFieldsCriteria" + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Returns the logged in customer, also for guest sessions. Check for the value of `guest` field to see whether the customer is a guest.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Customer" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "403": { + "$ref": "#/components/responses/403", + "description": "No customer is logged in." + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ], + "parameters": [ + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + }, + "delete": { + "tags": [ + "Profile" + ], + "summary": "Delete the customer's profile", + "description": "Deletes a customer profile along with their addresses, wishlists and associated data. Created orders and their payment/shipping information (addresses) and reviews are not deleted.", + "operationId": "deleteCustomer", + "responses": { + "204": { + "description": "Returns a no content response indicating a successful removal of the customer profile" + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "403": { + "$ref": "#/components/responses/403", + "description": "No customer is logged in." + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/account/address/{addressId}": { + "delete": { + "tags": [ + "Address" + ], + "summary": "Delete an address of a customer", + "description": "Delete an address of customer.\n\n Only addresses which are not set as default addresses for shipping or billing can be deleted. You can check the current default addresses of your customer using the profile information endpoint and change them using the default address endpoint.\n\n **A customer must have at least one address (which can be used for shipping and billing).**\n\n An automatic fallback is not applied.", + "operationId": "deleteCustomerAddress", + "parameters": [ + { + "name": "addressId", + "in": "path", + "description": "ID of the address to be deleted.", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No Content response, when the address has been deleted" + }, + "400": { + "description": "Response containing a list of errors, most likely due to the address being in use" + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "403": { + "$ref": "#/components/responses/403", + "description": "No customer is logged in." + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + }, + "patch": { + "tags": [ + "Address" + ], + "summary": "Modify an address of a customer", + "description": "Modifies an existing address of a customer.", + "operationId": "updateCustomerAddress", + "parameters": [ + { + "name": "addressId", + "in": "path", + "description": "Address ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomerAddressBody" + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/CustomerAddress" + }, + { + "$ref": "#/components/schemas/CustomerAddressRead" + } + ] + } + } + } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The address does not belong to the logged in customer, or the submitted address data failed validation." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "403": { + "$ref": "#/components/responses/403", + "description": "No customer is logged in." + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/account/list-address": { + "post": { + "tags": [ + "Address", + "Endpoints supporting Criteria " + ], + "summary": "Fetch addresses of a customer", + "description": "Lists all addresses of the current customer and allows filtering them based on a criteria.", + "operationId": "listAddress", + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "allOf": [ { + "type": "object", "required": [ - "error" + "elements" ], "properties": { - "error": { - "type": "object", - "required": [ - "code", - "message" - ], - "properties": { - "code": { - "type": "integer", - "description": "JSON-RPC error code, e.g. -32700 parse error, -32600 invalid request, -32601 method not found, -32602 invalid params, -32603 internal error." - }, - "message": { - "type": "string" - }, - "data": { - "description": "Optional additional error information." - } + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomerAddress" } } } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" } ] } - }, - "text/event-stream": { - "itemSchema": { - "type": "object", - "description": "Parsed Server-Sent Events message. The `data` field contains a serialized JSON-RPC response object.", - "properties": { - "event": { - "type": "string" - }, - "id": { - "type": "string" - }, - "retry": { - "type": "integer" - }, - "data": { - "type": "string", - "contentMediaType": "application/json", - "contentSchema": { - "type": "object", - "properties": { - "jsonrpc": { - "type": "string", - "enum": [ - "2.0" - ] - }, - "id": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "result": { - "type": "object", - "additionalProperties": true - }, - "error": { - "type": "object", - "properties": { - "code": { - "type": "integer" - }, - "message": { - "type": "string" - } - } - } - } - } - } + } + } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "403": { + "$ref": "#/components/responses/403", + "description": "No customer is logged in." + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ], + "parameters": [ + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/account/login": { + "post": { + "tags": [ + "Login & Registration" + ], + "summary": "Log in a customer", + "description": "Logs in customers given their credentials.", + "operationId": "loginCustomer", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "username", + "password" + ], + "properties": { + "username": { + "description": "Email", + "type": "string" + }, + "password": { + "description": "Password", + "type": "string" } }, - "schema": { - "type": "string", - "description": "Server-Sent Events stream. Each `message` event carries a JSON-RPC response object as defined for `application/json`." - } + "type": "object" } } + } + }, + "responses": { + "200": { + "$ref": "#/components/responses/ContextTokenResponse" }, - "202": { - "description": "Notification accepted. Returned with an empty body for JSON-RPC notifications (requests without an `id`)." - }, - "400": { - "description": "Invalid request, e.g. malformed JSON-RPC payload or malformed `mcp-session-id` header.", + "401": { + "description": "If credentials are incorrect an error is returned", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "jsonrpc": { - "type": "string", - "enum": [ - "2.0" - ] - }, - "id": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "error": { - "type": "object", - "required": [ - "code", - "message" - ], - "properties": { - "code": { - "type": "integer" - }, - "message": { - "type": "string" - } - } - } + "$ref": "#/components/schemas/failure" + } + } + } + }, + "429": { + "$ref": "#/components/responses/429", + "description": "Too many failed login attempts for this email address or client IP. The `Retry-After` window is contained in the error." + } + }, + "security": [ + { + "ApiKey": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/account/login/imitate-customer": { + "post": { + "tags": [ + "Login & Registration" + ], + "summary": "Imitate the log in as a customer", + "description": "Imitate the log in as a customer given a generated token.", + "operationId": "imitateCustomerLogin", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "token", + "customerId", + "userId" + ], + "properties": { + "token": { + "description": "Generated customer impersonation token", + "type": "string" + }, + "customerId": { + "description": "ID of the customer", + "type": "string" + }, + "userId": { + "description": "ID of the user who generated the token", + "type": "string" } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "$ref": "#/components/responses/ContextTokenResponse" + }, + "400": { + "description": "If the token is incorrect an error is returned", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" } } } }, "401": { - "$ref": "#/components/responses/401" - }, - "429": { - "$ref": "#/components/responses/429" + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing. The response also uses this status when the customer to imitate cannot be authenticated." } }, "security": [ { "ApiKey": [] } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ] - }, - "delete": { + } + }, + "/account/logout": { + "post": { "tags": [ - "MCP", - "Experimental" + "Login & Registration" + ], + "summary": "Log out a customer", + "description": "Logs out a customer.", + "operationId": "logoutCustomer", + "responses": { + "200": { + "$ref": "#/components/responses/ContextTokenResponse" + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "403": { + "$ref": "#/components/responses/403" + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } ], - "summary": "Close MCP session (Store API)", - "description": "Terminates the active MCP session identified by the `mcp-session-id` header. Experimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", - "operationId": "storeApiMcpDelete", "parameters": [ { - "name": "mcp-session-id", - "in": "header", - "required": true, - "description": "Session ID of the session to close. Obtained from the `mcp-session-id` response header of the `initialize` request.", - "schema": { - "type": "string", - "format": "uuid" + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/account/register-confirm": { + "post": { + "tags": [ + "Login & Registration" + ], + "summary": "Confirm a customer registration", + "description": "Confirms a customer registration when double opt-in is activated.\n\nLearn more about double opt-in registration in our guide \"Register a customer\".", + "operationId": "registerConfirm", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "hash", + "em" + ], + "properties": { + "hash": { + "description": "Hash from the email received", + "type": "string" + }, + "em": { + "description": "Email hash from the email received", + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Returns the logged in customer. The customer is automatically logged in with the `sw-context-token` header provided, which can be reused for subsequent requests." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "404": { + "description": "No hash provided" + }, + "412": { + "description": "The customer has already been confirmed" + } + }, + "security": [ + { + "ApiKey": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/account/register": { + "post": { + "tags": [ + "Login & Registration" + ], + "summary": "Register a customer", + "description": "Registers a customer. Used both for normal customers and guest customers.See the Guide \"Register a customer\" for more information on customer registration.", + "operationId": "register", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "email": { + "description": "Email of the customer. Has to be unique, unless `guest` is `true`", + "type": "string" + }, + "password": { + "description": "Password for the customer. Required, unless `guest` is `true`", + "type": "string" + }, + "salutationId": { + "description": "Id of the salutation for the customer account. Fetch options using `salutation` endpoint.", + "type": "string" + }, + "firstName": { + "description": "Customer first name. Value will be reused for shipping and billing address if not provided explicitly.", + "type": "string" + }, + "lastName": { + "description": "Customer last name. Value will be reused for shipping and billing address if not provided explicitly.", + "type": "string" + }, + "acceptedDataProtection": { + "description": "Flag indicating accepted data protection", + "type": "boolean" + }, + "storefrontUrl": { + "description": "URL of the storefront for that registration. Used in confirmation emails. Has to be one of the configured domains of the sales channel.", + "type": "string" + }, + "requestedGroupId": { + "description": "Optional customer group registration request. The customer is created in the current sales channel group and this field stores the requested target group. The group must be available for registration in the current sales channel.", + "type": "string" + }, + "billingAddress": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "shippingAddress": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "guest": { + "description": "If set, will create a guest customer. Guest customers can re-use an email address and don't need a password.", + "type": "boolean", + "default": false + }, + "birthdayDay": { + "description": "Birthday day", + "type": "integer" + }, + "birthdayMonth": { + "description": "Birthday month", + "type": "integer" + }, + "birthdayYear": { + "description": "Birthday year", + "type": "integer" + }, + "title": { + "description": "(Academic) title of the customer", + "type": "string" + }, + "affiliateCode": { + "description": "Field can be used to store an affiliate tracking code", + "type": "string" + }, + "campaignCode": { + "description": "Field can be used to store a campaign tracking code", + "type": "string" + } + }, + "required": [ + "email", + "password", + "firstName", + "lastName", + "acceptedDataProtection", + "storefrontUrl", + "billingAddress" + ], + "oneOf": [ + { + "properties": { + "accountType": { + "description": "Type of the customer account. Default value is 'private'.", + "type": "string", + "enum": [ + "private" + ], + "default": "private" + }, + "company": { + "type": "null" + }, + "vatIds": { + "type": "null" + } + } + }, + { + "required": [ + "accountType", + "company", + "vatIds" + ], + "properties": { + "accountType": { + "description": "Type of the customer account. Can be `private` or `business`.", + "type": "string", + "enum": [ + "business" + ] + }, + "company": { + "description": "Company of the customer. Only required when `accountType` is `business`.", + "type": "string" + }, + "vatIds": { + "description": "VAT IDs of the customer's company. Only valid when `accountType` is `business`.", + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + } + } + } + ], + "type": "object" + } } } - ], + }, "responses": { "200": { - "description": "Session closed successfully." - }, - "400": { - "description": "Missing or malformed `mcp-session-id` header. Returns a JSON-RPC error object.", + "description": "Success", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "jsonrpc": { - "type": "string", - "enum": [ - "2.0" - ] - }, - "id": { - "type": "null" - }, - "error": { - "type": "object", - "required": [ - "code", - "message" - ], - "properties": { - "code": { - "type": "integer" - }, - "message": { - "type": "string" - } - } - } - } + "$ref": "#/components/schemas/Customer" } } } }, - "401": { - "$ref": "#/components/responses/401" + "400": { + "$ref": "#/components/responses/400", + "description": "The submitted registration data failed validation, e.g. a missing required field, an email address that is already registered or an unknown country." }, - "429": { - "$ref": "#/components/responses/429" + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ { "ApiKey": [] } - ] - }, - "options": { - "tags": [ - "MCP", - "Experimental" ], - "summary": "MCP CORS preflight (Store API)", - "description": "Handles CORS preflight requests for the Store API MCP endpoint. Answered before routing; the response carries the `Access-Control-Allow-*` headers including `mcp-session-id` and `mcp-protocol-version`. Experimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", - "operationId": "storeApiMcpOptions", - "responses": { - "200": { - "description": "CORS preflight accepted." + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" } - } + ] } }, - "/country-state/{countryId}": { + "/account/recovery-password-confirm": { "post": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " - ], - "summary": "Fetch the states of a country", - "description": "Perform a filtered search the states for a country", - "operationId": "readCountryState", - "parameters": [ - { - "name": "countryId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } - }, - { - "$ref": "#/components/parameters/swLanguageId" - } + "Profile" ], + "summary": "Reset a password with recovery credentials", + "description": "This operation is Step 2 of the password reset flow. It is required to conduct Step 1 \"Send a password recovery mail\" in order to obtain the required credentials for this step.Resets a customer's password using credentials from a password recovery mail as a validation.", + "operationId": "recoveryPassword", "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "hash", + "newPassword", + "newPasswordConfirm" + ], + "properties": { + "hash": { + "description": "Parameter from the link in the confirmation mail sent in Step 1", + "type": "string" + }, + "newPassword": { + "description": "New password for the customer", + "type": "string" + }, + "newPasswordConfirm": { + "description": "Confirmation of the new password", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "$ref": "#/components/responses/CountryStateListResponse" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - }, - "get": { - "tags": [ - "System & Context", - "Endpoints supporting Criteria " - ], - "summary": "Fetch the states of a country", - "description": "Perform a filtered search the states for a country", - "operationId": "readCountryStateGet", - "parameters": [ - { - "name": "countryId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaFields" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "$ref": "#/components/parameters/CompressedCriteria" - }, - { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/CountryStateListResponse" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/search": { - "post": { - "tags": [ - "Product" - ], - "summary": "Search for products", - "description": "Performs a search for products which can be used to display a product listing.", - "operationId": "searchPage", - "parameters": [ - { - "name": "p", - "in": "query", - "description": "The page number to fetch.", - "required": false, - "schema": { - "type": "integer" + "description": "Returns a success response indicating a successful update.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } } }, - { - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "in": "header", - "name": "sw-include-seo-urls", - "required": false, - "schema": { - "type": "boolean" - } + "400": { + "$ref": "#/components/responses/400", + "description": "The submitted data failed validation, e.g. a missing hash or a new password that does not match its confirmation." }, - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "404": { + "$ref": "#/components/responses/404", + "description": "No customer recovery exists for the given `hash`." }, + "410": { + "description": "The password recovery hash has expired and can no longer be used." + } + }, + "security": [ + { + "ApiKey": [] + } + ], + "parameters": [ { "$ref": "#/components/parameters/swLanguageId" } + ] + } + }, + "/account/recovery-password": { + "post": { + "tags": [ + "Profile" ], + "summary": "Send a password recovery mail", + "description": "This operation is Step 1 of the password reset flow. Make sure to implement Step 2 \"Reset password with recovery credentials\" in order to allow for the complete flow in your application. Sends a recovery mail containing a link with credentials that allows a customer to reset their password.", + "operationId": "sendRecoveryMail", "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "search": { - "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/ProductListingCriteria" + "required": [ + "email", + "storefrontUrl" + ], + "properties": { + "email": { + "description": "E-Mail address to identify the customer", + "type": "string" }, - { - "$ref": "#/components/schemas/ProductListingFlags" + "storefrontUrl": { + "description": "URL of the storefront to use for the generated reset link. It has to be a domain that is configured in the sales channel domain settings.", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", + "description": "If email corresponds to an existing customer, a mail will be sent out to that customer containing a link assembled using the following schema:\n\nReturns a success indicating a successful initialisation of the reset flow.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "$ref": "#/components/schemas/SuccessResponse" } } } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The submitted data failed validation, e.g. a malformed email address or a storefront URL that does not belong to the sales channel." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing. The response also uses this status when no customer exists for the given email address in this sales channel." } }, "security": [ { "ApiKey": [] } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ] - }, - "get": { + } + }, + "/account/address/default-shipping/{addressId}": { + "patch": { "tags": [ - "Product" + "Address" ], - "summary": "Search for products", - "description": "Performs a search for products which can be used to display a product listing.", - "operationId": "searchPageGet", + "summary": "Change a customer's default shipping address", + "description": "Updates the default (preselected) shipping addresses of a customer.", + "operationId": "defaultShippingAddress", "parameters": [ { - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "in": "header", - "name": "sw-include-seo-urls", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "search", - "in": "query", - "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "name": "limit", - "in": "query", - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "schema": { - "type": "integer", - "minimum": 0 - } - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaFields" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "name": "order", - "in": "query", - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "schema": { - "type": "string" - } - }, - { - "name": "p", - "in": "query", - "description": "Search result page", - "schema": { - "type": "integer", - "default": 1 - } - }, - { - "name": "manufacturer", - "in": "query", - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "name": "addressId", + "in": "path", + "description": "Address ID", + "required": true, "schema": { "type": "string" } }, { - "name": "min-price", - "in": "query", - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "max-price", - "in": "query", - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } + "$ref": "#/components/parameters/swLanguageId" + } + ], + "responses": { + "200": { + "description": "" }, - { - "name": "rating", - "in": "query", - "description": "Filter products with a minimum average rating.", - "schema": { - "type": "integer" - } + "400": { + "$ref": "#/components/responses/400", + "description": "The address does not exist or does not belong to the logged in customer." }, - { - "name": "shipping-free", - "in": "query", - "description": "Filters products that are marked as shipping-free.", - "schema": { - "type": "boolean", - "default": false - } + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." }, + "403": { + "$ref": "#/components/responses/403", + "description": "No customer is logged in." + } + }, + "security": [ { - "name": "properties", - "in": "query", - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", - "schema": { - "type": "string" - } - }, + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/account/address/default-billing/{addressId}": { + "patch": { + "tags": [ + "Address" + ], + "summary": "Change a customer's default billing address", + "description": "Updates the default (preselected) billing addresses of a customer.", + "operationId": "defaultBillingAddress", + "parameters": [ { - "name": "reduce-aggregations", - "in": "query", - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "name": "addressId", + "in": "path", + "description": "Address ID", + "required": true, "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] + "type": "string" } }, - { - "$ref": "#/components/parameters/noAggregations" - }, - { - "$ref": "#/components/parameters/onlyAggregations" - }, { "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProductListingResult" - } - } - } + "description": "" + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The address does not exist or does not belong to the logged in customer." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "403": { + "$ref": "#/components/responses/403", + "description": "No customer is logged in." } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/account/newsletter-recipient": { + "/account/address": { "post": { "tags": [ - "Profile", - "Newsletter", - "Endpoints supporting Criteria" + "Address" ], - "summary": "Fetch newsletter recipients", - "description": "Perform a filtered search for newsletter recipients.", - "operationId": "readNewsletterRecipient", + "summary": "Create a new address for a customer", + "description": "Creates a new address for a customer.", + "operationId": "createCustomerAddress", "requestBody": { - "required": false, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] + "$ref": "#/components/schemas/CustomerAddressBody" } } } @@ -17428,10 +15208,29 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AccountNewsletterRecipient" + "allOf": [ + { + "$ref": "#/components/schemas/CustomerAddress" + }, + { + "$ref": "#/components/schemas/CustomerAddressRead" + } + ] } } } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The submitted address data failed validation, e.g. a missing required field or a zip code that does not match the selected country." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "403": { + "$ref": "#/components/responses/403", + "description": "No customer is logged in." } }, "security": [ @@ -17441,1174 +15240,1052 @@ } ], "parameters": [ - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } - }, { "$ref": "#/components/parameters/swLanguageId" } ] } }, - "/account/change-profile": { + "/app-system/{name}/generate-token": { "post": { "tags": [ - "Profile" + "App system" + ], + "summary": "Generate JWT token for app system backend", + "description": "Generate JWT token for authenticated communication with the app server", + "operationId": "generateJWTAppSystemAppServer", + "parameters": [ + { + "in": "path", + "name": "name", + "required": true, + "description": "Name of the app", + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } ], - "summary": "Change the customer's information", - "description": "Make changes to a customer's account, like changing their name, salutation or title.", - "operationId": "changeProfile", "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "firstName", - "lastName" - ], - "properties": { - "salutationId": { - "description": "Id of the salutation for the customer account. Fetch options using `salutation` endpoint.", - "type": "string" - }, - "title": { - "description": "(Academic) title of the customer", - "type": "string" - }, - "firstName": { - "description": "Customer first name. Value will be reused for shipping and billing address if not provided explicitly.", - "type": "string" - }, - "lastName": { - "description": "Customer last name. Value will be reused for shipping and billing address if not provided explicitly.", - "type": "string" - }, - "birthdayDay": { - "description": "Birthday day", - "type": "integer" - }, - "birthdayMonth": { - "description": "Birthday month", - "type": "integer" - }, - "birthdayYear": { - "description": "Birthday year", - "type": "integer" - } - }, - "oneOf": [ - { - "properties": { - "accountType": { - "description": "Type of the customer account. Default value is 'private'.", - "type": "string", - "enum": [ - "private" - ], - "default": "private" - }, - "company": { - "type": "null" - }, - "vatIds": { - "type": "null" - } - } - }, - { - "required": [ - "accountType", - "company", - "vatIds" - ], - "properties": { - "accountType": { - "description": "Type of the customer account. Can be `private` or `business`.", - "type": "string", - "enum": [ - "business" - ] - }, - "company": { - "description": "Company of the customer. Only required when `accountType` is `business`.", - "type": "string" - }, - "vatIds": { - "description": "VAT IDs of the customer's company. Only valid when `accountType` is `business`.", - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - } + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "token": { + "type": "string" + }, + "expires": { + "type": "string", + "format": "date-time" + }, + "shopId": { + "type": "string" } } - ] + } } } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "No customer is logged in. The token can only be issued for an identified customer." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "404": { + "$ref": "#/components/responses/404", + "description": "No app is installed with the given `name`." + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/breadcrumb/{id}": { + "get": { + "tags": [ + "Experimental", + "Breadcrumb" + ], + "summary": "Fetch a breadcrumb", + "description": "Perform search to get category or product breadcrumb. \n\nExperimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", + "operationId": "readBreadcrumb", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "UUID for product or category", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "type", + "in": "query", + "description": "Type: category or product (optional - default: product)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "product", + "category" + ] + } + }, + { + "name": "referrerCategoryId", + "in": "query", + "description": "UUID for referrer category only used for product breadcrumb", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" } - }, + ], "responses": { "200": { - "description": "Returns a success response indicating a successful update", + "description": "Search result containing SeoUrl\\'s to be used as breadcrumb.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/BreadcrumbCollection" } } } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ { - "ApiKey": [], - "ContextToken": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" + "ApiKey": [] } ] } }, - "/account/change-email": { + "/category": { "post": { "tags": [ - "Profile" + "Category", + "Endpoints supporting Criteria " + ], + "summary": "Fetch a list of categories", + "description": "Perform a filtered search for categories.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", + "operationId": "readCategoryList", + "parameters": [ + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } ], - "summary": "Change the customer's email address", - "description": "Changes a customer's email address to a new email address, using their current password as a validation.", - "operationId": "changeEmail", "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "required": [ - "email", - "emailConfirmation", - "password" - ], - "properties": { - "email": { - "description": "New email address. Has to be unique amongst all customers", - "type": "string" - }, - "emailConfirmation": { - "description": "Confirmation of the new email address.", - "type": "string" - }, - "password": { - "description": "Customer's current password", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Returns a success response indicating a successful update", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } + "$ref": "#/components/responses/CategoryListResponse" + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } + ] + }, + "get": { + "tags": [ + "Category", + "Endpoints supporting Criteria " ], + "summary": "Fetch a list of categories", + "description": "Perform a filtered search for categories.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", + "operationId": "readCategoryListGet", "parameters": [ + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" + }, { "$ref": "#/components/parameters/swLanguageId" } + ], + "responses": { + "200": { + "$ref": "#/components/responses/CategoryListResponse" + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + } + }, + "security": [ + { + "ApiKey": [] + } ] } }, - "/account/change-language": { + "/category/{navigationId}": { "post": { "tags": [ - "Profile" + "Category", + "Endpoints supporting Criteria " ], - "summary": "Change the customer's language.", - "description": "Changes the language of the logged in customer", - "operationId": "changeLanguage", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "languageId" - ], - "properties": { - "languageId": { - "description": "New languageId", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "type": "object" - } + "summary": "Fetch a single category", + "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", + "operationId": "readCategory", + "parameters": [ + { + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, + "schema": { + "type": "boolean" } - } - }, - "responses": { - "200": { - "description": "Returns a success response indicating a successful update", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, + { + "name": "navigationId", + "in": "path", + "description": "Identifier of the category to be fetched", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } - } - }, - "security": [ + }, { - "ApiKey": [], - "ContextToken": [] - } - ], - "parameters": [ + "name": "slots", + "in": "query", + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", + "schema": { + "type": "string" + } + }, { "$ref": "#/components/parameters/swLanguageId" } - ] - } - }, - "/account/change-password": { - "post": { - "tags": [ - "Profile" ], - "summary": "Change the customer's password", - "description": "Changes a customer's password using their current password as a validation.", - "operationId": "changePassword", "requestBody": { - "required": true, "content": { "application/json": { "schema": { - "required": [ - "password", - "newPassword", - "newPasswordConfirm" - ], - "properties": { - "password": { - "description": "Current password of the customer", - "type": "string" - }, - "newPassword": { - "description": "New Password for the customer", - "type": "string" - }, - "newPasswordConfirm": { - "description": "Confirmation of the new password", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/ProductListingCriteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Returns a success response indicating a successful update.", + "description": "The loaded category with cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/Category" } } } + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "404": { + "$ref": "#/components/responses/404", + "description": "The category does not exist, is not reachable in this sales channel, or the CMS page assigned to it was not found." } }, "security": [ { - "ApiKey": [], - "ContextToken": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" + "ApiKey": [] } ] - } - }, - "/account/convert-guest": { - "post": { + }, + "get": { "tags": [ - "Profile" + "Category", + "Endpoints supporting Criteria " ], - "summary": "Convert a guest customer to a registered customer", - "description": "Takes a password to convert a guest customer to a registered customer. The customer can then log in with the provided password in the future.", - "operationId": "convertGuest", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "password" - ], - "properties": { - "password": { - "description": "New Password for the customer", - "type": "string" - } - }, - "type": "object" - } + "summary": "Fetch a single category", + "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", + "operationId": "readCategoryGet", + "parameters": [ + { + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, + "schema": { + "type": "boolean" } - } - }, - "responses": { - "200": { - "description": "Returns a success response indicating a successful update.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } + }, + { + "name": "navigationId", + "in": "path", + "description": "Identifier of the category to be fetched", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "slots", + "in": "query", + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "name": "limit", + "in": "query", + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "schema": { + "type": "integer", + "minimum": 0 + } + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "name": "order", + "in": "query", + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "schema": { + "type": "string" + } + }, + { + "name": "p", + "in": "query", + "description": "Search result page", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "manufacturer", + "in": "query", + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "min-price", + "in": "query", + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "max-price", + "in": "query", + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "rating", + "in": "query", + "description": "Filter products with a minimum average rating.", + "schema": { + "type": "integer" + } + }, + { + "name": "shipping-free", + "in": "query", + "description": "Filters products that are marked as shipping-free.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "properties", + "in": "query", + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "schema": { + "type": "string" } }, - "400": { - "description": "The customer is not a guest customer.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" + { + "name": "reduce-aggregations", + "in": "query", + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" } - } + ] } - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ], - "parameters": [ + }, { "$ref": "#/components/parameters/swLanguageId" } - ] - } - }, - "/account/customer-recovery-is-expired": { - "post": { - "tags": [ - "Profile" ], - "summary": "Checks if the customer recovery entry for a given hash is expired.", - "description": "This can be used to validate a provided hash has a valid and not expired customer recovery hash.", - "operationId": "getCustomerRecoveryIsExpired", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "hash" - ], - "properties": { - "hash": { - "description": "Parameter from the link in the confirmation mail sent in Step 1", - "type": "string" - } - }, - "type": "object" - } - } - } - }, "responses": { "200": { - "description": "Returns a CustomerRecoveryIsExpiredResponse that indicates if the hash is expired or not.", + "description": "The loaded category with cms page", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "isExpired": { - "type": "boolean" - } - }, - "required": [ - "isExpired" - ] - } - }, - "apiAlias": { - "type": "string", - "const": "array_struct" - } - } + "$ref": "#/components/schemas/Category" } } } + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "404": { + "$ref": "#/components/responses/404", + "description": "The category does not exist, is not reachable in this sales channel, or the CMS page assigned to it was not found." } }, "security": [ { "ApiKey": [] } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } ] } }, - "/account/customer": { - "post": { + "/shipping-cost/product/{productId}": { + "get": { "tags": [ - "Profile", + "Cart", "Endpoints supporting Criteria " ], - "summary": "Get information about current customer", - "description": "Returns information about the current customer.\n\n**Available Associations:**\n- `group` - Customer group determining pricing and permissions\n- `language` - Preferred language for customer communication\n- `lastPaymentMethod` - Last used payment method by the customer\n- `defaultBillingAddress` - Default billing address for the customer\n- `activeBillingAddress` - Currently active billing address in the session\n- `defaultShippingAddress` - Default shipping address for the customer\n- `activeShippingAddress` - Currently active shipping address in the session\n- `salutation` - Customer salutation (e.g., Mr., Mrs., Ms.)\n- `addresses` - All addresses saved for the customer\n- `tags` - Tags assigned to the customer for organization and segmentation", - "operationId": "readCustomer", - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/NoneFieldsCriteria" - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "Returns the logged in customer, also for guest sessions. Check for the value of `guest` field to see whether the customer is a guest.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Customer" - } - } - } - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ], + "summary": "Calculate shipping costs for a product", + "description": "Calculates shipping costs for a single product using criteria-based shipping method selection.", + "operationId": "readShippingCostByProduct", "parameters": [ { - "name": "sw-include-search-info", + "name": "productId", + "in": "path", + "description": "The product identifier.", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "sw-language-id", "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "description": "Instructs Shopware to return the response in the given language.", "required": false, "schema": { "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" + "pattern": "^[0-9a-f]{32}$" } }, { - "$ref": "#/components/parameters/swLanguageId" - } - ] - }, - "delete": { - "tags": [ - "Profile" - ], - "summary": "Delete the customer's profile", - "description": "Deletes a customer profile along with their addresses, wishlists and associated data. Created orders and their payment/shipping information (addresses) and reviews are not deleted.", - "operationId": "deleteCustomer", - "responses": { - "204": { - "description": "Returns a no content response indicating a successful removal of the customer profile" - } - }, - "security": [ + "$ref": "#/components/parameters/criteriaPage" + }, { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/account/address/{addressId}": { - "delete": { - "tags": [ - "Address" - ], - "summary": "Delete an address of a customer", - "description": "Delete an address of customer.\n\n Only addresses which are not set as default addresses for shipping or billing can be deleted. You can check the current default addresses of your customer using the profile information endpoint and change them using the default address endpoint.\n\n **A customer must have at least one address (which can be used for shipping and billing).**\n\n An automatic fallback is not applied.", - "operationId": "deleteCustomerAddress", - "parameters": [ + "$ref": "#/components/parameters/criteriaLimit" + }, { - "name": "addressId", - "in": "path", - "description": "ID of the address to be deleted.", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "No Content response, when the address has been deleted" + "$ref": "#/components/parameters/criteriaTerm" }, - "400": { - "description": "Response containing a list of errors, most likely due to the address being in use" - } - }, - "security": [ { - "ApiKey": [], - "ContextToken": [] - } - ] - }, - "patch": { - "tags": [ - "Address" - ], - "summary": "Modify an address of a customer", - "description": "Modifies an existing address of a customer.", - "operationId": "updateCustomerAddress", - "parameters": [ + "$ref": "#/components/parameters/criteriaFilter" + }, { - "name": "addressId", - "in": "path", - "description": "Address ID", - "required": true, - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" }, { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomerAddressBody" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/CustomerAddress" - }, - { - "$ref": "#/components/schemas/CustomerAddressRead" - } - ] - } - } - } - } - }, - "security": [ + "$ref": "#/components/parameters/criteriaIncludes" + }, { - "ApiKey": [], - "ContextToken": [] + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" } - ] - } - }, - "/account/list-address": { - "post": { - "tags": [ - "Address", - "Endpoints supporting Criteria " ], - "summary": "Fetch addresses of a customer", - "description": "Lists all addresses of the current customer and allows filtering them based on a criteria.", - "operationId": "listAddress", - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } - } - } - }, "responses": { "200": { - "description": "", + "description": "The calculated shipping costs.", "content": { "application/json": { "schema": { - "allOf": [ - { - "type": "object", - "required": [ - "elements" - ], - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CustomerAddress" + "type": "array", + "items": { + "type": "object", + "required": [ + "shippingCost", + "deliveryDate", + "shippingMethod" + ], + "properties": { + "shippingCost": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" } } + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" } - ] + } } } } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "404": { + "$ref": "#/components/responses/404", + "description": "No product exists for the given `productId` in this sales channel." } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } + ] + } + }, + "/shipping-cost/cart": { + "get": { + "tags": [ + "Cart" ], + "summary": "Calculate shipping costs for the cart", + "description": "Calculates shipping costs for the current cart across available shipping methods.", + "operationId": "readShippingCostsByCart", "parameters": [ { - "name": "sw-include-search-info", + "name": "sw-language-id", "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "description": "Instructs Shopware to return the response in the given language.", "required": false, "schema": { "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" + "pattern": "^[0-9a-f]{32}$" } - }, - { - "$ref": "#/components/parameters/swLanguageId" } - ] - } - }, - "/account/login": { - "post": { - "tags": [ - "Login & Registration" ], - "summary": "Log in a customer", - "description": "Logs in customers given their credentials.", - "operationId": "loginCustomer", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "username", - "password" - ], - "properties": { - "username": { - "description": "Email", - "type": "string" - }, - "password": { - "description": "Password", - "type": "string" - } - }, - "type": "object" - } - } - } - }, "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "401": { - "description": "If credentials are incorrect an error is returned", + "description": "The calculated shipping costs.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/failure" + "type": "array", + "items": { + "type": "object", + "required": [ + "shippingCost", + "deliveryDate", + "shippingMethod" + ], + "properties": { + "shippingCost": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + } + } + } } } } + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ { "ApiKey": [] } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } ] } }, - "/account/login/imitate-customer": { - "post": { + "/checkout/cart": { + "get": { "tags": [ - "Login & Registration" + "Cart" ], - "summary": "Imitate the log in as a customer", - "description": "Imitate the log in as a customer given a generated token.", - "operationId": "imitateCustomerLogin", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "token", - "customerId", - "userId" - ], - "properties": { - "token": { - "description": "Generated customer impersonation token", - "type": "string" - }, - "customerId": { - "description": "ID of the customer", - "type": "string" - }, - "userId": { - "description": "ID of the user who generated the token", - "type": "string" - } - }, - "type": "object" - } - } + "summary": "Fetch or create a cart", + "description": "Used to fetch the current cart or for creating a new one.", + "operationId": "readCart", + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" } - }, + ], "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "400": { - "description": "If the token is incorrect an error is returned", + "description": "Cart", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/failure" + "$ref": "#/components/schemas/Cart" } } } + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ { "ApiKey": [] } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } ] - } - }, - "/account/logout": { - "post": { + }, + "delete": { "tags": [ - "Login & Registration" + "Cart" ], - "summary": "Log out a customer", - "description": "Logs out a customer.", - "operationId": "logoutCustomer", + "summary": "Delete a cart", + "description": "This route deletes the cart of the customer.", + "operationId": "deleteCart", "responses": { - "200": { - "$ref": "#/components/responses/ContextTokenResponse" + "204": { + "description": "Successfully deleted the cart", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } }, - "403": { - "$ref": "#/components/responses/403" + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ { - "ApiKey": [], - "ContextToken": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" + "ApiKey": [] } ] } }, - "/account/register-confirm": { + "/checkout/cart/line-item": { "post": { "tags": [ - "Login & Registration" + "Cart" + ], + "summary": "Add items to the cart", + "description": "This route adds items to the cart. An item can be a product or promotion for example. They are referenced by the `referencedId`-parameter.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#adding-new-items-to-the-cart)", + "operationId": "addLineItem", + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ], - "summary": "Confirm a customer registration", - "description": "Confirms a customer registration when double opt-in is activated.\n\nLearn more about double opt-in registration in our guide \"Register a customer\".", - "operationId": "registerConfirm", "requestBody": { - "required": true, "content": { "application/json": { "schema": { - "required": [ - "hash", - "em" - ], - "properties": { - "hash": { - "description": "Hash from the email received", - "type": "string" - }, - "em": { - "description": "Email hash from the email received", - "type": "string" - } - }, - "type": "object" + "$ref": "#/components/schemas/CartItems" } } } }, "responses": { "200": { - "description": "Returns the logged in customer. The customer is automatically logged in with the `sw-context-token` header provided, which can be reused for subsequent requests." - }, - "404": { - "description": "No hash provided" + "description": "The updated cart.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Cart" + } + } + } }, - "412": { - "description": "The customer has already been confirmed" - } - }, - "security": [ - { - "ApiKey": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } - ] - } - }, - "/account/register": { - "post": { - "tags": [ - "Login & Registration" - ], - "summary": "Register a customer", - "description": "Registers a customer. Used both for normal customers and guest customers.See the Guide \"Register a customer\" for more information on customer registration.", - "operationId": "register", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "properties": { - "email": { - "description": "Email of the customer. Has to be unique, unless `guest` is `true`", - "type": "string" - }, - "password": { - "description": "Password for the customer. Required, unless `guest` is `true`", - "type": "string" - }, - "salutationId": { - "description": "Id of the salutation for the customer account. Fetch options using `salutation` endpoint.", - "type": "string" - }, - "firstName": { - "description": "Customer first name. Value will be reused for shipping and billing address if not provided explicitly.", - "type": "string" - }, - "lastName": { - "description": "Customer last name. Value will be reused for shipping and billing address if not provided explicitly.", - "type": "string" - }, - "acceptedDataProtection": { - "description": "Flag indicating accepted data protection", - "type": "boolean" - }, - "storefrontUrl": { - "description": "URL of the storefront for that registration. Used in confirmation emails. Has to be one of the configured domains of the sales channel.", - "type": "string" - }, - "requestedGroupId": { - "description": "Optional customer group registration request. The customer is created in the current sales channel group and this field stores the requested target group. The group must be available for registration in the current sales channel.", - "type": "string" - }, - "billingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "shippingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "guest": { - "description": "If set, will create a guest customer. Guest customers can re-use an email address and don't need a password.", - "type": "boolean", - "default": false - }, - "birthdayDay": { - "description": "Birthday day", - "type": "integer" - }, - "birthdayMonth": { - "description": "Birthday month", - "type": "integer" - }, - "birthdayYear": { - "description": "Birthday year", - "type": "integer" - }, - "title": { - "description": "(Academic) title of the customer", - "type": "string" - }, - "affiliateCode": { - "description": "Field can be used to store an affiliate tracking code", - "type": "string" - }, - "campaignCode": { - "description": "Field can be used to store a campaign tracking code", - "type": "string" - } - }, - "required": [ - "email", - "password", - "firstName", - "lastName", - "acceptedDataProtection", - "storefrontUrl", - "billingAddress" - ], - "oneOf": [ - { - "properties": { - "accountType": { - "description": "Type of the customer account. Default value is 'private'.", - "type": "string", - "enum": [ - "private" - ], - "default": "private" - }, - "company": { - "type": "null" - }, - "vatIds": { - "type": "null" - } - } - }, - { - "required": [ - "accountType", - "company", - "vatIds" - ], - "properties": { - "accountType": { - "description": "Type of the customer account. Can be `private` or `business`.", - "type": "string", - "enum": [ - "business" - ] - }, - "company": { - "description": "Company of the customer. Only required when `accountType` is `business`.", - "type": "string" - }, - "vatIds": { - "description": "VAT IDs of the customer's company. Only valid when `accountType` is `business`.", - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 - } - } - } - ], - "type": "object" + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + } + }, + "security": [ + { + "ApiKey": [] + } + ] + }, + "delete": { + "tags": [ + "Cart" + ], + "summary": "Remove items from the cart", + "description": "DEPRECATED: use removeLineItem instead. This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", + "operationId": "removeLineItemDeprecated", + "deprecated": true, + "parameters": [ + { + "name": "ids", + "in": "query", + "description": "A list of product identifiers.", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } } - }, + ], "responses": { "200": { - "description": "Success", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Customer" + "$ref": "#/components/schemas/Cart" } } } + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "404": { + "$ref": "#/components/responses/404", + "description": "One of the given ids does not reference a line item of the current cart." } }, "security": [ { "ApiKey": [] } + ] + }, + "patch": { + "tags": [ + "Cart" ], + "summary": "Update items in the cart", + "description": "This route updates items in the cart. A typical example is updating the quantity of an item.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#updating-items-in-the-cart)", + "operationId": "updateLineItem", "parameters": [ { "$ref": "#/components/parameters/swLanguageId" } - ] - } - }, - "/account/recovery-password-confirm": { - "post": { - "tags": [ - "Profile" ], - "summary": "Reset a password with recovery credentials", - "description": "This operation is Step 2 of the password reset flow. It is required to conduct Step 1 \"Send a password recovery mail\" in order to obtain the required credentials for this step.Resets a customer's password using credentials from a password recovery mail as a validation.", - "operationId": "recoveryPassword", "requestBody": { - "required": true, "content": { "application/json": { "schema": { - "required": [ - "hash", - "newPassword", - "newPasswordConfirm" - ], - "properties": { - "hash": { - "description": "Parameter from the link in the confirmation mail sent in Step 1", - "type": "string" - }, - "newPassword": { - "description": "New password for the customer", - "type": "string" - }, - "newPasswordConfirm": { - "description": "Confirmation of the new password", - "type": "string" - } - }, - "type": "object" + "$ref": "#/components/schemas/CartItemsUpdate" } } } }, "responses": { "200": { - "description": "Returns a success response indicating a successful update.", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/Cart" } } } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "A line item cannot be updated, e.g. a quantity that is not a positive integer, a quantity that is not a multiple of the parent quantity or a line item type that does not support updates." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "404": { + "$ref": "#/components/responses/404", + "description": "One of the given ids does not reference a line item of the current cart." } }, "security": [ { "ApiKey": [] } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } ] } }, - "/account/recovery-password": { + "/checkout/cart/line-item/delete": { "post": { "tags": [ - "Profile" + "Cart" + ], + "summary": "Remove items from the cart", + "description": "This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", + "operationId": "removeLineItem", + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ], - "summary": "Send a password recovery mail", - "description": "This operation is Step 1 of the password reset flow. Make sure to implement Step 2 \"Reset password with recovery credentials\" in order to allow for the complete flow in your application. Sends a recovery mail containing a link with credentials that allows a customer to reset their password.", - "operationId": "sendRecoveryMail", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "email", - "storefrontUrl" + "ids" ], "properties": { - "email": { - "description": "E-Mail address to identify the customer", - "type": "string" - }, - "storefrontUrl": { - "description": "URL of the storefront to use for the generated reset link. It has to be a domain that is configured in the sales channel domain settings.", - "type": "string" + "ids": { + "description": "A list of product identifiers.", + "type": "array", + "minItems": 1, + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } }, "type": "object" @@ -18618,138 +16295,188 @@ }, "responses": { "200": { - "description": "If email corresponds to an existing customer, a mail will be sent out to that customer containing a link assembled using the following schema:\n\nReturns a success indicating a successful initialisation of the reset flow.", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/Cart" } } } + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "404": { + "$ref": "#/components/responses/404", + "description": "One of the given ids does not reference a line item of the current cart." } }, "security": [ { "ApiKey": [] } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } ] } }, - "/account/address/default-shipping/{addressId}": { - "patch": { + "/checkout/order": { + "post": { "tags": [ - "Address" + "Order" ], - "summary": "Change a customer's default shipping address", - "description": "Updates the default (preselected) shipping addresses of a customer.", - "operationId": "defaultShippingAddress", + "summary": "Create an order from a cart", + "description": "Creates a new order from the current cart and deletes the cart.\n\nIf you are using the [prepared payment flow](https://developer.shopware.com/docs/concepts/commerce/checkout-concept/payments#2.1-prepare-payment-optional), this endpoint also receives additional transaction details. The exact name of the parameters depends on the implementation of the corresponding *payment handler*.", + "operationId": "createOrder", "parameters": [ - { - "name": "addressId", - "in": "path", - "description": "Address ID", - "required": true, - "schema": { - "type": "string" - } - }, { "$ref": "#/components/parameters/swLanguageId" } ], - "responses": { - "200": { - "description": "" - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/account/address/default-billing/{addressId}": { - "patch": { - "tags": [ - "Address" - ], - "summary": "Change a customer's default billing address", - "description": "Updates the default (preselected) billing addresses of a customer.", - "operationId": "defaultBillingAddress", - "parameters": [ - { - "name": "addressId", - "in": "path", - "description": "Address ID", - "required": true, - "schema": { - "type": "string" + "requestBody": { + "description": "Contains additional metadata which is stored together with the order. It can also contain payment transaction details.", + "content": { + "application/json": { + "schema": { + "properties": { + "customerComment": { + "description": "Adds a comment from the customer to the order.", + "type": "string" + }, + "affiliateCode": { + "description": "The affiliate code can be used to track which referrer the customer came through. An example could be `Price-comparison-company-XY`.", + "type": "string" + }, + "campaignCode": { + "description": "The campaign code is used to track which action the customer came from. An example could be `Summer-Deals`", + "type": "string" + } + }, + "type": "object" + } } - }, - { - "$ref": "#/components/parameters/swLanguageId" } - ], + }, "responses": { "200": { - "description": "" + "description": "Order", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Order" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The cart cannot be turned into an order, e.g. because it is empty." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "403": { + "$ref": "#/components/responses/403", + "description": "No customer is logged in." + }, + "409": { + "description": "The `hash` sent by the client does not match the current cart content, so the cart changed since it was last read." } }, "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/account/address": { - "post": { - "tags": [ - "Address" - ], - "summary": "Create a new address for a customer", - "description": "Creates a new address for a customer.", - "operationId": "createCustomerAddress", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomerAddressBody" - } - } + { + "ApiKey": [], + "ContextToken": [] } - }, + ] + } + }, + "/checkout/gateway": { + "get": { + "tags": [ + "Gateway" + ], + "summary": "Call the checkout gateway", + "description": "Call the checkout gateway, which is used to manipulate certain aspects of the checkout process (e.g. available payment methods).", + "operationId": "checkoutGateway", "responses": { "200": { - "description": "", + "description": "Checkout gateway response", "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/CustomerAddress" + "properties": { + "paymentMethods": { + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentMethod" + } + } + }, + "type": "object" }, - { - "$ref": "#/components/schemas/CustomerAddressRead" + "shippingMethods": { + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingMethod" + } + } + }, + "type": "object" + }, + "errors": { + "type": "array", + "items": { + "properties": { + "code": { + "description": "Error code", + "type": "string" + }, + "detail": { + "description": "Error detail", + "type": "string" + }, + "blocking": { + "description": "If the error is blocking", + "type": "boolean" + } + } + } } - ] + } } } } + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ], "parameters": [ @@ -18759,40 +16486,23 @@ ] } }, - "/product-listing/{categoryId}": { + "/cms/{id}": { "post": { "tags": [ - "Product" + "Content" ], - "summary": "Fetch a product listing by category", - "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", - "operationId": "readProductListing", + "summary": "Fetch and resolve a CMS page", + "description": "Loads a content management page by its identifier and resolve the slot data. This could be media files, product listing and so on.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `sections` - Content sections within the CMS page (layout blocks containing slots)\n- `previewMedia` - Preview image for the CMS page in admin panel and page selection\n- `landingPages` - Landing pages using this CMS layout", + "operationId": "readCms", "parameters": [ { - "name": "categoryId", + "name": "id", "in": "path", - "description": "Identifier of a category.", + "description": "Identifier of the CMS page to be resolved", "required": true, "schema": { - "type": "string" - } - }, - { - "name": "p", - "in": "query", - "description": "The page number to fetch.", - "required": false, - "schema": { - "type": "integer" - } - }, - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Determines if the response must contain a SeoUrl entity for a product entity", - "required": false, - "schema": { - "type": "boolean" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, { @@ -18819,10 +16529,16 @@ "schema": { "allOf": [ { - "$ref": "#/components/schemas/ProductListingCriteria" + "properties": { + "slots": { + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", + "type": "string" + } + }, + "type": "object" }, { - "$ref": "#/components/schemas/ProductListingFlags" + "$ref": "#/components/schemas/ProductListingCriteria" } ] } @@ -18831,14 +16547,21 @@ }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", + "description": "The loaded cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "$ref": "#/components/schemas/CmsPage" } } } + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -18849,28 +16572,28 @@ }, "get": { "tags": [ - "Product" + "Content" ], - "summary": "Fetch a product listing by category", - "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", - "operationId": "readProductListingGet", + "summary": "Fetch and resolve a CMS page", + "description": "Loads a content management page by its identifier and resolve the slot data. This could be media files, product listing and so on.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `sections` - Content sections within the CMS page (layout blocks containing slots)\n- `previewMedia` - Preview image for the CMS page in admin panel and page selection\n- `landingPages` - Landing pages using this CMS layout", + "operationId": "readCmsGet", "parameters": [ { - "name": "categoryId", + "name": "id", "in": "path", - "description": "Identifier of a category.", + "description": "Identifier of the CMS page to be resolved", "required": true, "schema": { - "type": "string" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Determines if the response must contain a SeoUrl entity for a product entity", - "required": false, + "name": "slots", + "in": "query", + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", "schema": { - "type": "boolean" + "type": "string" } }, { @@ -18999,101 +16722,14 @@ "in": "query", "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - { - "$ref": "#/components/parameters/noAggregations" - }, - { - "$ref": "#/components/parameters/onlyAggregations" - }, - { - "$ref": "#/components/parameters/CompressedCriteria" - }, - { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "responses": { - "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProductListingResult" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/cookie-groups": { - "get": { - "tags": [ - "Experimental", - "Cookies" - ], - "summary": "Fetch all cookie groups", - "description": "Fetch all cookie groups available in the system with configuration hash. Experimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", - "operationId": "readCookieGroups", - "responses": { - "200": { - "description": "Successful response with a collection of cookie groups and their configuration hash.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CookieRouteResponse" - } - } - } - }, - "400": { - "$ref": "#/components/responses/400" - } - }, - "security": [ - { - "ApiKey": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } - ] - } - }, - "/customer/wishlist/add/{productId}": { - "post": { - "tags": [ - "Wishlist" - ], - "summary": "Add a product to a wishlist", - "description": "Adds a product to a customers wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "addProductOnWishlist", - "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Identifier of the product to be added.", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] } }, { @@ -19102,108 +16738,214 @@ ], "responses": { "200": { - "description": "Returns a success response.", + "description": "The loaded cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/CmsPage" } } } + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/customer/wishlist": { + "/contact-form": { "post": { "tags": [ - "Wishlist", - "Endpoints supporting Criteria " + "Content" ], - "summary": "Fetch a wishlist", - "description": "Fetch a customer's wishlist. Products on the wishlist can be filtered using a criteria object.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "readCustomerWishlist", + "summary": "Submit a contact form message", + "description": "Used for submitting contact forms. Be aware that there can be more required fields, depending on the system settings.", + "operationId": "sendContactMail", "parameters": [ - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } - }, { "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "email", + "subject", + "comment" + ], + "properties": { + "salutationId": { + "description": "Identifier of the salutation. Use `/api/salutation` endpoint to fetch possible values.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "firstName": { + "description": "Firstname. This field may be required depending on the system settings.", + "type": "string" + }, + "lastName": { + "description": "Lastname. This field may be required depending on the system settings.", + "type": "string" + }, + "email": { + "description": "Email address", + "type": "string" + }, + "phone": { + "description": "Phone. This field may be required depending on the system settings.", + "type": "string" + }, + "subject": { + "description": "The subject of the contact form.", + "type": "string" + }, + "comment": { + "description": "The message of the contact form", + "type": "string" + }, + "navigationId": { + "description": "Identifier of the navigation page. Can be used to override the configuration.\nTake a look at the settings of a category containing a concat form in the administration.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "slotId": { + "description": "Identifier of the cms element", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "cmsPageType": { + "description": "Type of the content management page", + "type": "string" + }, + "entityName": { + "description": "Entity name for slot config", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "", + "description": "Message sent successful." + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The submitted contact form data failed validation, e.g. a missing email address, subject or message." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/context": { + "get": { + "tags": [ + "System & Context" + ], + "summary": "Fetch the current context", + "description": "Fetches the current context. This includes for example the `customerGroup`, `currency`, `taxRules` and many more.", + "operationId": "readContext", + "responses": { + "200": { + "description": "Returns the current context.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WishlistLoadRouteResponse" + "$ref": "#/components/schemas/SalesChannelContext" } } } + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" } ] - } - }, - "/customer/wishlist/merge": { - "post": { + }, + "patch": { "tags": [ - "Wishlist" + "System & Context" ], - "summary": "Create a wishlist for a customer", - "description": "Create a new wishlist for a logged in customer or extend the existing wishlist given a set of products.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * A customer can only have a single wishlist.\n * The wishlist feature has to be activated.", - "operationId": "mergeProductOnWishlist", + "summary": "Modify the current context", + "description": "Used for switching the context. A typical example would be changing the language or changing the currency.", + "operationId": "updateContext", "requestBody": { "required": true, "content": { "application/json": { "schema": { "properties": { - "productIds": { - "description": "List product id", - "type": "array", - "items": { - "description": "product id", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "currencyId": { + "description": "Currency", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "languageId": { + "description": "Language", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "billingAddressId": { + "description": "Billing Address", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingAddressId": { + "description": "Shipping Address", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "paymentMethodId": { + "description": "Payment Method", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingMethodId": { + "description": "Shipping Method", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryId": { + "description": "Country", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryStateId": { + "description": "Country State", + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, "type": "object" @@ -19213,20 +16955,80 @@ }, "responses": { "200": { - "description": "Returns a success response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } + "$ref": "#/components/responses/ContextTokenResponse" + }, + "400": { + "$ref": "#/components/responses/400", + "description": "One of the submitted ids is not a string, or does not reference an entity that is available in the current sales channel." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "403": { + "$ref": "#/components/responses/403", + "description": "A billing or shipping address id was sent without a logged in customer." + } + }, + "security": [ + { + "ApiKey": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/context/gateway": { + "post": { + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "appName" + ], + "properties": { + "appName": { + "type": "string" + }, + "data": { + "type": "object" + } + }, + "type": "object" } } } }, + "tags": [ + "Gateway" + ], + "summary": "Call the context gateway", + "description": "Call the context gateway, which is used to manipulate certain aspects of context (e.g. selected payment methods, register customer, etc.).", + "operationId": "contextGateway", + "responses": { + "200": { + "$ref": "#/components/responses/ContextTokenResponse" + }, + "400": { + "description": "App server communication error" + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "422": { + "description": "Error provided by App Server with message to show customer" + } + }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ], "parameters": [ @@ -19234,161 +17036,232 @@ "$ref": "#/components/parameters/swLanguageId" } ] - } - }, - "/customer/wishlist/delete/{productId}": { - "delete": { + }, + "get": { "tags": [ - "Wishlist" + "Gateway" ], - "summary": "Remove a product from a wishlist", - "description": "Removes a product from a customer's wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "deleteProductOnWishlist", + "summary": "Call the context gateway", + "description": "Call the context gateway, which is used to manipulate certain aspects of context (e.g. selected payment methods, register customer, etc.). Please prefer using the POST version of this endpoint.", + "operationId": "contextGatewayGet", "parameters": [ { - "name": "productId", - "in": "path", - "description": "The identifier of the product to be removed from the wishlist.", + "name": "appName", + "in": "query", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } + }, + { + "name": "data", + "in": "query", + "schema": { + "type": "object" + }, + "style": "deepObject" + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "description": "Returns a success response indicating a successful removal.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } + "$ref": "#/components/responses/ContextTokenResponse" }, - "404": { - "description": "The removal of the product failed. Probably because the product could not be found on the wishlist.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - } - } - } + "400": { + "description": "App server communication error" + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "422": { + "description": "Error provided by App Server with message to show customer" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/legal-guarantee-notice": { + "/cookie-groups": { "get": { "tags": [ - "Product" - ], - "summary": "Render the EU legal guarantee notice", - "description": "This route renders the EU-harmonised legal guarantee notice SVG and the matching europa.eu \"Your Europe\" guarantees page link in the customer-facing language of the sales channel context.", - "operationId": "renderLegalGuaranteeNotice", - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } + "Experimental", + "Cookies" ], + "summary": "Fetch all cookie groups", + "description": "Fetch all cookie groups available in the system with configuration hash. Experimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", + "operationId": "readCookieGroups", "responses": { "200": { - "description": "Rendered legal guarantee notice SVG and link.", + "description": "Successful response with a collection of cookie groups and their configuration hash.", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "svg": { - "type": [ - "string", - "null" - ] - }, - "link": { - "type": [ - "string", - "null" - ] - } - }, - "required": [ - "svg", - "link" - ] + "$ref": "#/components/schemas/CookieRouteResponse" } } } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ { "ApiKey": [] } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ] } }, - "/sitemap": { - "get": { + "/country-state/{countryId}": { + "post": { "tags": [ - "Sitemap & Routes" + "System & Context", + "Endpoints supporting Criteria " ], - "summary": "Fetch sitemaps", - "description": "Fetches a list of compressed sitemap files, which are often used by search engines.", - "operationId": "readSitemap", + "summary": "Fetch the states of a country", + "description": "Perform a filtered search the states for a country", + "operationId": "readCountryState", "parameters": [ + { + "name": "countryId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, { "$ref": "#/components/parameters/swLanguageId" } ], - "responses": { - "200": { - "description": "Returns a list of available sitemaps.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Sitemap" + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - } + ] } } } }, + "responses": { + "200": { + "$ref": "#/components/responses/CountryStateListResponse" + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + } + }, "security": [ { "ApiKey": [] } ] - } - }, - "/sitemap/{filePath}": { + }, "get": { "tags": [ - "Sitemap & Routes" + "System & Context", + "Endpoints supporting Criteria " ], - "summary": "Download sitemap file", - "description": "Downloads the sitemap file from the configured sitemap storage.", - "operationId": "getSitemapFile", + "summary": "Fetch the states of a country", + "description": "Perform a filtered search the states for a country", + "operationId": "readCountryStateGet", "parameters": [ { - "name": "filePath", - "in": "path", - "description": "The path to the sitemap file", - "required": true, - "schema": { - "type": "string", - "pattern": ".*\\.(xml|gz)$" - } + "name": "countryId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" }, { "$ref": "#/components/parameters/swLanguageId" @@ -19396,21 +17269,15 @@ ], "responses": { "200": { - "description": "Returns the blob to download.", - "content": { - "application/xml": { - "schema": { - "type": "string", - "format": "binary" - } - }, - "application/gzip": { - "schema": { - "type": "string", - "format": "binary" - } - } - } + "$ref": "#/components/responses/CountryStateListResponse" + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ @@ -19420,14 +17287,15 @@ ] } }, - "/payment-method": { + "/country": { "post": { "tags": [ - "Payment Method", + "System & Context", "Endpoints supporting Criteria " ], - "summary": "Loads all available payment methods", - "operationId": "readPaymentMethod", + "summary": "Fetch countries", + "description": "Perform a filtered search for countries\n\n**Available Associations:**\n- `states` - States/provinces/regions within the country", + "operationId": "readCountry", "parameters": [ { "name": "sw-include-search-info", @@ -19448,22 +17316,13 @@ } ], "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Criteria" - }, - { - "properties": { - "onlyAvailable": { - "description": "List only available", - "type": "boolean" - } - }, - "type": "object" } ] } @@ -19472,7 +17331,15 @@ }, "responses": { "200": { - "$ref": "#/components/responses/PaymentMethodListResponse" + "$ref": "#/components/responses/CountryListResponse" + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ @@ -19483,11 +17350,12 @@ }, "get": { "tags": [ - "Payment Method", + "System & Context", "Endpoints supporting Criteria " ], - "summary": "Loads all available payment methods", - "operationId": "readPaymentMethodGet", + "summary": "Fetch countries", + "description": "Perform a filtered search for countries\n\n**Available Associations:**\n- `states` - States/provinces/regions within the country", + "operationId": "readCountryGet", "parameters": [ { "$ref": "#/components/parameters/criteriaPage" @@ -19543,70 +17411,15 @@ ], "responses": { "200": { - "$ref": "#/components/responses/PaymentMethodListResponse" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/app-system/{name}/generate-token": { - "post": { - "tags": [ - "App system" - ], - "summary": "Generate JWT token for app system backend", - "description": "Generate JWT token for authenticated communication with the app server", - "operationId": "generateJWTAppSystemAppServer", - "parameters": [ - { - "in": "path", - "name": "name", - "required": true, - "description": "Name of the app", - "schema": { - "type": "string" - } + "$ref": "#/components/responses/CountryListResponse" }, - { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "token": { - "type": "string" - }, - "expires": { - "type": "string", - "format": "date-time" - }, - "shopId": { - "type": "string" - } - } - } - } - } + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ @@ -19616,15 +17429,15 @@ ] } }, - "/country": { + "/currency": { "post": { "tags": [ "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch countries", - "description": "Perform a filtered search for countries\n\n**Available Associations:**\n- `states` - States/provinces/regions within the country", - "operationId": "readCountry", + "summary": "Fetch currencies", + "description": "Perform a filtered search for currencies.", + "operationId": "readCurrency", "parameters": [ { "name": "sw-include-search-info", @@ -19651,7 +17464,7 @@ "schema": { "allOf": [ { - "$ref": "#/components/schemas/Criteria" + "$ref": "#/components/schemas/NoneFieldsCriteria" } ] } @@ -19660,7 +17473,15 @@ }, "responses": { "200": { - "$ref": "#/components/responses/CountryListResponse" + "$ref": "#/components/responses/CurrencyListResponse" + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ @@ -19674,9 +17495,9 @@ "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch countries", - "description": "Perform a filtered search for countries\n\n**Available Associations:**\n- `states` - States/provinces/regions within the country", - "operationId": "readCountryGet", + "summary": "Fetch currencies", + "description": "Perform a filtered search for currencies.", + "operationId": "readCurrencyGet", "parameters": [ { "$ref": "#/components/parameters/criteriaPage" @@ -19708,9 +17529,6 @@ { "$ref": "#/components/parameters/criteriaAggregations" }, - { - "$ref": "#/components/parameters/criteriaFields" - }, { "$ref": "#/components/parameters/criteriaGrouping" }, @@ -19724,7 +17542,7 @@ "$ref": "#/components/parameters/criteriaExcludes" }, { - "$ref": "#/components/parameters/CompressedCriteria" + "$ref": "#/components/parameters/CompressedNoneFieldsCriteria" }, { "$ref": "#/components/parameters/swLanguageId" @@ -19732,7 +17550,15 @@ ], "responses": { "200": { - "$ref": "#/components/responses/CountryListResponse" + "$ref": "#/components/responses/CurrencyListResponse" + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ @@ -19742,18 +17568,18 @@ ] } }, - "/document/download/{documentId}/{deepLinkCode}": { - "post": { + "/customer-group-registration/config/{customerGroupId}": { + "get": { "tags": [ - "Document" + "Login & Registration" ], - "summary": "Download generated document", - "description": "Returns generated document to download.", - "operationId": "download", + "summary": "Fetch registration settings for customer group", + "operationId": "getCustomerGroupRegistrationInfo", "parameters": [ { - "name": "documentId", + "name": "customerGroupId", "in": "path", + "description": "Customer group id", "required": true, "schema": { "type": "string", @@ -19761,69 +17587,81 @@ } }, { - "name": "deepLinkCode", - "required": true, + "$ref": "#/components/parameters/swLanguageId" + } + ], + "responses": { + "200": { + "description": "Returns the customer group including registration settings.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomerGroup" + } + } + } + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "404": { + "$ref": "#/components/responses/404", + "description": "No customer group with the given id exists, or it has no registration form configured." + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/customer/wishlist/add/{productId}": { + "post": { + "tags": [ + "Wishlist" + ], + "summary": "Add a product to a wishlist", + "description": "Adds a product to a customers wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "addProductOnWishlist", + "parameters": [ + { + "name": "productId", "in": "path", + "description": "Identifier of the product to be added.", + "required": true, "schema": { - "type": "string" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, { "$ref": "#/components/parameters/swLanguageId" } ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "email": { - "type": "string" - }, - "zipcode": { - "type": "string" - } - }, - "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." - } - } - } - }, "responses": { - "200": { - "description": "Success", - "content": { - "application/pdf": { - "schema": { - "type": "string", - "format": "binary" - } - }, - "text/html": { - "schema": { - "type": "string" - } - }, - "application/xml": { + "200": { + "description": "Returns a success response.", + "content": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/SuccessResponse" } } } }, - "204": { - "description": "DEPRECATED: Returns a no content response when no document is found. Will be changed in v6.8.0.0 and returns a 404 response instead." - }, - "403": { - "description": "Forbidden." + "400": { + "$ref": "#/components/responses/400", + "description": "No product exists for the given `productId` in this sales channel." }, - "404": { - "description": "Document not found." + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." }, - "406": { - "description": "The requested mime type is not supported." + "403": { + "$ref": "#/components/responses/403", + "description": "No customer is logged in, the logged in customer is a guest, or the wishlist feature is disabled for this sales channel." } }, "security": [ @@ -19832,87 +17670,76 @@ "ContextToken": [] } ] - }, - "get": { + } + }, + "/customer/wishlist": { + "post": { "tags": [ - "Document" + "Wishlist", + "Endpoints supporting Criteria " ], - "summary": "Download generated document", - "description": "Returns generated document to download.", - "operationId": "downloadGet", + "summary": "Fetch a wishlist", + "description": "Fetch a customer's wishlist. Products on the wishlist can be filtered using a criteria object.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "readCustomerWishlist", "parameters": [ { - "name": "documentId", - "in": "path", - "required": true, + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, "schema": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "deepLinkCode", - "required": true, - "in": "path", - "schema": { - "type": "string" + "enum": [ + "0", + "1" + ], + "default": "1" } }, - { - "name": "email", - "required": false, - "in": "query", - "schema": { - "type": "string" - }, - "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." - }, - { - "name": "zipcode", - "required": false, - "in": "query", - "schema": { - "type": "string" - }, - "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." - }, { "$ref": "#/components/parameters/swLanguageId" } ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } + } + } + }, "responses": { "200": { - "description": "Success", + "description": "", "content": { - "application/pdf": { - "schema": { - "type": "string", - "format": "binary" - } - }, - "text/html": { - "schema": { - "type": "string" - } - }, - "application/xml": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/WishlistLoadRouteResponse" } } } }, - "204": { - "description": "DEPRECATED: Returns a no content response when no document is found. Will be changed in v6.8.0.0 and returns a 404 response instead." + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." }, "403": { - "description": "Forbidden." + "$ref": "#/components/responses/403", + "description": "No customer is logged in, the logged in customer is a guest, or the wishlist feature is disabled for this sales channel." }, "404": { - "description": "Document not found." - }, - "406": { - "description": "The requested mime type is not supported." + "$ref": "#/components/responses/404", + "description": "The logged in customer has no wishlist yet." } }, "security": [ @@ -19923,49 +17750,57 @@ ] } }, - "/order/state/cancel": { + "/customer/wishlist/merge": { "post": { "tags": [ - "Order" - ], - "summary": "Cancel an order", - "description": "Cancels an order. The order state will be set to 'cancelled'.", - "operationId": "cancelOrder", - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } + "Wishlist" ], + "summary": "Create a wishlist for a customer", + "description": "Create a new wishlist for a logged in customer or extend the existing wishlist given a set of products.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * A customer can only have a single wishlist.\n * The wishlist feature has to be activated.", + "operationId": "mergeProductOnWishlist", "requestBody": { "required": true, "content": { "application/json": { "schema": { "properties": { - "orderId": { - "description": "The identifier of the order to be canceled.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "productIds": { + "description": "List product id", + "type": "array", + "items": { + "description": "product id", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } }, - "type": "object", - "required": [ - "orderId" - ] + "type": "object" } } } }, "responses": { "200": { - "description": "Returns the state of the state machine\n\n example: More information about the state machine can be found in the corresponding guide: [Using the state machine](https://developer.shopware.com/docs/guides/plugins/plugins/checkout/order/using-the-state-machine)", + "description": "Returns a success response.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/StateMachineState" + "$ref": "#/components/schemas/SuccessResponse" } } } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `productIds` parameter is missing." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "403": { + "$ref": "#/components/responses/403", + "description": "No customer is logged in, the logged in customer is a guest, or the wishlist feature is disabled for this sales channel." } }, "security": [ @@ -19973,121 +17808,59 @@ "ApiKey": [], "ContextToken": [] } - ] - } - }, - "/order": { - "post": { - "tags": [ - "Order", - "Endpoints supporting Criteria " ], - "summary": "Fetch a list of orders", - "description": "List orders of a customer.\n\n**Available Associations:**\n- `stateMachineState` - Current order state (e.g., open, in_progress, completed, cancelled)\n- `primaryOrderDelivery` - Primary delivery information for the order\n- `primaryOrderTransaction` - Primary payment transaction for the order\n- `orderCustomer` - Customer information associated with the order\n- `currency` - Currency used for the order\n- `language` - Language used when placing the order\n- `addresses` - All addresses associated with the order (billing and shipping)\n- `billingAddress` - Billing address for the order\n- `deliveries` - Delivery information including shipping address and tracking\n- `lineItems` - Order line items (products, discounts, fees)\n- `transactions` - Payment transactions for the order\n- `documents` - Generated documents (invoices, delivery notes, credit notes)\n- `tags` - Tags assigned to the order for organization and filtering", - "operationId": "readOrder", "parameters": [ - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } - }, { "$ref": "#/components/parameters/swLanguageId" } + ] + } + }, + "/customer/wishlist/delete/{productId}": { + "delete": { + "tags": [ + "Wishlist" ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/NoneFieldsCriteria" - }, - { - "properties": { - "checkPromotion": { - "description": "Check if the payment method of the order is still changeable.", - "type": "boolean" - }, - "filter": { - "type": "array", - "description": "Pass the deepLinkCode criteria filter to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", - "items": { - "allOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "equals" - ] - }, - "field": { - "type": "string", - "enum": [ - "deepLinkCode" - ] - }, - "value": { - "type": "string" - } - }, - "required": [ - "type", - "field", - "value" - ] - } - ] - } - }, - "email": { - "description": "The email address of the customer. Pass this value to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", - "type": "string", - "format": "email" - }, - "zipcode": { - "description": "The zip/postal code of the billing address of the customer. Pass this value to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", - "type": "string" - }, - "login": { - "description": "If set and when handling a guest order, a context token will be returned in the response header with a logged-in session.", - "type": "boolean" - } - }, - "type": "object" - } - ] - } + "summary": "Remove a product from a wishlist", + "description": "Removes a product from a customer's wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "deleteProductOnWishlist", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "The identifier of the product to be removed from the wishlist.", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } - }, + ], "responses": { "200": { - "description": "An array of orders and an indicator if the payment of the order can be changed.", - "headers": { - "sw-context-token": { - "description": "Contains sw-context-token value, if login parameter is set to true and a guest order was found and the correct credentials were provided.", + "description": "Returns a success response indicating a successful removal.", + "content": { + "application/json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/SuccessResponse" } } - }, + } + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "403": { + "$ref": "#/components/responses/403", + "description": "No customer is logged in, the logged in customer is a guest, or the wishlist feature is disabled for this sales channel." + }, + "404": { + "description": "The removal of the product failed. Probably because the product could not be found on the wishlist.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OrderRouteResponse" + "$ref": "#/components/schemas/failure" } } } @@ -20101,55 +17874,92 @@ ] } }, - "/order/payment": { + "/document/download/{documentId}/{deepLinkCode}": { "post": { "tags": [ - "Order" + "Document" ], - "summary": "Update the payment method of an order", - "description": "Changes the payment method of a specific order. You can use the /order route to find out if the payment method of an order can be changed - take a look at the `paymentChangeable`- array in the response.", - "operationId": "orderSetPayment", + "summary": "Download generated document", + "description": "Returns generated document to download.", + "operationId": "download", "parameters": [ + { + "name": "documentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "deepLinkCode", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, { "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "required": [ - "paymentMethodId", - "orderId" - ], + "type": "object", "properties": { - "paymentMethodId": { - "description": "The identifier of the paymentMethod to be set", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "email": { + "type": "string" }, - "orderId": { - "description": "The identifier of the order.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "zipcode": { + "type": "string" } }, - "type": "object" + "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." } } } }, "responses": { "200": { - "description": "Successfully updated the payment method of the order.", + "description": "Success", "content": { - "application/json": { + "application/pdf": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "type": "string", + "format": "binary" + } + }, + "text/html": { + "schema": { + "type": "string" + } + }, + "application/xml": { + "schema": { + "type": "string" } } } + }, + "204": { + "description": "DEPRECATED: Returns a no content response when no document is found. Will be changed in v6.8.0.0 and returns a 404 response instead." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "403": { + "description": "Forbidden." + }, + "404": { + "description": "Document not found." + }, + "406": { + "description": "The requested mime type is not supported." } }, "security": [ @@ -20158,19 +17968,17 @@ "ContextToken": [] } ] - } - }, - "/order/download/{orderId}/{downloadId}": { + }, "get": { "tags": [ - "Order" + "Document" ], - "summary": "Download a purchased file", - "description": "Download a file included in the given order and with the given id. Access must be granted.", - "operationId": "orderDownloadFile", + "summary": "Download generated document", + "description": "Returns generated document to download.", + "operationId": "downloadGet", "parameters": [ { - "name": "orderId", + "name": "documentId", "in": "path", "required": true, "schema": { @@ -20179,29 +17987,72 @@ } }, { - "name": "downloadId", - "in": "path", + "name": "deepLinkCode", "required": true, + "in": "path", "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } }, + { + "name": "email", + "required": false, + "in": "query", + "schema": { + "type": "string" + }, + "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." + }, + { + "name": "zipcode", + "required": false, + "in": "query", + "schema": { + "type": "string" + }, + "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." + }, { "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "description": "An arbitrary binary file.", + "description": "Success", "content": { - "application/octet-stream": { + "application/pdf": { "schema": { "type": "string", "format": "binary" } + }, + "text/html": { + "schema": { + "type": "string" + } + }, + "application/xml": { + "schema": { + "type": "string" + } } } + }, + "204": { + "description": "DEPRECATED: Returns a no content response when no document is found. Will be changed in v6.8.0.0 and returns a 404 response instead." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "403": { + "description": "Forbidden." + }, + "404": { + "description": "Document not found." + }, + "406": { + "description": "The requested mime type is not supported." } }, "security": [ @@ -20212,261 +18063,280 @@ ] } }, - "/navigation/{activeId}/{rootId}": { - "post": { + "/product/{productId}/garan-label": { + "get": { "tags": [ - "Category", - "Endpoints supporting Criteria " + "Product" ], - "summary": "Fetch a navigation menu", - "description": "This endpoint returns categories that can be used as a page navigation. You can either return them as a tree or as a flat list. You can also control the depth of the tree.\n\n Instead of passing uuids, you can also use one of the following aliases for the activeId and rootId parameters to get the respective navigations of your sales channel.\n\n * main-navigation\n * service-navigation\n * footer-navigation", - "operationId": "readNavigation", + "summary": "Render an EU GARAN label", + "description": "This route renders an EU GARAN label SVG for a product.", + "operationId": "renderGaranLabel", "parameters": [ { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } - }, - { - "name": "activeId", + "name": "productId", "in": "path", - "description": "Identifier of the active category in the navigation tree (if not used, just set to the same as rootId).", + "description": "Product ID", "required": true, "schema": { - "oneOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "$ref": "#/components/schemas/NavigationType" - } - ] + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, { - "name": "rootId", - "in": "path", - "description": "Identifier of the root category for your desired navigation tree. You can use it to fetch sub-trees of your navigation tree.", - "required": true, - "schema": { - "oneOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "$ref": "#/components/schemas/NavigationType" + "$ref": "#/components/parameters/swLanguageId" + } + ], + "responses": { + "200": { + "description": "Rendered GARAN label SVG.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "svg": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "svg" + ] } - ] + } } }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "404": { + "$ref": "#/components/responses/404", + "description": "No product exists for the given `productId`, or it is not visible in this sales channel." + } + }, + "security": [ { - "$ref": "#/components/parameters/swLanguageId" + "ApiKey": [] } + ] + } + }, + "/handle-payment": { + "post": { + "tags": [ + "Payment & Shipping" ], + "summary": "Initiate a payment for an order", + "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order.", + "operationId": "handlePaymentMethod", "requestBody": { "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/NoneFieldsCriteria" + "required": [ + "orderId" + ], + "properties": { + "orderId": { + "description": "Identifier of an order", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - { - "properties": { - "depth": { - "description": "Determines the depth of fetched navigation levels.", - "type": "integer", - "format": "int32" - }, - "buildTree": { - "description": "Return the categories as a tree or as a flat list.", - "type": "array", - "items": { - "type": "object" - } - } - }, - "type": "object" + "finishUrl": { + "description": "URL to which the client should be redirected after successful payment", + "type": "string" + }, + "errorUrl": { + "description": "URL to which the client should be redirected after erroneous payment", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "All available navigations", + "description": "Redirect to external payment provider", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NavigationRouteResponse" + "type": "object", + "properties": { + "redirectUrl": { + "type": "string" + } + }, + "required": [ + "redirectUrl" + ] } } } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The submitted data failed validation, e.g. a missing `orderId` or a non-string `finishUrl` or `errorUrl`." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "403": { + "$ref": "#/components/responses/403", + "description": "No customer is logged in." + }, + "404": { + "$ref": "#/components/responses/404", + "description": "No order exists for the given `orderId`." } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" } ] }, "get": { "tags": [ - "Category", - "Endpoints supporting Criteria " + "Payment & Shipping" ], - "summary": "Fetch a navigation menu", - "description": "This endpoint returns categories that can be used as a page navigation. You can either return them as a tree or as a flat list. You can also control the depth of the tree.\n\n Instead of passing uuids, you can also use one of the following aliases for the activeId and rootId parameters to get the respective navigations of your sales channel.\n\n * main-navigation\n * service-navigation\n * footer-navigation", - "operationId": "readNavigationGet", + "summary": "Initiate a payment for an order", + "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order. Please prefer the POST version of this endpoint.", + "operationId": "handlePaymentMethodGet", "parameters": [ { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "activeId", - "in": "path", - "description": "Identifier of the active category in the navigation tree (if not used, just set to the same as rootId).", + "name": "orderId", + "in": "query", "required": true, + "description": "Identifier of an order", "schema": { - "oneOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "$ref": "#/components/schemas/NavigationType" - } - ] + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, { - "name": "rootId", - "in": "path", - "description": "Identifier of the root category for your desired navigation tree. You can use it to fetch sub-trees of your navigation tree.", - "required": true, + "name": "finishUrl", + "in": "query", + "description": "URL to which the client should be redirected after successful payment", "schema": { - "oneOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "$ref": "#/components/schemas/NavigationType" - } - ] + "type": "string" } }, { - "name": "depth", + "name": "errorUrl", "in": "query", - "description": "Determines the depth of fetched navigation levels.", - "required": false, + "description": "URL to which the client should be redirected after erroneous payment", "schema": { - "type": "integer", - "format": "int32" + "type": "string" } }, { - "name": "buildTree", - "in": "query", - "description": "Return the categories as a tree or as a flat list.", - "required": false, - "schema": { - "type": "array", - "items": { - "type": "object" + "$ref": "#/components/parameters/swLanguageId" + } + ], + "responses": { + "200": { + "description": "Redirect to external payment provider", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redirectUrl": { + "type": "string" + } + }, + "required": [ + "redirectUrl" + ] + } } - }, - "style": "deepObject", - "explode": true - }, - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" + } }, - { - "$ref": "#/components/parameters/criteriaIncludes" + "400": { + "$ref": "#/components/responses/400", + "description": "The submitted data failed validation, e.g. a missing `orderId` or a non-string `finishUrl` or `errorUrl`." }, - { - "$ref": "#/components/parameters/criteriaExcludes" + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." }, - { - "$ref": "#/components/parameters/CompressedNoneFieldsCriteria" + "403": { + "$ref": "#/components/responses/403", + "description": "No customer is logged in." }, + "404": { + "$ref": "#/components/responses/404", + "description": "No order exists for the given `orderId`." + } + }, + "security": [ { - "$ref": "#/components/parameters/swLanguageId" + "ApiKey": [], + "ContextToken": [] } + ] + } + }, + "/_info/routes": { + "get": { + "summary": "Get API routes", + "operationId": "getRoutes", + "tags": [ + "System Info & Health Check" ], "responses": { "200": { - "description": "All available navigations", + "description": "Successful operation", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NavigationRouteResponse" + "type": "object", + "required": [ + "endpoints" + ], + "properties": { + "endpoints": { + "type": "array", + "items": { + "type": "object", + "required": [ + "methods", + "path" + ], + "properties": { + "methods": { + "type": "array", + "items": { + "type": "string" + } + }, + "path": { + "type": "string" + } + } + } + } + } } } } + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing. This endpoint can be opened up by setting `shopware.api.api_browser.auth_required` to `false`." } }, "security": [ @@ -20476,16 +18346,25 @@ ] } }, - "/salutation": { + "/landing-page/{landingPageId}": { "post": { "tags": [ - "System & Context", + "Content", "Endpoints supporting Criteria " ], - "summary": "Fetch salutations", - "description": "Fetches salutations with a criteria obj.", - "operationId": "readSalutation", + "summary": "Fetch a landing page with the resolved CMS page", + "description": "Loads a landing page by its identifier and resolves the CMS page.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `cmsPage` - CMS page layout for the landing page\n- `seoUrls` - SEO-friendly URLs for the landing page across different sales channels", + "operationId": "readLandingPage", "parameters": [ + { + "name": "landingPageId", + "in": "path", + "description": "Identifier of the landing page.", + "required": true, + "schema": { + "type": "string" + } + }, { "name": "sw-include-search-info", "in": "header", @@ -20505,13 +18384,28 @@ } ], "requestBody": { - "required": false, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Criteria" + }, + { + "allOf": [ + { + "properties": { + "slots": { + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/ProductListingCriteria" + } + ] } ] } @@ -20520,7 +18414,21 @@ }, "responses": { "200": { - "$ref": "#/components/responses/SalutationListResponse" + "description": "The loaded landing page with cms page", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LandingPage" + } + } + } + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -20531,18 +18439,47 @@ }, "get": { "tags": [ - "System & Context", + "Content", "Endpoints supporting Criteria " ], - "summary": "Fetch salutations", - "description": "Perform a filtered search for salutations.", - "operationId": "readSalutationGet", + "summary": "Fetch a landing page with the resolved CMS page", + "description": "Loads a landing page by its identifier and resolves the CMS page.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `cmsPage` - CMS page layout for the landing page\n- `seoUrls` - SEO-friendly URLs for the landing page across different sales channels", + "operationId": "readLandingPageGet", "parameters": [ + { + "name": "landingPageId", + "in": "path", + "description": "Identifier of the landing page.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, { "$ref": "#/components/parameters/criteriaPage" }, { - "$ref": "#/components/parameters/criteriaLimit" + "name": "limit", + "in": "query", + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "schema": { + "type": "integer", + "minimum": 0 + } }, { "$ref": "#/components/parameters/criteriaTerm" @@ -20584,123 +18521,88 @@ "$ref": "#/components/parameters/criteriaExcludes" }, { - "$ref": "#/components/parameters/CompressedCriteria" + "name": "order", + "in": "query", + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "schema": { + "type": "string" + } }, { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/SalutationListResponse" - } - }, - "security": [ + "name": "p", + "in": "query", + "description": "Search result page", + "schema": { + "type": "integer", + "default": 1 + } + }, { - "ApiKey": [] - } - ] - } - }, - "/handle-payment": { - "post": { - "tags": [ - "Payment & Shipping" - ], - "summary": "Initiate a payment for an order", - "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order.", - "operationId": "handlePaymentMethod", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "orderId" - ], - "properties": { - "orderId": { - "description": "Identifier of an order", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "finishUrl": { - "description": "URL to which the client should be redirected after successful payment", - "type": "string" - }, - "errorUrl": { - "description": "URL to which the client should be redirected after erroneous payment", - "type": "string" - } - }, - "type": "object" - } + "name": "manufacturer", + "in": "query", + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "schema": { + "type": "string" } - } - }, - "responses": { - "200": { - "description": "Redirect to external payment provider", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "type": "string" - } - }, - "required": [ - "redirectUrl" - ] - } - } + }, + { + "name": "min-price", + "in": "query", + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 } - } - }, - "security": [ + }, { - "ApiKey": [] - } - ], - "parameters": [ + "name": "max-price", + "in": "query", + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, { - "$ref": "#/components/parameters/swLanguageId" - } - ] - }, - "get": { - "tags": [ - "Payment & Shipping" - ], - "summary": "Initiate a payment for an order", - "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order. Please prefer the POST version of this endpoint.", - "operationId": "handlePaymentMethodGet", - "parameters": [ + "name": "rating", + "in": "query", + "description": "Filter products with a minimum average rating.", + "schema": { + "type": "integer" + } + }, { - "name": "orderId", + "name": "shipping-free", "in": "query", - "required": true, - "description": "Identifier of an order", + "description": "Filters products that are marked as shipping-free.", "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "boolean", + "default": false } }, { - "name": "finishUrl", + "name": "properties", "in": "query", - "description": "URL to which the client should be redirected after successful payment", + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", "schema": { "type": "string" } }, { - "name": "errorUrl", + "name": "reduce-aggregations", "in": "query", - "description": "URL to which the client should be redirected after erroneous payment", + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", "schema": { - "type": "string" + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] } }, { @@ -20709,22 +18611,21 @@ ], "responses": { "200": { - "description": "Redirect to external payment provider", + "description": "The loaded landing page with cms page", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "type": "string" - } - }, - "required": [ - "redirectUrl" - ] + "$ref": "#/components/schemas/LandingPage" } } } + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -20734,86 +18635,59 @@ ] } }, - "/contact-form": { + "/language": { "post": { "tags": [ - "Content" + "System & Context", + "Endpoints supporting Criteria " ], - "summary": "Submit a contact form message", - "description": "Used for submitting contact forms. Be aware that there can be more required fields, depending on the system settings.", - "operationId": "sendContactMail", + "summary": "Fetch languages", + "description": "Perform a filtered search for languages.\n\n**Available Associations:**\n- `locale` - Locale defining regional settings (date, time, number formats)\n- `translationCode` - Locale used for translating content\n- `children` - Child languages inheriting from this parent language", + "operationId": "readLanguages", "parameters": [ + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, { "$ref": "#/components/parameters/swLanguageId" } ], "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "required": [ - "email", - "subject", - "comment" - ], - "properties": { - "salutationId": { - "description": "Identifier of the salutation. Use `/api/salutation` endpoint to fetch possible values.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "description": "Firstname. This field may be required depending on the system settings.", - "type": "string" - }, - "lastName": { - "description": "Lastname. This field may be required depending on the system settings.", - "type": "string" - }, - "email": { - "description": "Email address", - "type": "string" - }, - "phone": { - "description": "Phone. This field may be required depending on the system settings.", - "type": "string" - }, - "subject": { - "description": "The subject of the contact form.", - "type": "string" - }, - "comment": { - "description": "The message of the contact form", - "type": "string" - }, - "navigationId": { - "description": "Identifier of the navigation page. Can be used to override the configuration.\nTake a look at the settings of a category containing a concat form in the administration.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "slotId": { - "description": "Identifier of the cms element", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "cmsPageType": { - "description": "Type of the content management page", - "type": "string" - }, - "entityName": { - "description": "Entity name for slot config", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Message sent successful." + "$ref": "#/components/responses/LanguageListResponse" + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ @@ -20821,433 +18695,915 @@ "ApiKey": [] } ] - } - }, - "/context": { + }, "get": { "tags": [ - "System & Context" - ], - "summary": "Fetch the current context", - "description": "Fetches the current context. This includes for example the `customerGroup`, `currency`, `taxRules` and many more.", - "operationId": "readContext", - "responses": { - "200": { - "description": "Returns the current context.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SalesChannelContext" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } + "System & Context", + "Endpoints supporting Criteria " ], + "summary": "Fetch languages", + "description": "Perform a filtered search for languages.\n\n**Available Associations:**\n- `locale` - Locale defining regional settings (date, time, number formats)\n- `translationCode` - Locale used for translating content\n- `children` - Child languages inheriting from this parent language", + "operationId": "readLanguagesGet", "parameters": [ + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" + }, { "$ref": "#/components/parameters/swLanguageId" } - ] - }, - "patch": { - "tags": [ - "System & Context" ], - "summary": "Modify the current context", - "description": "Used for switching the context. A typical example would be changing the language or changing the currency.", - "operationId": "updateContext", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "properties": { - "currencyId": { - "description": "Currency", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "languageId": { - "description": "Language", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "billingAddressId": { - "description": "Billing Address", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shippingAddressId": { - "description": "Shipping Address", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "paymentMethodId": { - "description": "Payment Method", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shippingMethodId": { - "description": "Shipping Method", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryId": { - "description": "Country", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryStateId": { - "description": "Country State", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "type": "object" - } - } - } - }, "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" + "$ref": "#/components/responses/LanguageListResponse" + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ { "ApiKey": [] } + ] + } + }, + "/legal-guarantee-notice": { + "get": { + "tags": [ + "Product" ], + "summary": "Render the EU legal guarantee notice", + "description": "This route renders the EU-harmonised legal guarantee notice SVG and the matching europa.eu \"Your Europe\" guarantees page link in the customer-facing language of the sales channel context.", + "operationId": "renderLegalGuaranteeNotice", "parameters": [ { "$ref": "#/components/parameters/swLanguageId" } + ], + "responses": { + "200": { + "description": "Rendered legal guarantee notice SVG and link.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "svg": { + "type": [ + "string", + "null" + ] + }, + "link": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "svg", + "link" + ] + } + } + } + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + } + }, + "security": [ + { + "ApiKey": [] + } ] } }, - "/context/gateway": { + "/_mcp": { "post": { + "tags": [ + "MCP", + "Experimental" + ], + "summary": "MCP JSON-RPC endpoint (Store API)", + "description": "Handles Model Context Protocol (MCP) requests using the Streamable HTTP transport for the Store API. Accepts JSON-RPC 2.0 messages. Requires a valid Store API access key. Streaming responses are delivered as a `text/event-stream` body on this POST operation; a standalone GET SSE stream is not supported. Browser clients are supported: the CORS preflight is answered before routing with the `Access-Control-Allow-*` headers, including `mcp-session-id` and `mcp-protocol-version` in the allowed and exposed headers. Experimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", + "operationId": "storeApiMcpPost", + "parameters": [ + { + "name": "mcp-session-id", + "in": "header", + "required": false, + "description": "Session ID returned by the server in the `mcp-session-id` response header after a successful `initialize` request. Required for all subsequent requests within the same session.", + "schema": { + "type": "string", + "format": "uuid" + } + }, + { + "name": "sw-context-token", + "in": "header", + "required": false, + "description": "Standard Store API context token identifying the customer session. When provided, MCP tools operate in the context of that customer. Same semantics as all other Store API endpoints.", + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } + ], "requestBody": { "required": true, + "description": "A JSON-RPC 2.0 request object. Omit `id` for notifications (no response expected). The `params` shape depends on the `method`; extensions may register additional methods beyond the variants listed here.", "content": { "application/json": { "schema": { + "type": "object", "required": [ - "appName" + "jsonrpc", + "method" ], "properties": { - "appName": { - "type": "string" + "jsonrpc": { + "type": "string", + "enum": [ + "2.0" + ] + }, + "id": { + "description": "Request identifier. Omit for notifications (fire-and-forget). Present for requests that expect a response.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + }, + "method": { + "type": "string", + "description": "MCP method name." + }, + "params": { + "type": "object", + "description": "Method-specific parameters, see the request variants." + } + }, + "oneOf": [ + { + "title": "initialize", + "properties": { + "method": { + "const": "initialize" + }, + "params": { + "type": "object", + "required": [ + "protocolVersion", + "capabilities", + "clientInfo" + ], + "properties": { + "protocolVersion": { + "type": "string", + "description": "MCP protocol version the client supports, e.g. `2025-03-26`." + }, + "capabilities": { + "type": "object", + "description": "Capabilities the client supports.", + "additionalProperties": true + }, + "clientInfo": { + "type": "object", + "required": [ + "name", + "version" + ], + "properties": { + "name": { + "type": "string" + }, + "version": { + "type": "string" + } + } + } + } + } + }, + "required": [ + "params" + ] + }, + { + "title": "tools/list", + "properties": { + "method": { + "const": "tools/list" + }, + "params": { + "type": "object", + "properties": { + "cursor": { + "type": "string", + "description": "Opaque pagination cursor from a previous `tools/list` result." + } + } + } + } + }, + { + "title": "tools/call", + "properties": { + "method": { + "const": "tools/call" + }, + "params": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "description": "Name of the tool to invoke, as returned by `tools/list`." + }, + "arguments": { + "type": "object", + "description": "Tool arguments matching the tool's `inputSchema`.", + "additionalProperties": true + } + } + } + }, + "required": [ + "params" + ] + }, + { + "title": "resources/list", + "properties": { + "method": { + "const": "resources/list" + }, + "params": { + "type": "object", + "properties": { + "cursor": { + "type": "string", + "description": "Opaque pagination cursor from a previous `resources/list` result." + } + } + } + } + }, + { + "title": "resources/read", + "properties": { + "method": { + "const": "resources/read" + }, + "params": { + "type": "object", + "required": [ + "uri" + ], + "properties": { + "uri": { + "type": "string", + "description": "URI of the resource to read, as returned by `resources/list`." + } + } + } + }, + "required": [ + "params" + ] + }, + { + "title": "prompts/list", + "properties": { + "method": { + "const": "prompts/list" + }, + "params": { + "type": "object", + "properties": { + "cursor": { + "type": "string", + "description": "Opaque pagination cursor from a previous `prompts/list` result." + } + } + } + } }, - "data": { - "type": "object" + { + "title": "prompts/get", + "properties": { + "method": { + "const": "prompts/get" + }, + "params": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "description": "Name of the prompt, as returned by `prompts/list`." + }, + "arguments": { + "type": "object", + "description": "Prompt arguments as string values.", + "additionalProperties": { + "type": "string" + } + } + } + } + }, + "required": [ + "params" + ] + }, + { + "title": "ping", + "properties": { + "method": { + "const": "ping" + } + } } - }, - "type": "object" + ] } } } }, - "tags": [ - "Gateway" - ], - "summary": "Call the context gateway", - "description": "Call the context gateway, which is used to manipulate certain aspects of context (e.g. selected payment methods, register customer, etc.).", - "operationId": "contextGateway", "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "400": { - "description": "App server communication error" - }, - "422": { - "description": "Error provided by App Server with message to show customer" - } - }, - "security": [ - { - "ApiKey": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } - ] - }, - "get": { - "tags": [ - "Gateway" - ], - "summary": "Call the context gateway", - "description": "Call the context gateway, which is used to manipulate certain aspects of context (e.g. selected payment methods, register customer, etc.). Please prefer using the POST version of this endpoint.", - "operationId": "contextGatewayGet", - "parameters": [ - { - "name": "appName", - "in": "query", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "data", - "in": "query", - "schema": { - "type": "object" + "description": "JSON-RPC response or Server-Sent Events stream for streaming responses. Contains either a `result` (success) or an `error` (failure), never both.", + "headers": { + "mcp-session-id": { + "description": "Session ID assigned by the server. Returned on the `initialize` response and echoed on subsequent responses. Send it as a request header on all following requests.", + "schema": { + "type": "string", + "format": "uuid" + } + } }, - "style": "deepObject" - }, - { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "400": { - "description": "App server communication error" - }, - "422": { - "description": "Error provided by App Server with message to show customer" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/shipping-cost/product/{productId}": { - "get": { - "tags": [ - "Cart", - "Endpoints supporting Criteria " - ], - "summary": "Calculate shipping costs for a product", - "description": "Calculates shipping costs for a single product using criteria-based shipping method selection.", - "operationId": "readShippingCostByProduct", - "parameters": [ - { - "name": "productId", - "in": "path", - "description": "The product identifier.", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaFields" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "$ref": "#/components/parameters/CompressedCriteria" - } - ], - "responses": { - "200": { - "description": "The calculated shipping costs.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "type": "object", - "required": [ - "shippingCost", - "deliveryDate", - "shippingMethod" - ], - "properties": { - "shippingCost": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" + "type": "object", + "required": [ + "jsonrpc", + "id" + ], + "properties": { + "jsonrpc": { + "type": "string", + "enum": [ + "2.0" + ] + }, + "id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer" + }, + { + "type": "null" + } + ] + } + }, + "oneOf": [ + { + "required": [ + "result" + ], + "properties": { + "result": { + "description": "Method-specific result payload, one of the variants below depending on the requested method.", + "oneOf": [ + { + "title": "initialize result", + "type": "object", + "required": [ + "protocolVersion", + "capabilities", + "serverInfo" + ], + "properties": { + "protocolVersion": { + "type": "string" + }, + "capabilities": { + "type": "object", + "description": "Capabilities the server supports (tools, resources, prompts, logging, ...).", + "additionalProperties": true + }, + "serverInfo": { + "type": "object", + "required": [ + "name", + "version" + ], + "properties": { + "name": { + "type": "string" + }, + "version": { + "type": "string" + } + } + }, + "instructions": { + "type": "string", + "description": "Usage instructions for the client / model." + } + }, + "additionalProperties": true + }, + { + "title": "tools/list result", + "type": "object", + "required": [ + "tools" + ], + "properties": { + "tools": { + "type": "array", + "items": { + "type": "object", + "required": [ + "name", + "inputSchema" + ], + "properties": { + "name": { + "type": "string" + }, + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "inputSchema": { + "type": "object", + "description": "JSON Schema describing the tool arguments.", + "additionalProperties": true + } + }, + "additionalProperties": true + } + }, + "nextCursor": { + "type": "string", + "description": "Pagination cursor for the next page, absent on the last page." + } + }, + "additionalProperties": true + }, + { + "title": "tools/call result", + "type": "object", + "required": [ + "content" + ], + "properties": { + "content": { + "type": "array", + "items": { + "type": "object", + "required": [ + "type" + ], + "description": "Content block. `type` is one of `text` (with `text`), `image`/`audio` (with base64 `data` and `mimeType`) or `resource` (with embedded `resource`).", + "properties": { + "type": { + "type": "string", + "enum": [ + "text", + "image", + "audio", + "resource" + ] + }, + "text": { + "type": "string" + }, + "data": { + "type": "string" + }, + "mimeType": { + "type": "string" + }, + "resource": { + "type": "object", + "additionalProperties": true + } + }, + "additionalProperties": true + } + }, + "structuredContent": { + "type": "object", + "description": "Structured tool output matching the tool's declared output schema.", + "additionalProperties": true + }, + "isError": { + "type": "boolean", + "description": "True when the tool execution failed; error details are in `content`." + } + }, + "additionalProperties": true + }, + { + "title": "resources/list result", + "type": "object", + "required": [ + "resources" + ], + "properties": { + "resources": { + "type": "array", + "items": { + "type": "object", + "required": [ + "uri", + "name" + ], + "properties": { + "uri": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "mimeType": { + "type": "string" + } + }, + "additionalProperties": true + } + }, + "nextCursor": { + "type": "string", + "description": "Pagination cursor for the next page, absent on the last page." + } + }, + "additionalProperties": true + }, + { + "title": "resources/read result", + "type": "object", + "required": [ + "contents" + ], + "properties": { + "contents": { + "type": "array", + "items": { + "type": "object", + "required": [ + "uri" + ], + "description": "Resource content with either `text` or base64 `blob`.", + "properties": { + "uri": { + "type": "string" + }, + "mimeType": { + "type": "string" + }, + "text": { + "type": "string" + }, + "blob": { + "type": "string" + } + }, + "additionalProperties": true + } + } + }, + "additionalProperties": true + }, + { + "title": "prompts/list result", + "type": "object", + "required": [ + "prompts" + ], + "properties": { + "prompts": { + "type": "array", + "items": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string" + }, + "title": { + "type": "string" + }, + "description": { + "type": "string" + }, + "arguments": { + "type": "array", + "items": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "required": { + "type": "boolean" + } + }, + "additionalProperties": true + } + } + }, + "additionalProperties": true + } + }, + "nextCursor": { + "type": "string", + "description": "Pagination cursor for the next page, absent on the last page." + } + }, + "additionalProperties": true + }, + { + "title": "prompts/get result", + "type": "object", + "required": [ + "messages" + ], + "properties": { + "description": { + "type": "string" + }, + "messages": { + "type": "array", + "items": { + "type": "object", + "required": [ + "role", + "content" + ], + "properties": { + "role": { + "type": "string", + "enum": [ + "user", + "assistant" + ] + }, + "content": { + "type": "object", + "description": "Content block, same shape as in `tools/call` results.", + "additionalProperties": true + } + }, + "additionalProperties": true + } + } + }, + "additionalProperties": true + }, + { + "title": "ping result", + "type": "object", + "description": "Empty object.", + "additionalProperties": false + } + ] + } + } + }, + { + "required": [ + "error" + ], + "properties": { + "error": { + "type": "object", + "required": [ + "code", + "message" + ], + "properties": { + "code": { + "type": "integer", + "description": "JSON-RPC error code, e.g. -32700 parse error, -32600 invalid request, -32601 method not found, -32602 invalid params, -32603 internal error." + }, + "message": { + "type": "string" + }, + "data": { + "description": "Optional additional error information." + } } } - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" } } - } + ] } - } - } - }, - "400": { - "$ref": "#/components/responses/400" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/shipping-cost/cart": { - "get": { - "tags": [ - "Cart" - ], - "summary": "Calculate shipping costs for the cart", - "description": "Calculates shipping costs for the current cart across available shipping methods.", - "operationId": "readShippingCostsByCart", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], - "responses": { - "200": { - "description": "The calculated shipping costs.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "type": "object", - "required": [ - "shippingCost", - "deliveryDate", - "shippingMethod" - ], - "properties": { - "shippingCost": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "deliveryDate": { + }, + "text/event-stream": { + "itemSchema": { + "type": "object", + "description": "Parsed Server-Sent Events message. The `data` field contains a serialized JSON-RPC response object.", + "properties": { + "event": { + "type": "string" + }, + "id": { + "type": "string" + }, + "retry": { + "type": "integer" + }, + "data": { + "type": "string", + "contentMediaType": "application/json", + "contentSchema": { "type": "object", "properties": { - "earliest": { + "jsonrpc": { "type": "string", - "format": "date-time" + "enum": [ + "2.0" + ] }, - "latest": { - "type": "string", - "format": "date-time" + "id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "result": { + "type": "object", + "additionalProperties": true + }, + "error": { + "type": "object", + "properties": { + "code": { + "type": "integer" + }, + "message": { + "type": "string" + } + } } } - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" } } } + }, + "schema": { + "type": "string", + "description": "Server-Sent Events stream. Each `message` event carries a JSON-RPC response object as defined for `application/json`." } } } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/checkout/cart": { - "get": { - "tags": [ - "Cart" - ], - "summary": "Fetch or create a cart", - "description": "Used to fetch the current cart or for creating a new one.", - "operationId": "readCart", - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "responses": { - "200": { - "description": "Cart", + }, + "202": { + "description": "Notification accepted. Returned with an empty body for JSON-RPC notifications (requests without an `id`)." + }, + "400": { + "description": "Invalid request, e.g. malformed JSON-RPC payload or malformed `mcp-session-id` header.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "type": "object", + "properties": { + "jsonrpc": { + "type": "string", + "enum": [ + "2.0" + ] + }, + "id": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "error": { + "type": "object", + "required": [ + "code", + "message" + ], + "properties": { + "code": { + "type": "integer" + }, + "message": { + "type": "string" + } + } + } + } } } } + }, + "401": { + "$ref": "#/components/responses/401" + }, + "429": { + "$ref": "#/components/responses/429" } }, "security": [ @@ -21258,21 +19614,69 @@ }, "delete": { "tags": [ - "Cart" + "MCP", + "Experimental" + ], + "summary": "Close MCP session (Store API)", + "description": "Terminates the active MCP session identified by the `mcp-session-id` header. Experimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", + "operationId": "storeApiMcpDelete", + "parameters": [ + { + "name": "mcp-session-id", + "in": "header", + "required": true, + "description": "Session ID of the session to close. Obtained from the `mcp-session-id` response header of the `initialize` request.", + "schema": { + "type": "string", + "format": "uuid" + } + } ], - "summary": "Delete a cart", - "description": "This route deletes the cart of the customer.", - "operationId": "deleteCart", "responses": { - "204": { - "description": "Successfully deleted the cart", + "200": { + "description": "Session closed successfully." + }, + "400": { + "description": "Missing or malformed `mcp-session-id` header. Returns a JSON-RPC error object.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "type": "object", + "properties": { + "jsonrpc": { + "type": "string", + "enum": [ + "2.0" + ] + }, + "id": { + "type": "null" + }, + "error": { + "type": "object", + "required": [ + "code", + "message" + ], + "properties": { + "code": { + "type": "integer" + }, + "message": { + "type": "string" + } + } + } + } } } } + }, + "401": { + "$ref": "#/components/responses/401" + }, + "429": { + "$ref": "#/components/responses/429" } }, "security": [ @@ -21282,62 +19686,85 @@ ] } }, - "/checkout/cart/line-item": { + "/media": { "post": { "tags": [ - "Cart" - ], - "summary": "Add items to the cart", - "description": "This route adds items to the cart. An item can be a product or promotion for example. They are referenced by the `referencedId`-parameter.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#adding-new-items-to-the-cart)", - "operationId": "addLineItem", - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } + "Content" ], + "summary": "Fetch and resolve Media Entities", + "description": "Fetch one or multiple Media Entities with the corresponding Identifier.", + "operationId": "readMedia", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CartItems" + "properties": { + "ids": { + "description": "Identifier (UUID) of the media entity to be fetched.", + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + }, + "type": "object", + "required": [ + "ids" + ] } } } }, "responses": { "200": { - "description": "The updated cart.", + "description": "The loaded MediaCollection containing the requested Media Entities.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "type": "array", + "items": { + "$ref": "#/components/schemas/Media" + } } } } }, "400": { - "$ref": "#/components/responses/400" + "$ref": "#/components/responses/400", + "description": "The `ids` parameter is missing or empty." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ { "ApiKey": [] } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ] }, - "delete": { + "get": { "tags": [ - "Cart" + "Content" ], - "summary": "Remove items from the cart", - "description": "DEPRECATED: use removeLineItem instead. This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", - "operationId": "removeLineItemDeprecated", - "deprecated": true, + "summary": "Fetch and resolve Media Entities", + "description": "Fetch one or multiple Media Entities with the corresponding Identifier.", + "operationId": "readMediaGet", "parameters": [ { - "name": "ids", + "name": "ids[]", "in": "query", - "description": "A list of product identifiers.", + "description": "Identifier (UUID) of the media entity to be fetched.", "required": true, "schema": { "type": "array", @@ -21346,18 +19773,35 @@ "pattern": "^[0-9a-f]{32}$" } } + }, + { + "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "description": "The updated cart.", + "description": "The loaded MediaCollection containing the requested Media Entities.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "type": "array", + "items": { + "$ref": "#/components/schemas/Media" + } } } } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `ids` parameter is missing or empty." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -21365,56 +19809,75 @@ "ApiKey": [] } ] - }, - "patch": { + } + }, + "/navigation/{activeId}/{rootId}": { + "post": { "tags": [ - "Cart" + "Category", + "Endpoints supporting Criteria " ], - "summary": "Update items in the cart", - "description": "This route updates items in the cart. A typical example is updating the quantity of an item.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#updating-items-in-the-cart)", - "operationId": "updateLineItem", + "summary": "Fetch a navigation menu", + "description": "This endpoint returns categories that can be used as a page navigation. You can either return them as a tree or as a flat list. You can also control the depth of the tree.\n\n Instead of passing uuids, you can also use one of the following aliases for the activeId and rootId parameters to get the respective navigations of your sales channel.\n\n * main-navigation\n * service-navigation\n * footer-navigation", + "operationId": "readNavigation", "parameters": [ { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CartItemsUpdate" - } + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, + "schema": { + "type": "boolean" } - } - }, - "responses": { - "200": { - "description": "The updated cart.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Cart" + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, + { + "name": "activeId", + "in": "path", + "description": "Identifier of the active category in the navigation tree (if not used, just set to the same as rootId).", + "required": true, + "schema": { + "oneOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "$ref": "#/components/schemas/NavigationType" } - } + ] + } + }, + { + "name": "rootId", + "in": "path", + "description": "Identifier of the root category for your desired navigation tree. You can use it to fetch sub-trees of your navigation tree.", + "required": true, + "schema": { + "oneOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "$ref": "#/components/schemas/NavigationType" + } + ] } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/checkout/cart/line-item/delete": { - "post": { - "tags": [ - "Cart" - ], - "summary": "Remove items from the cart", - "description": "This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", - "operationId": "removeLineItem", - "parameters": [ + }, { "$ref": "#/components/parameters/swLanguageId" } @@ -21424,35 +19887,54 @@ "content": { "application/json": { "schema": { - "required": [ - "ids" - ], - "properties": { - "ids": { - "description": "A list of product identifiers.", - "type": "array", - "minItems": 1, - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "allOf": [ + { + "$ref": "#/components/schemas/NoneFieldsCriteria" + }, + { + "properties": { + "depth": { + "description": "Determines the depth of fetched navigation levels.", + "type": "integer", + "format": "int32" + }, + "buildTree": { + "description": "Return the categories as a tree or as a flat list.", + "type": "array", + "items": { + "type": "object" + } + } + }, + "type": "object" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "The updated cart.", + "description": "All available navigations", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "$ref": "#/components/schemas/NavigationRouteResponse" } } } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "404": { + "$ref": "#/components/responses/404", + "description": "The `activeId` or `rootId` does not reference a category that is reachable in this sales channel." } }, "security": [ @@ -21460,220 +19942,83 @@ "ApiKey": [] } ] - } - }, - "/checkout/order": { - "post": { + }, + "get": { "tags": [ - "Order" + "Category", + "Endpoints supporting Criteria " ], - "summary": "Create an order from a cart", - "description": "Creates a new order from the current cart and deletes the cart.\n\nIf you are using the [prepared payment flow](https://developer.shopware.com/docs/concepts/commerce/checkout-concept/payments#2.1-prepare-payment-optional), this endpoint also receives additional transaction details. The exact name of the parameters depends on the implementation of the corresponding *payment handler*.", - "operationId": "createOrder", + "summary": "Fetch a navigation menu", + "description": "This endpoint returns categories that can be used as a page navigation. You can either return them as a tree or as a flat list. You can also control the depth of the tree.\n\n Instead of passing uuids, you can also use one of the following aliases for the activeId and rootId parameters to get the respective navigations of your sales channel.\n\n * main-navigation\n * service-navigation\n * footer-navigation", + "operationId": "readNavigationGet", "parameters": [ { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "requestBody": { - "description": "Contains additional metadata which is stored together with the order. It can also contain payment transaction details.", - "content": { - "application/json": { - "schema": { - "properties": { - "customerComment": { - "description": "Adds a comment from the customer to the order.", - "type": "string" - }, - "affiliateCode": { - "description": "The affiliate code can be used to track which referrer the customer came through. An example could be `Price-comparison-company-XY`.", - "type": "string" - }, - "campaignCode": { - "description": "The campaign code is used to track which action the customer came from. An example could be `Summer-Deals`", - "type": "string" - } - }, - "type": "object" - } + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, + "schema": { + "type": "boolean" } - } - }, - "responses": { - "200": { - "description": "Order", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Order" + }, + { + "name": "activeId", + "in": "path", + "description": "Identifier of the active category in the navigation tree (if not used, just set to the same as rootId).", + "required": true, + "schema": { + "oneOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "$ref": "#/components/schemas/NavigationType" } - } + ] } - } - }, - "security": [ + }, { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/checkout/gateway": { - "get": { - "tags": [ - "Gateway" - ], - "summary": "Call the checkout gateway", - "description": "Call the checkout gateway, which is used to manipulate certain aspects of the checkout process (e.g. available payment methods).", - "operationId": "checkoutGateway", - "responses": { - "200": { - "description": "Checkout gateway response", - "content": { - "application/json": { - "schema": { - "properties": { - "paymentMethods": { - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PaymentMethod" - } - } - }, - "type": "object" - }, - "shippingMethods": { - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "type": "object" - }, - "errors": { - "type": "array", - "items": { - "properties": { - "code": { - "description": "Error code", - "type": "string" - }, - "detail": { - "description": "Error detail", - "type": "string" - }, - "blocking": { - "description": "If the error is blocking", - "type": "boolean" - } - } - } - } - } + "name": "rootId", + "in": "path", + "description": "Identifier of the root category for your desired navigation tree. You can use it to fetch sub-trees of your navigation tree.", + "required": true, + "schema": { + "oneOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "$ref": "#/components/schemas/NavigationType" } - } + ] } - } - }, - "security": [ - { - "ApiKey": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } - ] - } - }, - "/seo-url": { - "post": { - "tags": [ - "Sitemap & Routes", - "Endpoints supporting Criteria " - ], - "summary": "Fetch SEO routes", - "description": "Perform a filtered search for seo urls.", - "operationId": "readSeoUrl", - "parameters": [ + }, { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "name": "depth", + "in": "query", + "description": "Determines the depth of fetched navigation levels.", "required": false, "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" + "type": "integer", + "format": "int32" } }, { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] + "name": "buildTree", + "in": "query", + "description": "Return the categories as a tree or as a flat list.", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "object" } - } - } - }, - "responses": { - "200": { - "$ref": "#/components/responses/SeoUrlListResponse" + }, + "style": "deepObject", + "explode": true }, - "404": { - "$ref": "#/components/responses/404" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - }, - "get": { - "tags": [ - "Sitemap & Routes", - "Endpoints supporting Criteria " - ], - "summary": "Fetch SEO routes", - "description": "Perform a filtered search for seo urls.", - "operationId": "readSeoUrlGet", - "parameters": [ { "$ref": "#/components/parameters/criteriaPage" }, @@ -21704,9 +20049,6 @@ { "$ref": "#/components/parameters/criteriaAggregations" }, - { - "$ref": "#/components/parameters/criteriaFields" - }, { "$ref": "#/components/parameters/criteriaGrouping" }, @@ -21720,7 +20062,7 @@ "$ref": "#/components/parameters/criteriaExcludes" }, { - "$ref": "#/components/parameters/CompressedCriteria" + "$ref": "#/components/parameters/CompressedNoneFieldsCriteria" }, { "$ref": "#/components/parameters/swLanguageId" @@ -21728,133 +20070,304 @@ ], "responses": { "200": { - "$ref": "#/components/responses/SeoUrlListResponse" + "description": "All available navigations", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NavigationRouteResponse" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." }, "404": { - "$ref": "#/components/responses/404" + "$ref": "#/components/responses/404", + "description": "The `activeId` or `rootId` does not reference a category that is reachable in this sales channel." + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/newsletter/confirm": { + "post": { + "tags": [ + "Newsletter" + ], + "summary": "Confirm a newsletter registration", + "description": "You have to use the hash from the link sent out via email to confirm the user registration.", + "operationId": "confirmNewsletter", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "hash", + "em" + ], + "properties": { + "hash": { + "description": "Hash parameter from link the in the confirmation mail", + "type": "string" + }, + "em": { + "description": "Email hash parameter from the link in the confirmation mail", + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "The newsletter confirmation was successful.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + } + }, + "security": [ + { + "ApiKey": [] + } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } + ] + } + }, + "/newsletter/subscribe": { + "post": { + "tags": [ + "Newsletter" + ], + "summary": "Create or remove a newsletter subscription", + "description": "This route is used to create/remove/confirm a newsletter subscription.\n\nThe `option` property controls what should happen:\n* `direct`: The subscription is directly active and does not need a confirmation.\n* `subscribe`: An email will be send to the provided email address containing a link to the /newsletter/confirm route.\nThe subscription is only successful, if the /newsletter/confirm route is called with the generated hashes.\n* `unsubscribe`: The email address will be removed from the newsletter subscriptions.\n* `confirmSubscribe`: Confirms the newsletter subscription for the provided email address.", + "operationId": "subscribeToNewsletter", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "email", + "option", + "storefrontUrl" + ], + "properties": { + "email": { + "description": "Email address that will receive the confirmation and the newsletter.", + "type": "string" + }, + "option": { + "description": "Defines what should be done.", + "type": "string" + }, + "storefrontUrl": { + "description": "Url of the storefront of the shop. This will be used for generating the link to the /newsletter/confirm inside the confirm email.", + "type": "string" + }, + "salutationId": { + "description": "Identifier of the salutation.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "firstName": { + "description": "First name", + "type": "string" + }, + "lastName": { + "description": "Last name", + "type": "string" + }, + "street": { + "description": "Street", + "type": "string" + }, + "city": { + "description": "City", + "type": "string" + }, + "zipCode": { + "description": "Zip code", + "type": "string" + }, + "languageId": { + "description": "Identifier of the language.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "customFields": { + "description": "Custom field data that should be added to the subscription.", + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "application/json": { + "schema": { + "required": [ + "success", + "status" + ], + "properties": { + "success": { + "description": "Indicates whether the subscribe request was successful.", + "type": "boolean" + }, + "status": { + "$ref": "#/components/schemas/NewsletterStatus" + } + }, + "type": "object" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ { "ApiKey": [] } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ] } }, - "/currency": { + "/newsletter/unsubscribe": { "post": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " - ], - "summary": "Fetch currencies", - "description": "Perform a filtered search for currencies.", - "operationId": "readCurrency", - "parameters": [ - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } - }, - { - "$ref": "#/components/parameters/swLanguageId" - } + "Newsletter" ], + "summary": "Remove a newsletter subscription", + "description": "Removes a newsletter recipient from the mailing lists.", + "operationId": "unsubscribeToNewsletter", "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/NoneFieldsCriteria" + "required": [ + "email" + ], + "properties": { + "email": { + "description": "Email address that should be removed from the mailing lists.", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "$ref": "#/components/responses/CurrencyListResponse" + "description": "Unsubscribing was successful.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ { "ApiKey": [] } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ] - }, + } + }, + "/_info/openapi3.json": { "get": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "System Info & Health Check" ], - "summary": "Fetch currencies", - "description": "Perform a filtered search for currencies.", - "operationId": "readCurrencyGet", + "summary": "Get OpenAPI Specification", + "description": "Get information about the store API in OpenAPI format.", + "operationId": "api-info", "parameters": [ { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "$ref": "#/components/parameters/criteriaLimit" - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "$ref": "#/components/parameters/CompressedNoneFieldsCriteria" - }, - { - "$ref": "#/components/parameters/swLanguageId" + "name": "type", + "in": "query", + "description": "Type of the api", + "schema": { + "type": "string", + "enum": [ + "jsonapi", + "json" + ] + } } ], "responses": { "200": { - "$ref": "#/components/responses/CurrencyListResponse" + "$ref": "#/components/responses/OpenApi3" + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `type` query parameter is not a supported API type." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing. This endpoint can be opened up by setting `shopware.api.api_browser.auth_required` to `false`." } }, "security": [ @@ -21864,14 +20377,14 @@ ] } }, - "/revocation-request-form": { + "/order/state/cancel": { "post": { "tags": [ - "Content" + "Order" ], - "summary": "Submit a revocation request form message", - "description": "Used for submitting revocation request forms. Be aware that there can be more required fields, depending on the system settings.", - "operationId": "sendRevocationRequestMail", + "summary": "Cancel an order", + "description": "Cancels an order. The order state will be set to 'cancelled'.", + "operationId": "cancelOrder", "parameters": [ { "$ref": "#/components/parameters/swLanguageId" @@ -21882,190 +20395,230 @@ "content": { "application/json": { "schema": { - "required": [ - "email", - "contractNumber" - ], "properties": { - "firstName": { - "description": "First name. This field may be required depending on the system settings.", - "type": "string" - }, - "lastName": { - "description": "Last name. This field may be required depending on the system settings.", - "type": "string" - }, - "email": { - "description": "Email address.", - "type": "string" - }, - "contractNumber": { - "description": "The number of the contract.", - "type": "string" - }, - "comment": { - "description": "The message of the revocation request form.", - "type": "string" - }, - "navigationId": { - "description": "Identifier of the navigation page. Can be used to override the configuration.\nTake a look at the settings of a category containing a revocation form in the administration.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "slotId": { - "description": "Identifier of the cms element.", + "orderId": { + "description": "The identifier of the order to be canceled.", "type": "string", "pattern": "^[0-9a-f]{32}$" - }, - "cmsPageType": { - "description": "Type of the content management page.", - "type": "string" - }, - "entityName": { - "description": "Entity name for slot config.", - "type": "string" } }, - "type": "object" + "type": "object", + "required": [ + "orderId" + ] } } } }, "responses": { "200": { - "description": "Message sent successfully." + "description": "Returns the state of the state machine\n\n example: More information about the state machine can be found in the corresponding guide: [Using the state machine](https://developer.shopware.com/docs/guides/plugins/plugins/checkout/order/using-the-state-machine)", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StateMachineState" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `orderId` parameter is missing." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "403": { + "$ref": "#/components/responses/403", + "description": "No customer is logged in, or the order can no longer be cancelled from its current state." + }, + "404": { + "$ref": "#/components/responses/404", + "description": "No order exists for the given `orderId`." } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/newsletter/confirm": { + "/order": { "post": { "tags": [ - "Newsletter" + "Order", + "Endpoints supporting Criteria " + ], + "summary": "Fetch a list of orders", + "description": "List orders of a customer.\n\n**Available Associations:**\n- `stateMachineState` - Current order state (e.g., open, in_progress, completed, cancelled)\n- `primaryOrderDelivery` - Primary delivery information for the order\n- `primaryOrderTransaction` - Primary payment transaction for the order\n- `orderCustomer` - Customer information associated with the order\n- `currency` - Currency used for the order\n- `language` - Language used when placing the order\n- `addresses` - All addresses associated with the order (billing and shipping)\n- `billingAddress` - Billing address for the order\n- `deliveries` - Delivery information including shipping address and tracking\n- `lineItems` - Order line items (products, discounts, fees)\n- `transactions` - Payment transactions for the order\n- `documents` - Generated documents (invoices, delivery notes, credit notes)\n- `tags` - Tags assigned to the order for organization and filtering", + "operationId": "readOrder", + "parameters": [ + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } ], - "summary": "Confirm a newsletter registration", - "description": "You have to use the hash from the link sent out via email to confirm the user registration.", - "operationId": "confirmNewsletter", "requestBody": { "required": true, "content": { "application/json": { "schema": { - "required": [ - "hash", - "em" - ], - "properties": { - "hash": { - "description": "Hash parameter from link the in the confirmation mail", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/NoneFieldsCriteria" }, - "em": { - "description": "Email hash parameter from the link in the confirmation mail", - "type": "string" + { + "properties": { + "checkPromotion": { + "description": "Check if the payment method of the order is still changeable.", + "type": "boolean" + }, + "filter": { + "type": "array", + "description": "Pass the deepLinkCode criteria filter to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "equals" + ] + }, + "field": { + "type": "string", + "enum": [ + "deepLinkCode" + ] + }, + "value": { + "type": "string" + } + }, + "required": [ + "type", + "field", + "value" + ] + } + ] + } + }, + "email": { + "description": "The email address of the customer. Pass this value to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", + "type": "string", + "format": "email" + }, + "zipcode": { + "description": "The zip/postal code of the billing address of the customer. Pass this value to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", + "type": "string" + }, + "login": { + "description": "If set and when handling a guest order, a context token will be returned in the response header with a logged-in session.", + "type": "boolean" + } + }, + "type": "object" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "The newsletter confirmation was successful.", + "description": "An array of orders and an indicator if the payment of the order can be changed.", + "headers": { + "sw-context-token": { + "description": "Contains sw-context-token value, if login parameter is set to true and a guest order was found and the correct credentials were provided.", + "schema": { + "type": "string" + } + } + }, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/OrderRouteResponse" } } } }, "400": { - "$ref": "#/components/responses/400" + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "403": { + "$ref": "#/components/responses/403", + "description": "No customer is logged in and the request did not provide a `deepLinkCode` with matching guest credentials." + }, + "429": { + "$ref": "#/components/responses/429", + "description": "Too many failed guest authentication attempts for this deep link code and client IP." } }, "security": [ { - "ApiKey": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" + "ApiKey": [], + "ContextToken": [] } ] } }, - "/newsletter/subscribe": { + "/order/payment": { "post": { "tags": [ - "Newsletter" + "Order" + ], + "summary": "Update the payment method of an order", + "description": "Changes the payment method of a specific order. You can use the /order route to find out if the payment method of an order can be changed - take a look at the `paymentChangeable`- array in the response.", + "operationId": "orderSetPayment", + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ], - "summary": "Create or remove a newsletter subscription", - "description": "This route is used to create/remove/confirm a newsletter subscription.\n\nThe `option` property controls what should happen:\n* `direct`: The subscription is directly active and does not need a confirmation.\n* `subscribe`: An email will be send to the provided email address containing a link to the /newsletter/confirm route.\nThe subscription is only successful, if the /newsletter/confirm route is called with the generated hashes.\n* `unsubscribe`: The email address will be removed from the newsletter subscriptions.\n* `confirmSubscribe`: Confirms the newsletter subscription for the provided email address.", - "operationId": "subscribeToNewsletter", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "email", - "option", - "storefrontUrl" + "paymentMethodId", + "orderId" ], "properties": { - "email": { - "description": "Email address that will receive the confirmation and the newsletter.", - "type": "string" - }, - "option": { - "description": "Defines what should be done.", - "type": "string" - }, - "storefrontUrl": { - "description": "Url of the storefront of the shop. This will be used for generating the link to the /newsletter/confirm inside the confirm email.", - "type": "string" - }, - "salutationId": { - "description": "Identifier of the salutation.", + "paymentMethodId": { + "description": "The identifier of the paymentMethod to be set", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "firstName": { - "description": "First name", - "type": "string" - }, - "lastName": { - "description": "Last name", - "type": "string" - }, - "street": { - "description": "Street", - "type": "string" - }, - "city": { - "description": "City", - "type": "string" - }, - "zipCode": { - "description": "Zip code", - "type": "string" - }, - "languageId": { - "description": "Identifier of the language.", + "orderId": { + "description": "The identifier of the order.", "type": "string", "pattern": "^[0-9a-f]{32}$" - }, - "customFields": { - "description": "Custom field data that should be added to the subscription.", - "type": "string" } }, "type": "object" @@ -22075,123 +20628,153 @@ }, "responses": { "200": { - "description": "Success", + "description": "Successfully updated the payment method of the order.", "content": { "application/json": { "schema": { - "required": [ - "success", - "status" - ], - "properties": { - "success": { - "description": "Indicates whether the subscribe request was successful.", - "type": "boolean" - }, - "status": { - "$ref": "#/components/schemas/NewsletterStatus" - } - }, - "type": "object" + "$ref": "#/components/schemas/SuccessResponse" } } } }, "400": { - "$ref": "#/components/responses/400" + "$ref": "#/components/responses/400", + "description": "The `orderId` is not a valid UUID." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "403": { + "$ref": "#/components/responses/403", + "description": "No customer is logged in, or the payment method of this order can no longer be changed." + }, + "404": { + "$ref": "#/components/responses/404", + "description": "The order, its transaction, or the requested payment method was not found." } }, "security": [ { - "ApiKey": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" + "ApiKey": [], + "ContextToken": [] } ] } }, - "/newsletter/unsubscribe": { - "post": { + "/order/download/{orderId}/{downloadId}": { + "get": { "tags": [ - "Newsletter" + "Order" ], - "summary": "Remove a newsletter subscription", - "description": "Removes a newsletter recipient from the mailing lists.", - "operationId": "unsubscribeToNewsletter", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "email" - ], - "properties": { - "email": { - "description": "Email address that should be removed from the mailing lists.", - "type": "string" - } - }, - "type": "object" - } + "summary": "Download a purchased file", + "description": "Download a file included in the given order and with the given id. Access must be granted.", + "operationId": "orderDownloadFile", + "parameters": [ + { + "name": "orderId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "downloadId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/swLanguageId" } - }, + ], "responses": { "200": { - "description": "Unsubscribing was successful.", + "description": "An arbitrary binary file.", "content": { - "application/json": { + "application/octet-stream": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "type": "string", + "format": "binary" } } } }, "400": { - "$ref": "#/components/responses/400" + "$ref": "#/components/responses/400", + "description": "The `orderId` or `downloadId` route parameter is missing." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "403": { + "$ref": "#/components/responses/403", + "description": "No customer is logged in." + }, + "404": { + "$ref": "#/components/responses/404", + "description": "The download does not exist, or does not belong to a paid order of the logged in customer." } }, "security": [ { - "ApiKey": [] - } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" + "ApiKey": [], + "ContextToken": [] } ] } }, - "/media": { + "/payment-method": { "post": { "tags": [ - "Content" + "Payment Method", + "Endpoints supporting Criteria " + ], + "summary": "Loads all available payment methods", + "operationId": "readPaymentMethod", + "parameters": [ + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, + { + "$ref": "#/components/parameters/swLanguageId" + } ], - "summary": "Fetch and resolve Media Entities", - "description": "Fetch one or multiple Media Entities with the corresponding Identifier.", - "operationId": "readMedia", "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "properties": { - "ids": { - "description": "Identifier (UUID) of the media entity to be fetched.", - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + }, + { + "properties": { + "onlyAvailable": { + "description": "List only available", + "type": "boolean" + } + }, + "type": "object" } - }, - "type": "object", - "required": [ - "ids" ] } } @@ -22199,53 +20782,78 @@ }, "responses": { "200": { - "description": "The loaded MediaCollection containing the requested Media Entities.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Media" - } - } - } - } + "$ref": "#/components/responses/PaymentMethodListResponse" }, - "404": { - "$ref": "#/components/responses/404" + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ { "ApiKey": [] } - ], - "parameters": [ - { - "$ref": "#/components/parameters/swLanguageId" - } ] }, "get": { "tags": [ - "Content" + "Payment Method", + "Endpoints supporting Criteria " ], - "summary": "Fetch and resolve Media Entities", - "description": "Fetch one or multiple Media Entities with the corresponding Identifier.", - "operationId": "readMediaGet", + "summary": "Loads all available payment methods", + "operationId": "readPaymentMethodGet", "parameters": [ { - "name": "ids[]", - "in": "query", - "description": "Identifier (UUID) of the media entity to be fetched.", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" }, { "$ref": "#/components/parameters/swLanguageId" @@ -22253,20 +20861,15 @@ ], "responses": { "200": { - "description": "The loaded MediaCollection containing the requested Media Entities.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Media" - } - } - } - } + "$ref": "#/components/responses/PaymentMethodListResponse" }, - "404": { - "$ref": "#/components/responses/404" + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ @@ -22276,47 +20879,30 @@ ] } }, - "/breadcrumb/{id}": { + "/product-export/{accessKey}/{fileName}": { "get": { "tags": [ - "Experimental", - "Breadcrumb" + "Product" ], - "summary": "Fetch a breadcrumb", - "description": "Perform search to get category or product breadcrumb. \n\nExperimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", - "operationId": "readBreadcrumb", + "summary": "Export product export", + "operationId": "readProductExport", "parameters": [ { - "name": "id", + "name": "accessKey", "in": "path", - "description": "UUID for product or category", + "description": "Access Key", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "type", - "in": "query", - "description": "Type: category or product (optional - default: product)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "product", - "category" - ] + "type": "string" } }, { - "name": "referrerCategoryId", - "in": "query", - "description": "UUID for referrer category only used for product breadcrumb", - "required": false, + "name": "fileName", + "in": "path", + "description": "File Name", + "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } }, { @@ -22325,58 +20911,112 @@ ], "responses": { "200": { - "description": "Search result containing SeoUrl\\'s to be used as breadcrumb.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/BreadcrumbCollection" - } - } - } + "description": "" }, "400": { - "$ref": "#/components/responses/400" + "$ref": "#/components/responses/400", + "description": "The product export has no sales channel domain assigned." + }, + "404": { + "$ref": "#/components/responses/404", + "description": "No product export exists for the given `accessKey` and `fileName`, or the export file could not be generated." } }, - "security": [ - { - "ApiKey": [] - } - ] + "security": [] } }, - "/customer-group-registration/config/{customerGroupId}": { - "get": { + "/product-listing/{categoryId}": { + "post": { "tags": [ - "Login & Registration" + "Product" ], - "summary": "Fetch registration settings for customer group", - "operationId": "getCustomerGroupRegistrationInfo", + "summary": "Fetch a product listing by category", + "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", + "operationId": "readProductListing", "parameters": [ { - "name": "customerGroupId", + "name": "categoryId", "in": "path", - "description": "Customer group id", + "description": "Identifier of a category.", "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "p", + "in": "query", + "description": "The page number to fetch.", + "required": false, + "schema": { + "type": "integer" + } + }, + { + "name": "sw-include-seo-urls", + "in": "header", + "description": "Determines if the response must contain a SeoUrl entity for a product entity", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, "schema": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "enum": [ + "0", + "1" + ], + "default": "1" } }, { "$ref": "#/components/parameters/swLanguageId" } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/ProductListingCriteria" + }, + { + "$ref": "#/components/schemas/ProductListingFlags" + } + ] + } + } + } + }, "responses": { "200": { - "description": "Returns the customer group including registration settings.", + "description": "Returns a product listing containing all products and additional fields to display a listing.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerGroup" + "$ref": "#/components/schemas/ProductListingResult" } } } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "404": { + "$ref": "#/components/responses/404", + "description": "No category exists for the given `categoryId` in this sales channel." } }, "security": [ @@ -22384,41 +21024,204 @@ "ApiKey": [] } ] - } - }, - "/product-export/{accessKey}/{fileName}": { + }, "get": { "tags": [ "Product" ], - "summary": "Export product export", - "operationId": "readProductExport", + "summary": "Fetch a product listing by category", + "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `openGraphMedia` - Open Graph image for social media sharing\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", + "operationId": "readProductListingGet", "parameters": [ { - "name": "accessKey", + "name": "categoryId", "in": "path", - "description": "Access Key", + "description": "Identifier of a category.", "required": true, "schema": { "type": "string" } }, { - "name": "fileName", - "in": "path", - "description": "File Name", - "required": true, + "name": "sw-include-seo-urls", + "in": "header", + "description": "Determines if the response must contain a SeoUrl entity for a product entity", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "name": "limit", + "in": "query", + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "schema": { + "type": "integer", + "minimum": 0 + } + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "name": "order", + "in": "query", + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "schema": { + "type": "string" + } + }, + { + "name": "p", + "in": "query", + "description": "Search result page", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "manufacturer", + "in": "query", + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "min-price", + "in": "query", + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "max-price", + "in": "query", + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "rating", + "in": "query", + "description": "Filter products with a minimum average rating.", + "schema": { + "type": "integer" + } + }, + { + "name": "shipping-free", + "in": "query", + "description": "Filters products that are marked as shipping-free.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "properties", + "in": "query", + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", "schema": { "type": "string" } }, + { + "name": "reduce-aggregations", + "in": "query", + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + { + "$ref": "#/components/parameters/noAggregations" + }, + { + "$ref": "#/components/parameters/onlyAggregations" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" + }, { "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "description": "" + "description": "Returns a product listing containing all products and additional fields to display a listing.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "404": { + "$ref": "#/components/responses/404", + "description": "No category exists for the given `categoryId` in this sales channel." } }, "security": [ @@ -22469,6 +21272,14 @@ } } } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ @@ -22517,6 +21328,14 @@ } } } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ @@ -22614,6 +21433,18 @@ } } } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "404": { + "$ref": "#/components/responses/404", + "description": "No product exists for the given `productId` in this sales channel." } }, "security": [ @@ -22726,6 +21557,18 @@ } } } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "404": { + "$ref": "#/components/responses/404", + "description": "No product exists for the given `productId` in this sales channel." } }, "security": [ @@ -22780,6 +21623,14 @@ "responses": { "200": { "$ref": "#/components/responses/ProductListResponse" + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ @@ -22852,6 +21703,14 @@ "responses": { "200": { "$ref": "#/components/responses/ProductListResponse" + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ @@ -22937,6 +21796,18 @@ } } } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "403": { + "$ref": "#/components/responses/403", + "description": "Product reviews are disabled for this sales channel." } }, "security": [ @@ -23040,6 +21911,18 @@ } } } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "403": { + "$ref": "#/components/responses/403", + "description": "Product reviews are disabled for this sales channel." } }, "security": [ @@ -23112,6 +21995,22 @@ "responses": { "200": { "description": "Success response indicating the review was saved successfully." + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The submitted review failed validation, e.g. a missing title or content, or a rating outside the allowed range." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "403": { + "$ref": "#/components/responses/403", + "description": "No customer is logged in, the logged in customer is a guest, or product reviews are disabled for this sales channel." + }, + "404": { + "$ref": "#/components/responses/404", + "description": "No product exists for the given `productId` in this sales channel." } }, "security": [ @@ -23164,6 +22063,10 @@ }, "400": { "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ @@ -23237,335 +22140,94 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/FindProductVariantRouteResponse" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - }, - "get": { - "tags": [ - "Product" - ], - "summary": "Search for a matching variant by product options.", - "description": "Performs a search for product variants and returns the best matching variant.", - "operationId": "searchProductVariantIdsGet", - "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Product ID", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "options[]", - "in": "query", - "description": "The options parameter for the variant to find. Array of option IDs.", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - { - "name": "switchedGroup", - "in": "query", - "description": "The id of the option group that has been switched.", - "required": false, - "schema": { - "type": "string" - } - }, - { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "responses": { - "200": { - "description": "Returns an FoundCombination struct containing the ids matching the search.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/FindProductVariantRouteResponse" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/search-suggest": { - "post": { - "tags": [ - "Product" - ], - "summary": "Search for products (suggest)", - "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", - "operationId": "searchSuggest", - "parameters": [ - { - "name": "p", - "in": "query", - "description": "The page number to fetch.", - "required": false, - "schema": { - "type": "integer" - } - }, - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } - }, - { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "required": [ - "search" - ], - "properties": { - "search": { - "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/ProductListingCriteria" - }, - { - "$ref": "#/components/schemas/ProductListingFlags" - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProductListingResult" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - }, - "get": { - "tags": [ - "Product" - ], - "summary": "Search for products (suggest)", - "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", - "operationId": "searchSuggestGet", - "parameters": [ - { - "name": "search", - "in": "query", - "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "$ref": "#/components/parameters/criteriaPage" - }, - { - "name": "limit", - "in": "query", - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "schema": { - "type": "integer", - "minimum": 0 - } - }, - { - "$ref": "#/components/parameters/criteriaTerm" - }, - { - "$ref": "#/components/parameters/criteriaFilter" - }, - { - "$ref": "#/components/parameters/criteriaIds" - }, - { - "$ref": "#/components/parameters/criteriaQuery" - }, - { - "$ref": "#/components/parameters/criteriaAssociations" - }, - { - "$ref": "#/components/parameters/criteriaPostFilter" - }, - { - "$ref": "#/components/parameters/criteriaSort" - }, - { - "$ref": "#/components/parameters/criteriaAggregations" - }, - { - "$ref": "#/components/parameters/criteriaFields" - }, - { - "$ref": "#/components/parameters/criteriaGrouping" - }, - { - "$ref": "#/components/parameters/criteriaTotalCountMode" - }, - { - "$ref": "#/components/parameters/criteriaIncludes" - }, - { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "name": "order", - "in": "query", - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "schema": { - "type": "string" - } - }, - { - "name": "p", - "in": "query", - "description": "Search result page", - "schema": { - "type": "integer", - "default": 1 - } - }, - { - "name": "manufacturer", - "in": "query", - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", - "schema": { - "type": "string" + "$ref": "#/components/schemas/FindProductVariantRouteResponse" + } + } } }, - { - "name": "min-price", - "in": "query", - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } + "400": { + "$ref": "#/components/responses/400", + "description": "The `options` parameter contains a value that is not a string." }, - { - "name": "max-price", - "in": "query", - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." }, + "404": { + "$ref": "#/components/responses/404", + "description": "No variant of the product matches the given options." + } + }, + "security": [ { - "name": "rating", - "in": "query", - "description": "Filter products with a minimum average rating.", - "schema": { - "type": "integer" - } - }, + "ApiKey": [] + } + ] + }, + "get": { + "tags": [ + "Product" + ], + "summary": "Search for a matching variant by product options.", + "description": "Performs a search for product variants and returns the best matching variant.", + "operationId": "searchProductVariantIdsGet", + "parameters": [ { - "name": "shipping-free", - "in": "query", - "description": "Filters products that are marked as shipping-free.", + "name": "productId", + "in": "path", + "description": "Product ID", + "required": true, "schema": { - "type": "boolean", - "default": false + "type": "string" } }, { - "name": "properties", + "name": "options[]", "in": "query", - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "description": "The options parameter for the variant to find. Array of option IDs.", + "required": true, "schema": { - "type": "string" + "type": "array", + "items": { + "type": "string" + } } }, { - "name": "reduce-aggregations", + "name": "switchedGroup", "in": "query", - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "description": "The id of the option group that has been switched.", + "required": false, "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] + "type": "string" } }, - { - "$ref": "#/components/parameters/noAggregations" - }, - { - "$ref": "#/components/parameters/onlyAggregations" - }, { "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", + "description": "Returns an FoundCombination struct containing the ids matching the search.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "$ref": "#/components/schemas/FindProductVariantRouteResponse" } } } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `options` parameter contains a value that is not a string." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "404": { + "$ref": "#/components/responses/404", + "description": "No variant of the product matches the given options." } }, "security": [ @@ -23575,25 +22237,103 @@ ] } }, - "/landing-page/{landingPageId}": { + "/revocation-request-form": { "post": { "tags": [ - "Content", - "Endpoints supporting Criteria " + "Content" ], - "summary": "Fetch a landing page with the resolved CMS page", - "description": "Loads a landing page by its identifier and resolves the CMS page.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `cmsPage` - CMS page layout for the landing page\n- `seoUrls` - SEO-friendly URLs for the landing page across different sales channels", - "operationId": "readLandingPage", + "summary": "Submit a revocation request form message", + "description": "Used for submitting revocation request forms. Be aware that there can be more required fields, depending on the system settings.", + "operationId": "sendRevocationRequestMail", "parameters": [ { - "name": "landingPageId", - "in": "path", - "description": "Identifier of the landing page.", - "required": true, - "schema": { - "type": "string" + "$ref": "#/components/parameters/swLanguageId" + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "email", + "contractNumber" + ], + "properties": { + "firstName": { + "description": "First name. This field may be required depending on the system settings.", + "type": "string" + }, + "lastName": { + "description": "Last name. This field may be required depending on the system settings.", + "type": "string" + }, + "email": { + "description": "Email address.", + "type": "string" + }, + "contractNumber": { + "description": "The number of the contract.", + "type": "string" + }, + "comment": { + "description": "The message of the revocation request form.", + "type": "string" + }, + "navigationId": { + "description": "Identifier of the navigation page. Can be used to override the configuration.\nTake a look at the settings of a category containing a revocation form in the administration.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "slotId": { + "description": "Identifier of the cms element.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "cmsPageType": { + "description": "Type of the content management page.", + "type": "string" + }, + "entityName": { + "description": "Entity name for slot config.", + "type": "string" + } + }, + "type": "object" + } } + } + }, + "responses": { + "200": { + "description": "Message sent successfully." }, + "400": { + "$ref": "#/components/responses/400", + "description": "The submitted revocation request data failed validation, e.g. a missing email address or order number." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/salutation": { + "post": { + "tags": [ + "System & Context", + "Endpoints supporting Criteria " + ], + "summary": "Fetch salutations", + "description": "Fetches salutations with a criteria obj.", + "operationId": "readSalutation", + "parameters": [ { "name": "sw-include-search-info", "in": "header", @@ -23613,28 +22353,13 @@ } ], "requestBody": { + "required": false, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Criteria" - }, - { - "allOf": [ - { - "properties": { - "slots": { - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/ProductListingCriteria" - } - ] } ] } @@ -23643,17 +22368,15 @@ }, "responses": { "200": { - "description": "The loaded landing page with cms page", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/LandingPage" - } - } - } + "$ref": "#/components/responses/SalutationListResponse" }, - "404": { - "$ref": "#/components/responses/404" + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ @@ -23664,47 +22387,18 @@ }, "get": { "tags": [ - "Content", + "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch a landing page with the resolved CMS page", - "description": "Loads a landing page by its identifier and resolves the CMS page.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `cmsPage` - CMS page layout for the landing page\n- `seoUrls` - SEO-friendly URLs for the landing page across different sales channels", - "operationId": "readLandingPageGet", - "parameters": [ - { - "name": "landingPageId", - "in": "path", - "description": "Identifier of the landing page.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } - }, + "summary": "Fetch salutations", + "description": "Perform a filtered search for salutations.", + "operationId": "readSalutationGet", + "parameters": [ { "$ref": "#/components/parameters/criteriaPage" }, { - "name": "limit", - "in": "query", - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "schema": { - "type": "integer", - "minimum": 0 - } + "$ref": "#/components/parameters/criteriaLimit" }, { "$ref": "#/components/parameters/criteriaTerm" @@ -23746,88 +22440,117 @@ "$ref": "#/components/parameters/criteriaExcludes" }, { - "name": "order", - "in": "query", - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/CompressedCriteria" }, { - "name": "p", - "in": "query", - "description": "Search result page", - "schema": { - "type": "integer", - "default": 1 - } + "$ref": "#/components/parameters/swLanguageId" + } + ], + "responses": { + "200": { + "$ref": "#/components/responses/SalutationListResponse" }, - { - "name": "manufacturer", - "in": "query", - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", - "schema": { - "type": "string" - } + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + } + }, + "security": [ { - "name": "min-price", - "in": "query", - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, + "ApiKey": [] + } + ] + } + }, + "/script/{hook}": { + "get": { + "tags": [ + "API", + "Script", + "App" + ], + "summary": "Access point for different api logics which are provided by apps over script hooks", + "operationId": "getScriptStoreApiRoute", + "parameters": [ { - "name": "max-price", - "in": "query", - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "name": "hook", + "in": "path", + "description": "Dynamic hook which used to build the hook name", + "required": true, "schema": { - "type": "integer", - "minimum": 0, - "default": 0 + "type": "string" } }, { - "name": "rating", - "in": "query", - "description": "Filter products with a minimum average rating.", - "schema": { - "type": "integer" + "$ref": "#/components/parameters/swLanguageId" + } + ], + "responses": { + "200": { + "description": "Returns different structures of results based on the called script.", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "type": "object", + "additionalProperties": true + }, + { + "type": "null" + } + ] + } + }, + "application/vnd.api+json": { + "schema": { + "oneOf": [ + { + "type": "object", + "additionalProperties": true + }, + { + "type": "null" + } + ] + } + } } }, - { - "name": "shipping-free", - "in": "query", - "description": "Filters products that are marked as shipping-free.", - "schema": { - "type": "boolean", - "default": false - } + "204": { + "description": "No data by default" }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + } + }, + "security": [ { - "name": "properties", - "in": "query", - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", - "schema": { - "type": "string" - } - }, + "ApiKey": [] + } + ] + }, + "post": { + "tags": [ + "API", + "Script", + "App" + ], + "summary": "Access point for different api logics which are provided by apps over script hooks", + "operationId": "postScriptStoreApiRoute", + "parameters": [ { - "name": "reduce-aggregations", - "in": "query", - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "name": "hook", + "in": "path", + "description": "Dynamic hook which used to build the hook name", + "required": true, "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] + "type": "string" } }, { @@ -23836,17 +22559,42 @@ ], "responses": { "200": { - "description": "The loaded landing page with cms page", + "description": "Returns different structures of results based on the called script.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LandingPage" + "oneOf": [ + { + "type": "object", + "additionalProperties": true + }, + { + "type": "null" + } + ] + } + }, + "application/vnd.api+json": { + "schema": { + "oneOf": [ + { + "type": "object", + "additionalProperties": true + }, + { + "type": "null" + } + ] } } } }, - "404": { - "$ref": "#/components/responses/404" + "204": { + "description": "No data by default" + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ @@ -23856,16 +22604,24 @@ ] } }, - "/language": { + "/search-suggest": { "post": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Product" ], - "summary": "Fetch languages", - "description": "Perform a filtered search for languages.\n\n**Available Associations:**\n- `locale` - Locale defining regional settings (date, time, number formats)\n- `translationCode` - Locale used for translating content\n- `children` - Child languages inheriting from this parent language", - "operationId": "readLanguages", + "summary": "Search for products (suggest)", + "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", + "operationId": "searchSuggest", "parameters": [ + { + "name": "p", + "in": "query", + "description": "The page number to fetch.", + "required": false, + "schema": { + "type": "integer" + } + }, { "name": "sw-include-search-info", "in": "header", @@ -23885,13 +22641,28 @@ } ], "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/Criteria" + "required": [ + "search" + ], + "properties": { + "search": { + "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/ProductListingCriteria" + }, + { + "$ref": "#/components/schemas/ProductListingFlags" } ] } @@ -23900,7 +22671,22 @@ }, "responses": { "200": { - "$ref": "#/components/responses/LanguageListResponse" + "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ @@ -23911,18 +22697,32 @@ }, "get": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Product" ], - "summary": "Fetch languages", - "description": "Perform a filtered search for languages.\n\n**Available Associations:**\n- `locale` - Locale defining regional settings (date, time, number formats)\n- `translationCode` - Locale used for translating content\n- `children` - Child languages inheriting from this parent language", - "operationId": "readLanguagesGet", + "summary": "Search for products (suggest)", + "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", + "operationId": "searchSuggestGet", "parameters": [ + { + "name": "search", + "in": "query", + "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", + "required": true, + "schema": { + "type": "string" + } + }, { "$ref": "#/components/parameters/criteriaPage" }, { - "$ref": "#/components/parameters/criteriaLimit" + "name": "limit", + "in": "query", + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "schema": { + "type": "integer", + "minimum": 0 + } }, { "$ref": "#/components/parameters/criteriaTerm" @@ -23964,7 +22764,95 @@ "$ref": "#/components/parameters/criteriaExcludes" }, { - "$ref": "#/components/parameters/CompressedCriteria" + "name": "order", + "in": "query", + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "schema": { + "type": "string" + } + }, + { + "name": "p", + "in": "query", + "description": "Search result page", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "manufacturer", + "in": "query", + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "min-price", + "in": "query", + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "max-price", + "in": "query", + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "rating", + "in": "query", + "description": "Filter products with a minimum average rating.", + "schema": { + "type": "integer" + } + }, + { + "name": "shipping-free", + "in": "query", + "description": "Filters products that are marked as shipping-free.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "properties", + "in": "query", + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "reduce-aggregations", + "in": "query", + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + { + "$ref": "#/components/parameters/noAggregations" + }, + { + "$ref": "#/components/parameters/onlyAggregations" }, { "$ref": "#/components/parameters/swLanguageId" @@ -23972,7 +22860,22 @@ ], "responses": { "200": { - "$ref": "#/components/responses/LanguageListResponse" + "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ @@ -23982,23 +22885,31 @@ ] } }, - "/cms/{id}": { + "/search": { "post": { "tags": [ - "Content" + "Product" ], - "summary": "Fetch and resolve a CMS page", - "description": "Loads a content management page by its identifier and resolve the slot data. This could be media files, product listing and so on.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `sections` - Content sections within the CMS page (layout blocks containing slots)\n- `previewMedia` - Preview image for the CMS page in admin panel and page selection\n- `landingPages` - Landing pages using this CMS layout", - "operationId": "readCms", + "summary": "Search for products", + "description": "Performs a search for products which can be used to display a product listing.", + "operationId": "searchPage", "parameters": [ { - "name": "id", - "in": "path", - "description": "Identifier of the CMS page to be resolved", - "required": true, + "name": "p", + "in": "query", + "description": "The page number to fetch.", + "required": false, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "integer" + } + }, + { + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "in": "header", + "name": "sw-include-seo-urls", + "required": false, + "schema": { + "type": "boolean" } }, { @@ -24026,8 +22937,8 @@ "allOf": [ { "properties": { - "slots": { - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", + "search": { + "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", "type": "string" } }, @@ -24035,6 +22946,9 @@ }, { "$ref": "#/components/schemas/ProductListingCriteria" + }, + { + "$ref": "#/components/schemas/ProductListingFlags" } ] } @@ -24043,17 +22957,22 @@ }, "responses": { "200": { - "description": "The loaded cms page", + "description": "Returns a product listing containing all products and additional fields to display a listing.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CmsPage" + "$ref": "#/components/schemas/ProductListingResult" } } } }, - "404": { - "$ref": "#/components/responses/404" + "400": { + "$ref": "#/components/responses/400", + "description": "The `search` parameter is missing, or the `Criteria` sent with the request is invalid." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ @@ -24064,26 +22983,26 @@ }, "get": { "tags": [ - "Content" + "Product" ], - "summary": "Fetch and resolve a CMS page", - "description": "Loads a content management page by its identifier and resolve the slot data. This could be media files, product listing and so on.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `sections` - Content sections within the CMS page (layout blocks containing slots)\n- `previewMedia` - Preview image for the CMS page in admin panel and page selection\n- `landingPages` - Landing pages using this CMS layout", - "operationId": "readCmsGet", + "summary": "Search for products", + "description": "Performs a search for products which can be used to display a product listing.", + "operationId": "searchPageGet", "parameters": [ { - "name": "id", - "in": "path", - "description": "Identifier of the CMS page to be resolved", - "required": true, + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "in": "header", + "name": "sw-include-seo-urls", + "required": false, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "boolean" } }, { - "name": "slots", + "name": "search", "in": "query", - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", + "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", + "required": false, "schema": { "type": "string" } @@ -24225,87 +23144,51 @@ } }, { - "$ref": "#/components/parameters/swLanguageId" - } - ], - "responses": { - "200": { - "description": "The loaded cms page", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CmsPage" - } - } - } + "$ref": "#/components/parameters/noAggregations" }, - "404": { - "$ref": "#/components/responses/404" - } - }, - "security": [ { - "ApiKey": [] + "$ref": "#/components/parameters/onlyAggregations" + }, + { + "$ref": "#/components/parameters/swLanguageId" } - ] - } - }, - "/_info/routes": { - "get": { - "summary": "Get API routes", - "operationId": "getRoutes", - "tags": [ - "System Info & Health Check" ], "responses": { - "200": { - "description": "Successful operation", - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "endpoints" - ], - "properties": { - "endpoints": { - "type": "array", - "items": { - "type": "object", - "required": [ - "methods", - "path" - ], - "properties": { - "methods": { - "type": "array", - "items": { - "type": "string" - } - }, - "path": { - "type": "string" - } - } - } - } - } + "200": { + "description": "Returns a product listing containing all products and additional fields to display a listing.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductListingResult" } } } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `search` parameter is missing, or the `Criteria` sent with the request is invalid." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } - } + }, + "security": [ + { + "ApiKey": [] + } + ] } }, - "/category": { + "/seo-url": { "post": { "tags": [ - "Category", + "Sitemap & Routes", "Endpoints supporting Criteria " ], - "summary": "Fetch a list of categories", - "description": "Perform a filtered search for categories.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", - "operationId": "readCategoryList", + "summary": "Fetch SEO routes", + "description": "Perform a filtered search for seo urls.", + "operationId": "readSeoUrl", "parameters": [ { "name": "sw-include-search-info", @@ -24341,7 +23224,18 @@ }, "responses": { "200": { - "$ref": "#/components/responses/CategoryListResponse" + "$ref": "#/components/responses/SeoUrlListResponse" + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -24352,12 +23246,12 @@ }, "get": { "tags": [ - "Category", + "Sitemap & Routes", "Endpoints supporting Criteria " ], - "summary": "Fetch a list of categories", - "description": "Perform a filtered search for categories.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", - "operationId": "readCategoryListGet", + "summary": "Fetch SEO routes", + "description": "Perform a filtered search for seo urls.", + "operationId": "readSeoUrlGet", "parameters": [ { "$ref": "#/components/parameters/criteriaPage" @@ -24413,7 +23307,18 @@ ], "responses": { "200": { - "$ref": "#/components/responses/CategoryListResponse" + "$ref": "#/components/responses/SeoUrlListResponse" + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -24423,25 +23328,16 @@ ] } }, - "/category/{navigationId}": { + "/shipping-method": { "post": { "tags": [ - "Category", + "Payment & Shipping", "Endpoints supporting Criteria " ], - "summary": "Fetch a single category", - "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", - "operationId": "readCategory", + "summary": "Fetch shipping methods", + "description": "Perform a filtered search for shipping methods.\n\n**Available Associations:**\n- `prices` - Shipping method price configurations (based on current cart and context)\n- `deliveryTime` - Delivery time information (min/max days, unit)\n- `media` - Media/images associated with the shipping method (loaded by default)\n- `availabilityRule` - Availability rule determining when this method is available\n- `tax` - Tax configuration for the shipping method\n\n**Example with associations:**\n```json\n{\n \"associations\": {\n \"prices\": {},\n \"deliveryTime\": {}\n }\n}\n```\n\nNote: The `prices` association is essential for accessing shipping cost configurations.", + "operationId": "readShippingMethod", "parameters": [ - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, - "schema": { - "type": "boolean" - } - }, { "name": "sw-include-search-info", "in": "header", @@ -24457,21 +23353,11 @@ } }, { - "name": "navigationId", - "in": "path", - "description": "Identifier of the category to be fetched", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "slots", + "name": "onlyAvailable", "in": "query", - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", + "description": "List only available shipping methods. This filters shipping methods methods which can not be used in the actual context because of their availability rule.", "schema": { - "type": "string" + "type": "boolean" } }, { @@ -24479,12 +23365,13 @@ } ], "requestBody": { + "required": false, "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/ProductListingCriteria" + "$ref": "#/components/schemas/Criteria" } ] } @@ -24493,14 +23380,48 @@ }, "responses": { "200": { - "description": "The loaded category with cms page", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Category" + "allOf": [ + { + "required": [ + "elements" + ], + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingMethod" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ @@ -24511,51 +23432,18 @@ }, "get": { "tags": [ - "Category", + "Payment & Shipping", "Endpoints supporting Criteria " ], - "summary": "Fetch a single category", - "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", - "operationId": "readCategoryGet", + "summary": "Fetch shipping methods", + "description": "Perform a filtered search for shipping methods.\n\n**Available Associations:**\n- `prices` - Shipping method price configurations (graduated prices, quantity-based pricing)\n- `deliveryTime` - Delivery time information (min/max days, unit)\n- `media` - Media/images associated with the shipping method (loaded by default)\n- `availabilityRule` - Availability rule determining when this method is available\n- `tax` - Tax configuration for the shipping method\n\nNote: The `prices` association is essential for accessing shipping cost configurations.", + "operationId": "readShippingMethodGet", "parameters": [ - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "navigationId", - "in": "path", - "description": "Identifier of the category to be fetched", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "slots", - "in": "query", - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", - "schema": { - "type": "string" - } - }, { "$ref": "#/components/parameters/criteriaPage" }, { - "name": "limit", - "in": "query", - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "schema": { - "type": "integer", - "minimum": 0 - } + "$ref": "#/components/parameters/criteriaLimit" }, { "$ref": "#/components/parameters/criteriaTerm" @@ -24594,173 +23482,466 @@ "$ref": "#/components/parameters/criteriaIncludes" }, { - "$ref": "#/components/parameters/criteriaExcludes" - }, - { - "name": "order", - "in": "query", - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "schema": { - "type": "string" - } - }, - { - "name": "p", - "in": "query", - "description": "Search result page", - "schema": { - "type": "integer", - "default": 1 - } - }, - { - "name": "manufacturer", - "in": "query", - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", - "schema": { - "type": "string" - } - }, - { - "name": "min-price", - "in": "query", - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "max-price", - "in": "query", - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "schema": { - "type": "integer", - "minimum": 0, - "default": 0 - } - }, - { - "name": "rating", - "in": "query", - "description": "Filter products with a minimum average rating.", - "schema": { - "type": "integer" - } - }, - { - "name": "shipping-free", - "in": "query", - "description": "Filters products that are marked as shipping-free.", - "schema": { - "type": "boolean", - "default": false - } - }, - { - "name": "properties", - "in": "query", - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", - "schema": { - "type": "string" - } - }, - { - "name": "reduce-aggregations", - "in": "query", - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", - "schema": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - }, - { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" + }, + { "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "description": "The loaded category with cms page", + "$ref": "#/components/responses/ShippingMethodListResponse" + }, + "400": { + "$ref": "#/components/responses/400", + "description": "The `Criteria` sent with the request is invalid, e.g. an unknown filter field, sorting field or association." + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/shop-settings": { + "get": { + "tags": [ + "System & Context" + ], + "summary": "Fetch shop settings", + "description": "Returns the sales-channel-resolved subset of the system configuration that headless frontends (e.g. Composable Frontends) need to render the shop consistently with the administration settings. Only UI- and validation-relevant, non-sensitive values are exposed.", + "operationId": "getShopSettings", + "responses": { + "200": { + "description": "Returns the shop settings of the current sales channel.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Category" + "type": "object", + "required": [ + "apiAlias", + "general", + "contactForm", + "loginRegistration", + "cart", + "listing", + "newsletter" + ], + "properties": { + "apiAlias": { + "type": "string", + "const": "shop_settings" + }, + "general": { + "type": "object", + "description": "Shop identity and meta defaults (core.basicInformation)", + "required": [ + "apiAlias", + "shopName", + "metaAuthor", + "metaRobots", + "familyFriendly", + "showRevocationButton" + ], + "properties": { + "apiAlias": { + "type": "string", + "const": "shop_settings_general" + }, + "shopName": { + "type": "string", + "description": "Name of the shop" + }, + "metaAuthor": { + "type": "string", + "description": "Name displayed as the author of the website in search results or on social media (meta author tag)" + }, + "metaRobots": { + "type": "string", + "description": "Default content of the robots meta tag, can be overridden per CMS page", + "default": "index,follow" + }, + "familyFriendly": { + "type": "boolean", + "description": "Whether the \"isFamilyFriendly\" meta tag for search engines is set" + }, + "showRevocationButton": { + "type": "boolean", + "description": "Whether the \"Revoke a contract\" link is shown in the page footer" + } + } + }, + "contactForm": { + "type": "object", + "description": "Form field settings (core.basicInformation), used by the contact form and the online revocation request form", + "required": [ + "apiAlias", + "firstNameFieldRequired", + "lastNameFieldRequired", + "phoneNumberFieldRequired" + ], + "properties": { + "apiAlias": { + "type": "string", + "const": "shop_settings_contact_form" + }, + "firstNameFieldRequired": { + "type": "boolean", + "description": "Whether the first name field has to be filled in to submit the form" + }, + "lastNameFieldRequired": { + "type": "boolean", + "description": "Whether the last name field has to be filled in to submit the form" + }, + "phoneNumberFieldRequired": { + "type": "boolean", + "description": "Whether the phone number field has to be filled in to submit the form" + } + } + }, + "loginRegistration": { + "type": "object", + "description": "Login, registration and address form settings (core.loginRegistration)", + "required": [ + "apiAlias", + "passwordMinLength", + "createCustomerAccountDefault", + "showSalutation", + "showTitleField", + "requireEmailConfirmation", + "requirePasswordConfirmation", + "doubleOptInRegistration", + "doubleOptInGuestOrder", + "showPhoneNumberField", + "phoneNumberFieldRequired", + "showBirthdayField", + "birthdayFieldRequired", + "showAccountTypeSelection", + "showAdditionalAddressField1", + "additionalAddressField1Required", + "showAdditionalAddressField2", + "additionalAddressField2Required", + "addressInputFieldArrangement", + "allowCustomerDeletion", + "requireDataProtectionCheckbox" + ], + "properties": { + "apiAlias": { + "type": "string", + "const": "shop_settings_login_registration" + }, + "passwordMinLength": { + "type": "integer", + "description": "Minimum password length on customer sign-up, also applies to password change and recovery" + }, + "createCustomerAccountDefault": { + "type": "boolean", + "description": "Whether the account creation option is pre-selected in the checkout registration form. If inactive, the customer purchases as a guest by default" + }, + "showSalutation": { + "type": "boolean", + "description": "Whether the salutation field is shown in registration and address forms" + }, + "showTitleField": { + "type": "boolean", + "description": "Whether the title field is shown in registration and address forms" + }, + "requireEmailConfirmation": { + "type": "boolean", + "description": "Whether the email address has to be entered twice to avoid input errors" + }, + "requirePasswordConfirmation": { + "type": "boolean", + "description": "Whether the password has to be entered twice to avoid input errors" + }, + "doubleOptInRegistration": { + "type": "boolean", + "description": "Whether double opt-in is required for new customer registrations. The account is inactive until the emailed confirmation link is opened" + }, + "doubleOptInGuestOrder": { + "type": "boolean", + "description": "Whether double opt-in is required for guest orders" + }, + "showPhoneNumberField": { + "type": "boolean", + "description": "Whether the phone number field is shown in registration and address forms" + }, + "phoneNumberFieldRequired": { + "type": "boolean", + "description": "Whether the phone number field is required" + }, + "showBirthdayField": { + "type": "boolean", + "description": "Whether the birthday field is shown in the registration form" + }, + "birthdayFieldRequired": { + "type": "boolean", + "description": "Whether the birthday field is required" + }, + "showAccountTypeSelection": { + "type": "boolean", + "description": "Whether the selection between a private and a commercial (company) account is shown" + }, + "showAdditionalAddressField1": { + "type": "boolean", + "description": "Whether the additional address line 1 is shown in address forms" + }, + "additionalAddressField1Required": { + "type": "boolean", + "description": "Whether the additional address line 1 is required" + }, + "showAdditionalAddressField2": { + "type": "boolean", + "description": "Whether the additional address line 2 is shown in address forms" + }, + "additionalAddressField2Required": { + "type": "boolean", + "description": "Whether the additional address line 2 is required" + }, + "addressInputFieldArrangement": { + "type": "string", + "description": "Arrangement of the address fields City, ZIP and State. Empty string when not configured, which equals the default arrangement (city-zip-state)", + "enum": [ + "city-zip-state", + "zip-city-state", + "city-state-zip", + "" + ] + }, + "allowCustomerDeletion": { + "type": "boolean", + "description": "Whether customers may delete their own account from the account profile page" + }, + "requireDataProtectionCheckbox": { + "type": "boolean", + "description": "Whether the privacy policy has to be acknowledged via a checkbox on registration and other forms" + } + } + }, + "cart": { + "type": "object", + "description": "Cart and checkout settings (core.cart)", + "required": [ + "apiAlias", + "maxQuantity", + "lineItemAddLimit", + "showDeliveryTime", + "showSubtotal", + "columnTaxInsteadUnitPrice", + "showCustomerComment", + "showTosCheckbox", + "openOffcanvasAfterAddToCart", + "wishlistEnabled", + "logoutGuestAfterCheckout", + "enableOrderRefunds" + ], + "properties": { + "apiAlias": { + "type": "string", + "const": "shop_settings_cart" + }, + "maxQuantity": { + "type": "integer", + "description": "Maximum selectable quantity per line item" + }, + "lineItemAddLimit": { + "type": "integer", + "description": "Maximum number of products that can be added to the cart per minute through the API" + }, + "showDeliveryTime": { + "type": "boolean", + "description": "Whether the delivery time is shown in the cart" + }, + "showSubtotal": { + "type": "boolean", + "description": "Whether the subtotal column is shown in the cart" + }, + "columnTaxInsteadUnitPrice": { + "type": "boolean", + "description": "Whether the checkout confirm page shows a tax column instead of the unit price" + }, + "showCustomerComment": { + "type": "boolean", + "description": "Whether the customer comment field is shown on the checkout confirm page" + }, + "showTosCheckbox": { + "type": "boolean", + "description": "Whether customers are required to agree to the terms and conditions via a checkbox in the checkout" + }, + "openOffcanvasAfterAddToCart": { + "type": "boolean", + "description": "Whether the offcanvas cart should open automatically after adding a product. If disabled, only a success message is supposed to be shown" + }, + "wishlistEnabled": { + "type": "boolean", + "description": "Whether the wishlist feature is enabled" + }, + "logoutGuestAfterCheckout": { + "type": "boolean", + "description": "Whether guest customers are automatically logged out after order completion" + }, + "enableOrderRefunds": { + "type": "boolean", + "description": "Whether order refunds are enabled" + } + } + }, + "listing": { + "type": "object", + "description": "Product listing, search and review settings (core.listing)", + "required": [ + "apiAlias", + "productsPerPage", + "allowBuyInListing", + "showReview", + "reviewsPerPage", + "disableEmptyFilterOptions", + "markAsNew", + "hideCloseoutProductsWhenOutOfStock", + "showVariantOptionInSearchSuggestionResult", + "findBestVariant", + "autoplayVideoInListing", + "beforeListPriceSnippetKey", + "afterListPriceSnippetKey" + ], + "properties": { + "apiAlias": { + "type": "string", + "const": "shop_settings_listing" + }, + "productsPerPage": { + "type": "integer", + "description": "Number of products displayed per page in product listings and search results" + }, + "allowBuyInListing": { + "type": "boolean", + "description": "Whether buy buttons are displayed beneath every product in listings. If disabled, only detail buttons are supposed to be shown" + }, + "showReview": { + "type": "boolean", + "description": "Whether product reviews are shown" + }, + "reviewsPerPage": { + "type": "integer", + "description": "Number of reviews displayed per page on a product page" + }, + "disableEmptyFilterOptions": { + "type": "boolean", + "description": "Whether filter options without results are disabled instead of hidden" + }, + "markAsNew": { + "type": "integer", + "description": "Number of days after the release date during which a product is marked as new" + }, + "hideCloseoutProductsWhenOutOfStock": { + "type": "boolean", + "description": "Whether clearance sale products are hidden from listings as soon as their stock depletes to 0" + }, + "showVariantOptionInSearchSuggestionResult": { + "type": "boolean", + "description": "Whether variant options are displayed underneath the product name in search suggestion results" + }, + "findBestVariant": { + "type": "boolean", + "description": "Whether the best matching variant is previewed in search results and filtered listings" + }, + "autoplayVideoInListing": { + "type": "boolean", + "description": "Whether videos configured as product media covers are played automatically in listings" + }, + "beforeListPriceSnippetKey": { + "type": "string", + "description": "Translation snippet key whose content is displayed before every list price. Empty string when nothing should be displayed" + }, + "afterListPriceSnippetKey": { + "type": "string", + "description": "Translation snippet key whose content is displayed after every list price. Empty string when nothing should be displayed" + } + } + }, + "newsletter": { + "type": "object", + "description": "Newsletter settings (core.newsletter)", + "required": [ + "apiAlias", + "doubleOptIn", + "doubleOptInRegistered" + ], + "properties": { + "apiAlias": { + "type": "string", + "const": "shop_settings_newsletter" + }, + "doubleOptIn": { + "type": "boolean", + "description": "Whether double opt-in is required for newsletter subscriptions" + }, + "doubleOptInRegistered": { + "type": "boolean", + "description": "Whether double opt-in is also required for newsletter subscriptions of registered customers" + } + } + } + } } } } + }, + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing or invalid." } }, "security": [ { "ApiKey": [] } + ], + "parameters": [ + { + "$ref": "#/components/parameters/swLanguageId" + } ] } }, - "/script/{hook}": { + "/sitemap": { "get": { "tags": [ - "API", - "Script", - "App" + "Sitemap & Routes" ], - "summary": "Access point for different api logics which are provided by apps over script hooks", - "operationId": "getScriptStoreApiRoute", + "summary": "Fetch sitemaps", + "description": "Fetches a list of compressed sitemap files, which are often used by search engines.", + "operationId": "readSitemap", "parameters": [ - { - "name": "hook", - "in": "path", - "description": "Dynamic hook which used to build the hook name", - "required": true, - "schema": { - "type": "string" - } - }, { "$ref": "#/components/parameters/swLanguageId" } ], "responses": { "200": { - "description": "Returns different structures of results based on the called script.", + "description": "Returns a list of available sitemaps.", "content": { "application/json": { "schema": { - "oneOf": [ - { - "type": "object", - "additionalProperties": true - }, - { - "type": "null" - } - ] - } - }, - "application/vnd.api+json": { - "schema": { - "oneOf": [ - { - "type": "object", - "additionalProperties": true - }, - { - "type": "null" - } - ] + "type": "array", + "items": { + "$ref": "#/components/schemas/Sitemap" + } } } } }, - "204": { - "description": "No data by default" + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ @@ -24768,23 +23949,25 @@ "ApiKey": [] } ] - }, - "post": { + } + }, + "/sitemap/{filePath}": { + "get": { "tags": [ - "API", - "Script", - "App" + "Sitemap & Routes" ], - "summary": "Access point for different api logics which are provided by apps over script hooks", - "operationId": "postScriptStoreApiRoute", + "summary": "Download sitemap file", + "description": "Downloads the sitemap file from the configured sitemap storage.", + "operationId": "getSitemapFile", "parameters": [ { - "name": "hook", + "name": "filePath", "in": "path", - "description": "Dynamic hook which used to build the hook name", + "description": "The path to the sitemap file", "required": true, "schema": { - "type": "string" + "type": "string", + "pattern": ".*\\.(xml|gz)$" } }, { @@ -24793,38 +23976,25 @@ ], "responses": { "200": { - "description": "Returns different structures of results based on the called script.", + "description": "Returns the blob to download.", "content": { - "application/json": { + "application/xml": { "schema": { - "oneOf": [ - { - "type": "object", - "additionalProperties": true - }, - { - "type": "null" - } - ] + "type": "string", + "format": "binary" } }, - "application/vnd.api+json": { + "application/gzip": { "schema": { - "oneOf": [ - { - "type": "object", - "additionalProperties": true - }, - { - "type": "null" - } - ] + "type": "string", + "format": "binary" } } } }, - "204": { - "description": "No data by default" + "401": { + "$ref": "#/components/responses/401", + "description": "The `sw-access-key` header is missing." } }, "security": [ diff --git a/storeapi.summary.json b/storeapi.summary.json index c962fdb..e41c192 100644 --- a/storeapi.summary.json +++ b/storeapi.summary.json @@ -79,6 +79,7 @@ "/shipping-cost/cart", "/shipping-cost/product/{productId}", "/shipping-method", + "/shop-settings", "/sitemap", "/sitemap/{filePath}" ], @@ -99,14 +100,9 @@ "AppCmsBlock", "AppFlowAction", "AppFlowEvent", - "AppMcpPrompt", - "AppMcpResource", - "AppMcpTool", "AppPaymentMethod", "AppScriptCondition", - "AppShippingMethod", "AppTemplate", - "Association", "Associations", "Breadcrumb", "BreadcrumbCollection", @@ -120,6 +116,7 @@ "CartItemsUpdate", "CartLineItemUpdate", "CartListPrice", + "CartPrice", "CartPriceQuantity", "CartPriceReference", "Category", @@ -131,7 +128,6 @@ "CookieEntry", "CookieEntryCollection", "CookieGroup", - "CookieGroupCollection", "CookieRouteResponse", "Country", "CountryState", @@ -172,11 +168,9 @@ "ImportExportLog", "ImportExportProfile", "Includes", - "Integration", "LandingPage", "Language", "LineItem", - "LineItemType", "ListPrice", "Locale", "LogEntry", @@ -185,8 +179,6 @@ "MailTemplateMedia", "MailTemplateType", "MainCategory", - "MeasurementDisplayUnit", - "MeasurementSystem", "MeasurementUnits", "Media", "MediaAiTag", @@ -264,7 +256,6 @@ "PromotionSetgroup", "PropertyGroup", "PropertyGroupOption", - "Query", "RangeFilter", "ReferencePrice", "Rule", @@ -273,9 +264,6 @@ "SalesChannelAnalytics", "SalesChannelContext", "SalesChannelDomain", - "SalesChannelFile", - "SalesChannelTrackingCustomer", - "SalesChannelTrackingOrder", "SalesChannelType", "Salutation", "ScheduledTask", @@ -324,22 +312,17 @@ "WebhookEventLog", "WishlistLoadRouteResponse", "attributes", - "data", "error", "failure", - "info", - "jsonapi", "link", "linkage", "links", "meta", - "pagination", "relationship", "relationshipLinks", "relationshipToMany", "relationshipToOne", "relationships", - "resource", - "success" + "resource" ] }