From 0ce667d808db795d13617290caeadecc09484a64 Mon Sep 17 00:00:00 2001 From: shopwareBot Date: Fri, 28 Mar 2025 09:06:40 +0000 Subject: [PATCH] [create-pull-request] automated change --- storeapi.json | 12533 ++++++++++++++++++++-------------------- storeapi.summary.json | 4 +- 2 files changed, 6406 insertions(+), 6131 deletions(-) diff --git a/storeapi.json b/storeapi.json index a142114..213895d 100644 --- a/storeapi.json +++ b/storeapi.json @@ -1,5 +1,5 @@ { - "openapi": "3.0.0", + "openapi": "3.1.0", "info": { "title": "Shopware Store API", "description": "This endpoint reference contains an overview of all endpoints comprising the Shopware Store API", @@ -7,7 +7,7 @@ "name": "MIT", "url": "https://github.com/shopware/shopware/blob/trunk/LICENSE" }, - "version": "6.6.9999999-dev" + "version": "6.7.9999999-dev" }, "servers": [ { @@ -990,6 +990,7 @@ "children", "childCount", "translated", + "type", "id", "name" ], @@ -1060,6 +1061,10 @@ }, "type": { "type": "string", + "enum": [ + "page", + "link" + ], "description": "Type of categories like `page`, `folder`, `link`." }, "productAssignmentType": { @@ -1214,6 +1219,16 @@ "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": { "type": "integer", "format": "int64", @@ -1287,16 +1302,6 @@ "type": "object", "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, - "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." - }, "createdAt": { "type": "string", "format": "date-time", @@ -1431,6 +1436,11 @@ "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": { "type": "integer", "format": "int64", @@ -1438,6 +1448,10 @@ }, "type": { "type": "string", + "enum": [ + "default", + "sidebar" + ], "description": "Types of sections can be `sidebar` or `fullwidth`." }, "name": { @@ -1495,11 +1509,6 @@ "type": "object", "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, - "cmsPageVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of CMS page version." - }, "createdAt": { "type": "string", "format": "date-time", @@ -1534,6 +1543,7 @@ "CmsSlot": { "description": "Added since version: 6.0.0.0", "required": [ + "apiAlias", "id", "type", "slot", @@ -1549,6 +1559,15 @@ "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": { "type": "string", "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." @@ -1579,15 +1598,6 @@ "pattern": "^[0-9a-f]{32}$", "description": "Unique identity of CMS block where slot is defined." }, - "fieldConfig": { - "type": "object", - "description": "Con info of cms slot" - }, - "cmsBlockVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of CMS block version." - }, "createdAt": { "type": "string", "format": "date-time", @@ -1605,6 +1615,12 @@ "block": { "$ref": "#/components/schemas/CmsBlock" }, + "apiAlias": { + "type": "string", + "enum": [ + "cms_slot" + ] + }, "VersionId": { "description": "Unique identity of CMS slot's version." } @@ -2412,8 +2428,7 @@ "customerNumber", "firstName", "lastName", - "email", - "defaultPaymentMethodId" + "email" ], "properties": { "id": { @@ -2569,11 +2584,6 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "defaultPaymentMethodId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of default payment method." - }, "createdAt": { "type": "string", "format": "date-time", @@ -2620,15 +2630,15 @@ "$ref": "#/components/schemas/Tag" } }, - "defaultPaymentMethod": { - "$ref": "#/components/schemas/PaymentMethod" - }, "apiAlias": { "type": "string", "enum": [ "customer" ] }, + "defaultPaymentMethodId": { + "description": "Unique identity of default payment method." + }, "company": { "description": "Company name of the customer." }, @@ -2769,6 +2779,10 @@ "type": "string", "description": "Additional customer's address information." }, + "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." @@ -3048,7 +3062,6 @@ "required": [ "id", "documentTypeId", - "fileType", "orderId", "config", "deepLinkCode" @@ -3064,10 +3077,6 @@ "pattern": "^[0-9a-f]{32}$", "description": "Unique identity of document type." }, - "fileType": { - "type": "string", - "description": "Type of file like PDF." - }, "referencedDocumentId": { "type": "string", "pattern": "^[0-9a-f]{32}$", @@ -3083,6 +3092,10 @@ "pattern": "^[0-9a-f]{32}$", "description": "Unique identity of document media file." }, + "documentA11yMediaFileId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "orderVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$", @@ -3150,6 +3163,13 @@ }, "documentMediaFile": { "$ref": "#/components/schemas/Media" + }, + "documentA11yMediaFile": { + "$ref": "#/components/schemas/Media" + }, + "fileType": { + "type": "string", + "description": "Type of file like PDF." } }, "type": "object" @@ -4337,6 +4357,16 @@ "metaData": { "type": "object", "readOnly": true, + "properties": { + "height": { + "type": "integer", + "format": "int64" + }, + "width": { + "type": "integer", + "format": "int64" + } + }, "description": "Details of the media file uploaded." }, "config": { @@ -4764,6 +4794,7 @@ "documents", "orderDate", "stateMachineState", + "price", "id", "billingAddressId", "currencyId", @@ -4862,7 +4893,8 @@ "description": "TaxStatus takes `Free`, `Net` or `Gross` as values." } }, - "type": "object" + "type": "object", + "$ref": "#/components/schemas/CalculatedPrice" }, "amountTotal": { "type": "number", @@ -5143,6 +5175,10 @@ "type": "string", "description": "Additional address input if necessary." }, + "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." @@ -6597,6 +6633,7 @@ { "required": [ "id", + "technicalName", "name" ], "properties": { @@ -6631,38 +6668,13 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "synchronous": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean", - "readOnly": true - }, - "asynchronous": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean", - "readOnly": true - }, - "prepared": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean", - "readOnly": true - }, - "refundable": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean", - "readOnly": true - }, - "recurring": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean", - "readOnly": true + "technicalName": { + "type": "string" }, "shortName": { "description": "Runtime field, cannot be used as part of the criteria.", "type": "string" }, - "technicalName": { - "type": "string" - }, "createdAt": { "type": "string", "format": "date-time", @@ -6719,6 +6731,7 @@ "description": "Added since version: 6.0.0.0", "required": [ "id", + "technicalName", "name" ], "properties": { @@ -6762,38 +6775,13 @@ "pattern": "^[0-9a-f]{32}$", "description": "Unique identity of media." }, - "synchronous": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean", - "readOnly": true - }, - "asynchronous": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean", - "readOnly": true - }, - "prepared": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean", - "readOnly": true - }, - "refundable": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean", - "readOnly": true - }, - "recurring": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean", - "readOnly": true + "technicalName": { + "type": "string" }, "shortName": { "description": "Runtime field, cannot be used as part of the criteria.", "type": "string" }, - "technicalName": { - "type": "string" - }, "createdAt": { "type": "string", "format": "date-time", @@ -6846,7 +6834,46 @@ "description": "Added since version: 6.0.0.0", "allOf": [ { - "$ref": "#/components/schemas/resource" + "$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": [ @@ -7843,6 +7870,7 @@ "calculatedPrice", "calculatedPrices", "seoCategory", + "translated", "id", "taxId", "productNumber", @@ -8164,43 +8192,39 @@ }, "calculatedCheapestPrice": { "type": "object", - "allOf": [ - { - "$ref": "#/components/schemas/CalculatedPrice" + "properties": { + "unitPrice": { + "type": "number" }, - { - "type": "object", - "properties": { - "unitPrice": { - "type": "number" - }, - "quantity": { - "type": "number" - }, - "totalPrice": { - "type": "number" - }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] + "quantity": { + "type": "number" + }, + "totalPrice": { + "type": "number" + }, + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/ReferencePrice" }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] + { + "type": "null" + } + ] + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/ListPrice" }, - "regulationPrice": { + { + "type": "null" + } + ] + }, + "regulationPrice": { + "oneOf": [ + { "type": "object", "properties": { "price": { @@ -8209,26 +8233,34 @@ }, "required": [ "price" - ], - "nullable": true - }, - "hasRange": { - "type": "boolean" + ] }, - "variantId": { + { + "type": "null" + } + ] + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { "type": "string", - "format": "", - "nullable": true + "format": "" }, - "apiAlias": { - "type": "string", - "enum": [ - "calculated_cheapest_price" - ] + { + "type": "null" } - } + ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "calculated_cheapest_price" + ] } - ], + }, "description": "Runtime field, cannot be used as part of the criteria." }, "isNew": { @@ -8371,13 +8403,19 @@ ] }, "variantListingConfig": { - "nullable": true, - "type": "object", - "properties": { - "displayParent": { - "type": "boolean" + "oneOf": [ + { + "type": "object", + "properties": { + "displayParent": { + "type": "boolean" + } + } + }, + { + "type": "null" } - } + ] }, "mainVariantId": { "description": "Unique identity of main variant." @@ -8729,6 +8767,7 @@ "ProductMedia": { "description": "Added since version: 6.0.0.0", "required": [ + "media", "id", "productId", "mediaId" @@ -8780,9 +8819,6 @@ }, "media": { "$ref": "#/components/schemas/Media" - }, - "thumbnails": { - "$ref": "#/components/schemas/MediaThumbnail" } }, "type": "object" @@ -8879,6 +8915,12 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "customerId": { + "type": "string" + }, + "externalUser": { + "type": "string" } }, "type": "object" @@ -9282,6 +9324,7 @@ "required": [ "group", "option", + "translated", "id", "groupId", "name" @@ -10042,6 +10085,7 @@ { "required": [ "id", + "technicalName", "deliveryTimeId", "name" ], @@ -10053,6 +10097,9 @@ "name": { "type": "string" }, + "technicalName": { + "type": "string" + }, "active": { "type": "boolean" }, @@ -10080,9 +10127,6 @@ "trackingUrl": { "type": "string" }, - "technicalName": { - "type": "string" - }, "createdAt": { "type": "string", "format": "date-time", @@ -10288,6 +10332,7 @@ "description": "Added since version: 6.0.0.0", "required": [ "id", + "technicalName", "deliveryTimeId", "name" ], @@ -10301,6 +10346,9 @@ "type": "string", "description": "Name of the shipping method." }, + "technicalName": { + "type": "string" + }, "active": { "type": "boolean", "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." @@ -10336,9 +10384,6 @@ "type": "string", "description": "This URL allows to track packages." }, - "technicalName": { - "type": "string" - }, "createdAt": { "type": "string", "format": "date-time", @@ -10602,6 +10647,7 @@ "StateMachineState": { "description": "Added since version: 6.0.0.0", "required": [ + "translated", "technicalName", "name" ], @@ -11143,1706 +11189,1317 @@ "type": "object" }, "BreadcrumbCollection": { - "type": "object", - "properties": { - "breadcrumbs": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Breadcrumb" - } - }, - "apiAlias": { - "type": "string", - "enum": [ - "breadcrumb_collection" - ] - } - }, - "required": [ - "breadcrumbs", - "apiAlias" - ] - }, - "CrossSellingElementCollection": { "type": "array", "items": { - "$ref": "#/components/schemas/CrossSellingElement" - }, - "properties": { - "total": { - "description": "Number of cross selling elements found." - } + "$ref": "#/components/schemas/Breadcrumb" } }, - "FindProductVariantRouteResponse": { + "SalesChannelContext": { "type": "object", "properties": { - "foundCombination": { + "token": { + "description": "Context the user session", + "type": "string" + }, + "currentCustomerGroup": { "type": "object", + "description": "Customer group of the current user", "properties": { - "variantId": { + "name": { "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of a variant." + "description": "Name of customer group to which the customer belongs within the specific sales channel they are currently interacting with." }, - "options": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Available product variant options. For example, for variant `Size`, option would be `XS`, `S`, `M`, `L`, `XL`." + "displayGross": { + "type": "boolean", + "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." } } - } - } - }, - "Breadcrumb": { - "type": "object", - "properties": { - "name": { - "type": "string" }, - "categoryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "fallbackCustomerGroup": { + "description": "Fallback group if the default customer group is not applicable", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "displayGross": { + "type": "boolean" + } + } }, - "type": { - "type": "string", - "enum": [ - "page", - "link", - "folder" - ] + "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." + } + } }, - "translated": { - "type": "object", - "additionalProperties": true, + "salesChannel": { + "$ref": "#/components/schemas/SalesChannel", "properties": { - "customFields": { - "type": "object" + "typeId": { + "description": "Unique identity of a sales channel's type within a specific sales channel." }, - "slotConfig": { - "type": "object" + "languageId": { + "description": "Unique identity of a sales channel's language within a specific sales channel." }, - "linkType": { - "type": "string", - "enum": [ - "external", - "category", - "product", - "landing_page" - ] + "currencyId": { + "description": "Unique identity of a sales channel's currency within a specific sales channel." }, - "internalLink": { - "type": "string" + "paymentMethodId": { + "description": "Unique identity of a sales channel's payment method within a specific sales channel." }, - "externalLink": { - "type": "string" + "shippingMethodId": { + "description": "Unique identity of a sales channel's shipping method within a specific sales channel." }, - "linkNewTab": { - "type": "boolean" + "countryId": { + "description": "Unique identity of a sales channel's country within a specific sales channel." }, - "description": { - "type": "string" + "navigationCategoryId": { + "description": "Unique identity of a sales channel's navigation category within a specific sales channel." }, - "metaTitle": { - "type": "string" + "navigationCategoryDepth": { + "description": "It determines the number of levels of subcategories in the storefront category menu within a specific sales channel." }, - "metaDescription": { - "type": "string" + "footerCategoryId": { + "description": "Unique identity of a sales channel's footer category within a specific sales channel." }, - "keywords": { - "type": "string" + "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." } } }, - "path": { - "type": "string" - }, - "seoUrls": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } - }, - "apiAlias": { - "type": "string", - "enum": [ - "breadcrumb" - ] - } - }, - "required": [ - "name", - "categoryId", - "type", - "translated", - "path", - "apiAlias" - ] - }, - "CalculatedPrice": { - "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", - "properties": { - "unitPrice": { - "type": "number" - }, - "quantity": { - "type": "number" - }, - "rawTotal": { - "type": "number" - }, - "totalPrice": { - "type": "number" - }, - "calculatedTaxes": { + "taxRules": { "type": "array", + "description": "Currently active tax rules and/or rates", "items": { "type": "object", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, "taxRate": { - "type": "number" + "type": "number", + "format": "float" }, - "price": { - "type": "number" + "name": { + "type": "string" } + } + }, + "properties": { + "taxRate": { + "description": "Rate of tax within a specific sales channel." }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] + "name": { + "description": "Name defined for a Tax within a specific sales channel." + } } }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" + "customer": { + "$ref": "#/components/schemas/Customer", + "properties": { + "groupId": { + "description": "Unique identity of a customer's group within a specific sales channel." }, - { - "type": "null" + "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." } - ] + } }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod", + "properties": { + "pluginId": { + "description": "Unique identity of payment plugin within a specific sales channel." }, - { - "type": "null" + "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." } - ] - }, - "positionPrice": { - "type": "number" - }, - "netPrice": { - "type": "number" + } }, - "regulationPrice": { + "shippingLocation": { "type": "object", "properties": { - "price": { - "type": "number" - }, "apiAlias": { "type": "string", "enum": [ - "cart_regulation_price" + "cart_delivery_shipping_location" ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" } - }, - "nullable": true - }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "type": "string", - "format": "^[0-9a-f]{32}$", - "nullable": true + } }, - "apiAlias": { - "type": "string", - "enum": [ - "calculated_price" - ] + "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." + } + } }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { + "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": "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." } } + }, + "apiAlias": { + "type": "string", + "enum": [ + "sales_channel_context" + ] } }, "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "referencePrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitPrice", - "positionPrice", - "netPrice", - "taxRules" + "salesChannel", + "apiAlias" ] }, - "CrossSellingElement": { + "NavigationRouteResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + }, + "properties": { + "id": { + "description": "Unique identity of navigation route response." + } + } + }, + "CartError": { "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "crossSelling": { - "$ref": "#/components/schemas/ProductCrossSelling" + "key": { + "type": "string" }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } + "level": { + "type": "number", + "enum": [ + 0, + 10, + 20 + ], + "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" }, - "total": { - "type": "integer", - "format": "int32" + "message": { + "type": "string" }, - "streamId": { - "type": "string", - "format": "uuid" + "messageKey": { + "type": "string" + } + }, + "required": [ + "key", + "level", + "message", + "messageKey" + ] + }, + "CartPriceReference": { + "type": "object", + "properties": { + "purchaseUnit": { + "type": "number" + }, + "referenceUnit": { + "type": "number" + }, + "unitName": { + "type": "string" + }, + "price": { + "type": "number" }, "apiAlias": { "type": "string", "enum": [ - "cross_selling_element" + "cart_price_reference" + ] + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } ] } }, "required": [ - "crossSelling", - "products", - "total", - "apiAlias" + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" ] }, - "CartDelivery": { + "FindProductVariantRouteResponse": { "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" - } - } - }, - "location": { + "foundCombination": { "type": "object", "properties": { - "apiAlias": { + "variantId": { "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of a variant." }, - "state": { - "$ref": "#/components/schemas/CountryState" + "options": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Available product variant options. For example, for variant `Size`, option would be `XS`, `S`, `M`, `L`, `XL`." } } + } + } + }, + "CartListPrice": { + "type": "object", + "description": "", + "properties": { + "discount": { + "type": "number" }, - "positions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDeliveryPosition" - } + "percentage": { + "type": "number" }, - "shippingCosts": { - "$ref": "#/components/schemas/CalculatedPrice" + "price": { + "type": "number" }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" + "apiAlias": { + "type": "string", + "enum": [ + "cart_list_price" + ] } - } + }, + "required": [ + "apiAlias" + ] }, - "ShippingMethodPageRouteResponse": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "deliveryTimeId": { - "type": "string" - }, - "deliveryTime": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer", - "format": "int32" - }, - "max": { - "type": "integer", - "format": "int32" - }, - "unit": { - "type": "string" - } - } - }, - "translations": { - "type": "array", - "items": { + "ProductListingResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EntitySearchResult" + }, + { + "type": "object", + "properties": { + "currentFilters": { "type": "object", + "description": "Contains the state of the filters. These can be used to create listing filters.", "properties": { - "shippingMethodId": { - "type": "string" - }, - "name": { + "navigationId": { "type": "string" }, - "description": { - "type": "string" - } - } - } - }, - "orderDeliveries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "orderId": { - "type": "string" + "manufacturer": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } }, - "shippingOrderAddressId": { - "type": "string" + "price": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "default": 0 + }, + "max": { + "type": "integer", + "default": 0 + } + }, + "required": [ + "min", + "max" + ] }, - "shippingMethodId": { - "type": "string" + "rating": { + "oneOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] }, - "shippingDateEarliest": { - "type": "string", - "format": "date-time" + "shipping-free": { + "type": "boolean", + "default": false }, - "shippingDateLatest": { - "type": "string", - "format": "date-time" + "properties": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } }, - "stateId": { + "search": { "type": "string" } - } - } - }, - "salesChannelDefaultAssignments": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" + }, + "required": [ + "manufacturer", + "navigationId", + "price", + "properties", + "rating", + "shipping-free" + ] + }, + "availableSortings": { + "type": "array", + "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", + "items": { + "type": "object", + "properties": { + "label": { + "type": "string" + }, + "translated": { + "type": "object", + "properties": { + "label": { + "type": "string" + } + }, + "required": [ + "label" + ] + }, + "key": { + "type": "string" + }, + "priority": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_sorting" + ] + } }, - "hreflangDefaultDomainId": { - "type": "string" - } + "required": [ + "label", + "translated", + "key", + "priority", + "apiAlias" + ] + } + }, + "sorting": { + "type": "string" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" } + }, + "entity": { + "type": "string", + "enum": [ + "product" + ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_listing" + ] } }, - "salesChannels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" - }, - "hreflangDefaultDomainId": { - "type": "string" - } - } - } - }, - "availabilityRule": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "priority": { - "type": "integer", - "format": "int32" - }, - "invalid": { - "type": "boolean" - } - } - }, - "availabilityRuleId": { - "type": "string" - }, - "prices": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "ruleId": { - "type": "string" - }, - "calculation": { - "type": "integer", - "format": "int32" - }, - "quantityStart": { - "type": "number", - "format": "float" - }, - "quantityEnd": { - "type": "number", - "format": "float" - }, - "price": { - "type": "number", - "format": "float" - }, - "calculationRuleId": { - "type": "string" - } - } + "required": [ + "elements", + "availableSortings", + "currentFilters", + "apiAlias" + ] + } + ] + }, + "CrossSellingElementCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrossSellingElement" + }, + "properties": { + "total": { + "description": "Number of cross selling elements found." + } + } + }, + "CartPriceQuantity": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_quantity" + ] + }, + "isCalculated": { + "type": "boolean" + }, + "listPrice": { + "$ref": "#/components/schemas/CartListPrice" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" } }, - "mediaId": { - "type": "string" - }, - "media": { + "type": "object" + }, + "taxRules": { + "type": "array", + "items": { "type": "object", "properties": { - "userId": { - "type": "string" - }, - "mimeType": { - "type": "string" - }, - "fileExtension": { - "type": "string" - }, - "fileSize": { - "type": "integer", - "format": "int32" - }, - "title": { - "type": "string" - }, - "metaDataRaw": { - "type": "string" - }, - "mediaTypeRaw": { - "type": "string" - }, - "uploadedAt": { - "type": "string", - "format": "date-time" - }, - "alt": { - "type": "string" - }, - "url": { - "type": "string" - }, - "fileName": { - "type": "string" - }, - "mediaFolderId": { - "type": "string" - }, - "private": { - "type": "boolean" + "taxRate": { + "type": "number", + "format": "float" }, - "thumbnailsRo": { + "name": { "type": "string" } } - }, - "tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - } - } - } } + }, + "type": { + "type": "string" } }, + "required": [ + "apiAlias" + ] + }, + "CrossSellingElement": { + "type": "object", "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." + "crossSelling": { + "$ref": "#/components/schemas/ProductCrossSelling" }, - "description": { - "description": "The order of the tabs of your defined shipping methods in the storefront by entering numerical values like 1,2,3, etc." + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } }, - "deliveryTimeId": { - "description": "Unique identity of the delivery time." + "total": { + "type": "integer", + "format": "int32" }, - "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." - } - } + "streamId": { + "type": "string", + "format": "uuid" }, - "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." - } - } + "apiAlias": { + "type": "string", + "enum": [ + "cross_selling_element" + ] + } + }, + "required": [ + "crossSelling", + "products", + "total", + "apiAlias" + ] + }, + "EntitySearchResult": { + "type": "object", + "properties": { + "entity": { + "type": "string" }, - "orderDeliveries": { - "properties": { - "orderId": { - "description": "Unique identity of order." - }, - "shippingOrderAddressId": { - "description": "Unique identity of shipping order address." - }, - "shippingMethodId": { - "description": "Unique identity of shipping method." - }, - "shippingDateEarliest": { - "description": "Date and time of earliest delivery of products." - }, - "shippingDateLatest": { - "description": "Date and time of latest delivery of products." - }, - "stateId": { - "description": "Unique identity of state." - } - } + "total": { + "type": "integer", + "description": "The total number of found entities" }, - "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." - } + "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" } }, - "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." - } - } + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." }, - "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." - } - } + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." + } + } + }, + "AggregationEntity": { + "title": "AggregationEntity", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "availabilityRuleId": { - "description": "Unique identity of availability rule." + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "entity" + ] }, - "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." - } - } + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "tags": { - "properties": { - "name": { - "description": "Name of the tag." - } - } + "definition": { + "description": "The entity definition e.g \"product_manufacturer\".", + "type": "string" } - } + }, + "required": [ + "name", + "type", + "field", + "definition" + ] }, - "CartDeliveryPosition": { + "AggregationFilter": { + "title": "AggregationFilter", "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": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" }, - "lineItem": { - "$ref": "#/components/schemas/LineItem" + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "filter" + ] }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" + "filter": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Filters" + } } - } + }, + "required": [ + "name", + "type", + "filter" + ] }, - "CustomerAddressRead": { + "AggregationTerms": { + "title": "AggregationTerms", "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" + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "updatedAt": { + "type": { + "description": "The type of aggregation", "type": "string", - "format": "date-time", - "nullable": true + "enum": [ + "terms" + ] }, - "country": { - "$ref": "#/components/schemas/Country" + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "countryState": { - "$ref": "#/components/schemas/CountryState", - "nullable": true + "limit": { + "description": "The number of terms to return", + "type": "number" }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "sort": { + "type": "array", + "description": "Sorting the aggregation result.", + "items": { + "$ref": "#/components/schemas/Sort" + } } }, "required": [ - "customerId", - "createdAt", - "updatedAt", - "country", - "salutation" + "name", + "type", + "field" ] }, - "EntitySearchResult": { + "AggregationHistogram": { + "title": "AggregationHistogram", "type": "object", "properties": { - "entity": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" }, - "total": { - "type": "integer", - "description": "The total number of found entities" + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "histogram" + ] }, - "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" - } + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." + "interval": { + "description": "The interval of the histogram", + "type": "number" }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." - } - } - }, - "Sitemap": { - "type": "object", - "properties": { - "filename": { - "type": "string", - "description": "Name of the file which holds a list of all URL's." + "format": { + "description": "The format of the histogram", + "type": "string" }, - "created": { - "type": "string", - "format": "date-time" + "timeZone": { + "description": "The timezone of the histogram", + "type": "string" } }, "required": [ - "filename", - "created" + "name", + "type", + "field" ] }, - "SuccessResponse": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - } - } - }, - "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": { - "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": { + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "ranges": { + "description": "The ranges of the aggregation", + "type": "array", + "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" + ] } ] - }, - "properties": { - "type": { - "description": "To filter the results and aggregations with filter types like ==, >=, etc." - }, - "field": { - "description": "To filter the results and aggregations by field like an property identifier." - }, - "value": { - "description": "To filter the results and aggregations by value." - } } + } + }, + "required": [ + "name", + "type", + "field", + "ranges" + ] + }, + "CalculatedPrice": { + "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", + "properties": { + "unitPrice": { + "type": "number" }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" - } + "quantity": { + "type": "number" }, - "query": { - "type": "array", - "description": "List of queries to restrict the search result. For more information, see [Search Queries > Query](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#query)", - "items": { - "$ref": "#/components/schemas/Query" - } + "rawTotal": { + "type": "number" }, - "associations": { - "$ref": "#/components/schemas/Associations" + "totalPrice": { + "type": "number" }, - "post-filter": { + "taxStatus": { + "type": "string", + "enum": [ + "net", + "tax-free" + ] + }, + "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", + "enum": [ + "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." - } - } - }, - "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." - }, - "order": { - "description": "Sort the search results of orders by ascending or descending." }, - "naturalSorting": { - "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." - } - } - }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } - }, - "fields": { - "type": "array", - "description": "Fields which should be returned in the search result.", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] } }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" - }, - "includes": { - "$ref": "#/components/schemas/Includes" - } - } - }, - "Associations": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Criteria" - } - }, - "Includes": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "Aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "title": "AggregationEntity", - "allOf": [ + "referencePrice": { + "oneOf": [ { - "$ref": "#/components/schemas/AggregationEntity" + "$ref": "#/components/schemas/CartPriceReference" }, { - "$ref": "#/components/schemas/SubAggregations" + "type": "null" } ] }, - { - "title": "AggregationFilter", - "allOf": [ + "listPrice": { + "oneOf": [ { - "$ref": "#/components/schemas/AggregationFilter" + "$ref": "#/components/schemas/CartListPrice" }, { - "$ref": "#/components/schemas/SubAggregations" + "type": "null" } ] }, - { - "title": "AggregationTerms", - "allOf": [ + "positionPrice": { + "type": "number" + }, + "netPrice": { + "type": "number" + }, + "regulationPrice": { + "oneOf": [ { - "$ref": "#/components/schemas/AggregationTerms" + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } }, { - "$ref": "#/components/schemas/SubAggregations" + "type": "null" } ] }, - { - "title": "AggregationHistogram", - "allOf": [ + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ { - "$ref": "#/components/schemas/AggregationHistogram" + "type": "string", + "format": "^[0-9a-f]{32}$" }, { - "$ref": "#/components/schemas/SubAggregations" + "type": "null" } ] }, - { - "title": "AggregationRange", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationRange" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" ] + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } } + }, + "required": [ + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "referencePrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitPrice", + "positionPrice", + "netPrice", + "taxRules", + "rawTotal", + "taxStatus" ] }, - "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" - }, - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/AggregationHistogram" + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" }, - { - "$ref": "#/components/schemas/AggregationRange" + "latest": { + "type": "string", + "format": "date-time" } - ] - } - } - }, - "TotalCountMode": { - "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", - "type": "string", - "default": "none", - "enum": [ - "none", - "exact", - "next-pages" - ] - }, - "Query": { - "type": "object", - "properties": { - "score": { - "type": "number" + } }, - "query": { - "oneOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" + "location": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] }, - { - "$ref": "#/components/schemas/EqualsFilter" + "country": { + "$ref": "#/components/schemas/Country" }, - { - "$ref": "#/components/schemas/MultiNotFilter" + "address": { + "$ref": "#/components/schemas/CustomerAddress" }, - { - "$ref": "#/components/schemas/RangeFilter" + "state": { + "$ref": "#/components/schemas/CountryState" } - ] + } + }, + "positions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDeliveryPosition" + } + }, + "shippingCosts": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" } - }, - "additionalProperties": true + } }, - "Sort": { + "SuccessResponse": { "type": "object", "properties": { - "field": { - "type": "string" - }, - "order": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - }, - "naturalSorting": { + "success": { "type": "boolean" - }, - "type": { - "type": "string" } - }, - "required": [ - "field", - "order" - ] - }, - "Filters": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] } }, - "SimpleFilter": { + "CartDeliveryPosition": { "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "type": { - "type": "string", - "enum": [ - "contains", - "equalsAny", - "prefix", - "suffix" - ] + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } }, - "field": { + "identifier": { "type": "string" }, - "value": { - "type": "string" + "lineItem": { + "$ref": "#/components/schemas/LineItem" + }, + "price": { + "$ref": "#/components/schemas/CalculatedPrice" } - }, - "required": [ - "type", - "field", - "value" + } + }, + "LineItemType": { + "type": "string", + "enum": [ + "product", + "credit", + "custom", + "promotion", + "discount", + "container", + "quantity" ] }, - "EqualsFilter": { + "LineItem": { "type": "object", "properties": { - "type": { - "type": "string", - "enum": [ - "equals" - ] + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } }, - "field": { - "type": "string" - }, - "value": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "type", - "field", - "value" - ] - }, - "MultiNotFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "multi", - "not" - ] - }, - "operator": { - "type": "string", - "enum": [ - "and", - "or", - "nor", - "nand" - ] - }, - "queries": { - "$ref": "#/components/schemas/Filters" - } - }, - "required": [ - "type", - "operator", - "queries" - ] - }, - "RangeFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "range" - ] - }, - "field": { - "type": "string" - }, - "parameters": { - "type": "object", - "properties": { - "gte": { - "type": "number" - }, - "gt": { - "type": "number" - }, - "lte": { - "type": "number" - }, - "lt": { - "type": "number" - } - } - } - }, - "required": [ - "type", - "field", - "parameters" - ] - }, - "CartPriceReference": { - "type": "object", - "properties": { - "purchaseUnit": { - "type": "number" - }, - "referenceUnit": { - "type": "number" - }, - "unitName": { - "type": "string" - }, - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_reference" - ] - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] - }, - "regulationPrice": { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - }, - "nullable": true - }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "type": "string", - "format": "^[0-9a-f]{32}$", - "nullable": true - } - }, - "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" - ] - }, - "CartPriceQuantity": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_quantity" - ] - }, - "isCalculated": { - "type": "boolean" - }, - "listPrice": { - "$ref": "#/components/schemas/CartListPrice" - }, - "price": { - "type": "number" - }, - "quantity": { - "type": "number" - }, - "regulationPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - } - }, - "type": "object" - }, - "taxRules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } - }, - "type": { - "type": "string" - } - }, - "required": [ - "apiAlias" - ] - }, - "LineItemType": { - "type": "string", - "enum": [ - "product", - "credit", - "custom", - "promotion", - "discount", - "container", - "quantity" - ] - }, - "LineItem": { - "type": "object", - "properties": { - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - }, - "cover": { - "$ref": "#/components/schemas/ProductMedia" - }, - "dataContextHash": { + "cover": { + "$ref": "#/components/schemas/ProductMedia" + }, + "dataContextHash": { "type": "string" }, "dataTimestamp": { @@ -12939,19 +12596,25 @@ ] }, "regulationPrice": { - "type": "object", - "properties": { - "price": { - "type": "number" + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] + { + "type": "null" } - }, - "nullable": true + ] }, "totalPrice": { "type": "number" @@ -13036,203 +12699,16 @@ }, "required": [ "id", - "type" + "type", + "deliveryInformation", + "payload", + "quantity", + "states" ] }, - "AggregationMetrics": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "avg", - "count", - "max", - "min", - "stats", - "sum" - ] - }, - "field": { - "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "CartError": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "items": { - "type": "object", - "properties": { - "key": { - "type": "string" - }, - "level": { - "type": "number", - "enum": [ - 0, - 10, - 20 - ], - "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" - }, - "message": { - "type": "string" - }, - "messageKey": { - "type": "string" - } - } - } - } - }, - "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" - ] - }, - "NavigationRouteResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - }, - "properties": { - "id": { - "description": "Unique identity of navigation route response." - } - } - }, - "Cart": { - "type": "object", - "properties": { - "name": { - "description": "Name of the cart - for example `guest-cart`", - "type": "string" - }, - "token": { - "description": "Context token identifying the cart and the user session", - "type": "string" - }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "lineItems": { - "description": "All items within the cart", - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - }, - "errors": { - "type": "array", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "items": { - "$ref": "#/components/schemas/CartError" - }, - "properties": { - "key": { - "description": "Unique key for every message." - }, - "level": { - "description": "Types of level - Notice, warning and error. " - }, - "message": { - "description": "A persistent error passed from the shopping cart calculation processes to the user end." - } - } - }, - "deliveries": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDelivery" - } - }, - "transactions": { - "description": "A list of all payment transactions associated with the current cart.", - "type": "array", - "items": { - "type": "object", - "properties": { - "paymentMethodId": { - "type": "string" - }, - "amount": { - "$ref": "#/components/schemas/CalculatedPrice" - } - } - }, - "properties": { - "paymentMethodId": { - "description": "Unique identity of payment method." - } - } - }, - "modified": { - "type": "boolean", - "description": "It signifies any changes to cart." - }, - "customerComment": { - "type": "string", - "description": "A comment that can be added to the cart.", - "nullable": true - }, - "affiliateCode": { - "type": "string", - "description": "An affiliate tracking code", - "nullable": true - }, - "campaignCode": { - "type": "string", - "description": "A campaign tracking code", - "nullable": true - }, - "id": { - "description": "Unique identity of cart." - } + "Association": { + "additionalProperties": { + "$ref": "#/components/schemas/Association" } }, "AccountNewsletterRecipient": { @@ -13260,2462 +12736,2955 @@ "apiAlias" ] }, - "OrderRouteResponse": { - "type": "object", - "properties": { - "orders": { - "allOf": [ - { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order" + "ShippingMethodPageRouteResponse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "deliveryTimeId": { + "type": "string" + }, + "deliveryTime": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "min": { + "type": "integer", + "format": "int32" + }, + "max": { + "type": "integer", + "format": "int32" + }, + "unit": { + "type": "string" } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" } - ] - }, - "paymentChangeable": { - "type": "object", - "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", - "additionalProperties": { - "type": "boolean" - } - } - }, - "required": [ - "orders" - ] - }, - "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.", - "type": "string", - "nullable": true - }, - "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.", - "type": "string", - "nullable": true - } - } - }, - "CartDeliveryInformation": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_information" - ] - }, - "freeDelivery": { - "type": "boolean" - }, - "deliveryTime": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer" - }, - "max": { - "type": "integer" - }, - "unit": { - "type": "string" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_time" - ] - } - } - }, - "height": { - "type": "integer" - }, - "length": { - "type": "integer" - }, - "restockTime": { - "type": "integer" - }, - "stock": { - "type": "integer" - }, - "weight": { - "type": "integer" - }, - "width": { - "type": "integer" - } - }, - "required": [ - "apiAlias" - ] - }, - "WishlistLoadRouteResponse": { - "type": "object", - "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" - } - } - }, - "ProductListingResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EntitySearchResult" - }, - { - "type": "object", - "properties": { - "currentFilters": { + }, + "translations": { + "type": "array", + "items": { "type": "object", - "description": "Contains the state of the filters. These can be used to create listing filters.", "properties": { - "navigationId": { + "shippingMethodId": { "type": "string" }, - "manufacturer": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "name": { + "type": "string" }, - "price": { - "type": "object", - "properties": { - "min": { - "type": "integer", - "default": 0 - }, - "max": { - "type": "integer", - "default": 0 - } - }, - "required": [ - "min", - "max" - ] + "description": { + "type": "string" + } + } + } + }, + "orderDeliveries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "orderId": { + "type": "string" }, - "rating": { - "type": "integer", - "nullable": true + "shippingOrderAddressId": { + "type": "string" }, - "shipping-free": { - "type": "boolean", - "default": false + "shippingMethodId": { + "type": "string" }, - "properties": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "shippingDateEarliest": { + "type": "string", + "format": "date-time" }, - "search": { + "shippingDateLatest": { + "type": "string", + "format": "date-time" + }, + "stateId": { "type": "string" } - }, - "required": [ - "manufacturer", - "navigationId", - "price", - "properties", - "rating", - "shipping-free" - ] - }, - "availableSortings": { - "type": "array", - "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", - "items": { - "type": "object", - "properties": { - "label": { - "type": "string" - }, - "translated": { - "type": "object", - "properties": { - "label": { - "type": "string" - } - }, - "required": [ - "label" - ] - }, - "key": { - "type": "string" - }, - "priority": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_sorting" - ] - } - }, - "required": [ - "label", - "translated", - "key", - "priority", - "apiAlias" - ] - } - }, - "sorting": { - "type": "string" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" } - }, - "entity": { - "type": "string", - "enum": [ - "product" - ] - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_listing" - ] } }, - "required": [ - "elements", - "availableSortings", - "currentFilters", - "apiAlias" - ] - } - ] - }, - "Price": { - "type": "object", - "description": "Price object", - "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "", - "type": "number" - }, - "net": { - "description": "", - "type": "number" - }, - "linked": { - "description": "", - "type": "boolean" - }, - "listPrice": { - "description": "", - "type": "object", - "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "", - "type": "number" - }, - "net": { - "description": "", - "type": "number" - }, - "linked": { - "description": "", - "type": "boolean" + "salesChannelDefaultAssignments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } } }, - "required": [ - "gross", - "net" - ] - }, - "regulationPrice": { - "description": "", - "type": "object", - "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "", - "type": "number" - }, - "net": { - "description": "", - "type": "number" - }, - "linked": { - "description": "", - "type": "boolean" + "salesChannels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } } }, - "required": [ - "gross", - "net" - ] - } - }, - "required": [ - "currencyId", - "gross", - "net" - ] - }, - "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" + "availabilityRule": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "priority": { + "type": "integer", + "format": "int32" + }, + "invalid": { + "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." + }, + "availabilityRuleId": { + "type": "string" + }, + "prices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "ruleId": { + "type": "string" + }, + "calculation": { + "type": "integer", + "format": "int32" + }, + "quantityStart": { + "type": "number", + "format": "float" + }, + "quantityEnd": { + "type": "number", + "format": "float" + }, + "price": { + "type": "number", + "format": "float" + }, + "calculationRuleId": { + "type": "string" + } + } + } + }, + "mediaId": { + "type": "string" + }, + "media": { + "type": "object", + "properties": { + "userId": { + "type": "string" + }, + "mimeType": { + "type": "string" + }, + "fileExtension": { + "type": "string" + }, + "fileSize": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string" + }, + "metaDataRaw": { + "type": "string" + }, + "mediaTypeRaw": { + "type": "string" + }, + "uploadedAt": { + "type": "string", + "format": "date-time" + }, + "alt": { + "type": "string" + }, + "url": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "mediaFolderId": { + "type": "string" + }, + "private": { + "type": "boolean" + }, + "thumbnailsRo": { + "type": "string" + } + } + }, + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + } + } + } + }, + "properties": { + "name": { + "description": "Name of the shipping method." + }, + "active": { + "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." + }, + "description": { + "description": "The order of the tabs of your defined shipping methods in the storefront by entering numerical values like 1,2,3, etc." + }, + "deliveryTimeId": { + "description": "Unique identity of the delivery time." + }, + "deliveryTime": { + "properties": { + "name": { + "description": "Name given to delivery time." }, - "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." + "min": { + "description": "Minimum delivery time taken." }, - "isSystemDefault": { - "description": "Runtime field, cannot be used as part of the criteria." + "max": { + "description": "Maximum delivery time taken." + }, + "unit": { + "description": "Unit in which the delivery time is defined. For example, days or hours." } } }, - "salesChannel": { - "description": "Information about the current sales channel", - "type": "object", + "translations": { "properties": { - "typeId": { - "type": "string", - "description": "Unique identity of a sales channel's type within a specific sales channel." + "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": { - "type": "string", - "description": "Unique identity of a sales channel's language within a specific sales channel." + "description": "Unique identity of language." }, "currencyId": { - "type": "string", - "description": "Unique identity of a sales channel's currency within a specific sales channel." + "description": "Unique identity of currency." }, "paymentMethodId": { - "type": "string", - "description": "Unique identity of a sales channel's payment method within a specific sales channel." + "description": "Unique identity of payment method." }, "shippingMethodId": { - "type": "string", - "description": "Unique identity of a sales channel's shipping method within a specific sales channel." + "description": "Unique identity of shipping method." }, "countryId": { - "type": "string", - "description": "Unique identity of a sales channel's country within a specific sales channel." + "description": "Unique identity of country." }, "navigationCategoryId": { - "type": "string", - "description": "Unique identity of a sales channel's navigation category within a specific sales channel." + "description": "Unique identity of navigation category." }, "navigationCategoryDepth": { - "type": "integer", - "format": "int32", - "description": "It determines the number of levels of subcategories in the storefront category menu within a specific sales channel." + "description": "It determines the number of levels of subcategories in the storefront category menu." }, "footerCategoryId": { - "type": "string", - "description": "Unique identity of a sales channel's footer category within a specific sales channel." + "description": "Unique identity of footer category." }, "serviceCategoryId": { - "type": "string", - "description": "Unique identity of a sales channel's service category within a specific sales channel." + "description": "Unique identity of service category." }, "name": { - "type": "string", "description": "Name of the sales channel." }, "shortName": { - "type": "string", "description": "A short name for sales channel." }, "accessKey": { - "type": "string", "description": "Access key to store api." }, "active": { - "type": "boolean", - "description": "When `true`, the sales channel is enabled." + "description": "When boolean value is `true`, the shipping methods are available for selection in the sales channel's storefront." }, "maintenance": { - "type": "boolean", "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." }, "maintenanceIpWhitelist": { - "type": "string", "description": "Array of IP address allowed to access the sales channel." }, "mailHeaderFooterId": { - "type": "string", - "description": "Unique identity of a sales channel's mail header and footer within a specific sales channel." + "description": "Unique identity of mail header and footer." }, "customerGroupId": { - "type": "string", - "description": "Unique identity of a sales channel's customer group within a specific sales channel." + "description": "Unique identity of customer group." }, "hreflangActive": { - "type": "boolean", - "description": "When `true`, the sales channel pages are available in different languages within a specific sales channel." + "description": "When boolean value is `true`, the sales channel pages are available in different languages." }, "hreflangDefaultDomainId": { - "type": "string", - "description": "Unique identity of a sales channel's hreflangDefaultDomain within a specific sales channel." - }, - "analyticsId": { - "type": "string", - "description": "Unique identity of a sales channel's analytics within a specific sales channel." + "description": "Unique identity of hreflangDefaultDomain." } } }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - }, + "salesChannels": { "properties": { - "taxRate": { - "description": "Rate of tax within a specific sales channel." - }, - "name": { - "description": "Name defined for a Tax within a specific sales channel." - } - } - }, - "customer": { - "$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." + "stateId": { + "description": "Unique identity of state." }, "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." + "description": "Unique identity of language." }, - "defaultShippingAddressId": { - "description": "Unique identity of customer's default shipping address within a specific sales channel." + "currencyId": { + "description": "Unique identity of currency." }, - "customerNumber": { - "description": "Name of the customer within a specific sales channel the customer is interacting." + "paymentMethodId": { + "description": "Unique identity of payment method." }, - "salutationId": { - "description": "Unique identity of customer's default shipping address within a specific sales channel." + "shippingMethodId": { + "description": "Unique identity of shipping method." }, - "firstName": { - "description": "First name of the customer within a specific sales channel." + "countryId": { + "description": "Unique identity of country." }, - "lastName": { - "description": "Last name of the customer within a specific sales channel." + "navigationCategoryId": { + "description": "Unique identity of navigation category." }, - "company": { - "description": "Company name of the customer within a specific sales channel." + "navigationCategoryDepth": { + "description": "It determines the number of levels of subcategories in the storefront category menu." }, - "password": { - "description": "Password of the customer within a specific sales channel." + "footerCategoryId": { + "description": "Unique identity of footer category." }, - "email": { - "description": "Email of the customer within a specific sales channel." + "serviceCategoryId": { + "description": "Unique identity of service category." }, - "title": { - "description": "Customer's title or honorifics like Mr, Mrs, etc within a specific sales channel." + "name": { + "description": "Name of the sales channel." }, - "affiliateCode": { - "description": "An affiliate code is an identification option with which website operators can mark outgoing links within a specific sales channel." + "shortName": { + "description": "A short name for sales channel." }, - "campaignCode": { - "description": "A unique identifier for a campaign within a specific sales channel." + "accessKey": { + "description": "Access key to store api." }, "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." + "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." }, - "lastOrderDate": { - "description": "Captures customer's last order date within a specific sales channel." + "maintenance": { + "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." }, - "orderCount": { - "description": "Captures the number of orders placed by a customer within a specific sales channel." + "maintenanceIpWhitelist": { + "description": "Array of IP address allowed to access the sales channel." }, - "legacyEncoder": { - "description": "encapsulates shop credentials when needed to migrate shop system from old instance to new instance" + "mailHeaderFooterId": { + "description": "Unique identity of mail header and footer." }, - "legacyPassword": { - "description": "Hashed password of the old shop system" + "customerGroupId": { + "description": "Unique identity of customer group." }, - "autoIncrement": { - "description": "Internal field. " + "hreflangActive": { + "description": "When boolean value is `true``, the sales channel pages are available in different languages." }, - "remoteAddress": { - "description": "Anonymous IP address of the customer for last session." + "hreflangDefaultDomainId": { + "description": "Unique identity of hreflangDefaultDomain." } } }, - "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethod", + "availabilityRule": { "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": "Unique name for the rule." }, "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." + "description": "A short description about the rule." }, - "mediaId": { - "description": "Unique identity of media used in payment method within a specific sales channel." + "priority": { + "description": "A numerical value to prioritize one of the rules from the list." }, - "formattedHandlerIdentifier": { - "description": "Internal field that contains system identifier details for payment methods like Paypal." + "invalid": { + "description": "When the boolean value is `true`, the rule is no more available for usage." } } }, - "shippingLocation": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" - } - } + "availabilityRuleId": { + "description": "Unique identity of availability rule." }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod", + "prices": { "properties": { - "name": { - "description": "Name of the shipping method within a specific sales channel." + "shippingMethodId": { + "description": "Unique identity of shipping method." }, - "active": { - "description": "When `true`, the shipping method is available for usage within a specific sales channel." + "currencyId": { + "description": "Unique identity of currency." }, - "description": { - "description": "A short description about the shipping method within a specific sales channel." + "ruleId": { + "description": "Unique identity of rule." }, - "trackingUrl": { - "description": "URL that allows to track packages for a specific sales channel." + "calculation": { + "description": "Shipping price calculated based on quantity, price, weight or volume of items." }, - "deliveryTimeId": { - "description": "Unique identity of deliveryTime within a specific sales channel." + "quantityStart": { + "description": "Starting range of quantity of an item." }, - "availabilityRuleId": { - "description": "Unique identity of the rule for the payment method." + "quantityEnd": { + "description": "Ending range of quantity of an item." }, - "mediaId": { - "description": "Unique identity of media used in shipping method within a specific sales channel." + "price": { + "description": "Shipping method price after applied rules." + }, + "calculationRuleId": { + "description": "Unique identity of calculation rule." } } }, - "context": { - "description": "Core context with general configuration values and state", - "type": "object", + "mediaId": { + "description": "Unique identity of media." + }, + "media": { "properties": { - "versionId": { - "type": "string", - "description": "Unique identity of context's version in a specific sales channel." + "userId": { + "description": "Unique identity of user." }, - "currencyId": { - "type": "string", - "description": "Unique identity of currency context in a specific sales channel." + "mimeType": { + "description": "A string sent along with a file indicating the type of the file. For example: image/jpeg." }, - "currencyFactor": { - "type": "integer", - "description": "Unique identity of currency factor context in a specific sales channel." + "fileExtension": { + "description": "Type of file indication. For example: jpeg, png." }, - "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." + "fileSize": { + "description": "Size of the file media file uploaded." }, - "languageIdChain": { - "type": "array", - "items": { - "type": "string" - } + "title": { + "description": "Title name give to the media." }, - "scope": { - "type": "string", - "description": "Scope defines if its related to system or user context." + "metaDataRaw": { + "description": "Details of the media file uploaded." }, - "source": { - "type": "string", - "description": "When context is related to user in the source, then there is userId." + "alt": { + "description": "Alternate text for media." }, - "taxState": { - "type": "string", - "description": "Tax state can either be `gross` or `net`." + "url": { + "description": "Runtime field, cannot be used as part of the criteria." }, - "useCache": { - "type": "boolean", - "description": "When boolean value is `true`, caching is used." - } - } - } - } - }, - "CartItems": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - }, - "properties": { - "id": { - "description": "Unique identity of cart item." + "fileName": { + "description": "Name of the media file uploaded." }, - "modified": { - "description": "When boolean value is `true`, the cart is said to be modified." + "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." } } } } }, - "CustomerAddressBody": { - "description": "Added since version: 6.0.0.0", - "required": [ - "countryId", - "firstName", - "lastName", - "city", - "street" - ], + "ProductDetailResponse": { + "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "countryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryStateId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "salutationId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "zipcode": { - "type": "string" - }, - "city": { - "type": "string" - }, - "company": { - "type": "string" - }, - "street": { - "type": "string" - }, - "department": { - "type": "string" + "product": { + "$ref": "#/components/schemas/Product" }, - "title": { - "type": "string" + "configurator": { + "type": "array", + "description": "List of property groups with their corresponding options and information on how to display them.", + "items": { + "$ref": "#/components/schemas/PropertyGroup" + } }, - "phoneNumber": { - "type": "string" + "id": { + "description": "Unique identity of product detail response." }, - "additionalAddressLine1": { - "type": "string" + "available": { + "description": "When boolean value is true, the product is available for purchase." }, - "additionalAddressLine2": { - "type": "string" + "isCloseout": { + "description": "Boolean value to check if the product is still buyable when stock value is 0." }, - "customFields": { - "type": "object" + "displayGroup": { + "description": "Internal field." }, - "country": { - "$ref": "#/components/schemas/Country" + "manufacturerNumber": { + "description": "Unique number of the product manufacturer." }, - "countryState": { - "$ref": "#/components/schemas/CountryState" + "stock": { + "description": "Quantity of product available." }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "sortedProperties": { + "description": "Properties of the product that are sorted" } }, - "type": "object" + "required": [ + "product" + ] }, - "CartListPrice": { + "Breadcrumb": { "type": "object", - "description": "", "properties": { - "discount": { - "type": "number" - }, - "percentage": { - "type": "number" + "name": { + "type": "string" }, - "price": { - "type": "number" + "categoryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "apiAlias": { + "type": { "type": "string", "enum": [ - "cart_list_price" + "page", + "link", + "folder" ] - } - }, - "required": [ - "apiAlias" - ] - }, - "ProductListingCriteria": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" }, - { + "translated": { "type": "object", - "description": "Additional search parameters for product listings", + "additionalProperties": true, "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" + "customFields": { + "type": "object" }, - "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 + "slotConfig": { + "type": "object" }, - "p": { - "description": "Search result page", - "type": "integer", - "default": 1 + "linkType": { + "type": "string", + "enum": [ + "external", + "category", + "product", + "landing_page" + ] }, - "manufacturer": { - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "internalLink": { "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 `|`.", + "externalLink": { "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 + "linkNewTab": { + "type": "boolean" }, - "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 + "description": { + "type": "string" }, - "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 + "metaTitle": { + "type": "string" }, - "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.", + "metaDescription": { "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.", - "type": "string", - "nullable": true + "keywords": { + "type": "string" } } - } - ], - "properties": { - "filter": { - "properties": { - "type": { - "description": "To filter the results and aggregations with filter types like ==, >=, etc." - }, - "field": { - "description": "To filter the results and aggregations by field like an property identifier." - }, - "value": { - "description": "To filter the results and aggregations by value." - } + }, + "path": { + "type": "string" + }, + "seoUrls": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" } }, - "sort": { - "properties": { - "field": { - "description": "Sort the search results by field like an property identifier." - }, - "order": { - "description": "Sort the search results of orders by ascending or descending." - }, - "naturalSorting": { - "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." - } - } - }, - "post-filter": { - "properties": { - "type": { - "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." - }, - "field": { - "description": "To filter only the results but not the aggregations by field like an property identifier." - }, - "value": { - "description": "To filter only the results but not the aggregations by value." - } - } - } - } - }, - "AggregationEntity": { - "title": "AggregationEntity", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", + "apiAlias": { "type": "string", "enum": [ - "entity" + "breadcrumb" ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "definition": { - "description": "The entity definition e.g \"product_manufacturer\".", - "type": "string" } }, "required": [ "name", + "categoryId", "type", - "field", - "definition" + "translated", + "path", + "apiAlias" ] }, - "AggregationFilter": { - "title": "AggregationFilter", + "ProductListingFlags": { "type": "object", + "description": "Additional flags for product listings", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "filter" + "no-aggregations": { + "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } ] }, - "filter": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Filters" - } + "only-aggregations": { + "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] } - }, - "required": [ - "name", - "type", - "filter" - ] + } }, - "AggregationTerms": { - "title": "AggregationTerms", + "Cart": { "type": "object", "properties": { "name": { - "description": "Give your aggregation an identifier, so you can find it easier", + "description": "Name of the cart - for example `guest-cart`", "type": "string" }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "terms" - ] - }, - "field": { - "description": "The field you want to aggregate over.", + "token": { + "description": "Context token identifying the cart and the user session", "type": "string" }, - "limit": { - "description": "The number of terms to return", - "type": "number" + "price": { + "$ref": "#/components/schemas/CalculatedPrice" }, - "sort": { + "lineItems": { + "description": "All items within the cart", "type": "array", - "description": "Sorting the aggregation result.", "items": { - "$ref": "#/components/schemas/Sort" + "$ref": "#/components/schemas/LineItem" } - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "AggregationHistogram": { - "title": "AggregationHistogram", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "histogram" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "interval": { - "description": "The interval of the histogram", - "type": "number" - }, - "format": { - "description": "The format of the histogram", - "type": "string" - }, - "timeZone": { - "description": "The timezone of the histogram", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "AggregationRange": { - "title": "AggregationRange", - "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "range" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" }, - "ranges": { - "description": "The ranges of the aggregation", - "type": "array", - "items": { - "type": "object", - "anyOf": [ - { + "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", - "title": "From and to", "properties": { - "from": { - "type": "number", - "description": "The lower bound of the range" + "code": { + "type": "number" }, - "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" + "key": { + "type": "string" + }, + "level": { + "type": "number" + }, + "message": { + "type": "string" + }, + "messageKey": { + "type": "string" } }, "required": [ - "to" + "code", + "key", + "level", + "message", + "messageKey" ] } - ] - } - } - }, - "required": [ - "name", - "type", - "field", - "ranges" - ] - }, - "NavigationType": { - "type": "string", - "enum": [ - "main-navigation", - "footer-navigation", - "service-navigation" - ] - }, - "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." + "key": { + "description": "Unique key for every message." }, - "rawTotal": { - "description": "The total value before rounding off." + "level": { + "description": "Types of level - Notice, warning and error. " }, - "taxStatus": { - "description": "TaxStatus takes `Free`, `Net` or `Gross` as values." + "message": { + "description": "A persistent error passed from the shopping cart calculation processes to the user end." } } }, - "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." - } + "deliveries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDelivery" + } + }, + "transactions": { + "description": "A list of all payment transactions associated with the current cart.", + "type": "array", + "items": { + "type": "object", + "properties": { + "paymentMethodId": { + "type": "string" + }, + "amount": { + "$ref": "#/components/schemas/CalculatedPrice" } } + }, + "properties": { + "paymentMethodId": { + "description": "Unique identity of payment method." + } } }, - "stateId": { - "description": "Unique identity of state." + "modified": { + "type": "boolean", + "description": "It signifies any changes to cart." }, - "returnNumber": { - "description": "Reference number for returning order." + "customerComment": { + "description": "A comment that can be added to the cart.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] }, - "requestedAt": { - "description": "Date and time when the order return was requested." + "affiliateCode": { + "description": "An affiliate tracking code", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] }, - "amountTotal": { - "description": "Gross price of the order." + "campaignCode": { + "description": "A campaign tracking code", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] }, - "amountNet": { - "description": "Net price of the order." + "apiAlias": { + "type": "string", + "enum": [ + "cart" + ] + }, + "id": { + "description": "Unique identity of cart." } - } + }, + "required": [ + "price", + "apiAlias" + ] }, - "OrderReturnLineItem": { + "Criteria": { + "type": "object", + "description": "Criteria to query entities.", "properties": { - "id": { - "description": "Unique identity of order return line item." - }, - "versionId": { - "description": "Unique identity of order return line item's version." + "page": { + "description": "Search result page", + "type": "integer" }, - "orderReturnId": { - "description": "Unique identity of order return." + "term": { + "description": "Search term", + "type": "string" }, - "orderReturnVersionId": { - "description": "Unique identity of order return version." + "limit": { + "description": "Number of items per result page", + "type": "integer" }, - "orderLineItemId": { - "description": "Unique identity of order line item." + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + }, + "properties": { + "type": { + "description": "To filter the results and aggregations with filter types like ==, >=, etc." + }, + "field": { + "description": "To filter the results and aggregations by field like an property identifier." + }, + "value": { + "description": "To filter the results and aggregations by value." + } + } }, - "orderLineItemVersionId": { - "description": "Unique identity of order line items's version." + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } }, - "reasonId": { - "description": "Unique identity of reason for return." + "query": { + "type": "string", + "description": "The query string to search for" }, - "quantity": { - "description": "Number of line items returned." + "associations": { + "$ref": "#/components/schemas/Associations" }, - "refundAmount": { - "description": "Amount to be refunded." + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + }, + "properties": { + "type": { + "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." + }, + "field": { + "description": "To filter only the results but not the aggregations by field like an property identifier." + }, + "value": { + "description": "To filter only the results but not the aggregations by value." + } + } }, - "restockQuantity": { - "description": "Update of stock quantity after the return of certain line items are initiated." + "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." + }, + "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." + } + } }, - "customFields": { - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } }, - "stateId": { - "description": "Unique identity of state." - } - } - }, - "OrderReturnLineItemReason": { - "properties": { - "id": { - "description": "Unique identity for reason of return." + "fields": { + "type": "array", + "description": "Fields which should be returned in the search result.", + "items": { + "type": "string", + "description": "Name of a field" + } }, - "reasonKey": { - "description": "Unique key associated with reason for the order return. " + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } }, - "content": { - "description": "Description of the reason of return." + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" }, - "translated": { - "description": "Contains the translations of all translated fields." + "includes": { + "$ref": "#/components/schemas/Includes" } } }, - "OrderWarehouseGroup": { - "properties": { - "id": { - "description": "Unique identity of order warehouse group." + "Associations": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Criteria" + } + }, + "Includes": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" } } }, - "ProductReviewSummary": { - "properties": { - "id": { - "description": "Unique identity of products's review summary." + "Aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" }, - "productId": { - "description": "Unique identity of products." + { + "title": "AggregationEntity", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationEntity" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] }, - "salesChannelId": { - "description": "Unique identity of sales channel." + { + "title": "AggregationFilter", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationFilter" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] }, - "summary": { - "description": "Unique identity of products's review summary." + { + "title": "AggregationTerms", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] }, - "visible": { - "description": "When boolean value is `true`, the review is displayed to the customer." + { + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] }, - "translated": { - "description": "Contains the translations of all translated fields." + { + "title": "AggregationRange", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationRange" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] } - } + ] }, - "ProductWarehouse": { + "SubAggregations": { + "type": "object", "properties": { - "id": { - "description": "Unique identity of warehouse of product." + "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" + } + ] } } }, - "Subscription": { + "TotalCountMode": { + "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", + "type": "string", + "default": "none", + "enum": [ + "none", + "exact", + "next-pages" + ] + }, + "Query": { + "type": "object", "properties": { - "id": { - "description": "Unique identity of subscription." + "score": { + "type": "number" }, - "convertedOrder": { - "description": "An array loaded with persistent information related to cart data." + "query": { + "oneOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "additionalProperties": true + }, + "Sort": { + "type": "object", + "properties": { + "field": { + "type": "string" }, - "subscriptionNumber": { - "description": "Unique number associated with subscription." + "order": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] }, - "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." + "naturalSorting": { + "type": "boolean" }, - "customFields": { - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + "type": { + "type": "string" } + }, + "required": [ + "field", + "order" + ] + }, + "Filters": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] } }, - "SubscriptionAddress": { + "SimpleFilter": { + "type": "object", "properties": { - "id": { - "description": "Unique identity of subscription address." - }, - "countryId": { - "description": "Unique identity of country." - }, - "subscriptionId": { - "description": "Unique identity of subscription." - }, - "countryStateId": { - "description": "Unique identity of state of the country." - }, - "salutationId": { - "description": "Unique identity of salutation." - }, - "firstName": { - "description": "First name of the subscribed customer." - }, - "lastName": { - "description": "Last name of the subscribed customer." - }, - "street": { - "description": "Street address" - }, - "zipcode": { - "description": "Zip code of the country." - }, - "company": { - "description": "Name of the company." - }, - "department": { - "description": "Name of the department." - }, - "title": { - "description": "Title name given to customer's order address." - }, - "vatId": { - "description": "Unique identity of VAT." - }, - "phoneNumber": { - "description": "Phone number of the customer." - }, - "additionalAddressLine1": { - "description": "Additional address input if necessary." - }, - "additionalAddressLine2": { - "description": "Additional address input if necessary." + "type": { + "type": "string", + "enum": [ + "contains", + "equalsAny", + "prefix", + "suffix" + ] }, - "customFields": { - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + "field": { + "type": "string" }, - "email": { - "description": "Last name of the subscribed customer. " + "value": { + "type": "string" } - } + }, + "required": [ + "type", + "field", + "value" + ] }, - "SubscriptionCustomer": { + "EqualsFilter": { + "type": "object", "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." + "type": { + "type": "string", + "enum": [ + "equals" + ] }, - "vatId": { - "description": "Unique identity of VAT." + "field": { + "type": "string" }, - "customFields": { - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + "value": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + } + ] } - } + }, + "required": [ + "type", + "field", + "value" + ] }, - "SubscriptionInterval": { + "MultiNotFilter": { + "type": "object", "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." + "type": { + "type": "string", + "enum": [ + "multi", + "not" + ] }, - "availabilityRuleId": { - "description": "Unique identity of rule." + "operator": { + "type": "string", + "enum": [ + "and", + "or", + "nor", + "nand" + ] }, - "translated": { - "description": "Contains the translations of all translated fields." + "queries": { + "$ref": "#/components/schemas/Filters" } - } + }, + "required": [ + "type", + "operator", + "queries" + ] }, - "SubscriptionPlan": { + "RangeFilter": { + "type": "object", "properties": { - "id": { - "description": "Unique identity of subscription plan." + "type": { + "type": "string", + "enum": [ + "range" + ] }, - "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." + "field": { + "type": "string" }, - "subscriptionPlanId": { - "description": "Unique identity of subscription plan." + "parameters": { + "type": "object", + "properties": { + "gte": { + "type": "number" + }, + "gt": { + "type": "number" + }, + "lte": { + "type": "number" + }, + "lt": { + "type": "number" + } + } } - } + }, + "required": [ + "type", + "field", + "parameters" + ] }, - "SubscriptionPlanProductMapping": { + "Price": { + "type": "object", + "description": "Price object", "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." + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "subscriptionPlanId": { - "description": "Unique identity of subscription plan." - } - } - }, - "SubscriptionTagMapping": { - "properties": { - "id": { - "description": "Unique identity of subscription tag." + "gross": { + "description": "", + "type": "number" }, - "subscriptionId": { - "description": "Unique identity of subscription." + "net": { + "description": "", + "type": "number" }, - "tagId": { - "description": "Unique identity of subscription tag." - } - } - }, - "SwagDelayAction": { - "properties": { - "id": { - "description": "Unique identity of swag delay action for flow builder" + "linked": { + "description": "", + "type": "boolean" }, - "orderId": { - "description": "Unique identity of order." + "listPrice": { + "description": "", + "type": "object", + "properties": { + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "gross": { + "description": "", + "type": "number" + }, + "net": { + "description": "", + "type": "number" + }, + "linked": { + "description": "", + "type": "boolean" + } + }, + "required": [ + "gross", + "net" + ] }, - "customerId": { - "description": "Unique identity of customer." - } - } - }, - "Warehouse": { - "properties": { - "id": { - "description": "Unique identity of warehouse." - } - } - }, - "WarehouseGroup": { - "properties": { - "id": { - "description": "Unique identity of warehouse group." + "regulationPrice": { + "description": "", + "type": "object", + "properties": { + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "gross": { + "description": "", + "type": "number" + }, + "net": { + "description": "", + "type": "number" + }, + "linked": { + "description": "", + "type": "boolean" + } + }, + "required": [ + "gross", + "net" + ] } - } + }, + "required": [ + "currencyId", + "gross", + "net" + ] }, - "CustomPrice": { + "OrderRouteResponse": { + "type": "object", "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." + "orders": { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "elements" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" + } + } + } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] }, - "price": { - "description": "Detailed information of price." + "paymentChangeable": { + "type": "object", + "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", + "additionalProperties": { + "type": "boolean" + } } - } + }, + "required": [ + "orders" + ] }, - "CustomerSpecificFeatures": { + "WishlistLoadRouteResponse": { + "type": "object", + "required": [ + "products" + ], "properties": { - "id": { - "description": "Unique identity of the customer specific features." + "wishlist": { + "type": "object", + "properties": { + "customerId": { + "type": "string", + "description": "Unique identity of the customer." + }, + "salesChannelId": { + "type": "string", + "description": "Unique identity of the sales channel." + } + } }, - "customerId": { - "description": "Unique identity of the customer." + "products": { + "$ref": "#/components/schemas/ProductListingResult" } } }, - "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." + "ProductListingCriteria": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" }, - "translated": { - "description": "Contains the translations of all translated fields." + { + "type": "object", + "description": "Additional search parameters for product listings", + "properties": { + "order": { + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "type": "string" + }, + "limit": { + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "type": "integer", + "minimum": 0 + }, + "p": { + "description": "Search result page", + "type": "integer", + "default": 1 + }, + "manufacturer": { + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "type": "string" + }, + "min-price": { + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "max-price": { + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "rating": { + "description": "Filter products with a minimum average rating.", + "type": "integer" + }, + "shipping-free": { + "description": "Filters products that are marked as shipping-free.", + "type": "boolean", + "default": false + }, + "properties": { + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "type": "string" + }, + "manufacturer-filter": { + "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "price-filter": { + "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "rating-filter": { + "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "shipping-free-filter": { + "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-filter": { + "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-whitelist": { + "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", + "type": "string" + }, + "reduce-aggregations": { + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + } } - } - } - }, - "responses": { - "404": { - "description": "Not Found", - "content": { - "application/vnd.api+json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "404", - "title": "Not Found", - "description": "Resource with given parameter was not found." - } - ] + ], + "properties": { + "filter": { + "properties": { + "type": { + "description": "To filter the results and aggregations with filter types like ==, >=, etc." + }, + "field": { + "description": "To filter the results and aggregations by field like an property identifier." + }, + "value": { + "description": "To filter the results and aggregations by value." + } } }, - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "404", - "title": "Not Found", - "description": "Resource with given parameter was not found." - } - ] - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/vnd.api+json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "403", - "title": "Forbidden", - "description": "This operation is restricted to logged in users." - } - ] + "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." + } } }, - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "403", - "title": "Forbidden", - "description": "This operation is restricted to logged in users." - } - ] + "post-filter": { + "properties": { + "type": { + "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." + }, + "field": { + "description": "To filter only the results but not the aggregations by field like an property identifier." + }, + "value": { + "description": "To filter only the results but not the aggregations by value." + } } } } }, - "401": { - "description": "Unauthorized", - "content": { - "application/vnd.api+json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "401", - "title": "Unauthorized", - "description": "Authorization information is missing or invalid." - } - ] - } + "ListPrice": { + "type": "object", + "description": "", + "properties": { + "discount": { + "type": "number" }, - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "401", - "title": "Unauthorized", - "description": "Authorization information is missing or invalid." - } - ] - } + "percentage": { + "type": "number" + }, + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_list_price" + ] } - } + }, + "required": [ + "apiAlias" + ] }, - "400": { - "description": "Bad Request", - "content": { - "application/vnd.api+json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "400", - "title": "Bad Request", - "description": "Bad parameters for this endpoint. See documentation for the correct ones." - } - ] - } - }, - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "400", - "title": "Bad Request", - "description": "Bad parameters for this endpoint. See documentation for the correct ones." - } - ] + "NavigationType": { + "type": "string", + "enum": [ + "main-navigation", + "footer-navigation", + "service-navigation" + ] + }, + "CartDeliveryInformation": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_information" + ] + }, + "freeDelivery": { + "type": "boolean" + }, + "deliveryTime": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "min": { + "type": "integer" + }, + "max": { + "type": "integer" + }, + "unit": { + "type": "string" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_time" + ] + } } + }, + "height": { + "type": "integer" + }, + "length": { + "type": "integer" + }, + "restockTime": { + "type": "integer" + }, + "stock": { + "type": "integer" + }, + "weight": { + "type": "integer" + }, + "width": { + "type": "integer" } - } - }, - "204": { - "description": "No Content" + }, + "required": [ + "apiAlias" + ] }, - "ContextTokenResponse": { - "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", - "headers": { - "sw-context-token": { - "description": "Contains sw-context-token value", - "schema": { - "type": "string" - } + "AggregationMetrics": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "avg", + "count", + "max", + "min", + "stats", + "sum" + ] + }, + "field": { + "type": "string" } }, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "description": "Define the URL which browser will be redirected to", - "type": "string" - } + "required": [ + "name", + "type", + "field" + ] + }, + "CustomerAddressRead": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true + }, + "customerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "updatedAt": { + "oneOf": [ + { + "type": "string", + "format": "date-time" + }, + { + "type": "null" } - } + ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "oneOf": [ + { + "$ref": "#/components/schemas/CountryState" + }, + { + "type": "null" + } + ] + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" } - } + }, + "required": [ + "customerId", + "createdAt", + "updatedAt", + "country", + "salutation" + ] }, - "OpenApi3": { - "description": "Returns information about the store API.", - "content": { - "application/json": { - "schema": { - "properties": { - "openapi": { - "type": "string" - }, - "info": { - "type": "object", - "properties": { - "title": { - "type": "string" - }, - "summary": { - "type": "string" - }, - "description": { - "type": "string" - }, - "termsOfService": { - "type": "string", - "format": "uri" - }, - "contact": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "url": { - "type": "string", - "format": "uri" - }, - "email": { - "type": "string", - "format": "email" - } - } - }, - "license": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "identifier": { - "type": "string" - }, - "url": { - "type": "string", - "format": "uri" - } - }, - "required": [ - "name" - ] - }, - "version": { - "type": "string" - } - }, - "required": [ - "title", - "version" - ] - }, - "jsonSchemaDialect": { - "type": "string" - }, - "webhooks": { - "type": "object" - }, - "servers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "url": { - "type": "string" - } - }, - "required": [ - "url" - ] - } - }, - "components": { - "type": "object", - "properties": { - "schemas": { - "type": "object" - }, - "responses": { - "type": "object" - }, - "parameters": { - "type": "object" - }, - "examples": { - "type": "object" - }, - "requestBodies": { - "type": "object" - }, - "headers": { - "type": "object" - }, - "securitySchemes": { - "type": "object" - }, - "links": { - "type": "object" - }, - "callbacks": { - "type": "object" - }, - "pathItems": { - "type": "object" - } - } - }, - "security": { - "type": "array", - "items": { - "type": "object" - } - }, - "paths": { - "type": "object" - }, - "tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "externalDocs": { - "type": "object", - "properties": { - "description": { - "type": "string" - }, - "url": { - "type": "string", - "format": "uri" - } - }, - "required": [ - "url" - ] - } - }, - "required": [ - "name" + "CustomerAddressBody": { + "description": "Added since version: 6.0.0.0", + "required": [ + "countryId", + "firstName", + "lastName", + "city", + "street" + ], + "properties": { + "countryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryStateId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "salutationId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "zipcode": { + "type": "string" + }, + "city": { + "type": "string" + }, + "company": { + "type": "string" + }, + "street": { + "type": "string" + }, + "department": { + "type": "string" + }, + "title": { + "type": "string" + }, + "phoneNumber": { + "type": "string" + }, + "additionalAddressLine1": { + "type": "string" + }, + "additionalAddressLine2": { + "type": "string" + }, + "customFields": { + "type": "object" + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "$ref": "#/components/schemas/CountryState" + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" + } + }, + "type": "object" + }, + "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" + ] + }, + "CartItems": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + }, + "properties": { + "id": { + "description": "Unique identity of cart item." + }, + "modified": { + "description": "When boolean value is `true`, the cart is said to be modified." + } + } + } + } + }, + "ReferencePrice": { + "type": "object", + "properties": { + "purchaseUnit": { + "type": "number" + }, + "referenceUnit": { + "type": "number" + }, + "unitName": { + "type": "string" + }, + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_reference" + ] + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/ListPrice" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" ] } - }, - "externalDocs": { - "type": "object", - "properties": { - "description": { - "type": "string" - }, - "url": { - "type": "string", - "format": "uri" - } + } + }, + { + "type": "null" + } + ] + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" + ] + }, + "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." }, - "required": [ - "url" - ] + "discount": { + "description": "Absolute discount on each line item." + }, + "percentage": { + "description": "Discount in percentage." + } } }, - "type": "object", - "required": [ - "openapi", - "info" - ] + "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. " } } - } - }, - "parameters": { - "contentType": { - "name": "Content-Type", - "in": "header", - "description": "Content type of the request", - "required": true, - "schema": { - "type": "string", - "default": "application/json" + }, + "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." + } } }, - "accept": { - "name": "Accept", - "in": "header", - "description": "Accepted response content types", - "required": true, - "schema": { - "type": "string", - "default": "application/json" + "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." + } } - } - }, - "securitySchemes": { - "ApiKey": { - "type": "apiKey", - "description": "Identifies the sales channel you want to access the API through", - "name": "sw-access-key", - "in": "header" }, - "ContextToken": { - "type": "apiKey", - "description": "Identifies an anonymous or identified user session", - "name": "sw-context-token", - "in": "header" - } - } - }, - "security": [ - { - "ApiKey": [] - } - ], - "paths": { - "/customer-group-registration/config/{customerGroupId}": { - "get": { - "tags": [ - "Login & Registration" - ], - "summary": "Fetch registration settings for customer group", - "operationId": "getCustomerGroupRegistrationInfo", - "parameters": [ - { - "name": "customerGroupId", - "in": "path", - "description": "Customer group id", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "SubscriptionPlan": { + "properties": { + "id": { + "description": "Unique identity of subscription plan." }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "name": { + "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." } - ], - "responses": { - "200": { - "description": "Returns the customer group including registration settings.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomerGroup" - } - } - } + } + }, + "CustomerSpecificFeatures": { + "properties": { + "id": { + "description": "Unique identity of the customer specific features." + }, + "customerId": { + "description": "Unique identity of the customer." } - }, - "security": [ - { - "ApiKey": [] + } + }, + "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." } - ] + } } }, - "/checkout/cart": { - "get": { - "tags": [ - "Cart" - ], - "summary": "Fetch or create a cart", - "description": "Used to fetch the current cart or for creating a new one.", - "operationId": "readCart", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "responses": { + "404": { + "description": "Not Found", + "content": { + "application/vnd.api+json": { "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "404", + "title": "Not Found", + "description": "Resource with given parameter was not found." + } + ] } - } - ], - "responses": { - "200": { - "description": "Cart", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Cart" + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "404", + "title": "Not Found", + "description": "Resource with given parameter was not found." } - } + ] } } - }, - "security": [ - { - "ApiKey": [] - } - ] + } }, - "delete": { - "tags": [ - "Cart" - ], - "summary": "Delete a cart", - "description": "This route deletes the cart of the customer.", - "operationId": "deleteCart", - "responses": { - "204": { - "description": "Successfully deleted the cart", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "403": { + "description": "Forbidden", + "content": { + "application/vnd.api+json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "403", + "title": "Forbidden", + "description": "This operation is restricted to logged in users." } - } + ] } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/checkout/cart/line-item": { - "post": { - "tags": [ - "Cart" - ], - "summary": "Add items to the cart", - "description": "This route adds items to the cart. An item can be a product or promotion for example. They are referenced by the `referencedId`-parameter.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#adding-new-items-to-the-cart)", - "operationId": "addLineItem", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + }, + "application/json": { "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CartItems" - } - } - } - }, - "responses": { - "200": { - "description": "The updated cart.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Cart" + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "403", + "title": "Forbidden", + "description": "This operation is restricted to logged in users." } - } + ] } } - }, - "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, + "401": { + "description": "Unauthorized", + "content": { + "application/vnd.api+json": { "schema": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "401", + "title": "Unauthorized", + "description": "Authorization information is missing or invalid." + } + ] } }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "application/json": { "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "401", + "title": "Unauthorized", + "description": "Authorization information is missing or invalid." + } + ] + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/vnd.api+json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "400", + "title": "Bad Request", + "description": "Bad parameters for this endpoint. See documentation for the correct ones." + } + ] } - } - ], - "responses": { - "200": { - "description": "The updated cart.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Cart" + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "400", + "title": "Bad Request", + "description": "Bad parameters for this endpoint. See documentation for the correct ones." } - } + ] } } - }, - "security": [ - { - "ApiKey": [] - } - ] + } }, - "patch": { - "tags": [ - "Cart" - ], - "summary": "Update items in the cart", - "description": "This route updates items in the cart. A typical example is updating the quantity of an item.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#updating-items-in-the-cart)", - "operationId": "updateLineItem", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "204": { + "description": "No Content" + }, + "ContextTokenResponse": { + "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", + "headers": { + "sw-context-token": { + "description": "Contains sw-context-token value", "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CartItems" - } + "type": "string" } } }, - "responses": { - "200": { - "description": "The updated cart.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Cart" + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redirectUrl": { + "description": "Define the URL which browser will be redirected to", + "type": "string" } } } } - }, - "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": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + } + }, + "OpenApi3": { + "description": "Returns information about the store API.", + "content": { + "application/json": { "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "ids" - ], - "properties": { - "ids": { - "description": "A list of product identifiers.", - "type": "array", - "minItems": 1, - "items": { + "properties": { + "openapi": { + "type": "string" + }, + "info": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "description": { + "type": "string" + }, + "termsOfService": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "uri" + }, + "contact": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "email": { + "type": "string", + "format": "email" + } + } + }, + "license": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "identifier": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "name" + ] + }, + "version": { + "type": "string" + } + }, + "required": [ + "title", + "version" + ] + }, + "jsonSchemaDialect": { + "type": "string" + }, + "webhooks": { + "type": "object" + }, + "servers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + } + }, + "required": [ + "url" + ] + } + }, + "components": { + "type": "object", + "properties": { + "schemas": { + "type": "object" + }, + "responses": { + "type": "object" + }, + "parameters": { + "type": "object" + }, + "examples": { + "type": "object" + }, + "requestBodies": { + "type": "object" + }, + "headers": { + "type": "object" + }, + "securitySchemes": { + "type": "object" + }, + "links": { + "type": "object" + }, + "callbacks": { + "type": "object" + }, + "pathItems": { + "type": "object" } } }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "The updated cart.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Cart" + "security": { + "type": "array", + "items": { + "type": "object" + } + }, + "paths": { + "type": "object" + }, + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "externalDocs": { + "type": "object", + "properties": { + "description": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "url" + ] + } + }, + "required": [ + "name" + ] + } + }, + "externalDocs": { + "type": "object", + "properties": { + "description": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "url" + ] } - } + }, + "type": "object", + "required": [ + "openapi", + "info" + ] } } - }, - "security": [ - { - "ApiKey": [] - } - ] + } } }, - "/checkout/order": { + "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" + } + } + }, + "securitySchemes": { + "ApiKey": { + "type": "apiKey", + "description": "Identifies the sales channel you want to access the API through", + "name": "sw-access-key", + "in": "header" + }, + "ContextToken": { + "type": "apiKey", + "description": "Identifies an anonymous or identified user session", + "name": "sw-context-token", + "in": "header" + } + } + }, + "security": [ + { + "ApiKey": [] + } + ], + "paths": { + "/landing-page/{landingPageId}": { "post": { "tags": [ - "Order" + "Content", + "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 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.", + "operationId": "readLandingPage", "parameters": [ + { + "name": "landingPageId", + "in": "path", + "description": "Identifier of the landing page.", + "required": true, + "schema": { + "type": "string" + } + }, { "name": "sw-language-id", "in": "header", @@ -15728,125 +15697,47 @@ } ], "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" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" }, - "campaignCode": { - "description": "The campaign code is used to track which action the customer came from. An example could be `Summer-Deals`", - "type": "string" + { + "allOf": [ + { + "properties": { + "slots": { + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/ProductListingCriteria" + } + ] } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Order", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Order" - } + ] } } } }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/checkout/gateway": { - "get": { - "tags": [ - "Gateway" - ], - "summary": "Call the checkout gateway", - "description": "Call the checkout gateway, which is used to manipulate certain aspects of the checkout process (e.g. available payment methods).", - "operationId": "checkoutGateway", "responses": { "200": { - "description": "Checkout gateway response", - "content": { - "application/json": { - "schema": { - "properties": { - "paymentMethods": { - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PaymentMethod" - } - } - }, - "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" - } - } - } - } - } + "description": "The loaded landing page with cms page", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LandingPage" } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -15856,37 +15747,30 @@ ] } }, - "/handle-payment": { + "/app-system/{name}/generate-token": { "post": { "tags": [ - "Payment & Shipping" + "App system" + ], + "summary": "Generate JWT token for app system backend", + "description": "Generate JWT token for authenticated communication with the app server", + "operationId": "generateJWTAppSystemAppServer", + "parameters": [ + { + "in": "path", + "name": "name", + "required": true, + "description": "Name of the app", + "schema": { + "type": "string" + } + } ], - "summary": "Initiate a payment for an order", - "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order.", - "operationId": "handlePaymentMethod", "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "required": [ - "orderId" - ], - "properties": { - "orderId": { - "description": "Identifier of an order", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "finishUrl": { - "description": "URL to which the client should be redirected after successful payment", - "type": "string" - }, - "errorUrl": { - "description": "URL to which the client should be redirected after erroneous payment", - "type": "string" - } - }, "type": "object" } } @@ -15894,19 +15778,23 @@ }, "responses": { "200": { - "description": "Redirect to external payment provider", + "description": "", "content": { "application/json": { "schema": { "type": "object", "properties": { - "redirectUrl": { + "token": { + "type": "string" + }, + "expires": { + "type": "string", + "format": "date-time" + }, + "shopId": { "type": "string" } - }, - "required": [ - "redirectUrl" - ] + } } } } @@ -15919,20 +15807,28 @@ ] } }, - "/navigation/{activeId}/{rootId}": { + "/product-listing/{categoryId}": { "post": { "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": "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.", + "operationId": "readProductListing", "parameters": [ + { + "name": "categoryId", + "in": "path", + "description": "Identifier of a category.", + "required": true, + "schema": { + "type": "string" + } + }, { "name": "sw-include-seo-urls", "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "description": "Determines if the response must contain a SeoUrl entity for a product entity", "required": false, "schema": { "type": "boolean" @@ -15947,67 +15843,147 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } - }, + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/ProductListingCriteria" + }, + { + "$ref": "#/components/schemas/ProductListingFlags" + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Returns a product listing containing all products and additional fields to display a listing.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + } + } + }, + "security": [ { - "name": "activeId", + "ApiKey": [] + } + ] + } + }, + "/product/{productId}/cross-selling": { + "post": { + "tags": [ + "Product" + ], + "summary": "Fetch cross-selling groups of a product", + "description": "This route is used to load the cross sellings for a product. A product has several cross selling definitions in which several products are linked. The route returns the cross sellings together with the linked products", + "operationId": "readProductCrossSellings", + "parameters": [ + { + "name": "productId", "in": "path", - "description": "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" } }, { - "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": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, "schema": { - "oneOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "$ref": "#/components/schemas/NavigationType" + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "Found cross sellings", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrossSellingElementCollection" } - ] + } } } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/product/{productId}": { + "post": { + "tags": [ + "Product" ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - }, - { - "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" + "summary": "Fetch a single product", + "description": "This route is used to load a single product with the corresponding details. In addition to loading the data, the best variant of the product is determined when a parent id is passed.", + "operationId": "readProductDetail", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Product ID", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$'" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "in": "header", + "name": "sw-include-seo-urls", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } ] } @@ -16016,11 +15992,11 @@ }, "responses": { "200": { - "description": "All available navigations", + "description": "Product information along with variant groups and options", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NavigationRouteResponse" + "$ref": "#/components/schemas/ProductDetailResponse" } } } @@ -16033,14 +16009,15 @@ ] } }, - "/search-suggest": { + "/product": { "post": { "tags": [ - "Product" + "Product", + "Endpoints supporting Criteria " ], - "summary": "Search for products (suggest)", - "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", - "operationId": "searchSuggest", + "summary": "Fetch a list of products", + "description": "List products that match the given criteria. For performance reasons a limit should always be set.", + "operationId": "readProduct", "parameters": [ { "name": "sw-language-id", @@ -16054,25 +16031,13 @@ } ], "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { "allOf": [ { - "required": [ - "search" - ], - "properties": { - "search": { - "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/ProductListingFlags" + "$ref": "#/components/schemas/Criteria" } ] } @@ -16081,11 +16046,29 @@ }, "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": "Entity search result containing products", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "allOf": [ + { + "required": [ + "elements" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -16098,23 +16081,34 @@ ] } }, - "/app-system/{name}/generate-token": { + "/product/{productId}/reviews": { "post": { "tags": [ - "App system" + "Product", + "Endpoints supporting Criteria " ], - "summary": "Generate JWT token for app system backend", - "description": "Generate JWT token for authenticated communication with the app server", - "operationId": "generateJWTAppSystemAppServer", + "summary": "Fetch product reviews", + "description": "Perform a filtered search for product reviews.", + "operationId": "readProductReviews", "parameters": [ { + "name": "productId", "in": "path", - "name": "name", + "description": "Identifier of the product.", "required": true, - "description": "Name of the app", "schema": { "type": "string" } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } ], "requestBody": { @@ -16122,30 +16116,37 @@ "content": { "application/json": { "schema": { - "type": "object" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] } } } }, "responses": { "200": { - "description": "", + "description": "Entity search result containing product reviews", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "token": { - "type": "string" - }, - "expires": { - "type": "string", - "format": "date-time" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductReview" + } + } + }, + "type": "object" }, - "shopId": { - "type": "string" + { + "$ref": "#/components/schemas/EntitySearchResult" } - } + ] } } } @@ -16158,19 +16159,19 @@ ] } }, - "/cms/{id}": { + "/product/{productId}/review": { "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.", - "operationId": "readCms", + "summary": "Save a product review", + "description": "Saves a review for a product. Reviews have to be activated in the settings.", + "operationId": "saveProductReview", "parameters": [ { - "name": "id", + "name": "productId", "in": "path", - "description": "Identifier of the CMS page to be resolved", + "description": "Identifier of the product which is reviewed.", "required": true, "schema": { "type": "string", @@ -16192,56 +16193,70 @@ "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "slots": { - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", - "type": "string" - } - }, - "type": "object" + "required": [ + "title", + "content", + "points" + ], + "properties": { + "name": { + "description": "The name of the review author. If not set, the first name of the customer is chosen.", + "type": "string" }, - { - "$ref": "#/components/schemas/ProductListingCriteria" + "email": { + "description": "The email address of the review author. If not set, the email of the customer is chosen.", + "type": "string" + }, + "title": { + "description": "The title of the review.", + "type": "string" + }, + "content": { + "description": "The content of review.", + "type": "string" + }, + "points": { + "description": "The review rating for the product.", + "type": "number", + "format": "double" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "The loaded cms page", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CmsPage" - } - } - } - }, - "404": { - "$ref": "#/components/responses/404" + "description": "Success response indicating the review was saved successfully." } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/seo-url": { + "/product/{productId}/find-variant": { "post": { "tags": [ - "Sitemap & Routes", - "Endpoints supporting Criteria " + "Product" ], - "summary": "Fetch SEO routes", - "description": "Perform a filtered search for seo urls.", - "operationId": "readSeoUrl", + "summary": "Search for a matching variant by product options.", + "description": "Performs a search for product variants and returns the best matching variant.", + "operationId": "searchProductVariantIds", "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Product ID", + "required": true, + "schema": { + "type": "string" + } + }, { "name": "sw-language-id", "in": "header", @@ -16254,50 +16269,51 @@ } ], "requestBody": { - "required": false, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "Entity search result containing seo urls.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } + "required": [ + "options" + ], + "properties": { + "options": { + "oneOf": [ + { + "description": "The options parameter for the variant to find.", + "type": "array", + "items": { + "type": "string" } }, - "type": "object", - "required": [ - "elements" - ] - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + { + "description": "The options parameter as a map of groupId => optionId.", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + ] + }, + "switchedGroup": { + "description": "The id of the option group that has been switched.", + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Returns an FoundCombination struct containing the ids matching the search.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FindProductVariantRouteResponse" } } } - }, - "404": { - "$ref": "#/components/responses/404" } }, "security": [ @@ -16307,16 +16323,33 @@ ] } }, - "/currency": { + "/document/download/{documentId}/{deepLinkCode}": { "post": { "tags": [ - "System & Context", + "Document", "Endpoints supporting Criteria " ], - "summary": "Fetch currencies", - "description": "Perform a filtered search for currencies.", - "operationId": "readCurrency", + "summary": "Download generated document", + "description": "Returns blob file of a generated document to download.", + "operationId": "download", "parameters": [ + { + "name": "documentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "deepLinkCode", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, { "name": "sw-language-id", "in": "header", @@ -16344,26 +16377,11 @@ }, "responses": { "200": { - "description": "Entity search result containing currencies.", + "description": "Returns the document information and blob to download.", "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Currency" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/Document" } } } @@ -16371,46 +16389,30 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/newsletter/confirm": { - "post": { + "/context": { + "get": { "tags": [ - "Newsletter" + "System & Context" ], - "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" - } - } - } - }, + "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": "The newsletter confirmation was successful." + "description": "Returns the current context.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SalesChannelContext" + } + } + } } }, "security": [ @@ -16418,115 +16420,59 @@ "ApiKey": [] } ] - } - }, - "/newsletter/subscribe": { - "post": { + }, + "patch": { "tags": [ - "Newsletter" + "System & Context" ], - "summary": "Create or remove a newsletter subscription", - "description": "This route is used to create/remove/confirm a newsletter subscription.\n\nThe `option` property controls what should happen:\n* `direct`: The subscription is directly active and does not need a confirmation.\n* `subscribe`: An email will be send to the provided email address containing a link to the /newsletter/confirm route.\nThe subscription is only successful, if the /newsletter/confirm route is called with the generated hashes.\n* `unsubscribe`: The email address will be removed from the newsletter subscriptions.\n* `confirmSubscribe`: Confirms the newsletter subscription for the provided email address.", - "operationId": "subscribeToNewsletter", + "summary": "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": { - "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.", + "currencyId": { + "description": "Currency", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "firstName": { - "description": "First name", - "type": "string" - }, - "lastName": { - "description": "Last name", - "type": "string" + "languageId": { + "description": "Language", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "street": { - "description": "Street", - "type": "string" + "billingAddressId": { + "description": "Billing Address", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "city": { - "description": "City", - "type": "string" + "shippingAddressId": { + "description": "Shipping Address", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "zipCode": { - "description": "Zip code", - "type": "string" + "paymentMethodId": { + "description": "Payment Method", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "tags": { - "description": "Zip code", - "type": "string" + "shippingMethodId": { + "description": "Shipping Method", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "languageId": { - "description": "Identifier of the language.", + "countryId": { + "description": "Country", "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" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/newsletter/unsubscribe": { - "post": { - "tags": [ - "Newsletter" - ], - "summary": "Remove a newsletter subscription", - "description": "Removes a newsletter recipient from the mailing lists.", - "operationId": "unsubscribeToNewsletter", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "email" - ], - "properties": { - "email": { - "description": "Email address that should be removed from the mailing lists.", - "type": "string" + "countryStateId": { + "description": "Country State", + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, "type": "object" @@ -16536,7 +16482,7 @@ }, "responses": { "200": { - "description": "Unsubscribing was successful." + "$ref": "#/components/responses/ContextTokenResponse" } }, "security": [ @@ -16546,16 +16492,25 @@ ] } }, - "/shipping-method": { + "/cms/{id}": { "post": { "tags": [ - "Payment & Shipping", - "Endpoints supporting Criteria " + "Content" ], - "summary": "Fetch shipping methods", - "description": "Perform a filtered search for shipping methods.", - "operationId": "readShippingMethod", + "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.", + "operationId": "readCms", "parameters": [ + { + "name": "id", + "in": "path", + "description": "Identifier of the CMS page to be resolved", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, { "name": "sw-language-id", "in": "header", @@ -16565,24 +16520,24 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } - }, - { - "name": "onlyAvailable", - "in": "query", - "description": "List only available shipping methods. This filters shipping methods methods which can not be used in the actual context because of their availability rule.", - "schema": { - "type": "boolean" - } } ], "requestBody": { - "required": false, "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/Criteria" + "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" } ] } @@ -16591,37 +16546,17 @@ }, "responses": { "200": { - "description": "", + "description": "The loaded cms page", "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/CmsPage" } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -16631,15 +16566,14 @@ ] } }, - "/language": { - "post": { + "/checkout/cart": { + "get": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Cart" ], - "summary": "Fetch languages", - "description": "Perform a filtered search for languages.", - "operationId": "readLanguages", + "summary": "Fetch or create a cart", + "description": "Used to fetch the current cart or for creating a new one.", + "operationId": "readCart", "parameters": [ { "name": "sw-language-id", @@ -16652,45 +16586,38 @@ } } ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] + "responses": { + "200": { + "description": "Cart", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Cart" + } } } } }, + "security": [ + { + "ApiKey": [] + } + ] + }, + "delete": { + "tags": [ + "Cart" + ], + "summary": "Delete a cart", + "description": "This route deletes the cart of the customer.", + "operationId": "deleteCart", "responses": { - "200": { - "description": "Entity search result containing languages.", + "204": { + "description": "Successfully deleted the cart", "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Language" - } - } - }, - "required": [ - "elements" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -16703,25 +16630,15 @@ ] } }, - "/country-state/{countryId}": { + "/checkout/cart/line-item": { "post": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Cart" ], - "summary": "Fetch the states of a country", - "description": "Perform a filtered search the states for a country", - "operationId": "readCountryState", + "summary": "Add items to the cart", + "description": "This route adds items to the cart. An item can be a product or promotion for example. They are referenced by the `referencedId`-parameter.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#adding-new-items-to-the-cart)", + "operationId": "addLineItem", "parameters": [ - { - "name": "countryId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, { "name": "sw-language-id", "in": "header", @@ -16734,41 +16651,21 @@ } ], "requestBody": { - "required": false, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] + "$ref": "#/components/schemas/CartItems" } } } }, "responses": { "200": { - "description": "Entity search result containing countries.", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CountryState" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/Cart" } } } @@ -16779,38 +16676,50 @@ "ApiKey": [] } ] - } - }, - "/product-export/{accessKey}/{fileName}": { - "get": { + }, + "delete": { "tags": [ - "Product" + "Cart" ], - "summary": "Export product export", - "operationId": "readProductExport", + "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": "accessKey", - "in": "path", - "description": "Access Key", + "name": "ids", + "in": "query", + "description": "A list of product identifiers.", "required": true, "schema": { - "type": "string" + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } }, { - "name": "fileName", - "in": "path", - "description": "File Name", - "required": true, + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, "schema": { - "type": "string" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } ], "responses": { "200": { - "description": "" + "description": "The updated cart.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Cart" + } + } + } } }, "security": [ @@ -16818,17 +16727,14 @@ "ApiKey": [] } ] - } - }, - "/salutation": { - "post": { + }, + "patch": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Cart" ], - "summary": "Fetch salutations", - "description": "Fetches salutations with a criteria obj.", - "operationId": "readSalutation", + "summary": "Update items in the cart", + "description": "This route updates items in the cart. A typical example is updating the quantity of an item.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#updating-items-in-the-cart)", + "operationId": "updateLineItem", "parameters": [ { "name": "sw-language-id", @@ -16842,41 +16748,21 @@ } ], "requestBody": { - "required": false, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] + "$ref": "#/components/schemas/CartItems" } } } }, "responses": { "200": { - "description": "Entity search result containing salutations.", + "description": "The updated cart.", "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Salutation" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "application/json": { + "schema": { + "$ref": "#/components/schemas/Cart" } } } @@ -16889,14 +16775,14 @@ ] } }, - "/sitemap": { - "get": { + "/checkout/cart/line-item/delete": { + "post": { "tags": [ - "Sitemap & Routes" + "Cart" ], - "summary": "Fetch sitemaps", - "description": "Fetches a list of compressed sitemap files, which are often used by search engines.", - "operationId": "readSitemap", + "summary": "Remove items from the cart", + "description": "This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", + "operationId": "removeLineItem", "parameters": [ { "name": "sw-language-id", @@ -16909,16 +16795,37 @@ } } ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "ids" + ], + "properties": { + "ids": { + "description": "A list of product identifiers.", + "type": "array", + "minItems": 1, + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + }, + "type": "object" + } + } + } + }, "responses": { "200": { - "description": "Returns a list of available sitemaps.", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Sitemap" - } + "$ref": "#/components/schemas/Cart" } } } @@ -16931,25 +16838,15 @@ ] } }, - "/sitemap/{filePath}": { - "get": { + "/checkout/order": { + "post": { "tags": [ - "Sitemap & Routes" + "Order" ], - "summary": "Download sitemap file", - "description": "Downloads the sitemap file from the configured sitemap storage.", - "operationId": "getSitemapFile", + "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": "filePath", - "in": "path", - "description": "The path to the sitemap file", - "required": true, - "schema": { - "type": "string", - "pattern": ".*\\.(xml|gz)$" - } - }, { "name": "sw-language-id", "in": "header", @@ -16961,20 +16858,37 @@ } } ], + "requestBody": { + "description": "Contains additional metadata which is stored together with the order. It can also contain payment transaction details.", + "content": { + "application/json": { + "schema": { + "properties": { + "customerComment": { + "description": "Adds a comment from the customer to the order.", + "type": "string" + }, + "affiliateCode": { + "description": "The affiliate code can be used to track which referrer the customer came through. An example could be `Price-comparison-company-XY`.", + "type": "string" + }, + "campaignCode": { + "description": "The campaign code is used to track which action the customer came from. An example could be `Summer-Deals`", + "type": "string" + } + }, + "type": "object" + } + } + } + }, "responses": { "200": { - "description": "Returns the blob to download.", + "description": "Order", "content": { - "application/xml": { - "schema": { - "type": "string", - "format": "binary" - } - }, - "application/gzip": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/Order" } } } @@ -16982,26 +16896,85 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/context": { + "/checkout/gateway": { "get": { "tags": [ - "System & Context" + "Gateway" ], - "summary": "Fetch the current context", - "description": "Fetches the current context. This includes for example the `customerGroup`, `currency`, `taxRules` and many more.", - "operationId": "readContext", + "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": "Returns the current context.", + "description": "Checkout gateway response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SalesChannelContext" + "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" + } + } + } + } + } } } } @@ -17012,71 +16985,43 @@ "ApiKey": [] } ] - }, - "patch": { + } + }, + "/sitemap": { + "get": { "tags": [ - "System & Context" + "Sitemap & Routes" ], - "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}$" + "summary": "Fetch sitemaps", + "description": "Fetches a list of compressed sitemap files, which are often used by search engines.", + "operationId": "readSitemap", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "responses": { + "200": { + "description": "Returns a list of available sitemaps.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Sitemap" } - }, - "type": "object" + } } } } }, - "responses": { - "200": { - "$ref": "#/components/responses/ContextTokenResponse" - } - }, "security": [ { "ApiKey": [] @@ -17084,20 +17029,30 @@ ] } }, - "/customer/wishlist/add/{productId}": { - "post": { + "/sitemap/{filePath}": { + "get": { "tags": [ - "Wishlist" + "Sitemap & Routes" ], - "summary": "Add a product to a wishlist", - "description": "Adds a product to a customers wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "addProductOnWishlist", + "summary": "Download sitemap file", + "description": "Downloads the sitemap file from the configured sitemap storage.", + "operationId": "getSitemapFile", "parameters": [ { - "name": "productId", + "name": "filePath", "in": "path", - "description": "Identifier of the product to be added.", + "description": "The path to the sitemap file", "required": true, + "schema": { + "type": "string", + "pattern": ".*\\.(xml|gz)$" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" @@ -17106,11 +17061,18 @@ ], "responses": { "200": { - "description": "Returns a success response.", + "description": "Returns the blob to download.", "content": { - "application/json": { + "application/xml": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "type": "string", + "format": "binary" + } + }, + "application/gzip": { + "schema": { + "type": "string", + "format": "binary" } } } @@ -17118,21 +17080,19 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/customer/wishlist": { + "/search-suggest": { "post": { "tags": [ - "Wishlist", - "Endpoints supporting Criteria " + "Product" ], - "summary": "Fetch a wishlist", - "description": "Fetch a customer's wishlist. Products on the wishlist can be filtered using a criteria object.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "readCustomerWishlist", + "summary": "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": "sw-language-id", @@ -17146,13 +17106,25 @@ } ], "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/ProductListingFlags" } ] } @@ -17161,11 +17133,11 @@ }, "responses": { "200": { - "description": "", + "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WishlistLoadRouteResponse" + "$ref": "#/components/schemas/ProductListingResult" } } } @@ -17173,48 +17145,68 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/customer/wishlist/merge": { + "/salutation": { "post": { "tags": [ - "Wishlist" + "System & Context", + "Endpoints supporting Criteria " + ], + "summary": "Fetch salutations", + "description": "Fetches salutations with a criteria obj.", + "operationId": "readSalutation", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } ], - "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, + "required": false, "content": { "application/json": { "schema": { - "properties": { - "productIds": { - "description": "List product id", - "type": "array", - "items": { - "description": "product id", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Returns a success response.", + "description": "Entity search result containing salutations.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Salutation" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -17222,49 +17214,75 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/customer/wishlist/delete/{productId}": { - "delete": { + "/search": { + "post": { "tags": [ - "Wishlist" + "Product" ], - "summary": "Remove a product from a wishlist", - "description": "Removes a product from a customer's wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "deleteProductOnWishlist", + "summary": "Search for products", + "description": "Performs a search for products which can be used to display a product listing.", + "operationId": "searchPage", "parameters": [ { - "name": "productId", - "in": "path", - "description": "The identifier of the product to be removed from the wishlist.", - "required": true, + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "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" + } } ], - "responses": { - "200": { - "description": "Returns a success response indicating a successful removal.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } + "requestBody": { + "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" + } + ] } } - }, - "404": { - "description": "The removal of the product failed. Probably because the product could not be found on the wishlist.", + } + }, + "responses": { + "200": { + "description": "Returns a product listing containing all products and additional fields to display a listing.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/failure" + "$ref": "#/components/schemas/ProductListingResult" } } } @@ -17272,54 +17290,68 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/script/{hook}": { + "/breadcrumb/{id}": { "get": { "tags": [ - "API", - "Script", - "App" + "Experimental", + "Breadcrumb" ], - "summary": "Access point for different api logics which are provided by apps over script hooks", - "operationId": "getScriptStoreApiRoute", + "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": "hook", - "in": "path", - "description": "Dynamic hook which used to build the hook name", - "required": true, + "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" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } ], "responses": { "200": { - "description": "Returns different structures of results based on the called script.", + "description": "Search result containing SeoUrl\\'s to be used as breadcrumb.", "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": true, - "nullable": true - } - }, - "application/vnd.api+json": { - "schema": { - "type": "object", - "additionalProperties": true, - "nullable": true + "$ref": "#/components/schemas/BreadcrumbCollection" } } } }, - "204": { - "description": "No data by default" + "400": { + "$ref": "#/components/responses/400" } }, "security": [ @@ -17327,48 +17359,62 @@ "ApiKey": [] } ] - }, + } + }, + "/handle-payment": { "post": { "tags": [ - "API", - "Script", - "App" + "Payment & Shipping" ], - "summary": "Access point for different api logics which are provided by apps over script hooks", - "operationId": "postScriptStoreApiRoute", - "parameters": [ - { - "name": "hook", - "in": "path", - "description": "Dynamic hook which used to build the hook name", - "required": true, - "schema": { - "type": "string" + "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" + } } } - ], + }, "responses": { "200": { - "description": "Returns different structures of results based on the called script.", + "description": "Redirect to external payment provider", "content": { "application/json": { "schema": { "type": "object", - "additionalProperties": true, - "nullable": true - } - }, - "application/vnd.api+json": { - "schema": { - "type": "object", - "additionalProperties": true, - "nullable": true + "properties": { + "redirectUrl": { + "type": "string" + } + }, + "required": [ + "redirectUrl" + ] } } } - }, - "204": { - "description": "No data by default" } }, "security": [ @@ -17378,76 +17424,195 @@ ] } }, - "/order/state/cancel": { + "/newsletter/confirm": { "post": { "tags": [ - "Order" + "Newsletter" ], - "summary": "Cancel an order", - "description": "Cancels an order. The order state will be set to 'cancelled'.", - "operationId": "cancelOrder", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "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." + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/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": { - "orderId": { - "description": "The identifier of the order to be canceled.", + "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" + }, + "tags": { + "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", - "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)", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/StateMachineState" - } + "description": "Success" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/newsletter/unsubscribe": { + "post": { + "tags": [ + "Newsletter" + ], + "summary": "Remove a newsletter subscription", + "description": "Removes a newsletter recipient from the mailing lists.", + "operationId": "unsubscribeToNewsletter", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "email" + ], + "properties": { + "email": { + "description": "Email address that should be removed from the mailing lists.", + "type": "string" + } + }, + "type": "object" } } } }, + "responses": { + "200": { + "description": "Unsubscribing was successful." + } + }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/order": { + "/navigation/{activeId}/{rootId}": { "post": { "tags": [ - "Order", + "Category", "Endpoints supporting Criteria " ], - "summary": "Fetch a list of orders", - "description": "List orders of a customer.", - "operationId": "readOrder", + "summary": "Fetch a navigation menu", + "description": "This endpoint returns categories that can be used as a page navigation. You can either return them as a tree or as a flat list. You can also control the depth of the tree.\n\n Instead of passing uuids, you can also use one of the following aliases for the activeId and rootId parameters to get the respective navigations of your sales channel.\n\n * main-navigation\n * service-navigation\n * footer-navigation", + "operationId": "readNavigation", "parameters": [ + { + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, + "schema": { + "type": "boolean" + } + }, { "name": "sw-language-id", "in": "header", @@ -17457,6 +17622,40 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "name": "activeId", + "in": "path", + "description": "Identifier of the active category in the navigation tree (if not used, just set to the same as rootId).", + "required": true, + "schema": { + "oneOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "$ref": "#/components/schemas/NavigationType" + } + ] + } + }, + { + "name": "rootId", + "in": "path", + "description": "Identifier of the root category for your desired navigation tree. You can use it to fetch sub-trees of your navigation tree.", + "required": true, + "schema": { + "oneOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "$ref": "#/components/schemas/NavigationType" + } + ] + } } ], "requestBody": { @@ -17470,9 +17669,17 @@ }, { "properties": { - "checkPromotion": { - "description": "Check if the payment method of the order is still changeable.", - "type": "boolean" + "depth": { + "description": "Determines the depth of fetched navigation levels.", + "type": "integer", + "format": "int32" + }, + "buildTree": { + "description": "Return the categories as a tree or as a flat list.", + "type": "array", + "items": { + "type": "object" + } } }, "type": "object" @@ -17484,11 +17691,11 @@ }, "responses": { "200": { - "description": "An array of orders and an indicator if the payment of the order can be changed.", + "description": "All available navigations", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OrderRouteResponse" + "$ref": "#/components/schemas/NavigationRouteResponse" } } } @@ -17496,61 +17703,34 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/order/payment": { + "/customer/wishlist/add/{productId}": { "post": { "tags": [ - "Order" + "Wishlist" ], - "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": "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": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "name": "productId", + "in": "path", + "description": "Identifier of the product to be added.", + "required": true, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "paymentMethodId", - "orderId" - ], - "properties": { - "paymentMethodId": { - "description": "The identifier of the paymentMethod to be set", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "orderId": { - "description": "The identifier of the order.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "type": "object" - } - } - } - }, "responses": { "200": { - "description": "Successfully updated the payment method of the order.", + "description": "Returns a success response.", "content": { "application/json": { "schema": { @@ -17568,33 +17748,16 @@ ] } }, - "/order/download/{orderId}/{downloadId}": { - "get": { + "/customer/wishlist": { + "post": { "tags": [ - "Order" + "Wishlist", + "Endpoints supporting Criteria " ], - "summary": "Download a purchased file", - "description": "Download a file included in the given order and with the given id. Access must be granted.", - "operationId": "orderDownloadFile", + "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": "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}$" - } - }, { "name": "sw-language-id", "in": "header", @@ -17606,14 +17769,27 @@ } } ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } + } + } + }, "responses": { "200": { - "description": "An arbitrary binary file.", + "description": "", "content": { - "application/octet-stream": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/WishlistLoadRouteResponse" } } } @@ -17627,114 +17803,123 @@ ] } }, - "/media": { + "/customer/wishlist/merge": { "post": { "tags": [ - "Content" + "Wishlist" ], - "summary": "Fetch and resolve Media Entities", - "description": "Fetch one or multiple Media Entities with the corresponding Identifier.", - "operationId": "readMedia", + "summary": "Create a wishlist for a customer", + "description": "Create a new wishlist for a logged in customer or extend the existing wishlist given a set of products.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * A customer can only have a single wishlist.\n * The wishlist feature has to be activated.", + "operationId": "mergeProductOnWishlist", "requestBody": { + "required": true, "content": { "application/json": { "schema": { "properties": { - "ids": { - "description": "Identifier (UUID) of the media entity to be fetched.", + "productIds": { + "description": "List product id", "type": "array", "items": { + "description": "product id", "type": "string", "pattern": "^[0-9a-f]{32}$" } } }, - "type": "object", - "required": [ - "ids" - ] + "type": "object" } } } }, "responses": { "200": { - "description": "The loaded MediaCollection containing the requested Media Entities.", + "description": "Returns a success response.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Media" - } + "$ref": "#/components/schemas/SuccessResponse" } } } - }, - "404": { - "$ref": "#/components/responses/404" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/_info/routes": { - "get": { - "summary": "Get API routes", - "operationId": "getRoutes", - "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" - } - } - } - } - } + "/customer/wishlist/delete/{productId}": { + "delete": { + "tags": [ + "Wishlist" + ], + "summary": "Remove a product from a wishlist", + "description": "Removes a product from a customer's wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "deleteProductOnWishlist", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "The identifier of the product to be removed from the wishlist.", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "responses": { + "200": { + "description": "Returns a success response indicating a successful removal.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } + }, + "404": { + "description": "The removal of the product failed. Probably because the product could not be found on the wishlist.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" } } } } - } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] } }, - "/contact-form": { - "post": { + "/customer-group-registration/config/{customerGroupId}": { + "get": { "tags": [ - "Content" + "Login & Registration" ], - "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 registration settings for customer group", + "operationId": "getCustomerGroupRegistrationInfo", "parameters": [ + { + "name": "customerGroupId", + "in": "path", + "description": "Customer group id", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, { "name": "sw-language-id", "in": "header", @@ -17746,74 +17931,16 @@ } } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "salutationId", - "email", - "subject", - "comment" - ], - "properties": { - "salutationId": { - "description": "Identifier of the salutation. Use `/api/salutation` endpoint to fetch possible values.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "description": "Firstname. This field may be required depending on the system settings.", - "type": "string" - }, - "lastName": { - "description": "Lastname. This field may be required depending on the system settings.", - "type": "string" - }, - "email": { - "description": "Email address", - "type": "string" - }, - "phone": { - "description": "Phone. This field may be required depending on the system settings.", - "type": "string" - }, - "subject": { - "description": "The subject of the contact form.", - "type": "string" - }, - "comment": { - "description": "The message of the contact form", - "type": "string" - }, - "navigationId": { - "description": "Identifier of the navigation page. Can be used to override the configuration.\nTake a look at the settings of a category containing a concat form in the administration.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "slotId": { - "description": "Identifier of the cms element", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "cmsPageType": { - "description": "Type of the content management page", - "type": "string" - }, - "entityName": { - "description": "Entity name for slot config", - "type": "string" - } - }, - "type": "object" - } - } - } - }, "responses": { "200": { - "description": "Message sent successful." + "description": "Returns the customer group including registration settings.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomerGroup" + } + } + } } }, "security": [ @@ -17823,14 +17950,15 @@ ] } }, - "/search": { + "/country": { "post": { "tags": [ - "Product" + "System & Context", + "Endpoints supporting Criteria " ], - "summary": "Search for products", - "description": "Performs a search for products which can be used to display a product listing.", - "operationId": "searchPage", + "summary": "Fetch countries", + "description": "Perform a filtered search for countries", + "operationId": "readCountry", "parameters": [ { "name": "sw-language-id", @@ -17841,39 +17969,16 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } - }, - { - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "in": "header", - "name": "sw-include-seo-urls", - "required": false, - "schema": { - "type": "boolean" - } } ], "requestBody": { + "required": false, "content": { "application/json": { "schema": { "allOf": [ { - "required": [ - "search" - ], - "properties": { - "search": { - "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/ProductListingCriteria" - }, - { - "$ref": "#/components/schemas/ProductListingFlags" + "$ref": "#/components/schemas/Criteria" } ] } @@ -17882,11 +17987,26 @@ }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", + "description": "Entity search result containing countries.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Country" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -17899,59 +18019,68 @@ ] } }, - "/landing-page/{landingPageId}": { - "post": { - "tags": [ - "Content", - "Endpoints supporting Criteria " - ], - "summary": "Fetch a landing page with the resolved CMS page", - "description": "Loads a landing page by its identifier and resolves the CMS page.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.", - "operationId": "readLandingPage", - "parameters": [ - { - "name": "landingPageId", - "in": "path", - "description": "Identifier of the landing page.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "/_info/routes": { + "get": { + "summary": "Get API routes", + "operationId": "getRoutes", + "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" + } + } + } + } + } + } + } } } + } + } + }, + "/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" - }, - { - "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" - } - ] } ] } @@ -17960,62 +18089,131 @@ }, "responses": { "200": { - "description": "The loaded landing page with cms page", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LandingPage" + "$ref": "#/components/schemas/AccountNewsletterRecipient" } } } - }, - "404": { - "$ref": "#/components/responses/404" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/product/{productId}/cross-selling": { + "/account/change-profile": { "post": { "tags": [ - "Product" + "Profile" ], - "summary": "Fetch cross-selling groups of a product", - "description": "This route is used to load the cross sellings for a product. A product has several cross selling definitions in which several products are linked. The route returns the cross sellings together with the linked products", - "operationId": "readProductCrossSellings", - "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Product ID", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "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": "Found cross sellings", + "description": "Returns a success response indicating a successful update", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CrossSellingElementCollection" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -18023,71 +18221,56 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/product/{productId}": { + "/account/change-email": { "post": { "tags": [ - "Product" - ], - "summary": "Fetch a single product", - "description": "This route is used to load a single product with the corresponding details. In addition to loading the data, the best variant of the product is determined when a parent id is passed.", - "operationId": "readProductDetail", - "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Product ID", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$'" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "in": "header", - "name": "sw-include-seo-urls", - "required": false, - "schema": { - "type": "boolean" - } - } + "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": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "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": "Product information along with variant groups and options", + "description": "Returns a success response indicating a successful update", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductDetailResponse" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -18095,68 +18278,46 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/product": { + "/account/change-language": { "post": { "tags": [ - "Product", - "Endpoints supporting Criteria " - ], - "summary": "Fetch a list of products", - "description": "List products that match the given criteria. For performance reasons a limit should always be set.", - "operationId": "readProduct", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } + "Profile" ], + "summary": "Change the customer's language.", + "description": "Changes the language of the logged in customer", + "operationId": "changeLanguage", "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "languageId" + ], + "properties": { + "language": { + "description": "New languageId", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "Entity search result containing products", + "description": "Returns a success response indicating a successful update", "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -18164,77 +18325,56 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/product/{productId}/reviews": { + "/account/change-password": { "post": { "tags": [ - "Product", - "Endpoints supporting Criteria " - ], - "summary": "Fetch product reviews", - "description": "Perform a filtered search for product reviews.", - "operationId": "readProductReviews", - "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Identifier of the product.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } + "Profile" ], + "summary": "Change the customer's password", + "description": "Changes a customer's password using their current password as a validation.", + "operationId": "changePassword", "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "password", + "newPassword", + "newPasswordConfirm" + ], + "properties": { + "password": { + "description": "Current password of the customer", + "type": "string" + }, + "newPassword": { + "description": "New Password for the customer", + "type": "string" + }, + "newPasswordConfirm": { + "description": "Confirmation of the new password", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "Entity search result containing product reviews", + "description": "Returns a success response indicating a successful update.", "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductReview" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -18242,71 +18382,32 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/product/{productId}/review": { + "/account/customer-recovery-is-expired": { "post": { "tags": [ - "Product" - ], - "summary": "Save a product review", - "description": "Saves a review for a product. Reviews have to be activated in the settings.", - "operationId": "saveProductReview", - "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Identifier of the product which is reviewed.", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } + "Profile" ], + "summary": "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": [ - "title", - "content", - "points" + "hash" ], "properties": { - "name": { - "description": "The name of the review author. If not set, the first name of the customer is chosen.", - "type": "string" - }, - "email": { - "description": "The email address of the review author. If not set, the email of the customer is chosen.", - "type": "string" - }, - "title": { - "description": "The title of the review.", - "type": "string" - }, - "content": { - "description": "The content of review.", + "hash": { + "description": "Parameter from the link in the confirmation mail sent in Step 1", "type": "string" - }, - "points": { - "description": "The review rating for the product.", - "type": "number", - "format": "double" } }, "type": "object" @@ -18316,78 +18417,75 @@ }, "responses": { "200": { - "description": "Success response indicating the review was saved successfully." + "description": "Returns a CustomerRecoveryIsExpiredResponse that indicates if the hash is expired or not.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "isExpired": { + "type": "boolean" + } + }, + "required": [ + "isExpired" + ] + } + }, + "apiAlias": { + "enum": [ + "array_struct" + ], + "type": "string" + } + } + } + } + } } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/product/{productId}/find-variant": { + "/account/customer": { "post": { "tags": [ - "Product" - ], - "summary": "Search for a matching variant by product options.", - "description": "Performs a search for product variants and returns the best matching variant.", - "operationId": "searchProductVariantIds", - "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Product ID", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } + "Profile", + "Endpoints supporting Criteria " ], + "summary": "Get information about current customer", + "description": "Returns information about the current customer.", + "operationId": "readCustomer", "requestBody": { + "required": false, "content": { "application/json": { "schema": { - "required": [ - "options" - ], - "properties": { - "options": { - "description": "The options parameter for the variant to find.", - "type": "array", - "items": { - "type": "string" - } - }, - "switchedGroup": { - "description": "The id of the option group that has been switched.", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Returns an FoundCombination struct containing the ids matching the search.", + "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/FindProductVariantRouteResponse" + "$ref": "#/components/schemas/Customer" } } } @@ -18395,46 +18493,80 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] + } + ] + }, + "delete": { + "tags": [ + "Profile" + ], + "summary": "Delete the customer's profile", + "description": "Deletes a customer profile along with their addresses, wishlists and associated data. Created orders and their payment/shipping information (addresses) and reviews are not deleted.", + "operationId": "deleteCustomer", + "responses": { + "204": { + "description": "Returns a no content response indicating a successful removal of the customer profile" + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] } ] } }, - "/product-listing/{categoryId}": { - "post": { + "/account/address/{addressId}": { + "delete": { "tags": [ - "Product" + "Address" ], - "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.", - "operationId": "readProductListing", + "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": "categoryId", + "name": "addressId", "in": "path", - "description": "Identifier of a category.", + "description": "ID of the address to be deleted.", "required": true, "schema": { "type": "string" } + } + ], + "responses": { + "204": { + "description": "No Content response, when the address has been deleted" }, + "400": { + "description": "Response containing a list of errors, most likely due to the address being in use" + } + }, + "security": [ { - "name": "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" - } - }, + "ApiKey": [], + "ContextToken": [] + } + ] + }, + "patch": { + "tags": [ + "Address" + ], + "summary": "Modify an address of a customer", + "description": "Modifies an existing address of a customer.", + "operationId": "updateCustomerAddress", + "parameters": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "name": "addressId", + "in": "path", + "description": "Address ID", + "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } } ], @@ -18442,25 +18574,25 @@ "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/ProductListingCriteria" - }, - { - "$ref": "#/components/schemas/ProductListingFlags" - } - ] + "$ref": "#/components/schemas/CustomerAddressBody" } } } }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "allOf": [ + { + "$ref": "#/components/schemas/CustomerAddress" + }, + { + "$ref": "#/components/schemas/CustomerAddressRead" + } + ] } } } @@ -18468,32 +18600,21 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/country": { + "/account/list-address": { "post": { "tags": [ - "System & Context", + "Address", "Endpoints supporting Criteria " ], - "summary": "Fetch countries", - "description": "Perform a filtered search for countries", - "operationId": "readCountry", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], + "summary": "Fetch addresses of a customer", + "description": "Lists all addresses of the current customer and allows filtering them based on a criteria.", + "operationId": "listAddress", "requestBody": { "required": false, "content": { @@ -18510,21 +18631,24 @@ }, "responses": { "200": { - "description": "Entity search result containing countries.", + "description": "", "content": { "application/json": { "schema": { "allOf": [ { + "type": "object", + "required": [ + "elements" + ], "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Country" + "$ref": "#/components/schemas/CustomerAddress" } } - }, - "type": "object" + } }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -18535,6 +18659,120 @@ } } }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/account/login": { + "post": { + "tags": [ + "Login & Registration" + ], + "summary": "Log in a customer", + "description": "Logs in customers given their credentials.", + "operationId": "loginCustomer", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "username", + "password" + ], + "properties": { + "username": { + "description": "Email", + "type": "string" + }, + "password": { + "description": "Password", + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "$ref": "#/components/responses/ContextTokenResponse" + }, + "401": { + "description": "If credentials are incorrect an error is returned", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/account/login/imitate-customer": { + "post": { + "tags": [ + "Login & Registration" + ], + "summary": "Imitate the log in as a customer", + "description": "Imitate the log in as a customer given a generated token.", + "operationId": "imitateCustomerLogin", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "token", + "customerId", + "userId" + ], + "properties": { + "token": { + "description": "Generated customer impersonation token", + "type": "string" + }, + "customerId": { + "description": "ID of the customer", + "type": "string" + }, + "userId": { + "description": "ID of the user who generated the token", + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "$ref": "#/components/responses/ContextTokenResponse" + }, + "400": { + "description": "If the token is incorrect an error is returned", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + } + } + } + } + }, "security": [ { "ApiKey": [] @@ -18542,142 +18780,104 @@ ] } }, - "/breadcrumb/{id}": { - "get": { + "/account/logout": { + "post": { "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}$" - } - } + "Login & Registration" ], + "summary": "Log out a customer", + "description": "Logs out a customer.", + "operationId": "logoutCustomer", "responses": { "200": { - "description": "Search result containing SeoUrl\\'s to be used as breadcrumb.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/BreadcrumbCollection" - } - } - } + "$ref": "#/components/responses/ContextTokenResponse" }, - "400": { - "$ref": "#/components/responses/400" + "403": { + "$ref": "#/components/responses/403" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/account/newsletter-recipient": { + "/account/register-confirm": { "post": { "tags": [ - "Profile", - "Newsletter", - "Endpoints supporting Criteria" + "Login & Registration" ], - "summary": "Fetch newsletter recipients", - "description": "Perform a filtered search for newsletter recipients.", - "operationId": "readNewsletterRecipient", + "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": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "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": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AccountNewsletterRecipient" - } - } - } + "description": "Returns the logged in customer. The customer is automatically logged in with the `sw-context-token` header provided, which can be reused for subsequent requests." + }, + "404": { + "description": "No hash provided" + }, + "412": { + "description": "The customer has already been confirmed" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/change-profile": { + "/account/register": { "post": { "tags": [ - "Profile" + "Login & Registration" ], - "summary": "Change the customer's information", - "description": "Make changes to a customer's account, like changing their name, salutation or title.", - "operationId": "changeProfile", + "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": { - "type": "object", - "required": [ - "salutationId", - "firstName", - "lastName" - ], "properties": { - "salutationId": { - "description": "Id of the salutation for the customer account. Fetch options using `salutation` endpoint.", + "email": { + "description": "Email of the customer. Has to be unique, unless `guest` is `true`", "type": "string" }, - "title": { - "description": "(Academic) title of the customer", + "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": { @@ -18688,6 +18888,25 @@ "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" + }, + "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" @@ -18699,8 +18918,29 @@ "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": { @@ -18748,63 +18988,7 @@ } } } - ] - } - } - } - }, - "responses": { - "200": { - "description": "Returns a success response indicating a successful update", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/account/change-email": { - "post": { - "tags": [ - "Profile" - ], - "summary": "Change the customer's email address", - "description": "Changes a customer's email address to a new email address, using their current password as a validation.", - "operationId": "changeEmail", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "email", - "emailConfirmation", - "password" ], - "properties": { - "email": { - "description": "New email address. Has to be unique amongst all customers", - "type": "string" - }, - "emailConfirmation": { - "description": "Confirmation of the new email address.", - "type": "string" - }, - "password": { - "description": "Customer's current password", - "type": "string" - } - }, "type": "object" } } @@ -18812,11 +18996,11 @@ }, "responses": { "200": { - "description": "Returns a success response indicating a successful update", + "description": "Success", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/Customer" } } } @@ -18824,31 +19008,40 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/change-language": { + "/account/recovery-password-confirm": { "post": { "tags": [ "Profile" ], - "summary": "Change the customer's language.", - "description": "Changes the language of the logged in customer", - "operationId": "changeLanguage", + "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": [ - "languageId" + "hash", + "newPassword", + "newPasswordConfirm" ], "properties": { - "language": { - "description": "New languageId", + "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" } }, @@ -18859,7 +19052,7 @@ }, "responses": { "200": { - "description": "Returns a success response indicating a successful update", + "description": "Returns a success response indicating a successful update.", "content": { "application/json": { "schema": { @@ -18871,41 +19064,35 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/change-password": { + "/account/recovery-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", + "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": [ - "password", - "newPassword", - "newPasswordConfirm" + "email", + "storefrontUrl" ], "properties": { - "password": { - "description": "Current password of the customer", - "type": "string" - }, - "newPassword": { - "description": "New Password for the customer", + "email": { + "description": "E-Mail address to identify the customer", "type": "string" }, - "newPasswordConfirm": { - "description": "Confirmation of the new password", + "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" } }, @@ -18916,7 +19103,7 @@ }, "responses": { "200": { - "description": "Returns a success response indicating a successful update.", + "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": { @@ -18928,25 +19115,24 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/change-payment-method/{paymentMethodId}": { - "post": { + "/account/address/default-shipping/{addressId}": { + "patch": { "tags": [ - "Profile" + "Address" ], - "summary": "Change the customer's default payment method", - "description": "Changes a customer's default (preselected) payment method.", - "operationId": "changePaymentMethod", + "summary": "Change a customer's default shipping address", + "description": "Updates the default (preselected) shipping addresses of a customer.", + "operationId": "defaultShippingAddress", "parameters": [ { - "name": "paymentMethodId", + "name": "addressId", "in": "path", - "description": "Identifier of the desired default payment method", + "description": "Address ID", "required": true, "schema": { "type": "string" @@ -18955,14 +19141,7 @@ ], "responses": { "200": { - "description": "Returns a success response indicating a successful update.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } + "description": "" } }, "security": [ @@ -18973,104 +19152,69 @@ ] } }, - "/account/customer-recovery-is-expired": { - "post": { + "/account/address/default-billing/{addressId}": { + "patch": { "tags": [ - "Profile" + "Address" ], - "summary": "Checks if the customer recovery entry for a given hash is expired.", - "description": "This can be used to validate a provided hash has a valid and not expired customer recovery hash.", - "operationId": "getCustomerRecoveryIsExpired", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "hash" - ], - "properties": { - "hash": { - "description": "Parameter from the link in the confirmation mail sent in Step 1", - "type": "string" - } - }, - "type": "object" - } + "summary": "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" } } - }, + ], "responses": { "200": { - "description": "Returns a CustomerRecoveryIsExpiredResponse that indicates if the hash is expired or not.", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "isExpired": { - "type": "boolean" - } - }, - "required": [ - "isExpired" - ] - } - }, - "apiAlias": { - "enum": [ - "array_struct" - ], - "type": "string" - } - } - } - } - } + "description": "" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/account/customer": { + "/account/address": { "post": { "tags": [ - "Profile", - "Endpoints supporting Criteria " + "Address" ], - "summary": "Get information about current customer", - "description": "Returns information about the current customer.", - "operationId": "readCustomer", + "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" } } } }, "responses": { "200": { - "description": "Returns the logged in customer, also for guest sessions. Check for the value of `guest` field to see whether the customer is a guest.", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Customer" + "allOf": [ + { + "$ref": "#/components/schemas/CustomerAddress" + }, + { + "$ref": "#/components/schemas/CustomerAddressRead" + } + ] } } } @@ -19082,84 +19226,162 @@ "ContextToken": [] } ] - }, - "delete": { + } + }, + "/script/{hook}": { + "get": { "tags": [ - "Profile" + "API", + "Script", + "App" + ], + "summary": "Access point for different api logics which are provided by apps over script hooks", + "operationId": "getScriptStoreApiRoute", + "parameters": [ + { + "name": "hook", + "in": "path", + "description": "Dynamic hook which used to build the hook name", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "Delete the customer's profile", - "description": "Deletes a customer profile along with their addresses, wishlists and associated data. Created orders and their payment/shipping information (addresses) and reviews are not deleted.", - "operationId": "deleteCustomer", "responses": { + "200": { + "description": "Returns different structures of results based on the called script.", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "type": "object", + "additionalProperties": true + }, + { + "type": "null" + } + ] + } + }, + "application/vnd.api+json": { + "schema": { + "oneOf": [ + { + "type": "object", + "additionalProperties": true + }, + { + "type": "null" + } + ] + } + } + } + }, "204": { - "description": "Returns a no content response indicating a successful removal of the customer profile" + "description": "No data by default" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] - } - }, - "/account/address/{addressId}": { - "delete": { + }, + "post": { "tags": [ - "Address" + "API", + "Script", + "App" ], - "summary": "Delete an address of a customer", - "description": "Delete an address of customer.\n\n Only addresses which are not set as default addresses for shipping or billing can be deleted. You can check the current default addresses of your customer using the profile information endpoint and change them using the default address endpoint.\n\n **A customer must have at least one address (which can be used for shipping and billing).**\n\n An automatic fallback is not applied.", - "operationId": "deleteCustomerAddress", + "summary": "Access point for different api logics which are provided by apps over script hooks", + "operationId": "postScriptStoreApiRoute", "parameters": [ { - "name": "addressId", + "name": "hook", "in": "path", - "description": "ID of the address to be deleted.", + "description": "Dynamic hook which used to build the hook name", "required": true, "schema": { "type": "string" } - } - ], - "responses": { - "204": { - "description": "No Content response, when the address has been deleted" + } + ], + "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" + } + ] + } + } + } }, - "400": { - "description": "Response containing a list of errors, most likely due to the address being in use" + "204": { + "description": "No data by default" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] - }, - "patch": { + } + }, + "/payment-method": { + "post": { "tags": [ - "Address" + "Payment Method", + "Endpoints supporting Criteria " ], - "summary": "Modify an address of a customer", - "description": "Modifies an existing address of a customer.", - "operationId": "updateCustomerAddress", + "summary": "Loads all available payment methods", + "operationId": "readPaymentMethod", "parameters": [ { - "name": "addressId", - "in": "path", - "description": "Address ID", - "required": true, + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, "schema": { - "type": "string" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } ], "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerAddressBody" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] } } } @@ -19170,14 +19392,23 @@ "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/CustomerAddress" + "properties": { + "total": { + "description": "Total amount", + "type": "integer" }, - { - "$ref": "#/components/schemas/CustomerAddressRead" + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentMethod" + } } - ] + }, + "type": "object" } } } @@ -19185,21 +19416,32 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/list-address": { + "/seo-url": { "post": { "tags": [ - "Address", + "Sitemap & Routes", "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", + "summary": "Fetch SEO routes", + "description": "Perform a filtered search for seo urls.", + "operationId": "readSeoUrl", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], "requestBody": { "required": false, "content": { @@ -19216,72 +19458,90 @@ }, "responses": { "200": { - "description": "", + "description": "Entity search result containing seo urls.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CustomerAddress" - } + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" + } + } + }, + "type": "object", + "required": [ + "elements" + ] + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/login": { + "/media": { "post": { "tags": [ - "Login & Registration" + "Content" ], - "summary": "Log in a customer", - "description": "Logs in customers given their credentials.", - "operationId": "loginCustomer", + "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": { - "required": [ - "username", - "password" - ], "properties": { - "username": { - "description": "Email", - "type": "string" - }, - "password": { - "description": "Password", - "type": "string" + "ids": { + "description": "Identifier (UUID) of the media entity to be fetched.", + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } }, - "type": "object" + "type": "object", + "required": [ + "ids" + ] } } } }, "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "401": { - "description": "If credentials are incorrect an error is returned", + "description": "The loaded MediaCollection containing the requested Media Entities.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/failure" + "type": "array", + "items": { + "$ref": "#/components/schemas/Media" + } } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -19291,35 +19551,111 @@ ] } }, - "/account/login/imitate-customer": { + "/_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" + } + } + } + }, + "/contact-form": { "post": { "tags": [ - "Login & Registration" + "Content" + ], + "summary": "Submit a contact form message", + "description": "Used for submitting contact forms. Be aware that there can be more required fields, depending on the system settings.", + "operationId": "sendContactMail", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } ], - "summary": "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" + "email", + "subject", + "comment" ], "properties": { - "token": { - "description": "Generated customer impersonation token", + "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" }, - "customerId": { - "description": "ID of the customer", + "phone": { + "description": "Phone. This field may be required depending on the system settings.", "type": "string" }, - "userId": { - "description": "ID of the user who generated the token", + "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" } }, @@ -19330,17 +19666,7 @@ }, "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" - } - } - } + "description": "Message sent successful." } }, "security": [ @@ -19350,71 +19676,54 @@ ] } }, - "/account/logout": { + "/currency": { "post": { "tags": [ - "Login & Registration" + "System & Context", + "Endpoints supporting Criteria " ], - "summary": "Log out a customer", - "description": "Logs out a customer.", - "operationId": "logoutCustomer", - "responses": { - "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "403": { - "$ref": "#/components/responses/403" - } - }, - "security": [ + "summary": "Fetch currencies", + "description": "Perform a filtered search for currencies.", + "operationId": "readCurrency", + "parameters": [ { - "ApiKey": [], - "ContextToken": [] + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } - ] - } - }, - "/account/register-confirm": { - "post": { - "tags": [ - "Login & Registration" ], - "summary": "Confirm a customer registration", - "description": "Confirms a customer registration when double opt-in is activated.\n\nLearn more about double opt-in registration in our guide \"Register a customer\".", - "operationId": "registerConfirm", "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "required": [ - "hash", - "em" - ], - "properties": { - "hash": { - "description": "Hash from the email received", - "type": "string" - }, - "em": { - "description": "Email hash from the email received", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Returns the logged in customer. The customer is automatically logged in with the `sw-context-token` header provided, which can be reused for subsequent requests." - }, - "404": { - "description": "No hash provided" - }, - "412": { - "description": "The customer has already been confirmed" + "description": "Entity search result containing currencies.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Currency" + } + } + } + } } }, "security": [ @@ -19422,156 +19731,55 @@ "ApiKey": [] } ] - } - }, - "/account/register": { - "post": { - "tags": [ - "Login & Registration" - ], - "summary": "Register a customer", - "description": "Registers a customer. Used both for normal customers and guest customers.See the Guide \"Register a customer\" for more information on customer registration.", - "operationId": "register", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "properties": { - "email": { - "description": "Email of the customer. Has to be unique, unless `guest` is `true`", - "type": "string" - }, - "password": { - "description": "Password for the customer. Required, unless `guest` is `true`", - "type": "string" - }, - "salutationId": { - "description": "Id of the salutation for the customer account. Fetch options using `salutation` endpoint.", - "type": "string" - }, - "firstName": { - "description": "Customer first name. Value will be reused for shipping and billing address if not provided explicitly.", - "type": "string" - }, - "lastName": { - "description": "Customer last name. Value will be reused for shipping and billing address if not provided explicitly.", - "type": "string" - }, - "acceptedDataProtection": { - "description": "Flag indicating accepted data protection", - "type": "boolean" - }, - "storefrontUrl": { - "description": "URL of the storefront for that registration. Used in confirmation emails. Has to be one of the configured domains of the sales channel.", - "type": "string" - }, - "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", - "salutationId", - "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 - } - } + } + }, + "/order/state/cancel": { + "post": { + "tags": [ + "Order" + ], + "summary": "Cancel an order", + "description": "Cancels an order. The order state will be set to 'cancelled'.", + "operationId": "cancelOrder", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "orderId": { + "description": "The identifier of the order to be canceled.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" } - ], - "type": "object" + }, + "type": "object", + "required": [ + "orderId" + ] } } } }, "responses": { "200": { - "description": "Success", + "description": "Returns the state of the state machine\n\n example: More information about the state machine can be found in the corresponding guide: [Using the state machine](https://developer.shopware.com/docs/guides/plugins/plugins/checkout/order/using-the-state-machine)", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Customer" + "$ref": "#/components/schemas/StateMachineState" } } } @@ -19579,55 +19787,63 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/account/recovery-password-confirm": { + "/order": { "post": { "tags": [ - "Profile" + "Order", + "Endpoints supporting Criteria " + ], + "summary": "Fetch a list of orders", + "description": "List orders of a customer.", + "operationId": "readOrder", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } ], - "summary": "Reset a password with recovery credentials", - "description": "This operation is Step 2 of the password reset flow. It is required to conduct Step 1 \"Send a password recovery mail\" in order to obtain the required credentials for this step.Resets a customer's password using credentials from a password recovery mail as a validation.", - "operationId": "recoveryPassword", "requestBody": { "required": true, "content": { "application/json": { "schema": { - "required": [ - "hash", - "newPassword", - "newPasswordConfirm" - ], - "properties": { - "hash": { - "description": "Parameter from the link in the confirmation mail sent in Step 1", - "type": "string" - }, - "newPassword": { - "description": "New password for the customer", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" }, - "newPasswordConfirm": { - "description": "Confirmation of the new password", - "type": "string" + { + "properties": { + "checkPromotion": { + "description": "Check if the payment method of the order is still changeable.", + "type": "boolean" + } + }, + "type": "object" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Returns a success response indicating a successful update.", + "description": "An array of orders and an indicator if the payment of the order can be changed.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/OrderRouteResponse" } } } @@ -19635,36 +19851,51 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/account/recovery-password": { + "/order/payment": { "post": { "tags": [ - "Profile" + "Order" + ], + "summary": "Update the payment method of an order", + "description": "Changes the payment method of a specific order. You can use the /order route to find out if the payment method of an order can be changed - take a look at the `paymentChangeable`- array in the response.", + "operationId": "orderSetPayment", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } ], - "summary": "Send a password recovery mail", - "description": "This operation is Step 1 of the password reset flow. Make sure to implement Step 2 \"Reset password with recovery credentials\" in order to allow for the complete flow in your application. Sends a recovery mail containing a link with credentials that allows a customer to reset their password.", - "operationId": "sendRecoveryMail", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "email", - "storefrontUrl" + "paymentMethodId", + "orderId" ], "properties": { - "email": { - "description": "E-Mail address to identify the customer", - "type": "string" + "paymentMethodId": { + "description": "The identifier of the paymentMethod to be set", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "storefrontUrl": { - "description": "URL of the storefront to use for the generated reset link. It has to be a domain that is configured in the sales channel domain settings.", - "type": "string" + "orderId": { + "description": "The identifier of the order.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, "type": "object" @@ -19674,7 +19905,7 @@ }, "responses": { "200": { - "description": "If email corresponds to an existing customer, a mail will be sent out to that customer containing a link assembled using the following schema:\n\nReturns a success indicating a successful initialisation of the reset flow.", + "description": "Successfully updated the payment method of the order.", "content": { "application/json": { "schema": { @@ -19686,33 +19917,61 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/account/address/default-shipping/{addressId}": { - "patch": { + "/order/download/{orderId}/{downloadId}": { + "get": { "tags": [ - "Address" + "Order" ], - "summary": "Change a customer's default shipping address", - "description": "Updates the default (preselected) shipping addresses of a customer.", - "operationId": "defaultShippingAddress", + "summary": "Download a purchased file", + "description": "Download a file included in the given order and with the given id. Access must be granted.", + "operationId": "orderDownloadFile", "parameters": [ { - "name": "addressId", + "name": "orderId", "in": "path", - "description": "Address ID", "required": true, "schema": { - "type": "string" + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "downloadId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } ], "responses": { "200": { - "description": "" + "description": "An arbitrary binary file.", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } } }, "security": [ @@ -19723,67 +19982,142 @@ ] } }, - "/account/address/default-billing/{addressId}": { - "patch": { + "/country-state/{countryId}": { + "post": { "tags": [ - "Address" + "System & Context", + "Endpoints supporting Criteria " ], - "summary": "Change a customer's default billing address", - "description": "Updates the default (preselected) billing addresses of a customer.", - "operationId": "defaultBillingAddress", + "summary": "Fetch the states of a country", + "description": "Perform a filtered search the states for a country", + "operationId": "readCountryState", "parameters": [ { - "name": "addressId", + "name": "countryId", "in": "path", - "description": "Address ID", "required": true, "schema": { - "type": "string" + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Entity search result containing countries.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CountryState" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } } } - ], - "responses": { - "200": { - "description": "" - } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/address": { + "/language": { "post": { "tags": [ - "Address" + "System & Context", + "Endpoints supporting Criteria " + ], + "summary": "Fetch languages", + "description": "Perform a filtered search for languages.", + "operationId": "readLanguages", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } ], - "summary": "Create a new address for a customer", - "description": "Creates a new address for a customer.", - "operationId": "createCustomerAddress", "requestBody": { + "required": false, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerAddress" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] } } } }, "responses": { "200": { - "description": "", + "description": "Entity search result containing languages.", "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/CustomerAddress" + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + } + } + }, + "required": [ + "elements" + ], + "type": "object" }, { - "$ref": "#/components/schemas/CustomerAddressRead" + "$ref": "#/components/schemas/EntitySearchResult" } ] } @@ -19793,39 +20127,60 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/document/download/{documentId}/{deepLinkCode}": { - "post": { + "/product-export/{accessKey}/{fileName}": { + "get": { "tags": [ - "Document", - "Endpoints supporting Criteria " + "Product" ], - "summary": "Download generated document", - "description": "Returns blob file of a generated document to download.", - "operationId": "download", + "summary": "Export product export", + "operationId": "readProductExport", "parameters": [ { - "name": "documentId", + "name": "accessKey", "in": "path", + "description": "Access Key", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } }, { - "name": "deepLinkCode", - "required": true, + "name": "fileName", "in": "path", + "description": "File Name", + "required": true, "schema": { "type": "string" } - }, + } + ], + "responses": { + "200": { + "description": "" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/shipping-method": { + "post": { + "tags": [ + "Payment & Shipping", + "Endpoints supporting Criteria " + ], + "summary": "Fetch shipping methods", + "description": "Perform a filtered search for shipping methods.", + "operationId": "readShippingMethod", + "parameters": [ { "name": "sw-language-id", "in": "header", @@ -19853,11 +20208,37 @@ }, "responses": { "200": { - "description": "Returns the document information and blob to download.", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Document" + "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" + } + ] } } } @@ -19865,8 +20246,7 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } @@ -20022,113 +20402,6 @@ } ] } - }, - "/payment-method": { - "post": { - "tags": [ - "Payment Method", - "Endpoints supporting Criteria " - ], - "summary": "Loads all available payment methods", - "operationId": "readPaymentMethod", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - }, - { - "properties": { - "onlyAvailable": { - "description": "List only available", - "type": "boolean" - } - }, - "type": "object" - } - ] - } - } - } - }, - "responses": { - "200": { - "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" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/_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" - } - } - } } }, "tags": [ @@ -20137,7 +20410,7 @@ "description": "Experimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", "externalDocs": { "description": "Find out more", - "url": "https://github.com/shopware/platform/blob/trunk/adr/2023-05-10-experimental-features.md" + "url": "https://github.com/shopware/shopware/blob/trunk/adr/2023-05-10-experimental-features.md" } } ] diff --git a/storeapi.summary.json b/storeapi.summary.json index 7a2c0b7..1bd48eb 100644 --- a/storeapi.summary.json +++ b/storeapi.summary.json @@ -9,7 +9,6 @@ "/account/change-email", "/account/change-language", "/account/change-password", - "/account/change-payment-method/{paymentMethodId}", "/account/change-profile", "/account/customer", "/account/customer-recovery-is-expired", @@ -94,6 +93,7 @@ "AppScriptCondition", "AppShippingMethod", "AppTemplate", + "Association", "Associations", "Breadcrumb", "BreadcrumbCollection", @@ -161,6 +161,7 @@ "LanguageJsonApi", "LineItem", "LineItemType", + "ListPrice", "Locale", "LogEntry", "MailHeaderFooter", @@ -245,6 +246,7 @@ "PropertyGroupOption", "Query", "RangeFilter", + "ReferencePrice", "Rule", "RuleCondition", "SalesChannel",