From 010968a28f8a202cda7f8bed15bae3b7a4b07f3d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 16 Nov 2023 08:53:53 +0100 Subject: [PATCH 01/35] [create-pull-request] automated change (#115) Co-authored-by: shopwareBot --- storeapi.json | 146 +------------------------------------------------- 1 file changed, 1 insertion(+), 145 deletions(-) diff --git a/storeapi.json b/storeapi.json index dc6611d..13fdf05 100644 --- a/storeapi.json +++ b/storeapi.json @@ -3,7 +3,7 @@ "info": { "title": "Shopware Store API", "description": "This endpoint reference contains an overview of all endpoints comprising the Shopware Store API", - "version": "6.5.9999999.9999999-dev" + "version": "6.5.6.1" }, "servers": [ { @@ -620,29 +620,6 @@ }, "type": "object" }, - "AppShippingMethod": { - "description": "Added since version: 6.5.7.0", - "required": [ - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, "AppTemplate": { "description": "Added since version: 6.3.1.0", "required": [ @@ -903,37 +880,6 @@ }, "type": "object" }, - "tags": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/category/3adbdb3ac060038aa0e6e6c138ef9873/tags" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "tag" - }, - "id": { - "type": "string", - "example": "d57ac45256849d9b13e2422d91580fb9" - } - } - } - } - }, - "type": "object" - }, "cmsPage": { "properties": { "links": { @@ -1182,12 +1128,6 @@ "media": { "$ref": "#/components/schemas/Media" }, - "tags": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Tag" - } - }, "cmsPage": { "$ref": "#/components/schemas/CmsPage" }, @@ -2597,12 +2537,6 @@ "$ref": "#/components/schemas/CustomerAddress" } }, - "tags": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Tag" - } - }, "extensions": { "properties": { "specificFeatures": { @@ -3017,9 +2951,6 @@ "type": "string", "description": "It is a generated special code linked to email. It is used to access details of guest customer actions." }, - "documentNumber": { - "type": "string" - }, "customFields": { "type": "object", "description": "Additional fields that offer a possibility to add own fields for the different program-areas." @@ -4266,9 +4197,6 @@ "description": "Runtime field, cannot be used as part of the criteria.", "type": "string" }, - "path": { - "type": "string" - }, "hasFile": { "description": "Runtime field, cannot be used as part of the criteria.", "type": "boolean" @@ -4445,9 +4373,6 @@ "description": "Public url of media thumbnail.", "type": "string" }, - "path": { - "type": "string" - }, "customFields": { "type": "object", "description": "Additional fields that offer a possibility to add own fields for the different program-areas." @@ -6476,9 +6401,6 @@ "description": "Runtime field, cannot be used as part of the criteria.", "type": "string" }, - "technicalName": { - "type": "string" - }, "createdAt": { "type": "string", "format": "date-time", @@ -6607,9 +6529,6 @@ "description": "Runtime field, cannot be used as part of the criteria.", "type": "string" }, - "technicalName": { - "type": "string" - }, "createdAt": { "type": "string", "format": "date-time", @@ -6840,14 +6759,6 @@ }, "readOnly": true }, - "tagIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, "categoryIds": { "type": "array", "items": { @@ -7580,37 +7491,6 @@ }, "type": "object" }, - "tags": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/tags" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "tag" - }, - "id": { - "type": "string", - "example": "d57ac45256849d9b13e2422d91580fb9" - } - } - } - } - }, - "type": "object" - }, "seoCategory": { "properties": { "links": { @@ -7863,14 +7743,6 @@ "readOnly": true, "description": "Runtime field, cannot be used as part of the criteria." }, - "tagIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, "categoryIds": { "type": "array", "items": { @@ -8087,12 +7959,6 @@ "$ref": "#/components/schemas/Category" } }, - "tags": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Tag" - } - }, "seoCategory": { "$ref": "#/components/schemas/Category" }, @@ -9846,9 +9712,6 @@ "trackingUrl": { "type": "string" }, - "technicalName": { - "type": "string" - }, "createdAt": { "type": "string", "format": "date-time", @@ -10103,9 +9966,6 @@ "type": "string", "description": "This URL allows to track packages." }, - "technicalName": { - "type": "string" - }, "createdAt": { "type": "string", "format": "date-time", @@ -10485,7 +10345,6 @@ "Tag": { "description": "Added since version: 6.0.0.0", "required": [ - "name", "createdAt" ], "properties": { @@ -10494,9 +10353,6 @@ "pattern": "^[0-9a-f]{32}$", "description": "Unique identity of tag." }, - "name": { - "type": "string" - }, "createdAt": { "type": "string", "format": "date-time", From 30ec8c0a7523ef738b942c32488aeaae35ad945d Mon Sep 17 00:00:00 2001 From: Micha Hobert Date: Thu, 16 Nov 2023 10:59:18 +0100 Subject: [PATCH 02/35] Remove vars --- .github/workflows/manual_versioning.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/manual_versioning.yml b/.github/workflows/manual_versioning.yml index 92e116c..33d12dd 100644 --- a/.github/workflows/manual_versioning.yml +++ b/.github/workflows/manual_versioning.yml @@ -10,19 +10,16 @@ on: jobs: generate-trunk: - needs: vars uses: ./.github/workflows/base_schema.yml with: shopware_version: ${{ inputs.shopware_version }} generate-commercial-trunk: - needs: vars uses: ./.github/workflows/plugin_commercial_schema.yml with: shopware_version: ${{ inputs.shopware_version }} generate-digitalsalesroom-trunk: - needs: vars uses: ./.github/workflows/plugin_digitalsalesroom_schema.yml with: shopware_version: ${{ inputs.shopware_version }} From 3f146569f92670061ef9c2692efa04bdbe1f694f Mon Sep 17 00:00:00 2001 From: Micha Hobert Date: Thu, 16 Nov 2023 11:05:17 +0100 Subject: [PATCH 03/35] Remove vars --- .github/workflows/manual_versioning.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/manual_versioning.yml b/.github/workflows/manual_versioning.yml index 33d12dd..96b6884 100644 --- a/.github/workflows/manual_versioning.yml +++ b/.github/workflows/manual_versioning.yml @@ -13,13 +13,16 @@ jobs: uses: ./.github/workflows/base_schema.yml with: shopware_version: ${{ inputs.shopware_version }} - + secrets: inherit + generate-commercial-trunk: uses: ./.github/workflows/plugin_commercial_schema.yml with: shopware_version: ${{ inputs.shopware_version }} - + secrets: inherit + generate-digitalsalesroom-trunk: uses: ./.github/workflows/plugin_digitalsalesroom_schema.yml with: shopware_version: ${{ inputs.shopware_version }} + secrets: inherit From 90712525a78e4b6ee57407cc9e4190586be962bd Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 16 Nov 2023 11:18:07 +0100 Subject: [PATCH 04/35] [create-pull-request] automated change (#120) Co-authored-by: shopwareBot --- SwagGuidedShopping-storeapi.json | 1690 +----------------------------- 1 file changed, 55 insertions(+), 1635 deletions(-) diff --git a/SwagGuidedShopping-storeapi.json b/SwagGuidedShopping-storeapi.json index 207dc45..bd800f9 100644 --- a/SwagGuidedShopping-storeapi.json +++ b/SwagGuidedShopping-storeapi.json @@ -3,7 +3,7 @@ "info": { "title": "Shopware Store API", "description": "This endpoint reference contains an overview of all endpoints comprising the Shopware Store API", - "version": "6.5.9999999.9999999-dev" + "version": "6.5.6.1" }, "servers": [ { @@ -603,29 +603,6 @@ }, "type": "object" }, - "AppShippingMethod": { - "description": "Added since version: 6.5.7.0", - "required": [ - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, "AppTemplate": { "description": "Added since version: 6.3.1.0", "required": [ @@ -885,37 +862,6 @@ }, "type": "object" }, - "tags": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/category/3adbdb3ac060038aa0e6e6c138ef9873/tags" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "tag" - }, - "id": { - "type": "string", - "example": "d57ac45256849d9b13e2422d91580fb9" - } - } - } - } - }, - "type": "object" - }, "cmsPage": { "properties": { "links": { @@ -1136,12 +1082,6 @@ "media": { "$ref": "#/components/schemas/Media" }, - "tags": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Tag" - } - }, "cmsPage": { "$ref": "#/components/schemas/CmsPage" }, @@ -2400,12 +2340,6 @@ "items": { "$ref": "#/components/schemas/CustomerAddress" } - }, - "tags": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Tag" - } } }, "type": "object" @@ -2759,9 +2693,6 @@ "deepLinkCode": { "type": "string" }, - "documentNumber": { - "type": "string" - }, "customFields": { "type": "object" }, @@ -4269,9 +4200,6 @@ "description": "Runtime field, cannot be used as part of the criteria.", "type": "string" }, - "path": { - "type": "string" - }, "hasFile": { "description": "Runtime field, cannot be used as part of the criteria.", "type": "boolean" @@ -4432,9 +4360,6 @@ "description": "Runtime field, cannot be used as part of the criteria.", "type": "string" }, - "path": { - "type": "string" - }, "customFields": { "type": "object" }, @@ -6124,9 +6049,6 @@ "description": "Runtime field, cannot be used as part of the criteria.", "type": "string" }, - "technicalName": { - "type": "string" - }, "createdAt": { "type": "string", "format": "date-time", @@ -6246,9 +6168,6 @@ "description": "Runtime field, cannot be used as part of the criteria.", "type": "string" }, - "technicalName": { - "type": "string" - }, "createdAt": { "type": "string", "format": "date-time", @@ -6476,14 +6395,6 @@ }, "readOnly": true }, - "tagIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, "categoryIds": { "type": "array", "items": { @@ -7252,37 +7163,6 @@ }, "type": "object" }, - "tags": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/tags" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "tag" - }, - "id": { - "type": "string", - "example": "d57ac45256849d9b13e2422d91580fb9" - } - } - } - } - }, - "type": "object" - }, "seoCategory": { "properties": { "links": { @@ -7496,14 +7376,6 @@ }, "readOnly": true }, - "tagIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, "categoryIds": { "type": "array", "items": { @@ -7737,12 +7609,6 @@ "$ref": "#/components/schemas/Category" } }, - "tags": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Tag" - } - }, "seoCategory": { "$ref": "#/components/schemas/Category" } @@ -9325,9 +9191,6 @@ "trackingUrl": { "type": "string" }, - "technicalName": { - "type": "string" - }, "createdAt": { "type": "string", "format": "date-time", @@ -9572,9 +9435,6 @@ "trackingUrl": { "type": "string" }, - "technicalName": { - "type": "string" - }, "createdAt": { "type": "string", "format": "date-time", @@ -9922,7 +9782,6 @@ "Tag": { "description": "Added since version: 6.0.0.0", "required": [ - "name", "createdAt" ], "properties": { @@ -9930,9 +9789,6 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "name": { - "type": "string" - }, "createdAt": { "type": "string", "format": "date-time", @@ -10333,1469 +10189,71 @@ }, "type": "object" }, - "Cart": { + "DynamicProductPageOpenedPayload": { "allOf": [ { - "$ref": "#/components/schemas/ArrayStruct" - }, - { + "$ref": "#/components/schemas/AbstractDynamicPageOpenedPayload" + } + ], + "required": [ + "productId" + ], + "properties": { + "productId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "the id from the product which is shown on the dynamic page" + } + } + }, + "AttendeeRespondInvitationResponse": { + "type": "object", + "properties": { + "appointment": { "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": { - "type": "object", - "properties": { - "netPrice": { - "description": "Net price of the cart", - "type": "number", - "format": "float" - }, - "totalPrice": { - "description": "Total price of the cart, including shipping costs, discounts and taxes", - "type": "number", - "format": "float" - }, - "positionPrice": { - "description": "Price for all line items in the cart", - "type": "number", - "format": "float" - }, - "taxStatus": { - "description": "Tax calculation for the cart. One of `gross`, `net` or `tax-free`", - "type": "string" - } - } - }, - "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": { - "type": "object", - "properties": { - "key": { - "type": "string" - }, - "level": { - "type": "string" - }, - "message": { - "type": "string" - } - } - } - }, - "transactions": { - "description": "A list of all payment transactions associated with the current cart.", - "type": "array", - "items": { - "type": "object", - "properties": { - "paymentMethodId": { - "type": "string" - } - } - } - }, - "modified": { - "type": "boolean" - }, - "customerComment": { + "id": { "type": "string", - "description": "A comment that can be added to the cart." + "pattern": "^[0-9a-f]{32}$", + "description": "The appointment id" }, - "affiliateCode": { + "accessibleFrom": { "type": "string", - "description": "An affiliate tracking code" + "format": "date-time", + "description": "The time the client can access the appointment" }, - "campaignCode": { + "accessibleTo": { "type": "string", - "description": "A campaign tracking code" + "format": "date-time", + "description": "The time the appointment will be closed, the client can not access" + }, + "status": { + "anyOf": [ + { + "type": "string", + "enum": [ + "started", + "ended" + ] + }, + { + "type": "null" + } + ], + "description": "The appointment status" } } + }, + "answer": { + "type": "string", + "enum": [ + "accepted", + "maybe", + "declined" + ], + "description": "The invitation status that client responded to" } - ] - }, - "ShippingMethodPageRouteResponse": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "deliveryTimeId": { - "type": "string" - }, - "deliveryTime": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer", - "format": "int32" - }, - "max": { - "type": "integer", - "format": "int32" - }, - "unit": { - "type": "string" - } - } - }, - "translations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - } - } - } - }, - "orderDeliveries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "orderId": { - "type": "string" - }, - "shippingOrderAddressId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "shippingDateEarliest": { - "type": "string", - "format": "date-time" - }, - "shippingDateLatest": { - "type": "string", - "format": "date-time" - }, - "stateId": { - "type": "string" - } - } - } - }, - "salesChannelDefaultAssignments": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" - }, - "hreflangDefaultDomainId": { - "type": "string" - } - } - } - }, - "salesChannels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" - }, - "hreflangDefaultDomainId": { - "type": "string" - } - } - } - }, - "availabilityRule": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "priority": { - "type": "integer", - "format": "int32" - }, - "invalid": { - "type": "boolean" - } - } - }, - "availabilityRuleId": { - "type": "string" - }, - "prices": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "ruleId": { - "type": "string" - }, - "calculation": { - "type": "integer", - "format": "int32" - }, - "quantityStart": { - "type": "number", - "format": "float" - }, - "quantityEnd": { - "type": "number", - "format": "float" - }, - "price": { - "type": "number", - "format": "float" - }, - "calculationRuleId": { - "type": "string" - } - } - } - }, - "mediaId": { - "type": "string" - }, - "media": { - "type": "object", - "properties": { - "userId": { - "type": "string" - }, - "mimeType": { - "type": "string" - }, - "fileExtension": { - "type": "string" - }, - "fileSize": { - "type": "integer", - "format": "int32" - }, - "title": { - "type": "string" - }, - "metaDataRaw": { - "type": "string" - }, - "mediaTypeRaw": { - "type": "string" - }, - "uploadedAt": { - "type": "string", - "format": "date-time" - }, - "alt": { - "type": "string" - }, - "url": { - "type": "string" - }, - "fileName": { - "type": "string" - }, - "mediaFolderId": { - "type": "string" - }, - "private": { - "type": "boolean" - }, - "thumbnailsRo": { - "type": "string" - } - } - }, - "tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - } - } - } - } - } - } - }, - "LineItem": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "referencedId": { - "type": "string" - }, - "label": { - "type": "string" - }, - "quantity": { - "type": "integer", - "format": "int32" - }, - "type": { - "type": "string" - }, - "good": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "removable": { - "type": "boolean" - }, - "stackable": { - "type": "boolean" - }, - "modified": { - "type": "boolean" - } - } - }, - "OrderRouteResponse": { - "type": "object", - "properties": { - "orders": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order" - } - }, - "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" - } - } - } - }, - "NavigationRouteResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - }, - "CrossSellingElementCollection": { - "type": "array", - "items": { - "type": "object", - "properties": { - "crossSelling": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "position": { - "type": "integer", - "format": "int32" - }, - "sortBy": { - "type": "string" - }, - "sortDirection": { - "type": "string" - }, - "limit": { - "type": "integer", - "format": "int32" - }, - "active": { - "type": "boolean" - }, - "productId": { - "type": "string" - }, - "productStreamId": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - }, - "total": { - "type": "integer", - "format": "int32" - } - } - } - }, - "WishlistLoadRouteResponse": { - "type": "object", - "properties": { - "wishlist": { - "type": "object", - "properties": { - "customerId": { - "type": "string" - }, - "salesChannelId": { - "type": "string" - } - } - }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductListingResult" - } - } - } - }, - "ProductListingCriteria": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - }, - { - "type": "object", - "description": "Additional search parameters for product listings", - "properties": { - "order": { - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "type": "string" - }, - "limit": { - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "type": "integer", - "minimum": 0 - }, - "p": { - "description": "Search result page", - "type": "integer", - "default": 1 - }, - "manufacturer": { - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", - "type": "string" - }, - "min-price": { - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 - }, - "max-price": { - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 - }, - "rating": { - "description": "Filter products with a minimum average rating.", - "type": "integer" - }, - "shipping-free": { - "description": "Filters products that are marked as shipping-free.", - "type": "boolean", - "default": false - }, - "properties": { - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", - "type": "string" - }, - "manufacturer-filter": { - "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "price-filter": { - "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "rating-filter": { - "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "shipping-free-filter": { - "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "property-filter": { - "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "property-whitelist": { - "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", - "type": "string" - }, - "reduce-aggregations": { - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", - "type": "string", - "nullable": true - } - } - } - ] - }, - "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" - } - } - } - }, - "ArrayStruct": { - "$ref": "#/components/schemas/Struct" - }, - "AccountNewsletterRecipientResult": { - "allOf": [ - { - "$ref": "#/components/schemas/Struct" - }, - { - "type": "object", - "properties": { - "status": { - "type": "string" - } - } - } - ] - }, - "Criteria": { - "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", - "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "limit": { - "description": "Number of items per result page", - "type": "integer" - }, - "filter": { - "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "field": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "required": [ - "type", - "field", - "value" - ] - } - }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "type": "object", - "properties": { - "field": { - "type": "string" - }, - "order": { - "type": "string" - }, - "naturalSorting": { - "type": "boolean" - } - }, - "required": [ - "field" - ] - } - }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "field": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "required": [ - "type", - "field", - "value" - ] - } - }, - "associations": { - "type": "object", - "description": "Used to fetch associations which are not fetched by default." - }, - "aggregations": { - "type": "array", - "description": "Used to perform aggregations on the search result. For more information, see [Search Queries > Aggregations](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#aggregations)", - "items": { - "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" - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - } - }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "fields": { - "type": "array", - "description": "Fields which should be returned in the search result.", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "total-count-mode": { - "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", - "type": "string", - "default": "none", - "enum": [ - "none", - "exact", - "next-pages" - ] - } - } - }, - "CartItems": { - "allOf": [ - { - "$ref": "#/components/schemas/ArrayStruct" - }, - { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - } - } - } - ] - }, - "SuccessResponse": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - } - } - }, - "EntitySearchResult": { - "allOf": [ - { - "$ref": "#/components/schemas/ArrayStruct" - }, - { - "type": "object", - "properties": { - "entity": { - "type": "string" - }, - "total": { - "type": "integer", - "description": "The total number of found entities" - }, - "aggregations": { - "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", - "items": { - "type": "object" - } - }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." - }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." - } - } - } - ] - }, - "FindProductVariantRouteResponse": { - "type": "object", - "properties": { - "foundCombination": { - "type": "object", - "properties": { - "variantId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "options": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "Struct": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "description": "Alias which can be used to restrict response fields. For more information see [includes](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#includes-apialias)." - } - } - }, - "ProductListingResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EntitySearchResult" - }, - { - "type": "object", - "properties": { - "currentFilters": { - "type": "object", - "description": "Contains the state of the filters. These can be used to create listing filters.", - "properties": { - "navigationId": { - "type": "string" - }, - "manufacturer": { - "type": "array", - "items": { - "type": "object" - } - }, - "price": { - "type": "object", - "properties": { - "min": { - "type": "integer" - }, - "max": { - "type": "integer" - } - } - }, - "rating": { - "type": "integer" - }, - "shipping-free": { - "type": "boolean" - }, - "properties": { - "type": "array", - "items": { - "type": "object" - } - } - } - }, - "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" - } - }, - "sorting": { - "type": "string" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - } - } - } - ] - }, - "Sitemap": { - "allOf": [ - { - "$ref": "#/components/schemas/ArrayStruct" - }, - { - "type": "object", - "properties": { - "filename": { - "type": "string" - }, - "created": { - "type": "string", - "format": "date-time" - } - } - } - ] - }, - "SalesChannelContext": { - "allOf": [ - { - "$ref": "#/components/schemas/ArrayStruct" - }, - { - "type": "object", - "properties": { - "token": { - "description": "Context the user session", - "type": "string" - }, - "currentCustomerGroup": { - "type": "object", - "description": "Customer group of the current user", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } - } - }, - "fallbackCustomerGroup": { - "description": "Fallback group if the default customer group is not applicable", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } - } - }, - "currency": { - "type": "object", - "description": "Currency associated with the current user", - "properties": { - "isoCode": { - "type": "string" - }, - "factor": { - "type": "integer" - }, - "symbol": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "name": { - "type": "string" - }, - "position": { - "type": "integer", - "format": "int32" - }, - "decimalPrecision": { - "type": "integer", - "format": "int32" - }, - "isSystemDefault": { - "type": "boolean" - } - } - }, - "salesChannel": { - "description": "Information about the current sales channel", - "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" - }, - "analyticsId": { - "type": "string" - } - } - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } - }, - "customer": { - "type": "object", - "description": "Information about the current customer - `null` if the customer is not logged in", - "properties": { - "groupId": { - "type": "string" - }, - "defaultPaymentMethodId": { - "type": "string" - }, - "salesChannelId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "lastPaymentMethodId": { - "type": "string" - }, - "defaultBillingAddressId": { - "type": "string" - }, - "defaultShippingAddressId": { - "type": "string" - }, - "defaultBillingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "defaultShippingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "activeBillingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "activeShippingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "customerNumber": { - "type": "string" - }, - "salutationId": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "company": { - "type": "string" - }, - "password": { - "type": "string" - }, - "email": { - "type": "string" - }, - "title": { - "type": "string" - }, - "affiliateCode": { - "type": "string" - }, - "campaignCode": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "doubleOptInRegistration": { - "type": "boolean" - }, - "doubleOptInEmailSentDate": { - "type": "string", - "format": "date-time" - }, - "doubleOptInConfirmDate": { - "type": "string", - "format": "date-time" - }, - "hash": { - "type": "string" - }, - "guest": { - "type": "boolean" - }, - "firstLogin": { - "type": "string", - "format": "date-time" - }, - "lastLogin": { - "type": "string", - "format": "date-time" - }, - "newsletter": { - "type": "boolean" - }, - "birthday": { - "type": "string", - "format": "date-time" - }, - "lastOrderDate": { - "type": "string", - "format": "date-time" - }, - "orderCount": { - "type": "integer", - "format": "int32" - }, - "legacyEncoder": { - "type": "string" - }, - "legacyPassword": { - "type": "string" - }, - "autoIncrement": { - "type": "integer", - "format": "int32" - }, - "remoteAddress": { - "type": "string" - } - } - }, - "paymentMethod": { - "type": "object", - "description": "Selected payment method", - "properties": { - "pluginId": { - "type": "string" - }, - "handlerIdentifier": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "position": { - "type": "integer", - "format": "int32" - }, - "active": { - "type": "boolean" - }, - "availabilityRuleId": { - "type": "string" - }, - "mediaId": { - "type": "string" - }, - "formattedHandlerIdentifier": { - "type": "string" - } - } - }, - "shippingMethod": { - "type": "object", - "description": "Selected shipping method", - "properties": { - "name": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "trackingUrl": { - "type": "string" - }, - "deliveryTimeId": { - "type": "string" - }, - "availabilityRuleId": { - "type": "string" - }, - "mediaId": { - "type": "string" - } - } - }, - "context": { - "description": "Core context with general configuration values and state", - "type": "object", - "properties": { - "versionId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "currencyFactor": { - "type": "integer" - }, - "currencyPrecision": { - "type": "integer", - "format": "int32" - }, - "scope": { - "type": "string" - }, - "source": { - "type": "string" - }, - "taxState": { - "type": "string" - }, - "useCache": { - "type": "boolean" - } - } - } - } - } - ] - }, - "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 - } - } - }, - "DynamicProductPageOpenedPayload": { - "allOf": [ - { - "$ref": "#/components/schemas/AbstractDynamicPageOpenedPayload" - } - ], - "required": [ - "productId" - ], - "properties": { - "productId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "the id from the product which is shown on the dynamic page" - } - } - }, - "AttendeeRespondInvitationResponse": { - "type": "object", - "properties": { - "appointment": { - "type": "object", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The appointment id" - }, - "accessibleFrom": { - "type": "string", - "format": "date-time", - "description": "The time the client can access the appointment" - }, - "accessibleTo": { - "type": "string", - "format": "date-time", - "description": "The time the appointment will be closed, the client can not access" - }, - "status": { - "anyOf": [ - { - "type": "string", - "enum": [ - "started", - "ended" - ] - }, - { - "type": "null" - } - ], - "description": "The appointment status" - } - } - }, - "answer": { - "type": "string", - "enum": [ - "accepted", - "maybe", - "declined" - ], - "description": "The invitation status that client responded to" - } - } + } }, "PresentationCmsPage": { "type": "object", @@ -14261,35 +12719,6 @@ }, "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" - } - } - }, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "contextToken": { - "deprecated": true, - "description": "Deprecated since v6.6.0.0. Please retrieve the context token from the response header instead.", - "type": "string" - }, - "redirectUrl": { - "description": "Define the URL which browser will be redirected to", - "type": "string" - } - } - } - } - } } }, "parameters": { @@ -15031,14 +13460,5 @@ } } }, - "tags": [ - { - "name": "Experimental", - "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" - } - } - ] + "tags": [] } From 31386418658b0f6a497b99e0d053051eb9764511 Mon Sep 17 00:00:00 2001 From: Micha Hobert Date: Mon, 4 Dec 2023 16:43:53 +0100 Subject: [PATCH 05/35] Add version --- .github/workflows/plugin_commercial_schema.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/plugin_commercial_schema.yml b/.github/workflows/plugin_commercial_schema.yml index 2ee949f..2808dde 100644 --- a/.github/workflows/plugin_commercial_schema.yml +++ b/.github/workflows/plugin_commercial_schema.yml @@ -30,6 +30,7 @@ jobs: schema_file: ${{ needs.vars.outputs.PLUGIN_NAME }}-storeapi.json plugin_name: ${{ needs.vars.outputs.PLUGIN_NAME }} plugin_url: ${{ needs.vars.outputs.PLUGIN_URL }} + git_options: '-b 6.5.x' shopware_version: ${{ inputs.shopware_version }} secrets: inherit open-pr: From f05aaa73e5c3196a4583e2680f20dbb5f08405f1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 4 Dec 2023 16:49:46 +0100 Subject: [PATCH 06/35] [create-pull-request] automated change (#130) Co-authored-by: shopwareBot --- storeapi.json | 5764 +++++++++++++++++++++++++------------------------ 1 file changed, 2954 insertions(+), 2810 deletions(-) diff --git a/storeapi.json b/storeapi.json index 13fdf05..5bfd855 100644 --- a/storeapi.json +++ b/storeapi.json @@ -3,7 +3,7 @@ "info": { "title": "Shopware Store API", "description": "This endpoint reference contains an overview of all endpoints comprising the Shopware Store API", - "version": "6.5.6.1" + "version": "6.5.7.3" }, "servers": [ { @@ -620,6 +620,29 @@ }, "type": "object" }, + "AppShippingMethod": { + "description": "Added since version: 6.5.7.0", + "required": [ + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, "AppTemplate": { "description": "Added since version: 6.3.1.0", "required": [ @@ -880,6 +903,37 @@ }, "type": "object" }, + "tags": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/category/3adbdb3ac060038aa0e6e6c138ef9873/tags" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "tag" + }, + "id": { + "type": "string", + "example": "d57ac45256849d9b13e2422d91580fb9" + } + } + } + } + }, + "type": "object" + }, "cmsPage": { "properties": { "links": { @@ -1128,6 +1182,12 @@ "media": { "$ref": "#/components/schemas/Media" }, + "tags": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Tag" + } + }, "cmsPage": { "$ref": "#/components/schemas/CmsPage" }, @@ -2537,6 +2597,12 @@ "$ref": "#/components/schemas/CustomerAddress" } }, + "tags": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Tag" + } + }, "extensions": { "properties": { "specificFeatures": { @@ -2951,6 +3017,9 @@ "type": "string", "description": "It is a generated special code linked to email. It is used to access details of guest customer actions." }, + "documentNumber": { + "type": "string" + }, "customFields": { "type": "object", "description": "Additional fields that offer a possibility to add own fields for the different program-areas." @@ -4197,6 +4266,9 @@ "description": "Runtime field, cannot be used as part of the criteria.", "type": "string" }, + "path": { + "type": "string" + }, "hasFile": { "description": "Runtime field, cannot be used as part of the criteria.", "type": "boolean" @@ -4373,6 +4445,9 @@ "description": "Public url of media thumbnail.", "type": "string" }, + "path": { + "type": "string" + }, "customFields": { "type": "object", "description": "Additional fields that offer a possibility to add own fields for the different program-areas." @@ -6401,6 +6476,9 @@ "description": "Runtime field, cannot be used as part of the criteria.", "type": "string" }, + "technicalName": { + "type": "string" + }, "createdAt": { "type": "string", "format": "date-time", @@ -6529,6 +6607,9 @@ "description": "Runtime field, cannot be used as part of the criteria.", "type": "string" }, + "technicalName": { + "type": "string" + }, "createdAt": { "type": "string", "format": "date-time", @@ -6759,6 +6840,14 @@ }, "readOnly": true }, + "tagIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, "categoryIds": { "type": "array", "items": { @@ -7491,6 +7580,37 @@ }, "type": "object" }, + "tags": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/tags" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "tag" + }, + "id": { + "type": "string", + "example": "d57ac45256849d9b13e2422d91580fb9" + } + } + } + } + }, + "type": "object" + }, "seoCategory": { "properties": { "links": { @@ -7743,6 +7863,14 @@ "readOnly": true, "description": "Runtime field, cannot be used as part of the criteria." }, + "tagIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, "categoryIds": { "type": "array", "items": { @@ -7959,6 +8087,12 @@ "$ref": "#/components/schemas/Category" } }, + "tags": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Tag" + } + }, "seoCategory": { "$ref": "#/components/schemas/Category" }, @@ -9712,6 +9846,9 @@ "trackingUrl": { "type": "string" }, + "technicalName": { + "type": "string" + }, "createdAt": { "type": "string", "format": "date-time", @@ -9966,6 +10103,9 @@ "type": "string", "description": "This URL allows to track packages." }, + "technicalName": { + "type": "string" + }, "createdAt": { "type": "string", "format": "date-time", @@ -10345,6 +10485,7 @@ "Tag": { "description": "Added since version: 6.0.0.0", "required": [ + "name", "createdAt" ], "properties": { @@ -10353,6 +10494,9 @@ "pattern": "^[0-9a-f]{32}$", "description": "Unique identity of tag." }, + "name": { + "type": "string" + }, "createdAt": { "type": "string", "format": "date-time", @@ -10795,6 +10939,72 @@ }, "type": "object" }, + "ProductListingResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EntitySearchResult" + }, + { + "type": "object", + "properties": { + "currentFilters": { + "type": "object", + "description": "Contains the state of the filters. These can be used to create listing filters.", + "properties": { + "navigationId": { + "type": "string" + }, + "manufacturer": { + "type": "array", + "items": { + "type": "object" + } + }, + "price": { + "type": "object", + "properties": { + "min": { + "type": "integer" + }, + "max": { + "type": "integer" + } + } + }, + "rating": { + "type": "integer" + }, + "shipping-free": { + "type": "boolean" + }, + "properties": { + "type": "array", + "items": { + "type": "object" + } + } + } + }, + "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" + } + }, + "sorting": { + "type": "string" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + } + } + } + ] + }, "Cart": { "allOf": [ { @@ -10919,90 +11129,122 @@ } } }, - "ShippingMethodPageRouteResponse": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "deliveryTimeId": { - "type": "string" - }, - "deliveryTime": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer", - "format": "int32" - }, - "max": { - "type": "integer", - "format": "int32" - }, - "unit": { - "type": "string" - } - } - }, - "translations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - } - } - } - }, - "orderDeliveries": { - "type": "array", - "items": { + "LineItem": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique identity of line item." + }, + "referencedId": { + "type": "string", + "description": "Unique identity of type of entity." + }, + "label": { + "type": "string", + "description": "It is a typical product name given to the line item." + }, + "quantity": { + "type": "integer", + "format": "int32", + "description": "Number of items of product." + }, + "type": { + "type": "string", + "description": "Type refers to the entity type of an item whether it is product or promotion for instance." + }, + "good": { + "type": "boolean", + "description": "When set to true, it indicates the line item is physical else it is virtual." + }, + "description": { + "type": "string", + "description": "Description of line items in an order." + }, + "removable": { + "type": "boolean", + "description": "Allows the line item to be removable from the cart when set to true." + }, + "stackable": { + "type": "boolean", + "description": "Allows to change the quantity of the line item when set to true." + }, + "modified": { + "type": "boolean", + "description": "When boolean value is `true`, line items are said to be modified." + } + } + }, + "SalesChannelContext": { + "allOf": [ + { + "$ref": "#/components/schemas/ArrayStruct" + }, + { + "type": "object", + "properties": { + "token": { + "description": "Context the user session", + "type": "string" + }, + "currentCustomerGroup": { "type": "object", + "description": "Customer group of the current user", "properties": { - "orderId": { + "name": { "type": "string" }, - "shippingOrderAddressId": { + "displayGross": { + "type": "boolean" + } + } + }, + "fallbackCustomerGroup": { + "description": "Fallback group if the default customer group is not applicable", + "type": "object", + "properties": { + "name": { "type": "string" }, - "shippingMethodId": { + "displayGross": { + "type": "boolean" + } + } + }, + "currency": { + "type": "object", + "description": "Currency associated with the current user", + "properties": { + "isoCode": { "type": "string" }, - "shippingDateEarliest": { - "type": "string", - "format": "date-time" + "factor": { + "type": "integer" }, - "shippingDateLatest": { - "type": "string", - "format": "date-time" + "symbol": { + "type": "string" }, - "stateId": { + "shortName": { + "type": "string" + }, + "name": { "type": "string" + }, + "position": { + "type": "integer", + "format": "int32" + }, + "decimalPrecision": { + "type": "integer", + "format": "int32" + }, + "isSystemDefault": { + "type": "boolean" } } - } - }, - "salesChannelDefaultAssignments": { - "type": "array", - "items": { + }, + "salesChannel": { + "description": "Information about the current sales channel", "type": "object", "properties": { "typeId": { @@ -11065,296 +11307,318 @@ }, "hreflangDefaultDomainId": { "type": "string" + }, + "analyticsId": { + "type": "string" } } - } - }, - "salesChannels": { - "type": "array", - "items": { + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } + }, + "customer": { "type": "object", + "description": "Information about the current customer - `null` if the customer is not logged in", "properties": { - "typeId": { + "groupId": { + "type": "string" + }, + "defaultPaymentMethodId": { + "type": "string" + }, + "salesChannelId": { "type": "string" }, "languageId": { "type": "string" }, - "currencyId": { + "lastPaymentMethodId": { "type": "string" }, - "paymentMethodId": { + "defaultBillingAddressId": { "type": "string" }, - "shippingMethodId": { + "defaultShippingAddressId": { "type": "string" }, - "countryId": { + "defaultBillingAddress": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "defaultShippingAddress": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "activeBillingAddress": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "activeShippingAddress": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "customerNumber": { "type": "string" }, - "navigationCategoryId": { + "salutationId": { "type": "string" }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" + "firstName": { + "type": "string" }, - "footerCategoryId": { + "lastName": { "type": "string" }, - "serviceCategoryId": { + "company": { "type": "string" }, - "name": { + "password": { "type": "string" }, - "shortName": { + "email": { "type": "string" }, - "accessKey": { + "title": { + "type": "string" + }, + "affiliateCode": { + "type": "string" + }, + "campaignCode": { "type": "string" }, "active": { "type": "boolean" }, - "maintenance": { + "doubleOptInRegistration": { "type": "boolean" }, - "maintenanceIpWhitelist": { + "doubleOptInEmailSentDate": { + "type": "string", + "format": "date-time" + }, + "doubleOptInConfirmDate": { + "type": "string", + "format": "date-time" + }, + "hash": { "type": "string" }, - "mailHeaderFooterId": { + "guest": { + "type": "boolean" + }, + "firstLogin": { + "type": "string", + "format": "date-time" + }, + "lastLogin": { + "type": "string", + "format": "date-time" + }, + "newsletter": { + "type": "boolean" + }, + "birthday": { + "type": "string", + "format": "date-time" + }, + "lastOrderDate": { + "type": "string", + "format": "date-time" + }, + "orderCount": { + "type": "integer", + "format": "int32" + }, + "legacyEncoder": { "type": "string" }, - "customerGroupId": { + "legacyPassword": { "type": "string" }, - "hreflangActive": { - "type": "boolean" + "autoIncrement": { + "type": "integer", + "format": "int32" }, - "hreflangDefaultDomainId": { + "remoteAddress": { "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": { + }, + "paymentMethod": { "type": "object", + "description": "Selected payment method", "properties": { - "shippingMethodId": { + "pluginId": { "type": "string" }, - "currencyId": { + "handlerIdentifier": { "type": "string" }, - "ruleId": { + "name": { "type": "string" }, - "calculation": { + "description": { + "type": "string" + }, + "position": { "type": "integer", "format": "int32" }, - "quantityStart": { - "type": "number", - "format": "float" + "active": { + "type": "boolean" }, - "quantityEnd": { - "type": "number", - "format": "float" + "availabilityRuleId": { + "type": "string" }, - "price": { - "type": "number", - "format": "float" + "mediaId": { + "type": "string" }, - "calculationRuleId": { + "formattedHandlerIdentifier": { "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": { + }, + "shippingMethod": { "type": "object", + "description": "Selected shipping method", "properties": { "name": { "type": "string" + }, + "active": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "trackingUrl": { + "type": "string" + }, + "deliveryTimeId": { + "type": "string" + }, + "availabilityRuleId": { + "type": "string" + }, + "mediaId": { + "type": "string" + } + } + }, + "context": { + "description": "Core context with general configuration values and state", + "type": "object", + "properties": { + "versionId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "currencyFactor": { + "type": "integer" + }, + "currencyPrecision": { + "type": "integer", + "format": "int32" + }, + "scope": { + "type": "string" + }, + "source": { + "type": "string" + }, + "taxState": { + "type": "string" + }, + "useCache": { + "type": "boolean" } } } } } - }, + ], "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": { + "currentCustomerGroup": { "properties": { "name": { - "description": "Name given to delivery time." - }, - "min": { - "description": "Minimum delivery time taken." - }, - "max": { - "description": "Maximum delivery time taken." + "description": "Name of customer group to which the customer belongs within the specific sales channel they are currently interacting with." }, - "unit": { - "description": "Unit in which the delivery time is defined. For example, days or hours." + "displayGross": { + "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." } } }, - "translations": { + "currency": { "properties": { - "shippingMethodId": { - "description": "Unique identity of shipping method." + "isoCode": { + "description": "Standard international three digit code to represent currency in a given sales channel. For example, USD." }, - "name": { - "description": "Name of the shipping method." + "factor": { + "description": "Currency exchange rate in a specific sales channel the customer is currently interacting with." }, - "description": { - "description": "A short description of the shipping method." - } - } - }, - "orderDeliveries": { - "properties": { - "orderId": { - "description": "Unique identity of order." + "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." }, - "shippingOrderAddressId": { - "description": "Unique identity of shipping order address." + "shortName": { + "description": "Acronym for international currencies, for example, USD in a given sales channel." }, - "shippingMethodId": { - "description": "Unique identity of shipping method." + "name": { + "description": "Full name of the currency in a given sales channel. For example, US-Dollar." }, - "shippingDateEarliest": { - "description": "Date and time of earliest delivery of products." + "position": { + "description": "The order of the tabs for multiple currencies defined in a given sales channel." }, - "shippingDateLatest": { - "description": "Date and time of latest delivery of products." + "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." }, - "stateId": { - "description": "Unique identity of state." + "isSystemDefault": { + "description": "Runtime field, cannot be used as part of the criteria." } } }, - "salesChannelDefaultAssignments": { + "salesChannel": { "properties": { - "stateId": { - "description": "Unique identity of state." + "typeId": { + "description": "Unique identity of a sales channel's type within a specific sales channel." }, "languageId": { - "description": "Unique identity of language." + "description": "Unique identity of a sales channel's language within a specific sales channel." }, "currencyId": { - "description": "Unique identity of currency." + "description": "Unique identity of a sales channel's currency within a specific sales channel." }, "paymentMethodId": { - "description": "Unique identity of payment method." + "description": "Unique identity of a sales channel's payment method within a specific sales channel." }, "shippingMethodId": { - "description": "Unique identity of shipping method." + "description": "Unique identity of a sales channel's shipping method within a specific sales channel." }, "countryId": { - "description": "Unique identity of country." + "description": "Unique identity of a sales channel's country within a specific sales channel." }, "navigationCategoryId": { - "description": "Unique identity of navigation category." + "description": "Unique identity of a sales channel's navigation category within a specific sales channel." }, "navigationCategoryDepth": { - "description": "It determines the number of levels of subcategories in the storefront category menu." + "description": "It determines the number of levels of subcategories in the storefront category menu within a specific sales channel." }, "footerCategoryId": { - "description": "Unique identity of footer category." + "description": "Unique identity of a sales channel's footer category within a specific sales channel." }, "serviceCategoryId": { - "description": "Unique identity of service category." + "description": "Unique identity of a sales channel's service category within a specific sales channel." }, "name": { "description": "Name of the sales channel." @@ -11366,7 +11630,7 @@ "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." + "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." @@ -11375,251 +11639,238 @@ "description": "Array of IP address allowed to access the sales channel." }, "mailHeaderFooterId": { - "description": "Unique identity of mail header and footer." + "description": "Unique identity of a sales channel's mail header and footer within a specific sales channel." }, "customerGroupId": { - "description": "Unique identity of customer group." + "description": "Unique identity of a sales channel's customer group within a specific sales channel." }, "hreflangActive": { - "description": "When boolean value is `true`, the sales channel pages are available in different languages." + "description": "When `true`, the sales channel pages are available in different languages within a specific sales channel." }, "hreflangDefaultDomainId": { - "description": "Unique identity of hreflangDefaultDomain." + "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." } } }, - "salesChannels": { + "taxRules": { "properties": { - "stateId": { - "description": "Unique identity of state." + "taxRate": { + "description": "Rate of tax within a specific sales channel." + }, + "name": { + "description": "Name defined for a Tax within a specific sales channel." + } + } + }, + "customer": { + "properties": { + "groupId": { + "description": "Unique identity of a customer's group within a specific sales channel." + }, + "defaultPaymentMethodId": { + "description": "Unique identity of a customer's default payment method within a specific sales channel." + }, + "salesChannelId": { + "description": "Unique identity of sales channel the customer is currently interacting with." }, "languageId": { - "description": "Unique identity of language." + "description": "Unique identity of language within a specific sales channel the customer is interacting." }, - "currencyId": { - "description": "Unique identity of currency." + "lastPaymentMethodId": { + "description": "Unique identity of customer's last payment method within a specific sales channel." }, - "paymentMethodId": { - "description": "Unique identity of payment method." + "defaultBillingAddressId": { + "description": "Unique identity of customer's default billing address within a specific sales channel." }, - "shippingMethodId": { - "description": "Unique identity of shipping method." + "defaultShippingAddressId": { + "description": "Unique identity of customer's default shipping address within a specific sales channel." }, - "countryId": { - "description": "Unique identity of country." + "customerNumber": { + "description": "Name of the customer within a specific sales channel the customer is interacting." }, - "navigationCategoryId": { - "description": "Unique identity of navigation category." + "salutationId": { + "description": "Unique identity of customer's default shipping address within a specific sales channel." }, - "navigationCategoryDepth": { - "description": "It determines the number of levels of subcategories in the storefront category menu." + "firstName": { + "description": "First name of the customer within a specific sales channel." }, - "footerCategoryId": { - "description": "Unique identity of footer category." + "lastName": { + "description": "Last name of the customer within a specific sales channel." }, - "serviceCategoryId": { - "description": "Unique identity of service category." + "company": { + "description": "Company name of the customer within a specific sales channel." }, - "name": { - "description": "Name of the sales channel." + "password": { + "description": "Password of the customer within a specific sales channel." }, - "shortName": { - "description": "A short name for sales channel." + "email": { + "description": "Email of the customer within a specific sales channel." }, - "accessKey": { - "description": "Access key to store api." + "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 boolean value is `true`, the shipping methods are available for selection in the storefront." + "description": "When `true`, the status of the customer is set active 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." + "doubleOptInRegistration": { + "description": "When `true`, user subscriptions to an email marketing list is allowed within a specific sales channel." }, - "maintenanceIpWhitelist": { - "description": "Array of IP address allowed to access the sales channel." + "doubleOptInEmailSentDate": { + "description": "Date and time when the double opt-in email was sent within a specific sales channel." }, - "mailHeaderFooterId": { - "description": "Unique identity of mail header and footer." + "doubleOptInConfirmDate": { + "description": "Date and time when the double opt-in email was confirmed within a specific sales channel." }, - "customerGroupId": { - "description": "Unique identity of customer group." + "hash": { + "description": "Password hash for account recovery within a specific sales channel." }, - "hreflangActive": { - "description": "When boolean value is `true``, the sales channel pages are available in different languages." + "guest": { + "description": "Boolean value is `true` for a guest account within a specific sales channel." }, - "hreflangDefaultDomainId": { - "description": "Unique identity of hreflangDefaultDomain." + "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." } } }, - "availabilityRule": { + "paymentMethod": { "properties": { + "pluginId": { + "description": "Unique identity of payment plugin within a specific sales channel." + }, + "handlerIdentifier": { + "description": "Internal field that contains system identifier details for payment methods like Paypal." + }, "name": { - "description": "Unique name for the rule." + "description": "Name of the payment method within a specific sales channel." }, "description": { - "description": "A short description about the rule." + "description": "A short description about the payment method within a specific sales channel." }, - "priority": { - "description": "A numerical value to prioritize one of the rules from the list." + "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." }, - "invalid": { - "description": "When the boolean value is `true`, the rule is no more available for usage." + "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." } } }, - "availabilityRuleId": { - "description": "Unique identity of availability rule." - }, - "prices": { + "shippingMethod": { "properties": { - "shippingMethodId": { - "description": "Unique identity of shipping method." - }, - "currencyId": { - "description": "Unique identity of currency." + "name": { + "description": "Name of the shipping method within a specific sales channel." }, - "ruleId": { - "description": "Unique identity of rule." + "active": { + "description": "When `true`, the shipping method is available for usage within a specific sales channel." }, - "calculation": { - "description": "Shipping price calculated based on quantity, price, weight or volume of items." + "description": { + "description": "A short description about the shipping method within a specific sales channel." }, - "quantityStart": { - "description": "Starting range of quantity of an item." + "trackingUrl": { + "description": "URL that allows to track packages for a specific sales channel." }, - "quantityEnd": { - "description": "Ending range of quantity of an item." + "deliveryTimeId": { + "description": "Unique identity of deliveryTime within a specific sales channel." }, - "price": { - "description": "Shipping method price after applied rules." + "availabilityRuleId": { + "description": "Unique identity of the rule for the payment method." }, - "calculationRuleId": { - "description": "Unique identity of calculation rule." + "mediaId": { + "description": "Unique identity of media used in shipping method within a specific sales channel." } } }, - "mediaId": { - "description": "Unique identity of media." - }, - "media": { + "context": { "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." + "versionId": { + "description": "Unique identity of context's version in a specific sales channel." }, - "title": { - "description": "Title name give to the media." + "currencyId": { + "description": "Unique identity of currency context in a specific sales channel." }, - "metaDataRaw": { - "description": "Details of the media file uploaded." + "currencyFactor": { + "description": "Unique identity of currency factor context in a specific sales channel." }, - "alt": { - "description": "Alternate text for media." + "currencyPrecision": { + "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." }, - "url": { - "description": "Runtime field, cannot be used as part of the criteria." + "scope": { + "description": "Scope defines if its related to system or user context." }, - "fileName": { - "description": "Name of the media file uploaded." + "source": { + "description": "When context is related to user in the source, then there is userId." }, - "mediaFolderId": { - "description": "Unique identity of media folder." + "taxState": { + "description": "Tax state can either be `gross` or `net`." }, - "private": { - "description": "Boolean value is `true` to keep the media display private." - } - } - }, - "tags": { - "properties": { - "name": { - "description": "Name of the tag." + "useCache": { + "description": "When boolean value is `true`, caching is used." } } } } }, - "LineItem": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "Unique identity of line item." - }, - "referencedId": { - "type": "string", - "description": "Unique identity of type of entity." - }, - "label": { - "type": "string", - "description": "It is a typical product name given to the line item." - }, - "quantity": { - "type": "integer", - "format": "int32", - "description": "Number of items of product." - }, - "type": { - "type": "string", - "description": "Type refers to the entity type of an item whether it is product or promotion for instance." - }, - "good": { - "type": "boolean", - "description": "When set to true, it indicates the line item is physical else it is virtual." - }, - "description": { - "type": "string", - "description": "Description of line items in an order." - }, - "removable": { - "type": "boolean", - "description": "Allows the line item to be removable from the cart when set to true." - }, - "stackable": { - "type": "boolean", - "description": "Allows to change the quantity of the line item when set to true." - }, - "modified": { - "type": "boolean", - "description": "When boolean value is `true`, line items are said to be modified." - } - } - }, - "OrderRouteResponse": { - "type": "object", - "properties": { - "orders": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order" - } + "AccountNewsletterRecipientResult": { + "allOf": [ + { + "$ref": "#/components/schemas/Struct" }, - "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" + "properties": { + "status": { + "type": "string" + } } } - } - }, - "NavigationRouteResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - }, + ], "properties": { - "id": { - "description": "Unique identity of navigation route response." + "status": { + "description": "Status indicates if the customer has subscribed to the news letter or not." } } }, @@ -11680,26 +11931,54 @@ } } }, - "WishlistLoadRouteResponse": { + "FindProductVariantRouteResponse": { "type": "object", "properties": { - "wishlist": { + "foundCombination": { "type": "object", "properties": { - "customerId": { + "variantId": { "type": "string", - "description": "Unique identity of the customer." + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of a variant." }, - "salesChannelId": { - "type": "string", - "description": "Unique identity of the sales channel." + "options": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Available product variant options. For example, for variant `Size`, option would be `XS`, `S`, `M`, `L`, `XL`." } } + } + } + }, + "CartItems": { + "allOf": [ + { + "$ref": "#/components/schemas/ArrayStruct" }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductListingResult" + { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + } + } + } + ], + "properties": { + "items": { + "properties": { + "id": { + "description": "Unique identity of cart item." + }, + "modified": { + "description": "When boolean value is `true`, the cart is said to be modified." + } } } } @@ -11835,499 +12114,140 @@ } } }, - "ProductDetailResponse": { + "OrderRouteResponse": { "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "product": { - "$ref": "#/components/schemas/Product" - }, - "configurator": { + "orders": { "type": "array", - "description": "List of property groups with their corresponding options and information on how to display them.", "items": { - "$ref": "#/components/schemas/PropertyGroup" + "$ref": "#/components/schemas/Order" } }, - "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" - } - } - }, - "ArrayStruct": { - "$ref": "#/components/schemas/Struct" - }, - "AccountNewsletterRecipientResult": { - "allOf": [ - { - "$ref": "#/components/schemas/Struct" - }, - { + "paymentChangeable": { "type": "object", - "properties": { - "status": { - "type": "string" - } + "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" } } - ], + } + }, + "SuccessResponse": { + "type": "object", "properties": { - "status": { - "description": "Status indicates if the customer has subscribed to the news letter or not." + "success": { + "type": "boolean" } } }, - "Criteria": { + "WishlistLoadRouteResponse": { "type": "object", - "description": "Criteria to query entities.", "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "limit": { - "description": "Number of items per result page", - "type": "integer" + "wishlist": { + "type": "object", + "properties": { + "customerId": { + "type": "string", + "description": "Unique identity of the customer." + }, + "salesChannelId": { + "type": "string", + "description": "Unique identity of the sales channel." + } + } }, - "filter": { + "products": { "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", "items": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + } + }, + "ShippingMethodPageRouteResponse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "deliveryTimeId": { + "type": "string" + }, + "deliveryTime": { "type": "object", "properties": { - "type": { + "name": { "type": "string" }, - "field": { - "type": "string" + "min": { + "type": "integer", + "format": "int32" }, - "value": { + "max": { + "type": "integer", + "format": "int32" + }, + "unit": { "type": "string" } - }, - "required": [ - "type", - "field", - "value" - ] + } }, - "properties": { - "type": { - "description": "To filter the results and aggregations with filter types like ==, >=, etc." - }, - "field": { - "description": "To filter the results and aggregations by field like an property identifier." - }, - "value": { - "description": "To filter the results and aggregations by value." - } - } - }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "type": "object", - "properties": { - "field": { - "type": "string" - }, - "order": { - "type": "string" - }, - "naturalSorting": { - "type": "boolean" - } - }, - "required": [ - "field" - ] - }, - "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": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "field": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "required": [ - "type", - "field", - "value" - ] - }, - "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." - } - } - }, - "associations": { - "type": "object", - "description": "Used to fetch associations which are not fetched by default." - }, - "aggregations": { - "type": "array", - "description": "Used to perform aggregations on the search result. For more information, see [Search Queries > Aggregations](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#aggregations)", - "items": { - "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" - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - } - }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "fields": { - "type": "array", - "description": "Fields which should be returned in the search result.", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "total-count-mode": { - "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", - "type": "string", - "default": "none", - "enum": [ - "none", - "exact", - "next-pages" - ] - } - } - }, - "CartItems": { - "allOf": [ - { - "$ref": "#/components/schemas/ArrayStruct" - }, - { - "type": "object", - "properties": { + "translations": { + "type": "array", "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - } - } - } - ], - "properties": { - "items": { - "properties": { - "id": { - "description": "Unique identity of cart item." - }, - "modified": { - "description": "When boolean value is `true`, the cart is said to be modified." - } - } - } - } - }, - "SuccessResponse": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - } - } - }, - "EntitySearchResult": { - "allOf": [ - { - "$ref": "#/components/schemas/ArrayStruct" - }, - { - "type": "object", - "properties": { - "entity": { - "type": "string" - }, - "total": { - "type": "integer", - "description": "The total number of found entities" - }, - "aggregations": { - "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", - "items": { - "type": "object" - } - }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." - }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." - } - } - } - ] - }, - "FindProductVariantRouteResponse": { - "type": "object", - "properties": { - "foundCombination": { - "type": "object", - "properties": { - "variantId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of a variant." - }, - "options": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Available product variant options. For example, for variant `Size`, option would be `XS`, `S`, `M`, `L`, `XL`." - } - } - } - } - }, - "Struct": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "description": "Alias which can be used to restrict response fields. For more information see [includes](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#includes-apialias)." - } - } - }, - "ProductListingResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EntitySearchResult" - }, - { - "type": "object", - "properties": { - "currentFilters": { "type": "object", - "description": "Contains the state of the filters. These can be used to create listing filters.", "properties": { - "navigationId": { + "shippingMethodId": { "type": "string" }, - "manufacturer": { - "type": "array", - "items": { - "type": "object" - } - }, - "price": { - "type": "object", - "properties": { - "min": { - "type": "integer" - }, - "max": { - "type": "integer" - } - } - }, - "rating": { - "type": "integer" - }, - "shipping-free": { - "type": "boolean" - }, - "properties": { - "type": "array", - "items": { - "type": "object" - } - } - } - }, - "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" - } - }, - "sorting": { - "type": "string" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - } - } - } - ] - }, - "Sitemap": { - "allOf": [ - { - "$ref": "#/components/schemas/ArrayStruct" - }, - { - "type": "object", - "properties": { - "filename": { - "type": "string" - }, - "created": { - "type": "string", - "format": "date-time" - } - } - } - ], - "properties": { - "filename": { - "description": "Name of the file which holds a list of all URL's." - } - } - }, - "SalesChannelContext": { - "allOf": [ - { - "$ref": "#/components/schemas/ArrayStruct" - }, - { - "type": "object", - "properties": { - "token": { - "description": "Context the user session", - "type": "string" - }, - "currentCustomerGroup": { - "type": "object", - "description": "Customer group of the current user", - "properties": { "name": { "type": "string" }, - "displayGross": { - "type": "boolean" - } - } - }, - "fallbackCustomerGroup": { - "description": "Fallback group if the default customer group is not applicable", - "type": "object", - "properties": { - "name": { + "description": { "type": "string" - }, - "displayGross": { - "type": "boolean" } } - }, - "currency": { + } + }, + "orderDeliveries": { + "type": "array", + "items": { "type": "object", - "description": "Currency associated with the current user", "properties": { - "isoCode": { - "type": "string" - }, - "factor": { - "type": "integer" - }, - "symbol": { + "orderId": { "type": "string" }, - "shortName": { + "shippingOrderAddressId": { "type": "string" }, - "name": { + "shippingMethodId": { "type": "string" }, - "position": { - "type": "integer", - "format": "int32" + "shippingDateEarliest": { + "type": "string", + "format": "date-time" }, - "decimalPrecision": { - "type": "integer", - "format": "int32" + "shippingDateLatest": { + "type": "string", + "format": "date-time" }, - "isSystemDefault": { - "type": "boolean" + "stateId": { + "type": "string" } } - }, - "salesChannel": { - "description": "Information about the current sales channel", + } + }, + "salesChannelDefaultAssignments": { + "type": "array", + "items": { "type": "object", "properties": { "typeId": { @@ -12390,318 +12310,296 @@ }, "hreflangDefaultDomainId": { "type": "string" - }, - "analyticsId": { - "type": "string" - } - } - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } } } - }, - "customer": { + } + }, + "salesChannels": { + "type": "array", + "items": { "type": "object", - "description": "Information about the current customer - `null` if the customer is not logged in", "properties": { - "groupId": { - "type": "string" - }, - "defaultPaymentMethodId": { - "type": "string" - }, - "salesChannelId": { + "typeId": { "type": "string" }, "languageId": { "type": "string" }, - "lastPaymentMethodId": { - "type": "string" - }, - "defaultBillingAddressId": { - "type": "string" - }, - "defaultShippingAddressId": { + "currencyId": { "type": "string" }, - "defaultBillingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "defaultShippingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "activeBillingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "activeShippingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "customerNumber": { + "paymentMethodId": { "type": "string" }, - "salutationId": { + "shippingMethodId": { "type": "string" }, - "firstName": { + "countryId": { "type": "string" }, - "lastName": { + "navigationCategoryId": { "type": "string" }, - "company": { - "type": "string" + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" }, - "password": { + "footerCategoryId": { "type": "string" }, - "email": { + "serviceCategoryId": { "type": "string" }, - "title": { + "name": { "type": "string" }, - "affiliateCode": { + "shortName": { "type": "string" }, - "campaignCode": { + "accessKey": { "type": "string" }, "active": { "type": "boolean" }, - "doubleOptInRegistration": { + "maintenance": { "type": "boolean" }, - "doubleOptInEmailSentDate": { - "type": "string", - "format": "date-time" - }, - "doubleOptInConfirmDate": { - "type": "string", - "format": "date-time" - }, - "hash": { + "maintenanceIpWhitelist": { "type": "string" }, - "guest": { - "type": "boolean" - }, - "firstLogin": { - "type": "string", - "format": "date-time" - }, - "lastLogin": { - "type": "string", - "format": "date-time" - }, - "newsletter": { - "type": "boolean" - }, - "birthday": { - "type": "string", - "format": "date-time" - }, - "lastOrderDate": { - "type": "string", - "format": "date-time" - }, - "orderCount": { - "type": "integer", - "format": "int32" - }, - "legacyEncoder": { + "mailHeaderFooterId": { "type": "string" }, - "legacyPassword": { + "customerGroupId": { "type": "string" }, - "autoIncrement": { - "type": "integer", - "format": "int32" + "hreflangActive": { + "type": "boolean" }, - "remoteAddress": { + "hreflangDefaultDomainId": { "type": "string" } } - }, - "paymentMethod": { + } + }, + "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", - "description": "Selected payment method", "properties": { - "pluginId": { - "type": "string" - }, - "handlerIdentifier": { + "shippingMethodId": { "type": "string" }, - "name": { + "currencyId": { "type": "string" }, - "description": { + "ruleId": { "type": "string" }, - "position": { + "calculation": { "type": "integer", "format": "int32" }, - "active": { - "type": "boolean" + "quantityStart": { + "type": "number", + "format": "float" }, - "availabilityRuleId": { - "type": "string" + "quantityEnd": { + "type": "number", + "format": "float" }, - "mediaId": { - "type": "string" + "price": { + "type": "number", + "format": "float" }, - "formattedHandlerIdentifier": { + "calculationRuleId": { "type": "string" } } - }, - "shippingMethod": { + } + }, + "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", - "description": "Selected shipping method", "properties": { "name": { "type": "string" - }, - "active": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "trackingUrl": { - "type": "string" - }, - "deliveryTimeId": { - "type": "string" - }, - "availabilityRuleId": { - "type": "string" - }, - "mediaId": { - "type": "string" - } - } - }, - "context": { - "description": "Core context with general configuration values and state", - "type": "object", - "properties": { - "versionId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "currencyFactor": { - "type": "integer" - }, - "currencyPrecision": { - "type": "integer", - "format": "int32" - }, - "scope": { - "type": "string" - }, - "source": { - "type": "string" - }, - "taxState": { - "type": "string" - }, - "useCache": { - "type": "boolean" } } } } } - ], + }, "properties": { - "currentCustomerGroup": { + "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 of customer group to which the customer belongs within the specific sales channel they are currently interacting with." + "description": "Name given to delivery time." }, - "displayGross": { - "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." + "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." } } }, - "currency": { + "translations": { "properties": { - "isoCode": { - "description": "Standard international three digit code to represent currency in a given sales channel. For example, USD." + "shippingMethodId": { + "description": "Unique identity of shipping method." }, - "factor": { - "description": "Currency exchange rate in a specific sales channel the customer is currently interacting with." + "name": { + "description": "Name of the shipping method." }, - "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." + "description": { + "description": "A short description of the shipping method." + } + } + }, + "orderDeliveries": { + "properties": { + "orderId": { + "description": "Unique identity of order." }, - "shortName": { - "description": "Acronym for international currencies, for example, USD in a given sales channel." + "shippingOrderAddressId": { + "description": "Unique identity of shipping order address." }, - "name": { - "description": "Full name of the currency in a given sales channel. For example, US-Dollar." + "shippingMethodId": { + "description": "Unique identity of shipping method." }, - "position": { - "description": "The order of the tabs for multiple currencies defined in a given sales channel." + "shippingDateEarliest": { + "description": "Date and time of earliest delivery of products." }, - "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." + "shippingDateLatest": { + "description": "Date and time of latest delivery of products." }, - "isSystemDefault": { - "description": "Runtime field, cannot be used as part of the criteria." + "stateId": { + "description": "Unique identity of state." } } }, - "salesChannel": { + "salesChannelDefaultAssignments": { "properties": { - "typeId": { - "description": "Unique identity of a sales channel's type within a specific sales channel." + "stateId": { + "description": "Unique identity of state." }, "languageId": { - "description": "Unique identity of a sales channel's language within a specific sales channel." + "description": "Unique identity of language." }, "currencyId": { - "description": "Unique identity of a sales channel's currency within a specific sales channel." + "description": "Unique identity of currency." }, "paymentMethodId": { - "description": "Unique identity of a sales channel's payment method within a specific sales channel." + "description": "Unique identity of payment method." }, "shippingMethodId": { - "description": "Unique identity of a sales channel's shipping method within a specific sales channel." + "description": "Unique identity of shipping method." }, "countryId": { - "description": "Unique identity of a sales channel's country within a specific sales channel." + "description": "Unique identity of country." }, "navigationCategoryId": { - "description": "Unique identity of a sales channel's navigation category within a specific sales channel." + "description": "Unique identity of navigation category." }, "navigationCategoryDepth": { - "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": { - "description": "Unique identity of a sales channel's footer category within a specific sales channel." + "description": "Unique identity of footer category." }, "serviceCategoryId": { - "description": "Unique identity of a sales channel's service category within a specific sales channel." + "description": "Unique identity of service category." }, "name": { "description": "Name of the sales channel." @@ -12713,7 +12611,7 @@ "description": "Access key to store api." }, "active": { - "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": { "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." @@ -12722,218 +12620,410 @@ "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." + "description": "Unique identity of mail header and footer." }, "customerGroupId": { - "description": "Unique identity of a sales channel's customer group within a specific sales channel." + "description": "Unique identity of customer group." }, "hreflangActive": { - "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": { - "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." - } - } - }, - "taxRules": { - "properties": { - "taxRate": { - "description": "Rate of tax within a specific sales channel." - }, - "name": { - "description": "Name defined for a Tax within a specific sales channel." + "description": "Unique identity of hreflangDefaultDomain." } } }, - "customer": { + "salesChannels": { "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." + "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." }, - "doubleOptInRegistration": { - "description": "When `true`, user subscriptions to an email marketing list is allowed 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." }, - "doubleOptInEmailSentDate": { - "description": "Date and time when the double opt-in email was sent within a specific sales channel." + "maintenanceIpWhitelist": { + "description": "Array of IP address allowed to access the sales channel." }, - "doubleOptInConfirmDate": { - "description": "Date and time when the double opt-in email was confirmed within a specific sales channel." + "mailHeaderFooterId": { + "description": "Unique identity of mail header and footer." }, - "hash": { - "description": "Password hash for account recovery within a specific sales channel." + "customerGroupId": { + "description": "Unique identity of customer group." + }, + "hreflangActive": { + "description": "When boolean value is `true``, the sales channel pages are available in different languages." }, - "guest": { - "description": "Boolean value is `true` for a guest account within a specific sales channel." + "hreflangDefaultDomainId": { + "description": "Unique identity of hreflangDefaultDomain." + } + } + }, + "availabilityRule": { + "properties": { + "name": { + "description": "Unique name for the rule." }, - "firstLogin": { - "description": "Captures date and time of customer's first login within a specific sales channel." + "description": { + "description": "A short description about the rule." }, - "lastLogin": { - "description": "Captures date and time of customer's last login within a specific sales channel." + "priority": { + "description": "A numerical value to prioritize one of the rules from the list." }, - "newsletter": { - "description": "When `true`, then the customer gets subscribe to the newsletter" + "invalid": { + "description": "When the boolean value is `true`, the rule is no more available for usage." + } + } + }, + "availabilityRuleId": { + "description": "Unique identity of availability rule." + }, + "prices": { + "properties": { + "shippingMethodId": { + "description": "Unique identity of shipping method." }, - "birthday": { - "description": "Captures customer's birthday details within a specific sales channel." + "currencyId": { + "description": "Unique identity of currency." }, - "lastOrderDate": { - "description": "Captures customer's last order date within a specific sales channel." + "ruleId": { + "description": "Unique identity of rule." }, - "orderCount": { - "description": "Captures the number of orders placed by a customer within a specific sales channel." + "calculation": { + "description": "Shipping price calculated based on quantity, price, weight or volume of items." }, - "legacyEncoder": { - "description": "encapsulates shop credentials when needed to migrate shop system from old instance to new instance" + "quantityStart": { + "description": "Starting range of quantity of an item." }, - "legacyPassword": { - "description": "Hashed password of the old shop system" + "quantityEnd": { + "description": "Ending range of quantity of an item." }, - "autoIncrement": { - "description": "Internal field. " + "price": { + "description": "Shipping method price after applied rules." }, - "remoteAddress": { - "description": "Anonymous IP address of the customer for last session." + "calculationRuleId": { + "description": "Unique identity of calculation rule." } } }, - "paymentMethod": { + "mediaId": { + "description": "Unique identity of media." + }, + "media": { "properties": { - "pluginId": { - "description": "Unique identity of payment plugin within a specific sales channel." + "userId": { + "description": "Unique identity of user." }, - "handlerIdentifier": { - "description": "Internal field that contains system identifier details for payment methods like Paypal." + "mimeType": { + "description": "A string sent along with a file indicating the type of the file. For example: image/jpeg." }, - "name": { - "description": "Name of the payment method within a specific sales channel." + "fileExtension": { + "description": "Type of file indication. For example: jpeg, png." }, - "description": { - "description": "A short description about the payment method within a specific sales channel." + "fileSize": { + "description": "Size of the file media file uploaded." }, - "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." + "title": { + "description": "Title name give to the media." }, - "active": { - "description": "When `true`, the payment method is available for usage within a specific sales channel." + "metaDataRaw": { + "description": "Details of the media file uploaded." }, - "availabilityRuleId": { - "description": "Unique identity of the rule for the payment method." + "alt": { + "description": "Alternate text for media." }, - "mediaId": { - "description": "Unique identity of media used in payment method within a specific sales channel." + "url": { + "description": "Runtime field, cannot be used as part of the criteria." }, - "formattedHandlerIdentifier": { - "description": "Internal field that contains system identifier details for payment methods like Paypal." + "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." } } }, - "shippingMethod": { + "tags": { "properties": { "name": { - "description": "Name of the shipping method within a specific sales channel." + "description": "Name of the tag." + } + } + } + } + }, + "ArrayStruct": { + "$ref": "#/components/schemas/Struct" + }, + "Sitemap": { + "allOf": [ + { + "$ref": "#/components/schemas/ArrayStruct" + }, + { + "type": "object", + "properties": { + "filename": { + "type": "string" }, - "active": { - "description": "When `true`, the shipping method is available for usage within a specific sales channel." + "created": { + "type": "string", + "format": "date-time" + } + } + } + ], + "properties": { + "filename": { + "description": "Name of the file which holds a list of all URL's." + } + } + }, + "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" + } + } + }, + "Criteria": { + "type": "object", + "description": "Criteria to query entities.", + "properties": { + "page": { + "description": "Search result page", + "type": "integer" + }, + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "field": { + "type": "string" + }, + "value": { + "type": "string" + } }, - "description": { - "description": "A short description about the shipping method within a specific sales channel." + "required": [ + "type", + "field", + "value" + ] + }, + "properties": { + "type": { + "description": "To filter the results and aggregations with filter types like ==, >=, etc." }, - "trackingUrl": { - "description": "URL that allows to track packages for a specific sales channel." + "field": { + "description": "To filter the results and aggregations by field like an property identifier." }, - "deliveryTimeId": { - "description": "Unique identity of deliveryTime within a specific sales channel." + "value": { + "description": "To filter the results and aggregations by value." + } + } + }, + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "type": "object", + "properties": { + "field": { + "type": "string" + }, + "order": { + "type": "string" + }, + "naturalSorting": { + "type": "boolean" + } + }, + "required": [ + "field" + ] + }, + "properties": { + "field": { + "description": "Sort the search results by field like an property identifier." }, - "availabilityRuleId": { - "description": "Unique identity of the rule for the payment method." + "order": { + "description": "Sort the search results of orders by ascending or descending." }, - "mediaId": { - "description": "Unique identity of media used in shipping method within a specific sales channel." + "naturalSorting": { + "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." } } }, - "context": { - "properties": { - "versionId": { - "description": "Unique identity of context's version in a specific sales channel." - }, - "currencyId": { - "description": "Unique identity of currency context in a specific sales channel." - }, - "currencyFactor": { - "description": "Unique identity of currency factor context in a specific sales channel." - }, - "currencyPrecision": { - "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." - }, - "scope": { - "description": "Scope defines if its related to system or user context." + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "field": { + "type": "string" + }, + "value": { + "type": "string" + } }, - "source": { - "description": "When context is related to user in the source, then there is userId." + "required": [ + "type", + "field", + "value" + ] + }, + "properties": { + "type": { + "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." }, - "taxState": { - "description": "Tax state can either be `gross` or `net`." + "field": { + "description": "To filter only the results but not the aggregations by field like an property identifier." }, - "useCache": { - "description": "When boolean value is `true`, caching is used." + "value": { + "description": "To filter only the results but not the aggregations by value." } } + }, + "associations": { + "type": "object", + "description": "Used to fetch associations which are not fetched by default." + }, + "aggregations": { + "type": "array", + "description": "Used to perform aggregations on the search result. For more information, see [Search Queries > Aggregations](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#aggregations)", + "items": { + "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" + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + } + }, + "required": [ + "name", + "type", + "field" + ] + } + }, + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "fields": { + "type": "array", + "description": "Fields which should be returned in the search result.", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "total-count-mode": { + "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" + ] } } }, @@ -12953,6 +13043,60 @@ } } }, + "Struct": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "description": "Alias which can be used to restrict response fields. For more information see [includes](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#includes-apialias)." + } + } + }, + "NavigationRouteResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + }, + "properties": { + "id": { + "description": "Unique identity of navigation route response." + } + } + }, + "EntitySearchResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ArrayStruct" + }, + { + "type": "object", + "properties": { + "entity": { + "type": "string" + }, + "total": { + "type": "integer", + "description": "The total number of found entities" + }, + "aggregations": { + "type": "array", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", + "items": { + "type": "object" + } + }, + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." + }, + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." + } + } + } + ] + }, "OrderProductWarehouse": { "properties": { "id": { @@ -13656,50 +13800,125 @@ } } }, - "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": { - "/script/{hook}": { + "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": { + "/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": "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" + } + ] + } + } + } + }, + "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/ShippingMethod" + } + } + }, + "type": "object" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/customer/wishlist/add/{productId}": { "post": { "tags": [ - "API", - "Script", - "App" + "Wishlist" ], - "summary": "Access point for different api logics which are provided by apps over script hooks", - "operationId": "postScriptStoreApiRoute", + "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": "hook", + "name": "productId", "in": "path", - "description": "Dynamic hook which used to build the hook name", + "description": "Identifier of the product to be added.", "required": true, "schema": { - "type": "string" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } ], "responses": { "200": { - "description": "Returns different structures of results based on the called script." + "description": "Returns a success response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } } }, "security": [ @@ -13709,42 +13928,23 @@ ] } }, - "/cms/{id}": { + "/customer/wishlist": { "post": { "tags": [ - "Content" - ], - "summary": "Fetch and resolve a CMS page", - "description": "Loads a content management page by its identifier and resolve the slot data. This could be media files, product listing and so on.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.", - "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}$" - } - } + "Wishlist", + "Endpoints supporting Criteria " ], + "summary": "Fetch a wishlist", + "description": "Fetch a customer's wishlist. Products on the wishlist can be filtered using a criteria object.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "readCustomerWishlist", "requestBody": { + "required": false, "content": { "application/json": { "schema": { "allOf": [ { - "properties": { - "slots": { - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/ProductListingCriteria" + "$ref": "#/components/schemas/Criteria" } ] } @@ -13753,17 +13953,111 @@ }, "responses": { "200": { - "description": "The loaded cms page", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CmsPage" + "$ref": "#/components/schemas/WishlistLoadRouteResponse" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/customer/wishlist/merge": { + "post": { + "tags": [ + "Wishlist" + ], + "summary": "Create a wishlist for a customer", + "description": "Create a new wishlist for a logged in customer or extend the existing wishlist given a set of products.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * A customer can only have a single wishlist.\n * The wishlist feature has to be activated.", + "operationId": "mergeProductOnWishlist", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "productIds": { + "description": "List product id", + "type": "array", + "items": { + "description": "product id", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Returns a success response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/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": { - "$ref": "#/components/responses/404" + "description": "The removal of the product failed. Probably because the product could not be found on the wishlist.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + } + } + } } }, "security": [ @@ -13773,23 +14067,36 @@ ] } }, - "/language": { + "/search": { "post": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Product" ], - "summary": "Fetch languages", - "description": "Perform a filtered search for languages.", - "operationId": "readLanguages", + "summary": "Search for products", + "description": "Performs a search for products which can be used to display a product listing.", + "operationId": "searchPage", "requestBody": { - "required": false, "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/Criteria" + "required": [ + "search" + ], + "properties": { + "search": { + "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/ProductListingCriteria" + }, + { + "$ref": "#/components/schemas/ProductListingFlags" } ] } @@ -13798,26 +14105,11 @@ }, "responses": { "200": { - "description": "Entity search result containing languages.", + "description": "Returns a product listing containing all products and additional fields to display a listing.", "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Language" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/ProductListingResult" } } } @@ -13830,24 +14122,42 @@ ] } }, - "/account/newsletter-recipient": { + "/cms/{id}": { "post": { "tags": [ - "Profile", - "Newsletter", - "Endpoints supporting Criteria" + "Content" + ], + "summary": "Fetch and resolve a CMS page", + "description": "Loads a content management page by its identifier and resolve the slot data. This could be media files, product listing and so on.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.", + "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}$" + } + } ], - "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" + "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" } ] } @@ -13856,17 +14166,17 @@ }, "responses": { "200": { - "description": "", + "description": "The loaded cms page", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AccountNewsletterRecipientResult" - } + "$ref": "#/components/schemas/CmsPage" } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -13876,56 +14186,31 @@ ] } }, - "/account/change-profile": { + "/newsletter/confirm": { "post": { "tags": [ - "Profile" + "Newsletter" ], - "summary": "Change the customer's information", - "description": "Make changes to a customer's account, like changing their name, salutation or title.", - "operationId": "changeProfile", + "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": [ - "salutationId", - "firstName", - "lastName" + "hash", + "em" ], "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.", + "hash": { + "description": "Hash parameter from link the in the confirmation mail", "type": "string" }, - "company": { - "description": "Company of the customer. Only required when `accountType` is `business`.", + "em": { + "description": "Email hash parameter from the link in the confirmation mail", "type": "string" - }, - "birthdayDay": { - "description": "Birthday day", - "type": "integer" - }, - "birthdayMonth": { - "description": "Birthday month", - "type": "integer" - }, - "birthdayYear": { - "description": "Birthday year", - "type": "integer" } }, "type": "object" @@ -13935,14 +14220,7 @@ }, "responses": { "200": { - "description": "Returns a success response indicating a successful update", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } + "description": "The newsletter confirmation was successful." } }, "security": [ @@ -13952,14 +14230,14 @@ ] } }, - "/account/change-email": { + "/newsletter/subscribe": { "post": { "tags": [ - "Profile" + "Newsletter" ], - "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", + "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 addrees 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`: Confirmes the newsletter subscription for the provided email address.", + "operationId": "subscribeToNewsletter", "requestBody": { "required": true, "content": { @@ -13967,20 +14245,58 @@ "schema": { "required": [ "email", - "emailConfirmation", - "password" + "option", + "storefrontUrl" ], "properties": { "email": { - "description": "New email address. Has to be unique amongst all customers", + "description": "Email address that will receive the confirmation and the newsletter.", "type": "string" }, - "emailConfirmation": { - "description": "Confirmation of the new email address.", + "option": { + "description": "Defines what should be done.", "type": "string" }, - "password": { - "description": "Customer's current password", + "storefrontUrl": { + "description": "Url of the storefront of the shop. This will be used for generating the link to the /newsletter/confirm inside the confirm email.", + "type": "string" + }, + "salutationId": { + "description": "Identifier of the salutation.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "firstName": { + "description": "First name", + "type": "string" + }, + "lastName": { + "description": "Last name", + "type": "string" + }, + "street": { + "description": "Street", + "type": "string" + }, + "city": { + "description": "City", + "type": "string" + }, + "zipCode": { + "description": "Zip code", + "type": "string" + }, + "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" } }, @@ -13991,14 +14307,7 @@ }, "responses": { "200": { - "description": "Returns a success response indicating a successful update", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } + "description": "Success" } }, "security": [ @@ -14008,25 +14317,25 @@ ] } }, - "/account/change-language": { + "/newsletter/unsubscribe": { "post": { "tags": [ - "Profile" + "Newsletter" ], - "summary": "Change the customer's language.", - "description": "Changes the language of the logged in customer", - "operationId": "changeLanguage", + "summary": "Remove a newsletter subscription", + "description": "Removes a newsletter recipient from the mailing lists.", + "operationId": "unsubscribeToNewsletter", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "languageId" + "email" ], "properties": { - "language": { - "description": "New languageId", + "email": { + "description": "Email address that should be removed from the mailing lists.", "type": "string" } }, @@ -14037,14 +14346,7 @@ }, "responses": { "200": { - "description": "Returns a success response indicating a successful update", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } + "description": "Unsubscribing was successful." } }, "security": [ @@ -14054,53 +14356,29 @@ ] } }, - "/account/change-password": { + "/script/{hook}": { "post": { "tags": [ - "Profile" + "API", + "Script", + "App" ], - "summary": "Change the customer's password", - "description": "Changes a customer's password using their current password as a validation.", - "operationId": "changePassword", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "password", - "newPassword", - "newPasswordConfirm" - ], - "properties": { - "password": { - "description": "Current password of the customer", - "type": "string" - }, - "newPassword": { - "description": "New Password for the customer", - "type": "string" - }, - "newPasswordConfirm": { - "description": "Confirmation of the new password", - "type": "string" - } - }, - "type": "object" - } + "summary": "Access point for different api logics which are provided by apps over script hooks", + "operationId": "postScriptStoreApiRoute", + "parameters": [ + { + "name": "hook", + "in": "path", + "description": "Dynamic hook which used to build the hook name", + "required": true, + "schema": { + "type": "string" } } - }, + ], "responses": { "200": { - "description": "Returns a success response indicating a successful update.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } + "description": "Returns different structures of results based on the called script." } }, "security": [ @@ -14110,66 +14388,30 @@ ] } }, - "/account/change-payment-method/{paymentMethodId}": { + "/app-system/{name}/generate-token": { "post": { "tags": [ - "Profile" + "App system" ], - "summary": "Change the customer's default payment method", - "description": "Changes a customer's default (preselected) payment method.", - "operationId": "changePaymentMethod", + "summary": "Generate JWT token for app system backend", + "description": "Generate JWT token for authenticated communication with the app server", + "operationId": "generateJWTAppSystemAppServer", "parameters": [ { - "name": "paymentMethodId", "in": "path", - "description": "Identifier of the desired default payment method", + "name": "name", "required": true, + "description": "Name of the app", "schema": { "type": "string" } } ], - "responses": { - "200": { - "description": "Returns a success response indicating a successful update.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/account/customer-recovery-is-expired": { - "post": { - "tags": [ - "Profile" - ], - "summary": "Checks if the customer recovery entry for a given hash is expired.", - "description": "This can be used to validate a provided hash has a valid and not expired customer recovery hash.", - "operationId": "getCustomerRecoveryIsExpired", "requestBody": { - "required": true, + "required": false, "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" } } @@ -14177,11 +14419,23 @@ }, "responses": { "200": { - "description": "Returns a CustomerRecoveryIsExpiredResponse that indicates if the hash is expired or not.", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ArrayStruct" + "type": "object", + "properties": { + "token": { + "type": "string" + }, + "expires": { + "type": "string", + "format": "date-time" + }, + "shopId": { + "type": "string" + } + } } } } @@ -14194,15 +14448,15 @@ ] } }, - "/account/customer": { + "/currency": { "post": { "tags": [ - "Profile", + "System & Context", "Endpoints supporting Criteria " ], - "summary": "Get information about current customer", - "description": "Returns information about the current customer.", - "operationId": "readCustomer", + "summary": "Fetch currencies", + "description": "Perform a filtered search for currencies.", + "operationId": "readCurrency", "requestBody": { "required": false, "content": { @@ -14219,11 +14473,26 @@ }, "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": "Entity search result containing currencies.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Customer" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Currency" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -14234,82 +14503,35 @@ "ApiKey": [] } ] - }, - "delete": { - "tags": [ - "Profile" - ], - "summary": "Delete the customer's profile", - "description": "Deletes a customer profile along with their addresses, wishlists and associated data. Created orders and their payment/shipping information (addresses) and reviews are not deleted.", - "operationId": "deleteCustomer", - "responses": { - "204": { - "description": "Returns a no content response indicating a successful removal of the customer profile" - } - }, - "security": [ - { - "ApiKey": [] - } - ] } }, - "/account/address/{addressId}": { - "delete": { - "tags": [ - "Address" - ], - "summary": "Delete an address of a customer", - "description": "Delete an address of customer.\n\n Only addresses which are not set as default addresses for shipping or billing can be deleted. You can check the current default addresses of your customer using the profile information endpoint and change them using the default address endpoint.\n\n **A customer must have at least one address (which can be used for shipping and billing).**\n\n An automatic fallback is not applied.", - "operationId": "deleteCustomerAddress", - "parameters": [ - { - "name": "addressId", - "in": "path", - "description": "ID of the address to be deleted.", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "204": { - "description": "No Content response, when the address has been deleted" - }, - "400": { - "description": "Response containing a list of errors, most likely due to the address being in use" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - }, - "patch": { + "/payment-method": { + "post": { "tags": [ - "Address" - ], - "summary": "Modify an address of a customer", - "description": "Modifies an existing address of a customer.", - "operationId": "updateCustomerAddress", - "parameters": [ - { - "name": "addressId", - "in": "path", - "description": "Address ID", - "required": true, - "schema": { - "type": "string" - } - } + "Payment Method", + "Endpoints supporting Criteria " ], + "summary": "Loads all available payment methods", + "operationId": "readPaymentMethod", "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerAddress" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + }, + { + "properties": { + "onlyAvailable": { + "description": "List only available", + "type": "boolean" + } + }, + "type": "object" + } + ] } } } @@ -14320,7 +14542,23 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerAddress" + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentMethod" + } + } + }, + "type": "object" } } } @@ -14333,39 +14571,32 @@ ] } }, - "/account/list-address": { - "post": { + "/customer-group-registration/config/{customerGroupId}": { + "get": { "tags": [ - "Address", - "Endpoints supporting Criteria " + "Login & Registration" ], - "summary": "Fetch addresses of a customer", - "description": "Lists all addresses of the current customer and allows filtering them based on a criteria.", - "operationId": "listAddress", - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } + "summary": "Fetch registration settings for customer group", + "operationId": "getCustomerGroupRegistrationInfo", + "parameters": [ + { + "name": "customerGroupId", + "in": "path", + "description": "Customer group id", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } - }, + ], "responses": { "200": { - "description": "", + "description": "Returns the customer group including registration settings.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CustomerAddress" - } + "$ref": "#/components/schemas/CustomerGroup" } } } @@ -14378,30 +14609,71 @@ ] } }, - "/account/login": { + "/contact-form": { "post": { "tags": [ - "Login & Registration" + "Content" ], - "summary": "Log in a customer", - "description": "Logs in customers given their credentials.", - "operationId": "loginCustomer", + "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", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "username", - "password" + "salutationId", + "email", + "subject", + "comment" ], "properties": { - "username": { - "description": "Email", + "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" }, - "password": { - "description": "Password", + "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 concact 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" } }, @@ -14412,40 +14684,7 @@ }, "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/logout": { - "post": { - "tags": [ - "Login & Registration" - ], - "summary": "Log out a customer", - "description": "Logs out a customer.", - "operationId": "logoutCustomer", - "responses": { - "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "403": { - "$ref": "#/components/responses/403" + "description": "Message sent successful." } }, "security": [ @@ -14455,47 +14694,54 @@ ] } }, - "/account/register-confirm": { + "/salutation": { "post": { "tags": [ - "Login & Registration" + "System & Context", + "Endpoints supporting Criteria " ], - "summary": "Confirm a customer registration", - "description": "Confirms a customer registration when double opt-in is activated.\n\nLearn more about double opt-in registration in our guide \"Register a customer\".", - "operationId": "registerConfirm", + "summary": "Fetch salutations", + "description": "Fetches salutations with a criteria obj.", + "operationId": "readSalutation", "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 salutations.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Salutation" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } } }, "security": [ @@ -14505,97 +14751,24 @@ ] } }, - "/account/register": { + "/order/state/cancel": { "post": { "tags": [ - "Login & Registration" + "Order" ], - "summary": "Register a customer", - "description": "Registers a customer. Used both for normal customers and guest customers.See the Guide \"Register a customer\" for more information on customer registration.", - "operationId": "register", + "summary": "Cancel an order", + "description": "Cancels an order. The order state will be set to 'cancelled'.", + "operationId": "cancelOrder", "requestBody": { "required": true, "content": { "application/json": { "schema": { - "required": [ - "email", - "password", - "salutationId", - "firstName", - "lastName", - "acceptedDataProtection", - "storefrontUrl", - "billingAddress" - ], "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" - }, - "accountType": { - "description": "Account type of the customer which can be either `private` or `business`.", + "orderId": { + "description": "The identifier of the order to be canceled.", "type": "string", - "default": "private" - }, - "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" + "pattern": "^[0-9a-f]{32}$" } }, "type": "object" @@ -14605,11 +14778,11 @@ }, "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" } } } @@ -14622,50 +14795,45 @@ ] } }, - "/account/recovery-password-confirm": { + "/order": { "post": { "tags": [ - "Profile" + "Order", + "Endpoints supporting Criteria " ], - "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", + "summary": "Fetch a list of orders", + "description": "List orders of a customer.", + "operationId": "readOrder", "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" } } } @@ -14678,31 +14846,33 @@ ] } }, - "/account/recovery-password": { + "/order/payment": { "post": { "tags": [ - "Profile" + "Order" ], - "summary": "Send a password recovery mail", - "description": "This operation is Step 1 of the password reset flow. Make sure to implement Step 2 \"Reset password with recovery credentials\" in order to allow for the complete flow in your application. Sends a recovery mail containing a link with credentials that allows a customer to reset their password.", - "operationId": "sendRecoveryMail", + "summary": "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", "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" @@ -14712,7 +14882,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": { @@ -14729,28 +14899,45 @@ ] } }, - "/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}$" } } ], "responses": { "200": { - "description": "" + "description": "An arbitrary binary file.", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } } }, "security": [ @@ -14760,28 +14947,54 @@ ] } }, - "/account/address/default-billing/{addressId}": { - "patch": { + "/country": { + "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", - "parameters": [ - { - "name": "addressId", - "in": "path", - "description": "Address ID", - "required": true, - "schema": { - "type": "string" + "summary": "Fetch countries", + "description": "Perform a filtered search for countries", + "operationId": "readCountry", + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } } } - ], + }, "responses": { "200": { - "description": "" + "description": "Entity search result containing countries.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Country" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } } }, "security": [ @@ -14791,33 +15004,94 @@ ] } }, - "/account/address": { - "post": { + "/context": { + "get": { "tags": [ - "Address" + "System & Context" ], - "summary": "Create a new address for a customer", - "description": "Creates a new address for a customer.", - "operationId": "createCustomerAddress", + "summary": "Fetch the current context", + "description": "Fetches the current context. This includes for example the `customerGroup`, `currency`, `taxRules` and many more.", + "operationId": "readContext", + "responses": { + "200": { + "description": "Returns the current context.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SalesChannelContext" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + }, + "patch": { + "tags": [ + "System & Context" + ], + "summary": "Modify the current context", + "description": "Used for switching the context. A typical example would be changing the language or changing the currency.", + "operationId": "updateContext", "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerAddress" + "properties": { + "currencyId": { + "description": "Currency", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "languageId": { + "description": "Language", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "billingAddressId": { + "description": "Billing Address", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingAddressId": { + "description": "Shipping Address", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "paymentMethodId": { + "description": "Payment Method", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingMethodId": { + "description": "Shipping Method", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryId": { + "description": "Country", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryStateId": { + "description": "Country State", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "type": "object" } } } }, "responses": { "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomerAddress" - } - } - } + "$ref": "#/components/responses/ContextTokenResponse" } }, "security": [ @@ -14827,15 +15101,15 @@ ] } }, - "/currency": { + "/seo-url": { "post": { "tags": [ - "System & Context", + "Sitemap & Routes", "Endpoints supporting Criteria " ], - "summary": "Fetch currencies", - "description": "Perform a filtered search for currencies.", - "operationId": "readCurrency", + "summary": "Fetch SEO routes", + "description": "Perform a filtered search for seo urls.", + "operationId": "readSeoUrl", "requestBody": { "required": false, "content": { @@ -14852,7 +15126,7 @@ }, "responses": { "200": { - "description": "Entity search result containing currencies.", + "description": "Entity search result containing seo urls.", "content": { "application/json": { "schema": { @@ -14862,7 +15136,7 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Currency" + "$ref": "#/components/schemas/SeoUrl" } } }, @@ -14875,6 +15149,9 @@ } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -14884,31 +15161,35 @@ ] } }, - "/payment-method": { + "/product-listing/{categoryId}": { "post": { "tags": [ - "Payment Method", - "Endpoints supporting Criteria " + "Product" + ], + "summary": "Fetch a product listing by category", + "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.", + "operationId": "readProductListing", + "parameters": [ + { + "name": "categoryId", + "in": "path", + "description": "Identifier of a category.", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "Loads all available payment methods", - "operationId": "readPaymentMethod", "requestBody": { - "required": true, "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/Criteria" + "$ref": "#/components/schemas/ProductListingCriteria" }, { - "properties": { - "onlyAvailable": { - "description": "List only available", - "type": "boolean" - } - }, - "type": "object" + "$ref": "#/components/schemas/ProductListingFlags" } ] } @@ -14917,27 +15198,11 @@ }, "responses": { "200": { - "description": "", + "description": "Returns a product listing containing all products and additional fields to display a listing.", "content": { "application/json": { "schema": { - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PaymentMethod" - } - } - }, - "type": "object" + "$ref": "#/components/schemas/ProductListingResult" } } } @@ -15283,61 +15548,23 @@ ] } }, - "/product-export/{accessKey}/{fileName}": { - "get": { - "tags": [ - "Product" - ], - "summary": "Export product export", - "operationId": "readProductExport", - "parameters": [ - { - "name": "accessKey", - "in": "path", - "description": "Access Key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "fileName", - "in": "path", - "description": "File Name", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/app-system/{name}/generate-token": { + "/country-state/{countryId}": { "post": { "tags": [ - "App system" + "System & Context", + "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 the states of a country", + "description": "Perform a filtered search the states for a country", + "operationId": "readCountryState", "parameters": [ { + "name": "countryId", "in": "path", - "name": "name", "required": true, - "description": "Name of the app", "schema": { - "type": "string" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } ], @@ -15346,30 +15573,37 @@ "content": { "application/json": { "schema": { - "type": "object" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] } } } }, "responses": { "200": { - "description": "", + "description": "Entity search result containing countries.", "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/CountryState" + } + } + }, + "type": "object" }, - "shopId": { - "type": "string" + { + "$ref": "#/components/schemas/EntitySearchResult" } - } + ] } } } @@ -15382,35 +15616,42 @@ ] } }, - "/product-listing/{categoryId}": { + "/document/download/{documentId}/{deepLinkCode}": { "post": { "tags": [ - "Product" + "Document", + "Endpoints supporting Criteria " ], - "summary": "Fetch a product listing by category", - "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.", - "operationId": "readProductListing", + "summary": "Download generated document", + "description": "Returns blob file of a generated document to download.", + "operationId": "download", "parameters": [ { - "name": "categoryId", + "name": "documentId", "in": "path", - "description": "Identifier of a category.", "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "deepLinkCode", + "required": true, + "in": "path", "schema": { "type": "string" } } ], "requestBody": { + "required": false, "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/ProductListingCriteria" - }, - { - "$ref": "#/components/schemas/ProductListingFlags" + "$ref": "#/components/schemas/Criteria" } ] } @@ -15419,11 +15660,11 @@ }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", + "description": "Returns the document information and blob to download.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "$ref": "#/components/schemas/Document" } } } @@ -15557,33 +15798,150 @@ ] } }, - "/customer/wishlist/add/{productId}": { + "/search-suggest": { + "post": { + "tags": [ + "Product" + ], + "summary": "Search for products (suggest)", + "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", + "operationId": "searchSuggest", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "required": [ + "search" + ], + "properties": { + "search": { + "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/ProductListingFlags" + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/language": { + "post": { + "tags": [ + "System & Context", + "Endpoints supporting Criteria " + ], + "summary": "Fetch languages", + "description": "Perform a filtered search for languages.", + "operationId": "readLanguages", + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Entity search result containing languages.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/account/newsletter-recipient": { "post": { "tags": [ - "Wishlist" + "Profile", + "Newsletter", + "Endpoints supporting Criteria" ], - "summary": "Add a product to a wishlist", - "description": "Adds a product to a customers wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "addProductOnWishlist", - "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Identifier of the product to be added.", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "summary": "Fetch newsletter recipients", + "description": "Perform a filtered search for newsletter recipients.", + "operationId": "readNewsletterRecipient", + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } } } - ], + }, "responses": { "200": { - "description": "Returns a success response.", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/AccountNewsletterRecipientResult" + } } } } @@ -15596,36 +15954,70 @@ ] } }, - "/customer/wishlist": { + "/account/change-profile": { "post": { "tags": [ - "Wishlist", - "Endpoints supporting Criteria " + "Profile" ], - "summary": "Fetch a wishlist", - "description": "Fetch a customer's wishlist. Products on the wishlist can be filtered using a criteria object.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "readCustomerWishlist", + "summary": "Change the customer's information", + "description": "Make changes to a customer's account, like changing their name, salutation or title.", + "operationId": "changeProfile", "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "salutationId", + "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" + }, + "company": { + "description": "Company of the customer. Only required when `accountType` is `business`.", + "type": "string" + }, + "birthdayDay": { + "description": "Birthday day", + "type": "integer" + }, + "birthdayMonth": { + "description": "Birthday month", + "type": "integer" + }, + "birthdayYear": { + "description": "Birthday year", + "type": "integer" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "", + "description": "Returns a success response indicating a successful update", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WishlistLoadRouteResponse" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -15638,28 +16030,36 @@ ] } }, - "/customer/wishlist/merge": { + "/account/change-email": { "post": { "tags": [ - "Wishlist" + "Profile" ], - "summary": "Create a wishlist for a customer", - "description": "Create a new wishlist for a logged in customer or extend the existing wishlist given a set of products.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * A customer can only have a single wishlist.\n * The wishlist feature has to be activated.", - "operationId": "mergeProductOnWishlist", + "summary": "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": { - "productIds": { - "description": "List product id", - "type": "array", - "items": { - "description": "product id", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "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" @@ -15669,7 +16069,7 @@ }, "responses": { "200": { - "description": "Returns a success response.", + "description": "Returns a success response indicating a successful update", "content": { "application/json": { "schema": { @@ -15686,29 +16086,36 @@ ] } }, - "/customer/wishlist/delete/{productId}": { - "delete": { + "/account/change-language": { + "post": { "tags": [ - "Wishlist" + "Profile" ], - "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}$" + "summary": "Change the customer's language.", + "description": "Changes the language of the logged in customer", + "operationId": "changeLanguage", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "languageId" + ], + "properties": { + "language": { + "description": "New languageId", + "type": "string" + } + }, + "type": "object" + } } } - ], + }, "responses": { "200": { - "description": "Returns a success response indicating a successful removal.", + "description": "Returns a success response indicating a successful update", "content": { "application/json": { "schema": { @@ -15716,16 +16123,6 @@ } } } - }, - "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": [ @@ -15735,71 +16132,35 @@ ] } }, - "/contact-form": { + "/account/change-password": { "post": { "tags": [ - "Content" + "Profile" ], - "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": "Change the customer's password", + "description": "Changes a customer's password using their current password as a validation.", + "operationId": "changePassword", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "salutationId", - "email", - "subject", - "comment" + "password", + "newPassword", + "newPasswordConfirm" ], "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", + "password": { + "description": "Current password of the customer", "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 concact 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", + }, + "newPassword": { + "description": "New Password for the customer", "type": "string" }, - "entityName": { - "description": "Entity name for slot config", + "newPasswordConfirm": { + "description": "Confirmation of the new password", "type": "string" } }, @@ -15810,7 +16171,14 @@ }, "responses": { "200": { - "description": "Message sent successful." + "description": "Returns a success response indicating a successful update.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } } }, "security": [ @@ -15820,51 +16188,32 @@ ] } }, - "/country": { + "/account/change-payment-method/{paymentMethodId}": { "post": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Profile" ], - "summary": "Fetch countries", - "description": "Perform a filtered search for countries", - "operationId": "readCountry", - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } + "summary": "Change the customer's default payment method", + "description": "Changes a customer's default (preselected) payment method.", + "operationId": "changePaymentMethod", + "parameters": [ + { + "name": "paymentMethodId", + "in": "path", + "description": "Identifier of the desired default payment method", + "required": true, + "schema": { + "type": "string" } } - }, + ], "responses": { "200": { - "description": "Entity search result containing countries.", + "description": "Returns a success response indicating a successful update.", "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Country" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -15877,34 +16226,25 @@ ] } }, - "/handle-payment": { + "/account/customer-recovery-is-expired": { "post": { "tags": [ - "Payment & Shipping" + "Profile" ], - "summary": "Initiate a payment for an order", - "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order.", - "operationId": "handlePaymentMethod", + "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": [ - "orderId" + "hash" ], "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", + "hash": { + "description": "Parameter from the link in the confirmation mail sent in Step 1", "type": "string" } }, @@ -15915,7 +16255,14 @@ }, "responses": { "200": { - "description": "Redirect to external payment provider" + "description": "Returns a CustomerRecoveryIsExpiredResponse that indicates if the hash is expired or not.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArrayStruct" + } + } + } } }, "security": [ @@ -15925,15 +16272,15 @@ ] } }, - "/salutation": { + "/account/customer": { "post": { "tags": [ - "System & Context", + "Profile", "Endpoints supporting Criteria " ], - "summary": "Fetch salutations", - "description": "Fetches salutations with a criteria obj.", - "operationId": "readSalutation", + "summary": "Get information about current customer", + "description": "Returns information about the current customer.", + "operationId": "readCustomer", "requestBody": { "required": false, "content": { @@ -15950,26 +16297,11 @@ }, "responses": { "200": { - "description": "Entity search result containing salutations.", + "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": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Salutation" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/Customer" } } } @@ -15980,27 +16312,52 @@ "ApiKey": [] } ] + }, + "delete": { + "tags": [ + "Profile" + ], + "summary": "Delete the customer's profile", + "description": "Deletes a customer profile along with their addresses, wishlists and associated data. Created orders and their payment/shipping information (addresses) and reviews are not deleted.", + "operationId": "deleteCustomer", + "responses": { + "204": { + "description": "Returns a no content response indicating a successful removal of the customer profile" + } + }, + "security": [ + { + "ApiKey": [] + } + ] } }, - "/context": { - "get": { + "/account/address/{addressId}": { + "delete": { "tags": [ - "System & Context" + "Address" ], - "summary": "Fetch the current context", - "description": "Fetches the current context. This includes for example the `customerGroup`, `currency`, `taxRules` and many more.", - "operationId": "readContext", - "responses": { - "200": { - "description": "Returns the current context.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SalesChannelContext" - } - } + "summary": "Delete an address of a customer", + "description": "Delete an address of customer.\n\n Only addresses which are not set as default addresses for shipping or billing can be deleted. You can check the current default addresses of your customer using the profile information endpoint and change them using the default address endpoint.\n\n **A customer must have at least one address (which can be used for shipping and billing).**\n\n An automatic fallback is not applied.", + "operationId": "deleteCustomerAddress", + "parameters": [ + { + "name": "addressId", + "in": "path", + "description": "ID of the address to be deleted.", + "required": true, + "schema": { + "type": "string" } } + ], + "responses": { + "204": { + "description": "No Content response, when the address has been deleted" + }, + "400": { + "description": "Response containing a list of errors, most likely due to the address being in use" + } }, "security": [ { @@ -16010,66 +16367,41 @@ }, "patch": { "tags": [ - "System & Context" + "Address" + ], + "summary": "Modify an address of a customer", + "description": "Modifies an existing address of a customer.", + "operationId": "updateCustomerAddress", + "parameters": [ + { + "name": "addressId", + "in": "path", + "description": "Address ID", + "required": true, + "schema": { + "type": "string" + } + } ], - "summary": "Modify the current context", - "description": "Used for switching the context. A typical example would be changing the language or changing the currency.", - "operationId": "updateContext", "requestBody": { - "required": true, "content": { "application/json": { "schema": { - "properties": { - "currencyId": { - "description": "Currency", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "languageId": { - "description": "Language", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "billingAddressId": { - "description": "Billing Address", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shippingAddressId": { - "description": "Shipping Address", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "paymentMethodId": { - "description": "Payment Method", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shippingMethodId": { - "description": "Shipping Method", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryId": { - "description": "Country", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryStateId": { - "description": "Country State", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "type": "object" + "$ref": "#/components/schemas/CustomerAddress" } } } }, "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomerAddress" + } + } + } } }, "security": [ @@ -16079,26 +16411,15 @@ ] } }, - "/country-state/{countryId}": { + "/account/list-address": { "post": { "tags": [ - "System & Context", + "Address", "Endpoints supporting Criteria " ], - "summary": "Fetch the states of a country", - "description": "Perform a filtered search the states for a country", - "operationId": "readCountryState", - "parameters": [ - { - "name": "countryId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], + "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": { @@ -16115,26 +16436,14 @@ }, "responses": { "200": { - "description": "Entity search result containing countries.", + "description": "", "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CountryState" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomerAddress" + } } } } @@ -16147,24 +16456,31 @@ ] } }, - "/order/state/cancel": { + "/account/login": { "post": { "tags": [ - "Order" + "Login & Registration" ], - "summary": "Cancel an order", - "description": "Cancels an order. The order state will be set to 'cancelled'.", - "operationId": "cancelOrder", + "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": { - "orderId": { - "description": "The identifier of the order to be canceled.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "username": { + "description": "Email", + "type": "string" + }, + "password": { + "description": "Password", + "type": "string" } }, "type": "object" @@ -16174,11 +16490,14 @@ }, "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)", + "$ref": "#/components/responses/ContextTokenResponse" + }, + "401": { + "description": "If credentials are incorrect an error is returned", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/StateMachineState" + "$ref": "#/components/schemas/failure" } } } @@ -16191,45 +16510,184 @@ ] } }, - "/order": { + "/account/logout": { "post": { "tags": [ - "Order", - "Endpoints supporting Criteria " + "Login & Registration" ], - "summary": "Fetch a list of orders", - "description": "List orders of a customer.", - "operationId": "readOrder", + "summary": "Log out a customer", + "description": "Logs out a customer.", + "operationId": "logoutCustomer", + "responses": { + "200": { + "$ref": "#/components/responses/ContextTokenResponse" + }, + "403": { + "$ref": "#/components/responses/403" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/account/register-confirm": { + "post": { + "tags": [ + "Login & Registration" + ], + "summary": "Confirm a customer registration", + "description": "Confirms a customer registration when double opt-in is activated.\n\nLearn more about double opt-in registration in our guide \"Register a customer\".", + "operationId": "registerConfirm", "requestBody": { "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "hash", + "em" + ], + "properties": { + "hash": { + "description": "Hash from the email received", + "type": "string" }, - { - "properties": { - "checkPromotion": { - "description": "Check if the payment method of the order is still changeable.", - "type": "boolean" - } - }, - "type": "object" + "em": { + "description": "Email hash from the email received", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "An array of orders and an indicator if the payment of the order can be changed.", + "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": [] + } + ] + } + }, + "/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": { + "required": [ + "email", + "password", + "salutationId", + "firstName", + "lastName", + "acceptedDataProtection", + "storefrontUrl", + "billingAddress" + ], + "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" + }, + "accountType": { + "description": "Account type of the customer which can be either `private` or `business`.", + "type": "string", + "default": "private" + }, + "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" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Success", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OrderRouteResponse" + "$ref": "#/components/schemas/Customer" } } } @@ -16242,33 +16700,36 @@ ] } }, - "/order/payment": { + "/account/recovery-password-confirm": { "post": { "tags": [ - "Order" + "Profile" ], - "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": "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": [ - "paymentMethodId", - "orderId" + "hash", + "newPassword", + "newPasswordConfirm" ], "properties": { - "paymentMethodId": { - "description": "The identifier of the paymentMethod to be set", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "hash": { + "description": "Parameter from the link in the confirmation mail sent in Step 1", + "type": "string" }, - "orderId": { - "description": "The identifier of the order.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "newPassword": { + "description": "New password for the customer", + "type": "string" + }, + "newPasswordConfirm": { + "description": "Confirmation of the new password", + "type": "string" } }, "type": "object" @@ -16278,7 +16739,7 @@ }, "responses": { "200": { - "description": "Successfully updated the payment method of the order.", + "description": "Returns a success response indicating a successful update.", "content": { "application/json": { "schema": { @@ -16295,42 +16756,45 @@ ] } }, - "/order/download/{orderId}/{downloadId}": { - "get": { + "/account/recovery-password": { + "post": { "tags": [ - "Order" + "Profile" ], - "summary": "Download a purchased file", - "description": "Download a file included in the given order and with the given id. Access must be granted.", - "operationId": "orderDownloadFile", - "parameters": [ - { - "name": "orderId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "downloadId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "summary": "Send a password recovery mail", + "description": "This operation is Step 1 of the password reset flow. Make sure to implement Step 2 \"Reset password with recovery credentials\" in order to allow for the complete flow in your application. Sends a recovery mail containing a link with credentials that allows a customer to reset their password.", + "operationId": "sendRecoveryMail", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "email", + "storefrontUrl" + ], + "properties": { + "email": { + "description": "E-Mail address to identify the customer", + "type": "string" + }, + "storefrontUrl": { + "description": "URL of the storefront to use for the generated reset link. It has to be a domain that is configured in the sales channel domain settings.", + "type": "string" + } + }, + "type": "object" + } } } - ], + }, "responses": { "200": { - "description": "An arbitrary binary file.", + "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/octet-stream": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -16343,35 +16807,28 @@ ] } }, - "/customer-group-registration/config/{customerGroupId}": { - "get": { + "/account/address/default-shipping/{addressId}": { + "patch": { "tags": [ - "Login & Registration" + "Address" ], - "summary": "Fetch registration settings for customer group", - "operationId": "getCustomerGroupRegistrationInfo", + "summary": "Change a customer's default shipping address", + "description": "Updates the default (preselected) shipping addresses of a customer.", + "operationId": "defaultShippingAddress", "parameters": [ { - "name": "customerGroupId", + "name": "addressId", "in": "path", - "description": "Customer group id", + "description": "Address ID", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } } ], "responses": { "200": { - "description": "Returns the customer group including registration settings.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomerGroup" - } - } - } + "description": "" } }, "security": [ @@ -16381,120 +16838,28 @@ ] } }, - "/shipping-method": { - "post": { + "/account/address/default-billing/{addressId}": { + "patch": { "tags": [ - "Payment & Shipping", - "Endpoints supporting Criteria " + "Address" ], - "summary": "Fetch shipping methods", - "description": "Perform a filtered search for shipping methods.", - "operationId": "readShippingMethod", + "summary": "Change a customer's default billing address", + "description": "Updates the default (preselected) billing addresses of a customer.", + "operationId": "defaultBillingAddress", "parameters": [ { - "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.", + "name": "addressId", + "in": "path", + "description": "Address ID", + "required": true, "schema": { - "type": "boolean" - } - } - ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } - } - } - }, - "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/ShippingMethod" - } - } - }, - "type": "object" - } - } + "type": "string" } } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/search": { - "post": { - "tags": [ - "Product" ], - "summary": "Search for products", - "description": "Performs a search for products which can be used to display a product listing.", - "operationId": "searchPage", - "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" - } - ] - } - } - } - }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProductListingResult" - } - } - } + "description": "" } }, "security": [ @@ -16504,68 +16869,33 @@ ] } }, - "/landing-page/{landingPageId}": { + "/account/address": { "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" - } - } + "tags": [ + "Address" ], + "summary": "Create a new address for a customer", + "description": "Creates a new address for a customer.", + "operationId": "createCustomerAddress", "requestBody": { "content": { "application/json": { "schema": { - "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" - } - ] - } - ] + "$ref": "#/components/schemas/CustomerAddress" } } } }, "responses": { "200": { - "description": "The loaded landing page with cms page", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LandingPage" + "$ref": "#/components/schemas/CustomerAddress" } } } - }, - "404": { - "$ref": "#/components/responses/404" } }, "security": [ @@ -16665,50 +16995,36 @@ ] } }, - "/search-suggest": { - "post": { + "/product-export/{accessKey}/{fileName}": { + "get": { "tags": [ "Product" ], - "summary": "Search for products (suggest)", - "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", - "operationId": "searchSuggest", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "required": [ - "search" - ], - "properties": { - "search": { - "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/ProductListingFlags" - } - ] - } + "summary": "Export product export", + "operationId": "readProductExport", + "parameters": [ + { + "name": "accessKey", + "in": "path", + "description": "Access Key", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "fileName", + "in": "path", + "description": "File Name", + "required": true, + "schema": { + "type": "string" } } - }, + ], "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProductListingResult" - } - } - } + "description": "" } }, "security": [ @@ -16866,174 +17182,12 @@ "200": { "description": "The updated cart.", "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Cart" - } - } - } - } - }, - "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", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "ids" - ], - "properties": { - "ids": { - "description": "A list of product identifiers.", - "type": "array", - "minItems": 1, - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "The updated cart.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Cart" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/checkout/order": { - "post": { - "tags": [ - "Order" - ], - "summary": "Create an order from a cart", - "description": "Creates a new order from the current cart and deletes the cart.\n\nIf you are using the [prepared payment flow](https://developer.shopware.com/docs/concepts/commerce/checkout-concept/payments#2.1-prepare-payment-optional), this endpoint also receives additional transaction details. The exact name of the parameters depends on the implementation of the corresponding *payment handler*.", - "operationId": "createOrder", - "requestBody": { - "description": "Contains additional metadata which is stored together with the order. It can also contain payment transaction details.", - "content": { - "application/json": { - "schema": { - "properties": { - "customerComment": { - "description": "Adds a comment from the customer to the order.", - "type": "string" - }, - "affiliateCode": { - "description": "The affiliate code can be used to track which referrer the customer came through. An example could be `Price-comparison-company-XY`.", - "type": "string" - }, - "campaignCode": { - "description": "The campaign code is used to track which action the customer came from. An example could be `Summer-Deals`", - "type": "string" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Order", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Order" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/seo-url": { - "post": { - "tags": [ - "Sitemap & Routes", - "Endpoints supporting Criteria " - ], - "summary": "Fetch SEO routes", - "description": "Perform a filtered search for seo urls.", - "operationId": "readSeoUrl", - "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" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "application/json": { + "schema": { + "$ref": "#/components/schemas/Cart" } } } - }, - "404": { - "$ref": "#/components/responses/404" } }, "security": [ @@ -17043,31 +17197,31 @@ ] } }, - "/newsletter/confirm": { + "/checkout/cart/line-item/delete": { "post": { "tags": [ - "Newsletter" + "Cart" ], - "summary": "Confirm a newsletter registration", - "description": "You have to use the hash from the link sent out via email to confirm the user registration.", - "operationId": "confirmNewsletter", + "summary": "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", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "hash", - "em" + "ids" ], "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" + "ids": { + "description": "A list of product identifiers.", + "type": "array", + "minItems": 1, + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } }, "type": "object" @@ -17077,7 +17231,14 @@ }, "responses": { "200": { - "description": "The newsletter confirmation was successful." + "description": "The updated cart.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Cart" + } + } + } } }, "security": [ @@ -17087,73 +17248,30 @@ ] } }, - "/newsletter/subscribe": { + "/checkout/order": { "post": { "tags": [ - "Newsletter" + "Order" ], - "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 addrees 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`: Confirmes the newsletter subscription for the provided email address.", - "operationId": "subscribeToNewsletter", + "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", "requestBody": { - "required": true, + "description": "Contains additional metadata which is stored together with the order. It can also contain payment transaction details.", "content": { "application/json": { "schema": { - "required": [ - "email", - "option", - "storefrontUrl" - ], "properties": { - "email": { - "description": "Email address that will receive the confirmation and the newsletter.", - "type": "string" - }, - "option": { - "description": "Defines what should be done.", - "type": "string" - }, - "storefrontUrl": { - "description": "Url of the storefront of the shop. This will be used for generating the link to the /newsletter/confirm inside the confirm email.", - "type": "string" - }, - "salutationId": { - "description": "Identifier of the salutation.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "description": "First name", - "type": "string" - }, - "lastName": { - "description": "Last name", - "type": "string" - }, - "street": { - "description": "Street", - "type": "string" - }, - "city": { - "description": "City", - "type": "string" - }, - "zipCode": { - "description": "Zip code", + "customerComment": { + "description": "Adds a comment from the customer to the order.", "type": "string" }, - "tags": { - "description": "Zip code", + "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" }, - "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.", + "campaignCode": { + "description": "The campaign code is used to track which action the customer came from. An example could be `Summer-Deals`", "type": "string" } }, @@ -17164,7 +17282,14 @@ }, "responses": { "200": { - "description": "Success" + "description": "Order", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Order" + } + } + } } }, "security": [ @@ -17174,38 +17299,29 @@ ] } }, - "/newsletter/unsubscribe": { - "post": { + "/sitemap": { + "get": { "tags": [ - "Newsletter" + "Sitemap & Routes" ], - "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" + "summary": "Fetch sitemaps", + "description": "Fetches a list of compressed sitemap files, which are often used by search engines.", + "operationId": "readSitemap", + "responses": { + "200": { + "description": "Returns a list of available sitemaps.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Sitemap" } - }, - "type": "object" + } } } } }, - "responses": { - "200": { - "description": "Unsubscribing was successful." - } - }, "security": [ { "ApiKey": [] @@ -17213,42 +17329,49 @@ ] } }, - "/document/download/{documentId}/{deepLinkCode}": { + "/landing-page/{landingPageId}": { "post": { "tags": [ - "Document", + "Content", "Endpoints supporting Criteria " ], - "summary": "Download generated document", - "description": "Returns blob file of a generated document to download.", - "operationId": "download", + "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": "documentId", + "name": "landingPageId", "in": "path", + "description": "Identifier of the landing page.", "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "deepLinkCode", - "required": true, - "in": "path", "schema": { "type": "string" } } ], "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" + } + ] } ] } @@ -17257,14 +17380,17 @@ }, "responses": { "200": { - "description": "Returns the document information and blob to download.", + "description": "The loaded landing page with cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Document" + "$ref": "#/components/schemas/LandingPage" } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -17274,29 +17400,47 @@ ] } }, - "/sitemap": { - "get": { + "/handle-payment": { + "post": { "tags": [ - "Sitemap & Routes" + "Payment & Shipping" ], - "summary": "Fetch sitemaps", - "description": "Fetches a list of compressed sitemap files, which are often used by search engines.", - "operationId": "readSitemap", - "responses": { - "200": { - "description": "Returns a list of available sitemaps.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Sitemap" + "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": "Redirect to external payment provider" + } + }, "security": [ { "ApiKey": [] From 663f64e2f54c2d095796c0f167adb25ab8e6cdd7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 4 Dec 2023 16:50:11 +0100 Subject: [PATCH 07/35] [create-pull-request] automated change (#129) Co-authored-by: shopwareBot --- SwagCommercial-storeapi.json | 1729 ++++++++++++++++++---------------- 1 file changed, 918 insertions(+), 811 deletions(-) diff --git a/SwagCommercial-storeapi.json b/SwagCommercial-storeapi.json index 8f28507..8c644e6 100644 --- a/SwagCommercial-storeapi.json +++ b/SwagCommercial-storeapi.json @@ -3,7 +3,7 @@ "info": { "title": "Shopware Store API", "description": "This endpoint reference contains an overview of all endpoints comprising the Shopware Store API", - "version": "6.5.9999999.9999999-dev" + "version": "6.5.7.3" }, "servers": [ { @@ -9455,6 +9455,10 @@ "type": "string", "format": "date-time" }, + "sentAt": { + "type": "string", + "format": "date-time" + }, "price": { "required": [ "netPrice", @@ -9626,6 +9630,73 @@ "items": { "$ref": "#/components/schemas/QuoteTransaction" } + }, + "comments": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QuoteComment" + } + } + }, + "type": "object" + }, + "QuoteComment": { + "required": [ + "comment", + "quoteId", + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "comment": { + "type": "string" + }, + "seenAt": { + "type": "string", + "format": "date-time" + }, + "quoteId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "quoteVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "stateId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "customerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdById": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "stateMachineState": { + "$ref": "#/components/schemas/StateMachineState" + }, + "customer": { + "$ref": "#/components/schemas/Customer" } }, "type": "object" @@ -9867,6 +9938,36 @@ }, "type": "object" }, + "QuoteEmployee": { + "required": [ + "firstName", + "lastName", + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, "QuoteLineItem": { "description": "Added since version: 6.5.3.0", "required": [ @@ -9948,6 +10049,12 @@ "priceDefinition": { "type": "object" }, + "productPrice": { + "type": "object" + }, + "purchasePrice": { + "type": "object" + }, "discount": { "properties": { "type": { @@ -12533,6 +12640,72 @@ }, "type": "object" }, + "ProductListingResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EntitySearchResult" + }, + { + "type": "object", + "properties": { + "currentFilters": { + "type": "object", + "description": "Contains the state of the filters. These can be used to create listing filters.", + "properties": { + "navigationId": { + "type": "string" + }, + "manufacturer": { + "type": "array", + "items": { + "type": "object" + } + }, + "price": { + "type": "object", + "properties": { + "min": { + "type": "integer" + }, + "max": { + "type": "integer" + } + } + }, + "rating": { + "type": "integer" + }, + "shipping-free": { + "type": "boolean" + }, + "properties": { + "type": "array", + "items": { + "type": "object" + } + } + } + }, + "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" + } + }, + "sorting": { + "type": "string" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + } + } + } + ] + }, "Cart": { "allOf": [ { @@ -12629,90 +12802,112 @@ } ] }, - "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": { + "LineItem": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "referencedId": { + "type": "string" + }, + "label": { + "type": "string" + }, + "quantity": { + "type": "integer", + "format": "int32" + }, + "type": { + "type": "string" + }, + "good": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "removable": { + "type": "boolean" + }, + "stackable": { + "type": "boolean" + }, + "modified": { + "type": "boolean" + } + } + }, + "SalesChannelContext": { + "allOf": [ + { + "$ref": "#/components/schemas/ArrayStruct" + }, + { + "type": "object", + "properties": { + "token": { + "description": "Context the user session", + "type": "string" + }, + "currentCustomerGroup": { "type": "object", + "description": "Customer group of the current user", "properties": { - "shippingMethodId": { - "type": "string" - }, "name": { "type": "string" }, - "description": { + "displayGross": { + "type": "boolean" + } + } + }, + "fallbackCustomerGroup": { + "description": "Fallback group if the default customer group is not applicable", + "type": "object", + "properties": { + "name": { "type": "string" + }, + "displayGross": { + "type": "boolean" } } - } - }, - "orderDeliveries": { - "type": "array", - "items": { + }, + "currency": { "type": "object", + "description": "Currency associated with the current user", "properties": { - "orderId": { + "isoCode": { "type": "string" }, - "shippingOrderAddressId": { + "factor": { + "type": "integer" + }, + "symbol": { "type": "string" }, - "shippingMethodId": { + "shortName": { "type": "string" }, - "shippingDateEarliest": { - "type": "string", - "format": "date-time" + "name": { + "type": "string" }, - "shippingDateLatest": { - "type": "string", - "format": "date-time" + "position": { + "type": "integer", + "format": "int32" }, - "stateId": { - "type": "string" + "decimalPrecision": { + "type": "integer", + "format": "int32" + }, + "isSystemDefault": { + "type": "boolean" } } - } - }, - "salesChannelDefaultAssignments": { - "type": "array", - "items": { + }, + "salesChannel": { + "description": "Information about the current sales channel", "type": "object", "properties": { "typeId": { @@ -12775,261 +12970,263 @@ }, "hreflangDefaultDomainId": { "type": "string" + }, + "analyticsId": { + "type": "string" } } - } - }, - "salesChannels": { - "type": "array", - "items": { + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } + }, + "customer": { "type": "object", + "description": "Information about the current customer - `null` if the customer is not logged in", "properties": { - "typeId": { + "groupId": { + "type": "string" + }, + "defaultPaymentMethodId": { + "type": "string" + }, + "salesChannelId": { "type": "string" }, "languageId": { "type": "string" }, - "currencyId": { + "lastPaymentMethodId": { "type": "string" }, - "paymentMethodId": { + "defaultBillingAddressId": { "type": "string" }, - "shippingMethodId": { + "defaultShippingAddressId": { "type": "string" }, - "countryId": { + "defaultBillingAddress": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "defaultShippingAddress": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "activeBillingAddress": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "activeShippingAddress": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "customerNumber": { "type": "string" }, - "navigationCategoryId": { + "salutationId": { "type": "string" }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" + "firstName": { + "type": "string" }, - "footerCategoryId": { + "lastName": { "type": "string" }, - "serviceCategoryId": { + "company": { "type": "string" }, - "name": { + "password": { "type": "string" }, - "shortName": { + "email": { "type": "string" }, - "accessKey": { + "title": { + "type": "string" + }, + "affiliateCode": { + "type": "string" + }, + "campaignCode": { "type": "string" }, "active": { "type": "boolean" }, - "maintenance": { + "doubleOptInRegistration": { "type": "boolean" }, - "maintenanceIpWhitelist": { + "doubleOptInEmailSentDate": { + "type": "string", + "format": "date-time" + }, + "doubleOptInConfirmDate": { + "type": "string", + "format": "date-time" + }, + "hash": { "type": "string" }, - "mailHeaderFooterId": { + "guest": { + "type": "boolean" + }, + "firstLogin": { + "type": "string", + "format": "date-time" + }, + "lastLogin": { + "type": "string", + "format": "date-time" + }, + "newsletter": { + "type": "boolean" + }, + "birthday": { + "type": "string", + "format": "date-time" + }, + "lastOrderDate": { + "type": "string", + "format": "date-time" + }, + "orderCount": { + "type": "integer", + "format": "int32" + }, + "legacyEncoder": { "type": "string" }, - "customerGroupId": { + "legacyPassword": { "type": "string" }, - "hreflangActive": { - "type": "boolean" + "autoIncrement": { + "type": "integer", + "format": "int32" }, - "hreflangDefaultDomainId": { + "remoteAddress": { "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": { + }, + "paymentMethod": { "type": "object", + "description": "Selected payment method", "properties": { - "shippingMethodId": { + "pluginId": { "type": "string" }, - "currencyId": { + "handlerIdentifier": { "type": "string" }, - "ruleId": { + "name": { "type": "string" }, - "calculation": { + "description": { + "type": "string" + }, + "position": { "type": "integer", "format": "int32" }, - "quantityStart": { - "type": "number", - "format": "float" + "active": { + "type": "boolean" }, - "quantityEnd": { - "type": "number", - "format": "float" + "availabilityRuleId": { + "type": "string" }, - "price": { - "type": "number", - "format": "float" + "mediaId": { + "type": "string" }, - "calculationRuleId": { + "formattedHandlerIdentifier": { "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": { + }, + "shippingMethod": { "type": "object", + "description": "Selected shipping method", "properties": { "name": { "type": "string" + }, + "active": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "trackingUrl": { + "type": "string" + }, + "deliveryTimeId": { + "type": "string" + }, + "availabilityRuleId": { + "type": "string" + }, + "mediaId": { + "type": "string" + } + } + }, + "context": { + "description": "Core context with general configuration values and state", + "type": "object", + "properties": { + "versionId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "currencyFactor": { + "type": "integer" + }, + "currencyPrecision": { + "type": "integer", + "format": "int32" + }, + "scope": { + "type": "string" + }, + "source": { + "type": "string" + }, + "taxState": { + "type": "string" + }, + "useCache": { + "type": "boolean" } } } } } - } - }, - "LineItem": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "referencedId": { - "type": "string" - }, - "label": { - "type": "string" - }, - "quantity": { - "type": "integer", - "format": "int32" - }, - "type": { - "type": "string" - }, - "good": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "removable": { - "type": "boolean" - }, - "stackable": { - "type": "boolean" - }, - "modified": { - "type": "boolean" - } - } + ] }, - "OrderRouteResponse": { - "type": "object", - "properties": { - "orders": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order" - } + "AccountNewsletterRecipientResult": { + "allOf": [ + { + "$ref": "#/components/schemas/Struct" }, - "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" + "properties": { + "status": { + "type": "string" + } } } - } - }, - "NavigationRouteResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } + ] }, "CrossSellingElementCollection": { "type": "array", @@ -13083,27 +13280,43 @@ } } }, - "WishlistLoadRouteResponse": { + "FindProductVariantRouteResponse": { "type": "object", "properties": { - "wishlist": { + "foundCombination": { "type": "object", "properties": { - "customerId": { - "type": "string" + "variantId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "salesChannelId": { - "type": "string" + "options": { + "type": "array", + "items": { + "type": "string" + } } } + } + } + }, + "CartItems": { + "allOf": [ + { + "$ref": "#/components/schemas/ArrayStruct" }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductListingResult" + { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + } } } - } + ] }, "ProductListingCriteria": { "allOf": [ @@ -13195,421 +13408,138 @@ } ] }, - "ProductDetailResponse": { + "OrderRouteResponse": { "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "product": { - "$ref": "#/components/schemas/Product" - }, - "configurator": { + "orders": { "type": "array", - "description": "List of property groups with their corresponding options and information on how to display them.", "items": { - "$ref": "#/components/schemas/PropertyGroup" + "$ref": "#/components/schemas/Order" + } + }, + "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" } } } }, - "ArrayStruct": { - "$ref": "#/components/schemas/Struct" + "SuccessResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + } + } }, - "AccountNewsletterRecipientResult": { - "allOf": [ - { - "$ref": "#/components/schemas/Struct" - }, - { + "WishlistLoadRouteResponse": { + "type": "object", + "properties": { + "wishlist": { "type": "object", "properties": { - "status": { + "customerId": { + "type": "string" + }, + "salesChannelId": { "type": "string" } } + }, + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductListingResult" + } } - ] + } }, - "Criteria": { - "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", - "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "limit": { - "description": "Number of items per result page", - "type": "integer" - }, - "filter": { - "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "field": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "required": [ - "type", - "field", - "value" - ] - } - }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "type": "object", - "properties": { - "field": { - "type": "string" - }, - "order": { - "type": "string" - }, - "naturalSorting": { - "type": "boolean" - } - }, - "required": [ - "field" - ] - } - }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "field": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "required": [ - "type", - "field", - "value" - ] - } - }, - "associations": { - "type": "object", - "description": "Used to fetch associations which are not fetched by default." - }, - "aggregations": { - "type": "array", - "description": "Used to perform aggregations on the search result. For more information, see [Search Queries > Aggregations](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#aggregations)", - "items": { + "ShippingMethodPageRouteResponse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "deliveryTimeId": { + "type": "string" + }, + "deliveryTime": { "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" + "min": { + "type": "integer", + "format": "int32" }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - } - }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "fields": { - "type": "array", - "description": "Fields which should be returned in the search result.", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "total-count-mode": { - "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", - "type": "string", - "default": "none", - "enum": [ - "none", - "exact", - "next-pages" - ] - } - } - }, - "CartItems": { - "allOf": [ - { - "$ref": "#/components/schemas/ArrayStruct" - }, - { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - } - } - } - ] - }, - "SuccessResponse": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - } - } - }, - "EntitySearchResult": { - "allOf": [ - { - "$ref": "#/components/schemas/ArrayStruct" - }, - { - "type": "object", - "properties": { - "entity": { - "type": "string" - }, - "total": { - "type": "integer", - "description": "The total number of found entities" - }, - "aggregations": { - "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", - "items": { - "type": "object" - } - }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." - }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." - } - } - } - ] - }, - "FindProductVariantRouteResponse": { - "type": "object", - "properties": { - "foundCombination": { - "type": "object", - "properties": { - "variantId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "options": { - "type": "array", - "items": { + "max": { + "type": "integer", + "format": "int32" + }, + "unit": { "type": "string" } } - } - } - } - }, - "Struct": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "description": "Alias which can be used to restrict response fields. For more information see [includes](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#includes-apialias)." - } - } - }, - "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": "object" - } - }, - "price": { - "type": "object", - "properties": { - "min": { - "type": "integer" - }, - "max": { - "type": "integer" - } - } - }, - "rating": { - "type": "integer" - }, - "shipping-free": { - "type": "boolean" - }, - "properties": { - "type": "array", - "items": { - "type": "object" - } - } - } - }, - "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" - } - }, - "sorting": { - "type": "string" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - } - } - } - ] - }, - "Sitemap": { - "allOf": [ - { - "$ref": "#/components/schemas/ArrayStruct" - }, - { - "type": "object", - "properties": { - "filename": { - "type": "string" - }, - "created": { - "type": "string", - "format": "date-time" - } - } - } - ] - }, - "SalesChannelContext": { - "allOf": [ - { - "$ref": "#/components/schemas/ArrayStruct" - }, - { - "type": "object", - "properties": { - "token": { - "description": "Context the user session", - "type": "string" - }, - "currentCustomerGroup": { - "type": "object", - "description": "Customer group of the current user", - "properties": { "name": { "type": "string" }, - "displayGross": { - "type": "boolean" - } - } - }, - "fallbackCustomerGroup": { - "description": "Fallback group if the default customer group is not applicable", - "type": "object", - "properties": { - "name": { + "description": { "type": "string" - }, - "displayGross": { - "type": "boolean" } } - }, - "currency": { + } + }, + "orderDeliveries": { + "type": "array", + "items": { "type": "object", - "description": "Currency associated with the current user", "properties": { - "isoCode": { - "type": "string" - }, - "factor": { - "type": "integer" - }, - "symbol": { + "orderId": { "type": "string" }, - "shortName": { + "shippingOrderAddressId": { "type": "string" }, - "name": { + "shippingMethodId": { "type": "string" }, - "position": { - "type": "integer", - "format": "int32" + "shippingDateEarliest": { + "type": "string", + "format": "date-time" }, - "decimalPrecision": { - "type": "integer", - "format": "int32" + "shippingDateLatest": { + "type": "string", + "format": "date-time" }, - "isSystemDefault": { - "type": "boolean" + "stateId": { + "type": "string" } } - }, - "salesChannel": { - "description": "Information about the current sales channel", + } + }, + "salesChannelDefaultAssignments": { + "type": "array", + "items": { "type": "object", "properties": { "typeId": { @@ -13672,248 +13602,376 @@ }, "hreflangDefaultDomainId": { "type": "string" - }, - "analyticsId": { - "type": "string" - } - } - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } } } - }, - "customer": { + } + }, + "salesChannels": { + "type": "array", + "items": { "type": "object", - "description": "Information about the current customer - `null` if the customer is not logged in", "properties": { - "groupId": { - "type": "string" - }, - "defaultPaymentMethodId": { - "type": "string" - }, - "salesChannelId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "lastPaymentMethodId": { + "typeId": { "type": "string" }, - "defaultBillingAddressId": { + "languageId": { "type": "string" }, - "defaultShippingAddressId": { + "currencyId": { "type": "string" }, - "defaultBillingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "defaultShippingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "activeBillingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "activeShippingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "customerNumber": { + "paymentMethodId": { "type": "string" }, - "salutationId": { + "shippingMethodId": { "type": "string" }, - "firstName": { + "countryId": { "type": "string" }, - "lastName": { + "navigationCategoryId": { "type": "string" }, - "company": { - "type": "string" + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" }, - "password": { + "footerCategoryId": { "type": "string" }, - "email": { + "serviceCategoryId": { "type": "string" }, - "title": { + "name": { "type": "string" }, - "affiliateCode": { + "shortName": { "type": "string" }, - "campaignCode": { + "accessKey": { "type": "string" }, "active": { "type": "boolean" }, - "doubleOptInRegistration": { + "maintenance": { "type": "boolean" }, - "doubleOptInEmailSentDate": { - "type": "string", - "format": "date-time" + "maintenanceIpWhitelist": { + "type": "string" }, - "doubleOptInConfirmDate": { - "type": "string", - "format": "date-time" + "mailHeaderFooterId": { + "type": "string" }, - "hash": { + "customerGroupId": { "type": "string" }, - "guest": { + "hreflangActive": { "type": "boolean" }, - "firstLogin": { - "type": "string", - "format": "date-time" - }, - "lastLogin": { - "type": "string", - "format": "date-time" - }, - "newsletter": { - "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" }, - "birthday": { - "type": "string", - "format": "date-time" + "currencyId": { + "type": "string" }, - "lastOrderDate": { - "type": "string", - "format": "date-time" + "ruleId": { + "type": "string" }, - "orderCount": { + "calculation": { "type": "integer", "format": "int32" }, - "legacyEncoder": { - "type": "string" + "quantityStart": { + "type": "number", + "format": "float" }, - "legacyPassword": { - "type": "string" + "quantityEnd": { + "type": "number", + "format": "float" }, - "autoIncrement": { - "type": "integer", - "format": "int32" + "price": { + "type": "number", + "format": "float" }, - "remoteAddress": { + "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" } } + } + } + } + } + }, + "ArrayStruct": { + "$ref": "#/components/schemas/Struct" + }, + "Sitemap": { + "allOf": [ + { + "$ref": "#/components/schemas/ArrayStruct" + }, + { + "type": "object", + "properties": { + "filename": { + "type": "string" + }, + "created": { + "type": "string", + "format": "date-time" + } + } + } + ] + }, + "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" + } + } + } + }, + "Criteria": { + "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", + "properties": { + "page": { + "description": "Search result page", + "type": "integer" + }, + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "field": { + "type": "string" + }, + "value": { + "type": "string" + } }, - "paymentMethod": { - "type": "object", - "description": "Selected payment method", - "properties": { - "pluginId": { - "type": "string" - }, - "handlerIdentifier": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "position": { - "type": "integer", - "format": "int32" - }, - "active": { - "type": "boolean" - }, - "availabilityRuleId": { - "type": "string" - }, - "mediaId": { - "type": "string" - }, - "formattedHandlerIdentifier": { - "type": "string" - } + "required": [ + "type", + "field", + "value" + ] + } + }, + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "type": "object", + "properties": { + "field": { + "type": "string" + }, + "order": { + "type": "string" + }, + "naturalSorting": { + "type": "boolean" } }, - "shippingMethod": { - "type": "object", - "description": "Selected shipping method", - "properties": { - "name": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "trackingUrl": { - "type": "string" - }, - "deliveryTimeId": { - "type": "string" - }, - "availabilityRuleId": { - "type": "string" - }, - "mediaId": { - "type": "string" - } + "required": [ + "field" + ] + } + }, + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "field": { + "type": "string" + }, + "value": { + "type": "string" } }, - "context": { - "description": "Core context with general configuration values and state", - "type": "object", - "properties": { - "versionId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "currencyFactor": { - "type": "integer" - }, - "currencyPrecision": { - "type": "integer", - "format": "int32" - }, - "scope": { - "type": "string" - }, - "source": { - "type": "string" - }, - "taxState": { - "type": "string" - }, - "useCache": { - "type": "boolean" - } + "required": [ + "type", + "field", + "value" + ] + } + }, + "associations": { + "type": "object", + "description": "Used to fetch associations which are not fetched by default." + }, + "aggregations": { + "type": "array", + "description": "Used to perform aggregations on the search result. For more information, see [Search Queries > Aggregations](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#aggregations)", + "items": { + "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" + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" } - } + }, + "required": [ + "name", + "type", + "field" + ] + } + }, + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "fields": { + "type": "array", + "description": "Fields which should be returned in the search result.", + "items": { + "type": "string", + "description": "Name of a field" } + }, + "total-count-mode": { + "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" + ] } - ] + } }, "ProductListingFlags": { "type": "object", @@ -13931,6 +13989,61 @@ } } }, + "Struct": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "description": "Alias which can be used to restrict response fields. For more information see [includes](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#includes-apialias)." + } + } + }, + "NavigationRouteResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + } + }, + "EntitySearchResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ArrayStruct" + }, + { + "type": "object", + "properties": { + "entity": { + "type": "string" + }, + "total": { + "type": "integer", + "description": "The total number of found entities" + }, + "aggregations": { + "type": "array", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", + "items": { + "type": "object" + } + }, + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." + }, + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." + } + } + } + ] + }, + "NaturalLanguageSearchTermResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NaturalLanguageSearchTerm" + } + }, "NaturalLanguageSearchTerm": { "type": "object", "required": [ @@ -13952,12 +14065,6 @@ ] } } - }, - "NaturalLanguageSearchTermResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/NaturalLanguageSearchTerm" - } } }, "responses": { From 335897efaf62ac5b54e93a753b61f31a34606b8b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 20 Dec 2023 16:18:13 +0100 Subject: [PATCH 08/35] [create-pull-request] automated change (#140) Co-authored-by: shopwareBot --- SwagCommercial-storeapi.json | 1466 ++++++++++++++++++---------------- 1 file changed, 776 insertions(+), 690 deletions(-) diff --git a/SwagCommercial-storeapi.json b/SwagCommercial-storeapi.json index 8c644e6..a5fb847 100644 --- a/SwagCommercial-storeapi.json +++ b/SwagCommercial-storeapi.json @@ -9636,6 +9636,12 @@ "items": { "$ref": "#/components/schemas/QuoteComment" } + }, + "documents": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QuoteDocument" + } } }, "type": "object" @@ -9938,6 +9944,86 @@ }, "type": "object" }, + "QuoteDocument": { + "required": [ + "documentTypeId", + "fileType", + "quoteId", + "config", + "deepLinkCode", + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "documentNumber": { + "type": "string" + }, + "documentTypeId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "fileType": { + "type": "string" + }, + "quoteId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "quoteVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "config": { + "type": "object" + }, + "sent": { + "type": "boolean" + }, + "static": { + "type": "boolean" + }, + "active": { + "type": "boolean" + }, + "deepLinkCode": { + "type": "string" + }, + "documentMediaFileId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "documentType": { + "$ref": "#/components/schemas/DocumentType" + }, + "quote": { + "$ref": "#/components/schemas/Quote" + }, + "documentMediaFile": { + "$ref": "#/components/schemas/Media" + } + }, + "type": "object" + }, "QuoteEmployee": { "required": [ "firstName", @@ -12640,72 +12726,52 @@ }, "type": "object" }, - "ProductListingResult": { + "Sitemap": { "allOf": [ { - "$ref": "#/components/schemas/EntitySearchResult" + "$ref": "#/components/schemas/ArrayStruct" }, { "type": "object", "properties": { - "currentFilters": { - "type": "object", - "description": "Contains the state of the filters. These can be used to create listing filters.", - "properties": { - "navigationId": { - "type": "string" - }, - "manufacturer": { - "type": "array", - "items": { - "type": "object" - } - }, - "price": { - "type": "object", - "properties": { - "min": { - "type": "integer" - }, - "max": { - "type": "integer" - } - } - }, - "rating": { - "type": "integer" - }, - "shipping-free": { - "type": "boolean" - }, - "properties": { - "type": "array", - "items": { - "type": "object" - } - } - } - }, - "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" - } - }, - "sorting": { + "filename": { "type": "string" }, - "elements": { + "created": { + "type": "string", + "format": "date-time" + } + } + } + ] + }, + "CartItems": { + "allOf": [ + { + "$ref": "#/components/schemas/ArrayStruct" + }, + { + "type": "object", + "properties": { + "items": { "type": "array", "items": { - "$ref": "#/components/schemas/Product" + "$ref": "#/components/schemas/LineItem" } } } } ] }, + "Struct": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "description": "Alias which can be used to restrict response fields. For more information see [includes](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#includes-apialias)." + } + } + }, "Cart": { "allOf": [ { @@ -12802,89 +12868,181 @@ } ] }, - "LineItem": { + "ProductDetailResponse": { "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "id": { - "type": "string" - }, - "referencedId": { - "type": "string" - }, - "label": { - "type": "string" - }, - "quantity": { - "type": "integer", - "format": "int32" - }, - "type": { - "type": "string" - }, - "good": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "removable": { - "type": "boolean" - }, - "stackable": { - "type": "boolean" + "product": { + "$ref": "#/components/schemas/Product" }, - "modified": { - "type": "boolean" + "configurator": { + "type": "array", + "description": "List of property groups with their corresponding options and information on how to display them.", + "items": { + "$ref": "#/components/schemas/PropertyGroup" + } } } }, - "SalesChannelContext": { - "allOf": [ - { - "$ref": "#/components/schemas/ArrayStruct" + "OrderRouteResponse": { + "type": "object", + "properties": { + "orders": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" + } }, - { + "paymentChangeable": { "type": "object", - "properties": { - "token": { - "description": "Context the user session", - "type": "string" - }, - "currentCustomerGroup": { - "type": "object", - "description": "Customer group of the current user", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } - } - }, - "fallbackCustomerGroup": { - "description": "Fallback group if the default customer group is not applicable", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } - } - }, - "currency": { - "type": "object", - "description": "Currency associated with the current user", - "properties": { - "isoCode": { - "type": "string" - }, - "factor": { - "type": "integer" - }, - "symbol": { + "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" + } + } + } + }, + "CrossSellingElementCollection": { + "type": "array", + "items": { + "type": "object", + "properties": { + "crossSelling": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "position": { + "type": "integer", + "format": "int32" + }, + "sortBy": { + "type": "string" + }, + "sortDirection": { + "type": "string" + }, + "limit": { + "type": "integer", + "format": "int32" + }, + "active": { + "type": "boolean" + }, + "productId": { + "type": "string" + }, + "productStreamId": { + "type": "string" + }, + "type": { + "type": "string" + } + } + }, + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "total": { + "type": "integer", + "format": "int32" + } + } + } + }, + "EntitySearchResult": { + "allOf": [ + { + "$ref": "#/components/schemas/ArrayStruct" + }, + { + "type": "object", + "properties": { + "entity": { + "type": "string" + }, + "total": { + "type": "integer", + "description": "The total number of found entities" + }, + "aggregations": { + "type": "array", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", + "items": { + "type": "object" + } + }, + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." + }, + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." + } + } + } + ] + }, + "SuccessResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + } + } + }, + "SalesChannelContext": { + "allOf": [ + { + "$ref": "#/components/schemas/ArrayStruct" + }, + { + "type": "object", + "properties": { + "token": { + "description": "Context the user session", + "type": "string" + }, + "currentCustomerGroup": { + "type": "object", + "description": "Customer group of the current user", + "properties": { + "name": { + "type": "string" + }, + "displayGross": { + "type": "boolean" + } + } + }, + "fallbackCustomerGroup": { + "description": "Fallback group if the default customer group is not applicable", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "displayGross": { + "type": "boolean" + } + } + }, + "currency": { + "type": "object", + "description": "Currency associated with the current user", + "properties": { + "isoCode": { + "type": "string" + }, + "factor": { + "type": "integer" + }, + "symbol": { "type": "string" }, "shortName": { @@ -13213,72 +13371,178 @@ } ] }, - "AccountNewsletterRecipientResult": { - "allOf": [ - { - "$ref": "#/components/schemas/Struct" + "Criteria": { + "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", + "properties": { + "page": { + "description": "Search result page", + "type": "integer" }, - { - "type": "object", - "properties": { - "status": { - "type": "string" - } - } - } - ] - }, - "CrossSellingElementCollection": { - "type": "array", - "items": { - "type": "object", - "properties": { - "crossSelling": { + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { "type": "object", "properties": { - "name": { + "type": { "type": "string" }, - "position": { - "type": "integer", - "format": "int32" - }, - "sortBy": { + "field": { "type": "string" }, - "sortDirection": { + "value": { + "type": "string" + } + }, + "required": [ + "type", + "field", + "value" + ] + } + }, + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "type": "object", + "properties": { + "field": { "type": "string" }, - "limit": { - "type": "integer", - "format": "int32" + "order": { + "type": "string" }, - "active": { + "naturalSorting": { "type": "boolean" - }, - "productId": { + } + }, + "required": [ + "field" + ] + } + }, + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "type": "object", + "properties": { + "type": { "type": "string" }, - "productStreamId": { + "field": { "type": "string" }, - "type": { + "value": { "type": "string" } - } - }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - }, - "total": { - "type": "integer", - "format": "int32" + }, + "required": [ + "type", + "field", + "value" + ] } - } - } + }, + "associations": { + "type": "object", + "description": "Used to fetch associations which are not fetched by default." + }, + "aggregations": { + "type": "array", + "description": "Used to perform aggregations on the search result. For more information, see [Search Queries > Aggregations](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#aggregations)", + "items": { + "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" + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + } + }, + "required": [ + "name", + "type", + "field" + ] + } + }, + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "fields": { + "type": "array", + "description": "Fields which should be returned in the search result.", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "total-count-mode": { + "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" + ] + } + } + }, + "LineItem": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "referencedId": { + "type": "string" + }, + "label": { + "type": "string" + }, + "quantity": { + "type": "integer", + "format": "int32" + }, + "type": { + "type": "string" + }, + "good": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "removable": { + "type": "boolean" + }, + "stackable": { + "type": "boolean" + }, + "modified": { + "type": "boolean" + } + } }, "FindProductVariantRouteResponse": { "type": "object", @@ -13300,24 +13564,6 @@ } } }, - "CartItems": { - "allOf": [ - { - "$ref": "#/components/schemas/ArrayStruct" - }, - { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - } - } - } - ] - }, "ProductListingCriteria": { "allOf": [ { @@ -13408,31 +13654,87 @@ } ] }, - "OrderRouteResponse": { + "ProductListingFlags": { "type": "object", + "description": "Additional flags for product listings", "properties": { - "orders": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order" - } + "no-aggregations": { + "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", + "type": "string", + "nullable": true }, - "paymentChangeable": { - "type": "object", - "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", - "additionalProperties": { - "type": "boolean" - } + "only-aggregations": { + "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", + "type": "string", + "nullable": true } } }, - "SuccessResponse": { - "type": "object", - "properties": { - "success": { - "type": "boolean" + "ProductListingResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EntitySearchResult" + }, + { + "type": "object", + "properties": { + "currentFilters": { + "type": "object", + "description": "Contains the state of the filters. These can be used to create listing filters.", + "properties": { + "navigationId": { + "type": "string" + }, + "manufacturer": { + "type": "array", + "items": { + "type": "object" + } + }, + "price": { + "type": "object", + "properties": { + "min": { + "type": "integer" + }, + "max": { + "type": "integer" + } + } + }, + "rating": { + "type": "integer" + }, + "shipping-free": { + "type": "boolean" + }, + "properties": { + "type": "array", + "items": { + "type": "object" + } + } + } + }, + "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" + } + }, + "sorting": { + "type": "string" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + } + } } - } + ] }, "WishlistLoadRouteResponse": { "type": "object", @@ -13798,259 +14100,43 @@ } } }, - "ArrayStruct": { - "$ref": "#/components/schemas/Struct" - }, - "Sitemap": { + "AccountNewsletterRecipientResult": { "allOf": [ { - "$ref": "#/components/schemas/ArrayStruct" + "$ref": "#/components/schemas/Struct" }, { "type": "object", "properties": { - "filename": { + "status": { "type": "string" - }, - "created": { - "type": "string", - "format": "date-time" } } } ] }, - "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" - } - } + "ArrayStruct": { + "$ref": "#/components/schemas/Struct" + }, + "NavigationRouteResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" } }, - "Criteria": { + "NaturalLanguageSearchTermResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/NaturalLanguageSearchTerm" + } + }, + "NaturalLanguageSearchTerm": { "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", - "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "limit": { - "description": "Number of items per result page", - "type": "integer" - }, - "filter": { - "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "field": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "required": [ - "type", - "field", - "value" - ] - } - }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "type": "object", - "properties": { - "field": { - "type": "string" - }, - "order": { - "type": "string" - }, - "naturalSorting": { - "type": "boolean" - } - }, - "required": [ - "field" - ] - } - }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "field": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "required": [ - "type", - "field", - "value" - ] - } - }, - "associations": { - "type": "object", - "description": "Used to fetch associations which are not fetched by default." - }, - "aggregations": { - "type": "array", - "description": "Used to perform aggregations on the search result. For more information, see [Search Queries > Aggregations](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#aggregations)", - "items": { - "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" - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - } - }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "fields": { - "type": "array", - "description": "Fields which should be returned in the search result.", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "total-count-mode": { - "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" - ] - } - } - }, - "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 - } - } - }, - "Struct": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "description": "Alias which can be used to restrict response fields. For more information see [includes](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#includes-apialias)." - } - } - }, - "NavigationRouteResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - }, - "EntitySearchResult": { - "allOf": [ - { - "$ref": "#/components/schemas/ArrayStruct" - }, - { - "type": "object", - "properties": { - "entity": { - "type": "string" - }, - "total": { - "type": "integer", - "description": "The total number of found entities" - }, - "aggregations": { - "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", - "items": { - "type": "object" - } - }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." - }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." - } - } - } - ] - }, - "NaturalLanguageSearchTermResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/NaturalLanguageSearchTerm" - } - }, - "NaturalLanguageSearchTerm": { - "type": "object", - "required": [ - "term", - "reason", - "apiAlias" - ], + "required": [ + "term", + "reason", + "apiAlias" + ], "properties": { "term": { "type": "string" @@ -14276,14 +14362,14 @@ } ], "paths": { - "/store-api/employee/create": { + "/store-api/role/create": { "post": { "tags": [ "B2B" ], - "summary": "Create a single employee and returns the employee", - "description": "This route is used to create and return an employee", - "operationId": "createEmployee", + "summary": "Create a single role and returns the role", + "description": "This route is used to create and return an role", + "operationId": "createRole", "parameters": [], "requestBody": { "required": true, @@ -14291,21 +14377,20 @@ "application/json": { "schema": { "properties": { - "firstName": { - "description": "First name of the new employee", - "type": "string" - }, - "lastName": { - "description": "Last name of the new employee", + "name": { + "description": "Name of the new role", "type": "string" }, - "email": { - "description": "Email of the new employee", - "type": "string" + "permissions": { + "description": "Permissions of the new role", + "type": "array", + "items": { + "type": "string" + } }, - "roleId": { - "description": "Id of the role of the new employee", - "type": "string" + "isDefaultRole": { + "description": "Ability to set the new role as default", + "type": "boolean" } }, "type": "object" @@ -14315,11 +14400,11 @@ }, "responses": { "200": { - "description": "Employee entity", + "description": "Role entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/B2bEmployee" + "$ref": "#/components/schemas/B2bComponentsRole" } } } @@ -14332,14 +14417,14 @@ ] } }, - "/store-api/employee": { - "post": { + "/store-api/role": { + "get": { "tags": [ "B2B" ], - "summary": "Fetch a list of employees", - "description": "This route is used to load employees", - "operationId": "readEmployees", + "summary": "Fetch a list of roles", + "description": "This route is used to load roles", + "operationId": "readRoles", "parameters": [], "requestBody": { "required": false, @@ -14357,7 +14442,7 @@ }, "responses": { "200": { - "description": "Entity search result containing employees", + "description": "Entity search result containing roles", "content": { "application/json": { "schema": { @@ -14368,7 +14453,63 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/B2bEmployee" + "$ref": "#/components/schemas/B2bComponentsRole" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + }, + "post": { + "tags": [ + "B2B" + ], + "summary": "Fetch a list of roles", + "description": "This route is used to load roles", + "operationId": "readRolesPOST", + "parameters": [], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Entity search result containing roles", + "content": { + "application/json": { + "schema": { + "type": "object", + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/B2bComponentsRole" } } }, @@ -14390,19 +14531,19 @@ ] } }, - "/store-api/employee/{id}": { - "post": { + "/store-api/role/{id}": { + "get": { "tags": [ "B2B" ], - "summary": "Fetch a one employee by id", - "description": "This route is used to fetch one employee by id", - "operationId": "readEmployee", + "summary": "Fetch a one role by id", + "description": "This route is used to fetch one role by id", + "operationId": "readRole", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the employee to be fetched", + "description": "Identifier of the role to be fetched", "required": true, "schema": { "type": "string", @@ -14412,11 +14553,11 @@ ], "responses": { "200": { - "description": "Employee entity", + "description": "Role entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/B2bEmployee" + "$ref": "#/components/schemas/B2bComponentsRole" } } } @@ -14432,14 +14573,14 @@ "tags": [ "B2B" ], - "summary": "Update a one employee by id", - "description": "This route is used to update one employee by id", - "operationId": "updateEmployee", + "summary": "Update a one role by id", + "description": "This route is used to update one role by id", + "operationId": "updateRole", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the employee to be updated", + "description": "Identifier of the role to be updated", "required": true, "schema": { "type": "string", @@ -14453,21 +14594,20 @@ "application/json": { "schema": { "properties": { - "firstName": { - "description": "New first name of the employee", - "type": "string" - }, - "lastName": { - "description": "New last name of the employee", + "name": { + "description": "New name of the role", "type": "string" }, - "email": { - "description": "New email of the employee", - "type": "string" + "permissions": { + "description": "New permissions of the role", + "type": "array", + "items": { + "type": "string" + } }, - "roleId": { - "description": "New id of the role of the employee", - "type": "string" + "isDefaultRole": { + "description": "Ability to set the role as default", + "type": "boolean" } }, "type": "object" @@ -14477,11 +14617,11 @@ }, "responses": { "200": { - "description": "Employee entity", + "description": "Role entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/B2bEmployee" + "$ref": "#/components/schemas/B2bComponentsRole" } } } @@ -14497,14 +14637,14 @@ "tags": [ "B2B" ], - "summary": "Delete an employee by id", - "description": "This route is used to delete one employee by id", - "operationId": "deleteEmployee", + "summary": "Delete an role by id", + "description": "This route is used to delete one role by id", + "operationId": "deleteRole", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the employee to be deleted", + "description": "Identifier of the role to be fetched", "required": true, "schema": { "type": "string", @@ -14524,49 +14664,51 @@ ] } }, - "/store-api/employee/reinvite/{id}": { - "post": { + "/store-api/role/permissions": { + "get": { "tags": [ "B2B" ], - "summary": "Reinvite employee by id", - "description": "This route is used to reinvite an employee via email by id", - "operationId": "reinviteEmployee", - "parameters": [ - { - "name": "id", - "in": "path", - "description": "Identifier of the employee to be reinvited", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "properties": { - "storefrontUrl": { - "description": "URL of the storefront domain", - "type": "string" - } - }, - "type": "object" - } - } - } - }, + "summary": "Fetch a available permissions", + "description": "This route is used to fetch all available permissions", + "operationId": "readPermissions", "responses": { "200": { - "description": "Employee entity", + "description": "Permission collection", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/B2bEmployee" + "type": "object", + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "type": "object", + "properties": { + "permissionName": { + "type": "string" + }, + "permissionDependencies": { + "type": "array", + "items": { + "type": "string" + } + }, + "permissionGroupName": { + "type": "string" + } + } + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -14579,35 +14721,23 @@ ] } }, - "/store-api/role/create": { + "/store-api/role/default": { "post": { "tags": [ "B2B" ], - "summary": "Create a single role and returns the role", - "description": "This route is used to create and return an role", - "operationId": "createRole", - "parameters": [], + "summary": "Sets the default role Id for new employees", + "description": "This route is used to update the defaultRoleId for new employees", + "operationId": "updateDefaultRoleId", "requestBody": { "required": true, "content": { "application/json": { "schema": { "properties": { - "name": { - "description": "Name of the new role", + "id": { + "description": "Id of the roleId to be set as default", "type": "string" - }, - "permissions": { - "description": "Permissions of the new role", - "type": "array", - "items": { - "type": "string" - } - }, - "isDefaultRole": { - "description": "Ability to set the new role as default", - "type": "boolean" } }, "type": "object" @@ -14616,15 +14746,8 @@ } }, "responses": { - "200": { - "description": "Role entity", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/B2bComponentsRole" - } - } - } + "204": { + "description": "No content response" } }, "security": [ @@ -14634,52 +14757,50 @@ ] } }, - "/store-api/role": { - "get": { + "/store-api/employee/create": { + "post": { "tags": [ "B2B" ], - "summary": "Fetch a list of roles", - "description": "This route is used to load roles", - "operationId": "readRoles", + "summary": "Create a single employee and returns the employee", + "description": "This route is used to create and return an employee", + "operationId": "createEmployee", "parameters": [], "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "properties": { + "firstName": { + "description": "First name of the new employee", + "type": "string" + }, + "lastName": { + "description": "Last name of the new employee", + "type": "string" + }, + "email": { + "description": "Email of the new employee", + "type": "string" + }, + "roleId": { + "description": "Id of the role of the new employee", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "Entity search result containing roles", + "description": "Employee entity", "content": { "application/json": { "schema": { - "type": "object", - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/B2bComponentsRole" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/B2bEmployee" } } } @@ -14690,14 +14811,16 @@ "ApiKey": [] } ] - }, + } + }, + "/store-api/employee": { "post": { "tags": [ "B2B" ], - "summary": "Fetch a list of roles", - "description": "This route is used to load roles", - "operationId": "readRolesPOST", + "summary": "Fetch a list of employees", + "description": "This route is used to load employees", + "operationId": "readEmployees", "parameters": [], "requestBody": { "required": false, @@ -14715,7 +14838,7 @@ }, "responses": { "200": { - "description": "Entity search result containing roles", + "description": "Entity search result containing employees", "content": { "application/json": { "schema": { @@ -14726,7 +14849,7 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/B2bComponentsRole" + "$ref": "#/components/schemas/B2bEmployee" } } }, @@ -14748,19 +14871,19 @@ ] } }, - "/store-api/role/{id}": { - "get": { + "/store-api/employee/{id}": { + "post": { "tags": [ "B2B" ], - "summary": "Fetch a one role by id", - "description": "This route is used to fetch one role by id", - "operationId": "readRole", + "summary": "Fetch a one employee by id", + "description": "This route is used to fetch one employee by id", + "operationId": "readEmployee", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the role to be fetched", + "description": "Identifier of the employee to be fetched", "required": true, "schema": { "type": "string", @@ -14770,11 +14893,11 @@ ], "responses": { "200": { - "description": "Role entity", + "description": "Employee entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/B2bComponentsRole" + "$ref": "#/components/schemas/B2bEmployee" } } } @@ -14790,14 +14913,14 @@ "tags": [ "B2B" ], - "summary": "Update a one role by id", - "description": "This route is used to update one role by id", - "operationId": "updateRole", + "summary": "Update a one employee by id", + "description": "This route is used to update one employee by id", + "operationId": "updateEmployee", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the role to be updated", + "description": "Identifier of the employee to be updated", "required": true, "schema": { "type": "string", @@ -14811,20 +14934,21 @@ "application/json": { "schema": { "properties": { - "name": { - "description": "New name of the role", + "firstName": { + "description": "New first name of the employee", "type": "string" }, - "permissions": { - "description": "New permissions of the role", - "type": "array", - "items": { - "type": "string" - } + "lastName": { + "description": "New last name of the employee", + "type": "string" }, - "isDefaultRole": { - "description": "Ability to set the role as default", - "type": "boolean" + "email": { + "description": "New email of the employee", + "type": "string" + }, + "roleId": { + "description": "New id of the role of the employee", + "type": "string" } }, "type": "object" @@ -14834,11 +14958,11 @@ }, "responses": { "200": { - "description": "Role entity", + "description": "Employee entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/B2bComponentsRole" + "$ref": "#/components/schemas/B2bEmployee" } } } @@ -14854,14 +14978,14 @@ "tags": [ "B2B" ], - "summary": "Delete an role by id", - "description": "This route is used to delete one role by id", - "operationId": "deleteRole", + "summary": "Delete an employee by id", + "description": "This route is used to delete one employee by id", + "operationId": "deleteEmployee", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the role to be fetched", + "description": "Identifier of the employee to be deleted", "required": true, "schema": { "type": "string", @@ -14881,79 +15005,34 @@ ] } }, - "/store-api/role/permissions": { - "get": { + "/store-api/employee/reinvite/{id}": { + "post": { "tags": [ "B2B" ], - "summary": "Fetch a available permissions", - "description": "This route is used to fetch all available permissions", - "operationId": "readPermissions", - "responses": { - "200": { - "description": "Permission collection", - "content": { - "application/json": { - "schema": { - "type": "object", - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "type": "object", - "properties": { - "permissionName": { - "type": "string" - }, - "permissionDependencies": { - "type": "array", - "items": { - "type": "string" - } - }, - "permissionGroupName": { - "type": "string" - } - } - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } - } - }, - "security": [ + "summary": "Reinvite employee by id", + "description": "This route is used to reinvite an employee via email by id", + "operationId": "reinviteEmployee", + "parameters": [ { - "ApiKey": [] + "name": "id", + "in": "path", + "description": "Identifier of the employee to be reinvited", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } - ] - } - }, - "/store-api/role/default": { - "post": { - "tags": [ - "B2B" ], - "summary": "Sets the default role Id for new employees", - "description": "This route is used to update the defaultRoleId for new employees", - "operationId": "updateDefaultRoleId", "requestBody": { "required": true, "content": { "application/json": { "schema": { "properties": { - "id": { - "description": "Id of the roleId to be set as default", + "storefrontUrl": { + "description": "URL of the storefront domain", "type": "string" } }, @@ -14963,8 +15042,15 @@ } }, "responses": { - "204": { - "description": "No content response" + "200": { + "description": "Employee entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/B2bEmployee" + } + } + } } }, "security": [ From 1aaa3ea79f9d42a75d8d3e0ee4b2d599265fb2be Mon Sep 17 00:00:00 2001 From: Bojan Rajh Date: Thu, 26 Sep 2024 13:44:59 +0200 Subject: [PATCH 09/35] feat: upgrade to v4 --- .github/workflows/add_descriptions.yml | 2 +- .github/workflows/base_schema.yml | 10 +++++----- .github/workflows/plugin_commercial_schema.yml | 4 ++-- .github/workflows/plugin_digitalsalesroom_schema.yml | 4 ++-- .github/workflows/validate_descriptions.yml | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/add_descriptions.yml b/.github/workflows/add_descriptions.yml index c83278c..38c52c6 100644 --- a/.github/workflows/add_descriptions.yml +++ b/.github/workflows/add_descriptions.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: install yq uses: cachix/install-nix-action@v18 diff --git a/.github/workflows/base_schema.yml b/.github/workflows/base_schema.yml index aa37a70..296cd98 100644 --- a/.github/workflows/base_schema.yml +++ b/.github/workflows/base_schema.yml @@ -16,12 +16,12 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repo - uses: actions/checkout@v3 + uses: actions/checkout@v4 - shell: bash run: | cp storeapi.json storeapi-original.json - name: Upload original file - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: original-file path: storeapi-original.json @@ -43,10 +43,10 @@ jobs: BRANCH_NAME: ${{ github.head_ref || github.ref_name }} steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: download api schema - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: ${{needs.generate-schema.outputs.api_schema}} @@ -62,7 +62,7 @@ jobs: done - name: Download original file - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: original-file diff --git a/.github/workflows/plugin_commercial_schema.yml b/.github/workflows/plugin_commercial_schema.yml index 2808dde..eee5daa 100644 --- a/.github/workflows/plugin_commercial_schema.yml +++ b/.github/workflows/plugin_commercial_schema.yml @@ -39,10 +39,10 @@ jobs: needs: [generate-schema,vars] steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: download api schema - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: ${{needs.generate-schema.outputs.api_schema}} diff --git a/.github/workflows/plugin_digitalsalesroom_schema.yml b/.github/workflows/plugin_digitalsalesroom_schema.yml index b293449..f079e77 100644 --- a/.github/workflows/plugin_digitalsalesroom_schema.yml +++ b/.github/workflows/plugin_digitalsalesroom_schema.yml @@ -44,10 +44,10 @@ jobs: needs: [generate-schema,vars] steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: download api schema - uses: actions/download-artifact@v3 + uses: actions/download-artifact@v4 with: name: ${{needs.generate-schema.outputs.api_schema}} diff --git a/.github/workflows/validate_descriptions.yml b/.github/workflows/validate_descriptions.yml index 440166b..fc4642b 100644 --- a/.github/workflows/validate_descriptions.yml +++ b/.github/workflows/validate_descriptions.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Validate with yq uses: mikefarah/yq@master From 1dd2b208499c56ed093abd8adffbff540d6f2d66 Mon Sep 17 00:00:00 2001 From: Bojan Rajh Date: Thu, 26 Sep 2024 13:58:32 +0200 Subject: [PATCH 10/35] fix: commercial to 6.6 --- .github/workflows/plugin_commercial_schema.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/plugin_commercial_schema.yml b/.github/workflows/plugin_commercial_schema.yml index eee5daa..d29646c 100644 --- a/.github/workflows/plugin_commercial_schema.yml +++ b/.github/workflows/plugin_commercial_schema.yml @@ -30,7 +30,7 @@ jobs: schema_file: ${{ needs.vars.outputs.PLUGIN_NAME }}-storeapi.json plugin_name: ${{ needs.vars.outputs.PLUGIN_NAME }} plugin_url: ${{ needs.vars.outputs.PLUGIN_URL }} - git_options: '-b 6.5.x' + git_options: '-b 6.6.x' shopware_version: ${{ inputs.shopware_version }} secrets: inherit open-pr: From 9217de5b6cbbedc4b5d257183f164153ce2e4bb6 Mon Sep 17 00:00:00 2001 From: Bojan Rajh Date: Thu, 26 Sep 2024 14:09:30 +0200 Subject: [PATCH 11/35] fix: remove hardcoded version --- .github/workflows/manual_versioning.yml | 2 +- .github/workflows/plugin_commercial_schema.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/manual_versioning.yml b/.github/workflows/manual_versioning.yml index d36af4c..80d2b1f 100644 --- a/.github/workflows/manual_versioning.yml +++ b/.github/workflows/manual_versioning.yml @@ -1,4 +1,4 @@ -name: Schedule version PRs +name: Manual versioning on: workflow_dispatch: diff --git a/.github/workflows/plugin_commercial_schema.yml b/.github/workflows/plugin_commercial_schema.yml index d29646c..dfbc194 100644 --- a/.github/workflows/plugin_commercial_schema.yml +++ b/.github/workflows/plugin_commercial_schema.yml @@ -30,7 +30,7 @@ jobs: schema_file: ${{ needs.vars.outputs.PLUGIN_NAME }}-storeapi.json plugin_name: ${{ needs.vars.outputs.PLUGIN_NAME }} plugin_url: ${{ needs.vars.outputs.PLUGIN_URL }} - git_options: '-b 6.6.x' + #git_options: '-b 6.6.x' shopware_version: ${{ inputs.shopware_version }} secrets: inherit open-pr: From 2835e9c54617267a484ffa55fe2a057e64a354f9 Mon Sep 17 00:00:00 2001 From: Bojan Rajh Date: Thu, 26 Sep 2024 14:20:13 +0200 Subject: [PATCH 12/35] fix: upgrade deps --- .github/workflows/plugin_digitalsalesroom_schema.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/plugin_digitalsalesroom_schema.yml b/.github/workflows/plugin_digitalsalesroom_schema.yml index f079e77..1248321 100644 --- a/.github/workflows/plugin_digitalsalesroom_schema.yml +++ b/.github/workflows/plugin_digitalsalesroom_schema.yml @@ -11,7 +11,7 @@ on: env: PLUGIN_NAME: SwagGuidedShopping PLUGIN_URL: gitlab.shopware.com/shopware/6/services/swagguidedshopping.git - COMPOSER_PACKAGES: shopware-pwa/shopware-pwa dev-master symfony/mercure ^0.6.2 spatie/icalendar-generator ^2.5 + COMPOSER_PACKAGES: shopware-pwa/shopware-pwa ^0.5 symfony/mercure ^0.6.4 spatie/icalendar-generator ^2.6 # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: From 19f8c9e8470e73c54af6b8bcb2f675f05a165c33 Mon Sep 17 00:00:00 2001 From: Bojan Rajh Date: Thu, 26 Sep 2024 14:30:37 +0200 Subject: [PATCH 13/35] fix: upgrade peter-evans/create-pull-request to v7 --- .github/workflows/add_descriptions.yml | 2 +- .github/workflows/base_schema.yml | 2 +- .github/workflows/plugin_commercial_schema.yml | 2 +- .github/workflows/plugin_digitalsalesroom_schema.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/add_descriptions.yml b/.github/workflows/add_descriptions.yml index 38c52c6..f607abc 100644 --- a/.github/workflows/add_descriptions.yml +++ b/.github/workflows/add_descriptions.yml @@ -28,7 +28,7 @@ jobs: done - name: Create PR - uses: peter-evans/create-pull-request@v4 + uses: peter-evans/create-pull-request@v7 with: add-paths: storeapi.json author: shopwareBot diff --git a/.github/workflows/base_schema.yml b/.github/workflows/base_schema.yml index 296cd98..e3f8587 100644 --- a/.github/workflows/base_schema.yml +++ b/.github/workflows/base_schema.yml @@ -76,7 +76,7 @@ jobs: - name: Create PR if: ${{ env.FILE_DIFFERENCE == 1 }} - uses: peter-evans/create-pull-request@v4 + uses: peter-evans/create-pull-request@v7 with: add-paths: storeapi.json author: shopwareBot diff --git a/.github/workflows/plugin_commercial_schema.yml b/.github/workflows/plugin_commercial_schema.yml index dfbc194..ad84fe2 100644 --- a/.github/workflows/plugin_commercial_schema.yml +++ b/.github/workflows/plugin_commercial_schema.yml @@ -56,7 +56,7 @@ jobs: jq . ${{ needs.vars.outputs.PLUGIN_NAME }}-storeapi.json | sponge ${{ needs.vars.outputs.PLUGIN_NAME }}-storeapi.json - name: Create DSR PR - uses: peter-evans/create-pull-request@v4 + uses: peter-evans/create-pull-request@v7 with: add-paths: ${{ needs.vars.outputs.PLUGIN_NAME }}-storeapi.json author: shopwareBot diff --git a/.github/workflows/plugin_digitalsalesroom_schema.yml b/.github/workflows/plugin_digitalsalesroom_schema.yml index 1248321..a0799ce 100644 --- a/.github/workflows/plugin_digitalsalesroom_schema.yml +++ b/.github/workflows/plugin_digitalsalesroom_schema.yml @@ -61,7 +61,7 @@ jobs: jq . ${{ needs.vars.outputs.PLUGIN_NAME }}-storeapi.json | sponge ${{ needs.vars.outputs.PLUGIN_NAME }}-storeapi.json - name: Create DSR PR - uses: peter-evans/create-pull-request@v4 + uses: peter-evans/create-pull-request@v7 with: add-paths: ${{ needs.vars.outputs.PLUGIN_NAME }}-storeapi.json author: shopwareBot From f5df3a1d99082bcbda3a2c8c1cca1a55e019bca7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 27 Sep 2024 09:01:01 +0200 Subject: [PATCH 14/35] [create-pull-request] automated change (#292) Co-authored-by: shopwareBot --- SwagCommercial-storeapi.json | 23036 ++++++++++++++++++++------------- 1 file changed, 13736 insertions(+), 9300 deletions(-) diff --git a/SwagCommercial-storeapi.json b/SwagCommercial-storeapi.json index a5fb847..9502526 100644 --- a/SwagCommercial-storeapi.json +++ b/SwagCommercial-storeapi.json @@ -3,7 +3,11 @@ "info": { "title": "Shopware Store API", "description": "This endpoint reference contains an overview of all endpoints comprising the Shopware Store API", - "version": "6.5.7.3" + "license": { + "name": "MIT", + "url": "https://github.com/shopware/shopware/blob/trunk/LICENSE" + }, + "version": "6.6.6.1" }, "servers": [ { @@ -894,9 +898,9 @@ }, "type": "object" }, - "B2bComponentsRole": { + "B2bComponentsApprovalRule": { + "description": "Added since version: 6.6.0.0", "required": [ - "name", "createdAt" ], "properties": { @@ -904,18 +908,43 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "name": { - "type": "string" + "reviewerRoleId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "permissions": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": false - } + "affectedRoleId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "customFields": { - "type": "object" + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "reviewerRole": { + "$ref": "#/components/schemas/B2bComponentsRole" + }, + "affectedRole": { + "$ref": "#/components/schemas/B2bComponentsRole" + } + }, + "type": "object" + }, + "B2bComponentsApprovalRuleAppScriptCondition": { + "description": "Added since version: 6.6.3.0", + "required": [ + "createdAt", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, "createdAt": { "type": "string", @@ -926,16 +955,26 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "translated": { + "type": "object" } }, "type": "object" }, - "B2bEmployee": { + "B2bComponentsPendingOrder": { + "description": "Added since version: 6.6.0.0", "required": [ + "billingAddressId", + "customerId", + "employeeId", + "stateId", + "currencyId", + "countryId", + "salesChannelId", + "shippingMethodId", + "paymentMethodId", "languageId", - "firstName", - "lastName", - "email", "createdAt" ], "properties": { @@ -943,20 +982,114 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "orderId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "billingAddressId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "customerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "employeeId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "decidedById": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "approvalRuleId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "stateId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "salesChannelId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingMethodId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "paymentMethodId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "languageId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "active": { - "type": "boolean" + "price": { + "required": [ + "netPrice", + "totalPrice", + "positionPrice", + "rawTotal", + "taxStatus" + ], + "properties": { + "netPrice": { + "type": "number", + "format": "float" + }, + "totalPrice": { + "type": "number", + "format": "float" + }, + "calculatedTaxes": { + "type": "object" + }, + "taxRules": { + "type": "object" + }, + "positionPrice": { + "type": "number", + "format": "float" + }, + "rawTotal": { + "type": "number", + "format": "float" + }, + "taxStatus": { + "type": "string" + } + }, + "type": "object" }, - "firstName": { - "type": "string" + "originalPrice": { + "type": "number", + "format": "float" }, - "lastName": { - "type": "string" + "taxStatus": { + "type": "string", + "readOnly": true }, - "email": { + "amountTotal": { + "type": "number", + "format": "float", + "readOnly": true + }, + "amountNet": { + "type": "number", + "format": "float", + "readOnly": true + }, + "reason": { "type": "string" }, "customFields": { @@ -972,19 +1105,60 @@ "format": "date-time", "readOnly": true }, - "role": { - "$ref": "#/components/schemas/B2bComponentsRole" + "order": { + "$ref": "#/components/schemas/Order" + }, + "billingAddress": { + "$ref": "#/components/schemas/B2bComponentsPendingOrderAddress" + }, + "customer": { + "$ref": "#/components/schemas/Customer" + }, + "employee": { + "$ref": "#/components/schemas/B2bEmployee" + }, + "decidedBy": { + "$ref": "#/components/schemas/B2bEmployee" + }, + "approvalRule": { + "$ref": "#/components/schemas/B2bComponentsApprovalRule" + }, + "stateMachineState": { + "$ref": "#/components/schemas/StateMachineState" + }, + "currency": { + "$ref": "#/components/schemas/Currency" + }, + "country": { + "$ref": "#/components/schemas/Country" }, "language": { "$ref": "#/components/schemas/Language" + }, + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod" + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + }, + "addresses": { + "type": "array", + "items": { + "$ref": "#/components/schemas/B2bComponentsPendingOrderAddress" + } } }, "type": "object" }, - "B2bOrderEmployee": { + "B2bComponentsPendingOrderAddress": { + "description": "Added since version: 6.6.0.0", "required": [ + "id", + "countryId", "firstName", "lastName", + "street", + "city", "createdAt" ], "properties": { @@ -992,12 +1166,53 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "countryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryStateId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "firstName": { "type": "string" }, "lastName": { "type": "string" }, + "street": { + "type": "string" + }, + "zipcode": { + "type": "string" + }, + "city": { + "type": "string" + }, + "company": { + "type": "string" + }, + "department": { + "type": "string" + }, + "title": { + "type": "string" + }, + "vatId": { + "type": "string" + }, + "phoneNumber": { + "type": "string" + }, + "additionalAddressLine1": { + "type": "string" + }, + "additionalAddressLine2": { + "type": "string" + }, + "customFields": { + "type": "object" + }, "createdAt": { "type": "string", "format": "date-time", @@ -1007,14 +1222,26 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "$ref": "#/components/schemas/CountryState" + }, + "pendingOrder": { + "$ref": "#/components/schemas/B2bComponentsPendingOrder" + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, "type": "object" }, - "B2bPermission": { + "B2bComponentsRole": { "required": [ + "id", "name", - "group", "createdAt" ], "properties": { @@ -1025,15 +1252,16 @@ "name": { "type": "string" }, - "group": { - "type": "string" - }, - "dependencies": { + "permissions": { "type": "array", "items": { - "type": "string" + "type": "object", + "additionalProperties": false } }, + "customFields": { + "type": "object" + }, "createdAt": { "type": "string", "format": "date-time", @@ -1047,137 +1275,55 @@ }, "type": "object" }, - "CategoryJsonApi": { - "description": "Added since version: 6.0.0.0", + "B2bComponentsShoppingListJsonApi": { + "description": "Added since version: 6.6.2.0", "allOf": [ { "$ref": "#/components/schemas/resource" }, { "required": [ - "displayNestedProducts", - "type", - "productAssignmentType", - "createdAt", - "name" + "id", + "salesChannelId", + "customerId", + "createdAt" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "name": { + "type": "string" }, - "parentId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "active": { + "type": "boolean" }, - "parentVersionId": { + "salesChannelId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "afterCategoryId": { + "createdById": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "afterCategoryVersionId": { + "updatedById": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "mediaId": { + "customerId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "displayNestedProducts": { - "type": "boolean" - }, - "breadcrumb": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": false - }, - "readOnly": true - }, - "level": { - "type": "integer", - "format": "int64", - "readOnly": true - }, - "path": { + "employeeId": { "type": "string", - "readOnly": true - }, - "childCount": { - "type": "integer", - "format": "int64", - "readOnly": true - }, - "type": { - "type": "string" - }, - "productAssignmentType": { - "type": "string" - }, - "visible": { - "type": "boolean" - }, - "active": { - "type": "boolean" - }, - "cmsPageIdSwitched": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean" - }, - "visibleChildCount": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "integer", - "format": "int64" - }, - "name": { - "type": "string" + "pattern": "^[0-9a-f]{32}$" }, "customFields": { "type": "object" }, - "linkType": { - "type": "string" - }, - "internalLink": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "externalLink": { - "type": "string" - }, - "linkNewTab": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "metaTitle": { - "type": "string" - }, - "metaDescription": { - "type": "string" - }, - "keywords": { - "type": "string" - }, - "cmsPageId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "cmsPageVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "customEntityTypeId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "price": { + "type": "object" }, "createdAt": { "type": "string", @@ -1189,72 +1335,9 @@ "format": "date-time", "readOnly": true }, - "translated": { - "type": "object" - }, "relationships": { "properties": { - "parent": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/category/3adbdb3ac060038aa0e6e6c138ef9873/parent" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "category" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "d0e45878043844ffc41aac437e86b602" - } - } - } - }, - "type": "object" - }, - "children": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/category/3adbdb3ac060038aa0e6e6c138ef9873/children" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "category" - }, - "id": { - "type": "string", - "example": "268184c12df027f536154d099d497b31" - } - } - } - } - }, - "type": "object" - }, - "media": { + "customer": { "properties": { "links": { "type": "object", @@ -1262,7 +1345,7 @@ "related": { "type": "string", "format": "uri-reference", - "example": "/category/3adbdb3ac060038aa0e6e6c138ef9873/media" + "example": "/b2b-components-shopping-list/23cb3bfda723e05b43cb25a427ee5a25/customer" } } }, @@ -1271,50 +1354,19 @@ "properties": { "type": { "type": "string", - "example": "media" + "example": "customer" }, "id": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "example": "62933a2951ef01f4eafd9bdf4d3cd2f0" - } - } - } - }, - "type": "object" - }, - "tags": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/category/3adbdb3ac060038aa0e6e6c138ef9873/tags" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "tag" - }, - "id": { - "type": "string", - "example": "d57ac45256849d9b13e2422d91580fb9" - } + "example": "91ec1f9324753048c0096d036a694f86" } } } }, "type": "object" }, - "cmsPage": { + "employee": { "properties": { "links": { "type": "object", @@ -1322,7 +1374,7 @@ "related": { "type": "string", "format": "uri-reference", - "example": "/category/3adbdb3ac060038aa0e6e6c138ef9873/cmsPage" + "example": "/b2b-components-shopping-list/23cb3bfda723e05b43cb25a427ee5a25/employee" } } }, @@ -1331,19 +1383,19 @@ "properties": { "type": { "type": "string", - "example": "cms_page" + "example": "b2b_employee" }, "id": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "example": "7b1460918b1abb93311108f3dc021c9b" + "example": "fa5473530e4d1a5a1e1eb53d2fedb10c" } } } }, "type": "object" }, - "seoUrls": { + "lineItems": { "properties": { "links": { "type": "object", @@ -1351,7 +1403,7 @@ "related": { "type": "string", "format": "uri-reference", - "example": "/category/3adbdb3ac060038aa0e6e6c138ef9873/seoUrls" + "example": "/b2b-components-shopping-list/23cb3bfda723e05b43cb25a427ee5a25/lineItems" } } }, @@ -1362,11 +1414,11 @@ "properties": { "type": { "type": "string", - "example": "seo_url" + "example": "b2b_components_shopping_list_line_item" }, "id": { "type": "string", - "example": "5321b5a71127b8b98cdd4b068ad56c4c" + "example": "a042af1aa9f3853fe3cd7dabc065568f" } } } @@ -1382,132 +1434,232 @@ } ] }, - "Category": { - "description": "Added since version: 6.0.0.0", + "B2bComponentsShoppingList": { + "description": "Added since version: 6.6.2.0", "required": [ - "displayNestedProducts", - "type", - "productAssignmentType", - "createdAt", - "name" + "id", + "salesChannelId", + "customerId", + "createdAt" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "name": { + "type": "string" }, - "parentId": { + "active": { + "type": "boolean" + }, + "salesChannelId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "parentVersionId": { + "createdById": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "afterCategoryId": { + "updatedById": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "afterCategoryVersionId": { + "customerId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "mediaId": { + "employeeId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "displayNestedProducts": { - "type": "boolean" + "customFields": { + "type": "object" }, - "breadcrumb": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": false - }, - "readOnly": true + "price": { + "type": "object" }, - "level": { - "type": "integer", - "format": "int64", + "createdAt": { + "type": "string", + "format": "date-time", "readOnly": true }, - "path": { + "updatedAt": { "type": "string", + "format": "date-time", "readOnly": true }, - "childCount": { - "type": "integer", - "format": "int64", - "readOnly": true + "customer": { + "$ref": "#/components/schemas/Customer" }, - "type": { - "type": "string" + "employee": { + "$ref": "#/components/schemas/B2bEmployee" }, - "productAssignmentType": { - "type": "string" + "lineItems": { + "type": "array", + "items": { + "$ref": "#/components/schemas/B2bComponentsShoppingListLineItem" + } + } + }, + "type": "object" + }, + "B2bComponentsShoppingListLineItemJsonApi": { + "description": "Added since version: 6.6.2.0", + "allOf": [ + { + "$ref": "#/components/schemas/resource" }, - "visible": { - "type": "boolean" + { + "required": [ + "id", + "quantity", + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "price": { + "type": "object" + }, + "quantity": { + "type": "integer", + "format": "int64" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "relationships": { + "properties": { + "product": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/b2b-components-shopping-list-line-item/30d48c8d92682de24e11d3f72c5dd1ea/product" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "f5bf48aa40cad7891eb709fcf1fde128" + } + } + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + ] + }, + "B2bComponentsShoppingListLineItem": { + "description": "Added since version: 6.6.2.0", + "required": [ + "id", + "quantity", + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "active": { - "type": "boolean" + "productId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "cmsPageIdSwitched": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean" + "productVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "visibleChildCount": { - "description": "Runtime field, cannot be used as part of the criteria.", + "price": { + "type": "object" + }, + "quantity": { "type": "integer", "format": "int64" }, - "name": { - "type": "string" - }, - "customFields": { - "type": "object" + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, - "linkType": { - "type": "string" + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, - "internalLink": { + "product": { + "$ref": "#/components/schemas/Product" + } + }, + "type": "object" + }, + "B2bEmployee": { + "required": [ + "id", + "languageId", + "firstName", + "lastName", + "email", + "createdAt" + ], + "properties": { + "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "externalLink": { - "type": "string" + "languageId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "linkNewTab": { + "active": { "type": "boolean" }, - "description": { - "type": "string" - }, - "metaTitle": { + "firstName": { "type": "string" }, - "metaDescription": { + "lastName": { "type": "string" }, - "keywords": { + "email": { "type": "string" }, - "cmsPageId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "cmsPageVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "customEntityTypeId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "customFields": { + "type": "object" }, "createdAt": { "type": "string", @@ -1519,45 +1671,19 @@ "format": "date-time", "readOnly": true }, - "translated": { - "type": "object" - }, - "parent": { - "$ref": "#/components/schemas/Category" - }, - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - }, - "media": { - "$ref": "#/components/schemas/Media" - }, - "tags": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Tag" - } - }, - "cmsPage": { - "$ref": "#/components/schemas/CmsPage" + "role": { + "$ref": "#/components/schemas/B2bComponentsRole" }, - "seoUrls": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } + "language": { + "$ref": "#/components/schemas/Language" } }, "type": "object" }, - "CmsBlock": { - "description": "Added since version: 6.0.0.0", + "B2bOrderEmployee": { "required": [ - "position", - "type", - "sectionId", + "firstName", + "lastName", "createdAt" ], "properties": { @@ -1565,99 +1691,30 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "position": { - "type": "integer", - "format": "int64" - }, - "type": { - "type": "string" - }, - "name": { - "type": "string" - }, - "sectionPosition": { + "firstName": { "type": "string" }, - "marginTop": { + "lastName": { "type": "string" }, - "marginBottom": { - "type": "string" - }, - "marginLeft": { - "type": "string" - }, - "marginRight": { - "type": "string" - }, - "backgroundColor": { - "type": "string" - }, - "backgroundMediaId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "backgroundMediaMode": { - "type": "string" - }, - "cssClass": { - "type": "string" - }, - "visibility": { - "properties": { - "mobile": { - "type": "boolean" - }, - "desktop": { - "type": "boolean" - }, - "tablet": { - "type": "boolean" - } - }, - "type": "object" - }, - "sectionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "customFields": { - "type": "object" - }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "cmsSectionVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, "updatedAt": { "type": "string", "format": "date-time", "readOnly": true - }, - "backgroundMedia": { - "$ref": "#/components/schemas/Media" - }, - "slots": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CmsSlot" - } } }, "type": "object" }, - "CmsPage": { - "description": "Added since version: 6.0.0.0", + "B2bPermission": { "required": [ - "type", + "id", + "name", + "group", "createdAt" ], "properties": { @@ -1665,36 +1722,17 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, "name": { "type": "string" }, - "type": { - "type": "string" - }, - "entity": { - "type": "string" - }, - "cssClass": { + "group": { "type": "string" }, - "config": { - "properties": { - "backgroundColor": { - "type": "string" - } - }, - "type": "object" - }, - "previewMediaId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "customFields": { - "type": "object" + "dependencies": { + "type": "array", + "items": { + "type": "string" + } }, "createdAt": { "type": "string", @@ -1705,298 +1743,143 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "translated": { - "type": "object" - }, - "sections": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CmsSection" - } - }, - "previewMedia": { - "$ref": "#/components/schemas/Media" - }, - "landingPages": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LandingPage" - } } }, "type": "object" }, - "CmsSection": { + "CategoryJsonApi": { "description": "Added since version: 6.0.0.0", - "required": [ - "position", - "type", - "pageId", - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "position": { - "type": "integer", - "format": "int64" - }, - "type": { - "type": "string" - }, - "name": { - "type": "string" - }, - "sizingMode": { - "type": "string" - }, - "mobileBehavior": { - "type": "string" - }, - "backgroundColor": { - "type": "string" - }, - "backgroundMediaId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "backgroundMediaMode": { - "type": "string" - }, - "cssClass": { - "type": "string" - }, - "pageId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "allOf": [ + { + "$ref": "#/components/schemas/resource" }, - "visibility": { + { + "required": [ + "id", + "displayNestedProducts", + "type", + "productAssignmentType", + "createdAt", + "name" + ], "properties": { - "mobile": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "parentId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "parentVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "afterCategoryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "afterCategoryVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "mediaId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "displayNestedProducts": { "type": "boolean" }, - "desktop": { + "breadcrumb": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false + }, + "readOnly": true + }, + "level": { + "type": "integer", + "format": "int64", + "readOnly": true + }, + "path": { + "type": "string", + "readOnly": true + }, + "childCount": { + "type": "integer", + "format": "int64", + "readOnly": true + }, + "type": { + "type": "string" + }, + "productAssignmentType": { + "type": "string" + }, + "visible": { "type": "boolean" }, - "tablet": { + "active": { "type": "boolean" - } - }, - "type": "object" - }, - "customFields": { - "type": "object" - }, - "cmsPageVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "page": { - "$ref": "#/components/schemas/CmsPage" - }, - "backgroundMedia": { - "$ref": "#/components/schemas/Media" - }, - "blocks": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CmsBlock" - } - } - }, - "type": "object" - }, - "CmsSlot": { - "description": "Added since version: 6.0.0.0", - "required": [ - "type", - "slot", - "blockId", - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "type": { - "type": "string" - }, - "slot": { - "type": "string" - }, - "locked": { - "type": "boolean" - }, - "config": { - "type": "object" - }, - "customFields": { - "type": "object" - }, - "data": { - "type": "object", - "readOnly": true - }, - "blockId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "fieldConfig": { - "type": "object" - }, - "cmsBlockVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - }, - "block": { - "$ref": "#/components/schemas/CmsBlock" - } - }, - "type": "object" - }, - "CountryJsonApi": { - "description": "Added since version: 6.0.0.0", - "allOf": [ - { - "$ref": "#/components/schemas/resource" - }, - { - "required": [ - "createdAt", - "name", - "addressFormat" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "name": { - "type": "string" }, - "iso": { - "type": "string" + "cmsPageIdSwitched": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "boolean" }, - "position": { + "visibleChildCount": { + "description": "Runtime field, cannot be used as part of the criteria.", "type": "integer", "format": "int64" }, - "active": { - "type": "boolean" - }, - "shippingAvailable": { - "type": "boolean" - }, - "iso3": { - "type": "string" - }, - "displayStateInRegistration": { - "type": "boolean" - }, - "forceStateInRegistration": { - "type": "boolean" - }, - "checkVatIdPattern": { - "type": "boolean" - }, - "vatIdRequired": { - "type": "boolean" - }, - "vatIdPattern": { + "name": { "type": "string" }, "customFields": { "type": "object" }, - "customerTax": { - "required": [ - "enabled", - "currencyId", - "amount" - ], - "properties": { - "enabled": { - "type": "boolean" - }, - "currencyId": { - "type": "string" - }, - "amount": { - "type": "number", - "format": "float" - } - }, - "type": "object" + "linkType": { + "type": "string" }, - "companyTax": { - "required": [ - "enabled", - "currencyId", - "amount" - ], - "properties": { - "enabled": { - "type": "boolean" - }, - "currencyId": { - "type": "string" - }, - "amount": { - "type": "number", - "format": "float" - } - }, - "type": "object" + "internalLink": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "postalCodeRequired": { - "type": "boolean" + "externalLink": { + "type": "string" }, - "checkPostalCodePattern": { + "linkNewTab": { "type": "boolean" }, - "checkAdvancedPostalCodePattern": { - "type": "boolean" + "description": { + "type": "string" }, - "advancedPostalCodePattern": { + "metaTitle": { "type": "string" }, - "addressFormat": { - "type": "object" + "metaDescription": { + "type": "string" }, - "defaultPostalCodePattern": { + "keywords": { "type": "string" }, + "cmsPageId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "cmsPageVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "customEntityTypeId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "createdAt": { "type": "string", "format": "date-time", @@ -2012,7 +1895,7 @@ }, "relationships": { "properties": { - "states": { + "parent": { "properties": { "links": { "type": "object", @@ -2020,7 +1903,36 @@ "related": { "type": "string", "format": "uri-reference", - "example": "/country/59716c97497eb9694541f7c3d37b1a4d/states" + "example": "/category/3adbdb3ac060038aa0e6e6c138ef9873/parent" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "category" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "d0e45878043844ffc41aac437e86b602" + } + } + } + }, + "type": "object" + }, + "children": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/category/3adbdb3ac060038aa0e6e6c138ef9873/children" } } }, @@ -2031,133 +1943,279 @@ "properties": { "type": { "type": "string", - "example": "country_state" + "example": "category" }, "id": { "type": "string", - "example": "34d955a0df5f7af9c9b4e4dccb3c3564" + "example": "268184c12df027f536154d099d497b31" } } } } }, "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - ] - }, - "Country": { - "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt", - "name", - "addressFormat" + }, + "media": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/category/3adbdb3ac060038aa0e6e6c138ef9873/media" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "media" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "62933a2951ef01f4eafd9bdf4d3cd2f0" + } + } + } + }, + "type": "object" + }, + "tags": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/category/3adbdb3ac060038aa0e6e6c138ef9873/tags" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "tag" + }, + "id": { + "type": "string", + "example": "d57ac45256849d9b13e2422d91580fb9" + } + } + } + } + }, + "type": "object" + }, + "cmsPage": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/category/3adbdb3ac060038aa0e6e6c138ef9873/cmsPage" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "cms_page" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "7b1460918b1abb93311108f3dc021c9b" + } + } + } + }, + "type": "object" + }, + "seoUrls": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/category/3adbdb3ac060038aa0e6e6c138ef9873/seoUrls" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "seo_url" + }, + "id": { + "type": "string", + "example": "5321b5a71127b8b98cdd4b068ad56c4c" + } + } + } + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + ] + }, + "Category": { + "description": "Added since version: 6.0.0.0", + "required": [ + "apiAlias", + "breadcrumb", + "children", + "childCount", + "translated", + "id", + "displayNestedProducts", + "type", + "productAssignmentType", + "createdAt", + "name" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "name": { - "type": "string" + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "iso": { - "type": "string" + "parentId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "position": { - "type": "integer", - "format": "int64" + "parentVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "active": { - "type": "boolean" + "afterCategoryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "shippingAvailable": { + "afterCategoryVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "mediaId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "displayNestedProducts": { "type": "boolean" }, - "iso3": { + "breadcrumb": { + "type": "array", + "items": { + "type": "string", + "additionalProperties": false + }, + "readOnly": true + }, + "level": { + "type": "integer", + "format": "int64", + "readOnly": true + }, + "path": { + "type": "string", + "readOnly": true + }, + "childCount": { + "type": "number", + "format": "int64", + "readOnly": true + }, + "type": { "type": "string" }, - "displayStateInRegistration": { - "type": "boolean" + "productAssignmentType": { + "type": "string" }, - "forceStateInRegistration": { + "visible": { "type": "boolean" }, - "checkVatIdPattern": { + "active": { "type": "boolean" }, - "vatIdRequired": { + "cmsPageIdSwitched": { + "description": "Runtime field, cannot be used as part of the criteria.", "type": "boolean" }, - "vatIdPattern": { + "visibleChildCount": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "integer", + "format": "int64" + }, + "name": { "type": "string" }, "customFields": { "type": "object" }, - "customerTax": { - "required": [ - "enabled", - "currencyId", - "amount" - ], - "properties": { - "enabled": { - "type": "boolean" - }, - "currencyId": { - "type": "string" - }, - "amount": { - "type": "number", - "format": "float" - } - }, - "type": "object" + "linkType": { + "type": "string" }, - "companyTax": { - "required": [ - "enabled", - "currencyId", - "amount" - ], - "properties": { - "enabled": { - "type": "boolean" - }, - "currencyId": { - "type": "string" - }, - "amount": { - "type": "number", - "format": "float" - } - }, - "type": "object" + "internalLink": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "postalCodeRequired": { - "type": "boolean" + "externalLink": { + "type": "string" }, - "checkPostalCodePattern": { + "linkNewTab": { "type": "boolean" }, - "checkAdvancedPostalCodePattern": { - "type": "boolean" + "description": { + "type": "string" }, - "advancedPostalCodePattern": { + "metaTitle": { "type": "string" }, - "addressFormat": { - "type": "object" + "metaDescription": { + "type": "string" }, - "defaultPostalCodePattern": { + "keywords": { "type": "string" }, + "cmsPageId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "cmsPageVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "customEntityTypeId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "createdAt": { "type": "string", "format": "date-time", @@ -2169,102 +2227,207 @@ "readOnly": true }, "translated": { - "type": "object" + "type": "object", + "additionalProperties": true, + "properties": { + "breadcrumb": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "breadcrumb" + ] }, - "states": { + "parent": { + "$ref": "#/components/schemas/Category" + }, + "children": { "type": "array", "items": { - "$ref": "#/components/schemas/CountryState" + "$ref": "#/components/schemas/Category" + } + }, + "media": { + "$ref": "#/components/schemas/Media" + }, + "tags": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Tag" + } + }, + "cmsPage": { + "$ref": "#/components/schemas/CmsPage" + }, + "seoUrls": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" } + }, + "apiAlias": { + "type": "string", + "enum": [ + "category" + ] } }, "type": "object" }, - "CountryStateJsonApi": { + "CmsBlock": { "description": "Added since version: 6.0.0.0", - "allOf": [ - { - "$ref": "#/components/schemas/resource" + "required": [ + "apiAlias", + "slots", + "position", + "type", + "sectionId", + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - { - "required": [ - "countryId", - "shortCode", - "createdAt", - "name" - ], + "position": { + "type": "integer", + "format": "int64" + }, + "type": { + "type": "string" + }, + "name": { + "type": "string" + }, + "sectionPosition": { + "type": "string" + }, + "marginTop": { + "type": "string" + }, + "marginBottom": { + "type": "string" + }, + "marginLeft": { + "type": "string" + }, + "marginRight": { + "type": "string" + }, + "backgroundColor": { + "type": "string" + }, + "backgroundMediaId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "backgroundMediaMode": { + "type": "string" + }, + "cssClass": { + "type": "string" + }, + "visibility": { "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shortCode": { - "type": "string" - }, - "name": { - "type": "string" - }, - "position": { - "type": "integer", - "format": "int64" - }, - "active": { + "mobile": { "type": "boolean" }, - "customFields": { - "type": "object" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "desktop": { + "type": "boolean" }, - "translated": { - "type": "object" + "tablet": { + "type": "boolean" } }, "type": "object" + }, + "sectionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "customFields": { + "type": "object" + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "cmsSectionVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "backgroundMedia": { + "$ref": "#/components/schemas/Media" + }, + "slots": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CmsSlot" + } + }, + "apiAlias": { + "type": "string", + "enum": [ + "cms_block" + ] } - ] + }, + "type": "object" }, - "CountryState": { + "CmsPage": { "description": "Added since version: 6.0.0.0", "required": [ - "countryId", - "shortCode", - "createdAt", - "name" + "apiAlias", + "sections", + "id", + "type", + "createdAt" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "countryId": { + "versionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "shortCode": { + "name": { "type": "string" }, - "name": { + "type": { "type": "string" }, - "position": { - "type": "integer", - "format": "int64" + "entity": { + "type": "string" }, - "active": { - "type": "boolean" + "cssClass": { + "type": "string" + }, + "config": { + "properties": { + "backgroundColor": { + "type": "string" + } + }, + "type": "object" + }, + "previewMediaId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, "customFields": { "type": "object" @@ -2281,193 +2444,100 @@ }, "translated": { "type": "object" - } - }, - "type": "object" - }, - "CurrencyJsonApi": { - "description": "Added since version: 6.0.0.0", - "allOf": [ - { - "$ref": "#/components/schemas/resource" }, - { - "required": [ - "factor", - "symbol", - "isoCode", - "itemRounding", - "totalRounding", - "createdAt", - "shortName", - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "factor": { - "type": "number", - "format": "float" - }, - "symbol": { - "type": "string" - }, - "isoCode": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "name": { - "type": "string" - }, - "position": { - "type": "integer", - "format": "int64" - }, - "isSystemDefault": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean" - }, - "taxFreeFrom": { - "type": "number", - "format": "float" - }, - "customFields": { - "type": "object" - }, - "itemRounding": { - "properties": { - "decimals": { - "type": "integer", - "format": "int64" - }, - "interval": { - "type": "number", - "format": "float" - }, - "roundForNet": { - "type": "boolean" - } - }, - "type": "object" - }, - "totalRounding": { - "properties": { - "decimals": { - "type": "integer", - "format": "int64" - }, - "interval": { - "type": "number", - "format": "float" - }, - "roundForNet": { - "type": "boolean" - } - }, - "type": "object" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - } - }, - "type": "object" + "sections": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CmsSection" + } + }, + "previewMedia": { + "$ref": "#/components/schemas/Media" + }, + "landingPages": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LandingPage" + } + }, + "apiAlias": { + "type": "string", + "enum": [ + "cms_page" + ] } - ] + }, + "type": "object" }, - "Currency": { + "CmsSection": { "description": "Added since version: 6.0.0.0", "required": [ - "factor", - "symbol", - "isoCode", - "itemRounding", - "totalRounding", - "createdAt", - "shortName", - "name" + "apiAlias", + "blocks", + "position", + "type", + "pageId", + "createdAt" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "factor": { - "type": "number", - "format": "float" + "position": { + "type": "integer", + "format": "int64" }, - "symbol": { + "type": { "type": "string" }, - "isoCode": { + "name": { "type": "string" }, - "shortName": { + "sizingMode": { "type": "string" }, - "name": { + "mobileBehavior": { "type": "string" }, - "position": { - "type": "integer", - "format": "int64" + "backgroundColor": { + "type": "string" }, - "isSystemDefault": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean" + "backgroundMediaId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "taxFreeFrom": { - "type": "number", - "format": "float" + "backgroundMediaMode": { + "type": "string" }, - "customFields": { - "type": "object" + "cssClass": { + "type": "string" }, - "itemRounding": { + "pageId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "visibility": { "properties": { - "decimals": { - "type": "integer", - "format": "int64" + "mobile": { + "type": "boolean" }, - "interval": { - "type": "number", - "format": "float" + "desktop": { + "type": "boolean" }, - "roundForNet": { + "tablet": { "type": "boolean" } }, "type": "object" }, - "totalRounding": { - "properties": { - "decimals": { - "type": "integer", - "format": "int64" - }, - "interval": { - "type": "number", - "format": "float" - }, - "roundForNet": { - "type": "boolean" - } - }, + "customFields": { "type": "object" }, + "cmsPageVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "createdAt": { "type": "string", "format": "date-time", @@ -2478,38 +2548,34 @@ "format": "date-time", "readOnly": true }, - "translated": { - "type": "object" - } - }, - "type": "object" - }, - "CurrencyCountryRounding": { - "description": "Added since version: 6.4.0.0", - "required": [ - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "page": { + "$ref": "#/components/schemas/CmsPage" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "backgroundMedia": { + "$ref": "#/components/schemas/Media" }, - "updatedAt": { + "blocks": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CmsBlock" + } + }, + "apiAlias": { "type": "string", - "format": "date-time", - "readOnly": true + "enum": [ + "cms_section" + ] } }, "type": "object" }, - "CustomEntity": { - "description": "Added since version: 6.4.9.0", + "CmsSlot": { + "description": "Added since version: 6.0.0.0", "required": [ + "id", + "type", + "slot", + "blockId", "createdAt" ], "properties": { @@ -2517,49 +2583,37 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { + "versionId": { "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "CustomField": { - "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": { + "type": "string" }, - "createdAt": { - "type": "string", - "format": "date-time", + "slot": { + "type": "string" + }, + "locked": { + "type": "boolean" + }, + "config": { + "type": "object" + }, + "customFields": { + "type": "object" + }, + "data": { + "type": "object", "readOnly": true }, - "updatedAt": { + "blockId": { "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "CustomFieldSet": { - "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], - "properties": { - "id": { + "pattern": "^[0-9a-f]{32}$" + }, + "fieldConfig": { + "type": "object" + }, + "cmsBlockVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, @@ -2572,63 +2626,299 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "translated": { + "type": "object" + }, + "block": { + "$ref": "#/components/schemas/CmsBlock" } }, "type": "object" }, - "CustomFieldSetRelation": { + "CountryJsonApi": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "allOf": [ + { + "$ref": "#/components/schemas/resource" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + { + "required": [ + "id", + "isEu", + "createdAt", + "name", + "addressFormat" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "name": { + "type": "string" + }, + "iso": { + "type": "string" + }, + "position": { + "type": "integer", + "format": "int64" + }, + "active": { + "type": "boolean" + }, + "shippingAvailable": { + "type": "boolean" + }, + "iso3": { + "type": "string" + }, + "displayStateInRegistration": { + "type": "boolean" + }, + "forceStateInRegistration": { + "type": "boolean" + }, + "checkVatIdPattern": { + "type": "boolean" + }, + "vatIdRequired": { + "type": "boolean" + }, + "vatIdPattern": { + "type": "string" + }, + "customFields": { + "type": "object" + }, + "customerTax": { + "required": [ + "enabled", + "currencyId", + "amount" + ], + "properties": { + "enabled": { + "type": "boolean" + }, + "currencyId": { + "type": "string" + }, + "amount": { + "type": "number", + "format": "float" + } + }, + "type": "object" + }, + "companyTax": { + "required": [ + "enabled", + "currencyId", + "amount" + ], + "properties": { + "enabled": { + "type": "boolean" + }, + "currencyId": { + "type": "string" + }, + "amount": { + "type": "number", + "format": "float" + } + }, + "type": "object" + }, + "postalCodeRequired": { + "type": "boolean" + }, + "checkPostalCodePattern": { + "type": "boolean" + }, + "checkAdvancedPostalCodePattern": { + "type": "boolean" + }, + "advancedPostalCodePattern": { + "type": "string" + }, + "addressFormat": { + "type": "object" + }, + "defaultPostalCodePattern": { + "type": "string" + }, + "isEu": { + "type": "boolean" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + }, + "relationships": { + "properties": { + "states": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/country/59716c97497eb9694541f7c3d37b1a4d/states" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "country_state" + }, + "id": { + "type": "string", + "example": "34d955a0df5f7af9c9b4e4dccb3c3564" + } + } + } + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" } - }, - "type": "object" + ] }, - "CustomPrice": { + "Country": { + "description": "Added since version: 6.0.0.0", "required": [ - "productId", - "price", - "createdAt" + "id", + "isEu", + "createdAt", + "name", + "addressFormat" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "productId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "name": { + "type": "string" }, - "customerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "iso": { + "type": "string" }, - "customerGroupId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "position": { + "type": "integer", + "format": "int64" }, - "price": { + "active": { + "type": "boolean" + }, + "shippingAvailable": { + "type": "boolean" + }, + "iso3": { + "type": "string" + }, + "displayStateInRegistration": { + "type": "boolean" + }, + "forceStateInRegistration": { + "type": "boolean" + }, + "checkVatIdPattern": { + "type": "boolean" + }, + "vatIdRequired": { + "type": "boolean" + }, + "vatIdPattern": { + "type": "string" + }, + "customFields": { + "type": "object" + }, + "customerTax": { + "required": [ + "enabled", + "currencyId", + "amount" + ], + "properties": { + "enabled": { + "type": "boolean" + }, + "currencyId": { + "type": "string" + }, + "amount": { + "type": "number", + "format": "float" + } + }, + "type": "object" + }, + "companyTax": { + "required": [ + "enabled", + "currencyId", + "amount" + ], + "properties": { + "enabled": { + "type": "boolean" + }, + "currencyId": { + "type": "string" + }, + "amount": { + "type": "number", + "format": "float" + } + }, + "type": "object" + }, + "postalCodeRequired": { + "type": "boolean" + }, + "checkPostalCodePattern": { + "type": "boolean" + }, + "checkAdvancedPostalCodePattern": { + "type": "boolean" + }, + "advancedPostalCodePattern": { + "type": "string" + }, + "addressFormat": { "type": "object" }, + "defaultPostalCodePattern": { + "type": "string" + }, + "isEu": { + "type": "boolean" + }, "createdAt": { "type": "string", "format": "date-time", @@ -2639,171 +2929,353 @@ "format": "date-time", "readOnly": true }, - "customer": { - "$ref": "#/components/schemas/Customer" - }, - "customerGroup": { - "$ref": "#/components/schemas/CustomerGroup" + "translated": { + "type": "object" }, - "product": { - "$ref": "#/components/schemas/Product" + "states": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CountryState" + } } }, "type": "object" }, - "Customer": { + "CountryStateJsonApi": { + "description": "Added since version: 6.0.0.0", + "allOf": [ + { + "$ref": "#/components/schemas/resource" + }, + { + "required": [ + "id", + "countryId", + "shortCode", + "createdAt", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shortCode": { + "type": "string" + }, + "name": { + "type": "string" + }, + "position": { + "type": "integer", + "format": "int64" + }, + "active": { + "type": "boolean" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + } + ] + }, + "CountryState": { "description": "Added since version: 6.0.0.0", "required": [ - "groupId", - "defaultPaymentMethodId", - "salesChannelId", - "languageId", - "defaultBillingAddressId", - "defaultShippingAddressId", - "customerNumber", - "firstName", - "lastName", - "email", - "accountType", - "createdAt" + "id", + "countryId", + "shortCode", + "createdAt", + "name" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "groupId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "defaultPaymentMethodId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "salesChannelId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "languageId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "lastPaymentMethodId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "defaultBillingAddressId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "defaultShippingAddressId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "customerNumber": { - "type": "string" - }, - "salutationId": { + "countryId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "company": { - "type": "string" - }, - "email": { - "type": "string" - }, - "title": { + "shortCode": { "type": "string" }, - "vatIds": { - "type": "array", - "items": { - "type": "string" - } - }, - "affiliateCode": { + "name": { "type": "string" }, - "campaignCode": { - "type": "string" + "position": { + "type": "integer", + "format": "int64" }, "active": { "type": "boolean" }, - "doubleOptInRegistration": { - "type": "boolean" + "customFields": { + "type": "object" }, - "doubleOptInEmailSentDate": { + "createdAt": { "type": "string", - "format": "date-time" + "format": "date-time", + "readOnly": true }, - "doubleOptInConfirmDate": { + "updatedAt": { "type": "string", - "format": "date-time" - }, - "hash": { - "type": "string" + "format": "date-time", + "readOnly": true }, - "guest": { - "type": "boolean" + "translated": { + "type": "object" + } + }, + "type": "object" + }, + "CurrencyJsonApi": { + "description": "Added since version: 6.0.0.0", + "allOf": [ + { + "$ref": "#/components/schemas/resource" }, - "firstLogin": { + { + "required": [ + "id", + "factor", + "symbol", + "isoCode", + "itemRounding", + "totalRounding", + "createdAt", + "shortName", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "factor": { + "type": "number", + "format": "float" + }, + "symbol": { + "type": "string" + }, + "isoCode": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "name": { + "type": "string" + }, + "position": { + "type": "integer", + "format": "int64" + }, + "isSystemDefault": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "boolean" + }, + "taxFreeFrom": { + "type": "number", + "format": "float" + }, + "customFields": { + "type": "object" + }, + "itemRounding": { + "required": [ + "decimals", + "interval", + "roundForNet" + ], + "properties": { + "decimals": { + "type": "integer", + "format": "int64" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" + } + }, + "type": "object" + }, + "totalRounding": { + "required": [ + "decimals", + "interval", + "roundForNet" + ], + "properties": { + "decimals": { + "type": "integer", + "format": "int64" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" + } + }, + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + } + ] + }, + "Currency": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "factor", + "symbol", + "isoCode", + "itemRounding", + "totalRounding", + "createdAt", + "shortName", + "name" + ], + "properties": { + "id": { "type": "string", - "format": "date-time" + "pattern": "^[0-9a-f]{32}$" }, - "lastLogin": { - "type": "string", - "format": "date-time" + "factor": { + "type": "number", + "format": "float" }, - "birthday": { + "symbol": { "type": "string" }, - "lastOrderDate": { - "type": "string", - "format": "date-time", - "readOnly": true + "isoCode": { + "type": "string" }, - "orderCount": { - "type": "integer", - "format": "int64", - "readOnly": true + "shortName": { + "type": "string" }, - "orderTotalAmount": { - "type": "number", - "format": "float", - "readOnly": true + "name": { + "type": "string" }, - "reviewCount": { + "position": { "type": "integer", - "format": "int64", - "readOnly": true + "format": "int64" + }, + "isSystemDefault": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "boolean" + }, + "taxFreeFrom": { + "type": "number", + "format": "float" }, "customFields": { "type": "object" }, - "tagIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "itemRounding": { + "required": [ + "decimals", + "interval", + "roundForNet" + ], + "properties": { + "decimals": { + "type": "integer", + "format": "int64" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" + } }, - "readOnly": true + "type": "object" }, - "accountType": { - "type": "string" + "totalRounding": { + "required": [ + "decimals", + "interval", + "roundForNet" + ], + "properties": { + "decimals": { + "type": "integer", + "format": "int64" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" + } + }, + "type": "object" }, - "createdById": { + "createdAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "updatedById": { + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + }, + "CurrencyCountryRounding": { + "description": "Added since version: 6.4.0.0", + "required": [ + "createdAt" + ], + "properties": { + "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, @@ -2816,150 +3288,19 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "extensions": { - "properties": { - "specificFeatures": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/customer/ce26601dac0dea138b7295f02b7620a7/specificFeatures" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "customer_specific_features" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "5cfb6fcb7542e25892e1a35cd6a06c54" - } - } - } - }, - "type": "object" - } - }, - "type": "object" - }, - "group": { - "$ref": "#/components/schemas/CustomerGroup" - }, - "defaultPaymentMethod": { - "$ref": "#/components/schemas/PaymentMethod" - }, - "language": { - "$ref": "#/components/schemas/Language" - }, - "lastPaymentMethod": { - "$ref": "#/components/schemas/PaymentMethod" - }, - "defaultBillingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "activeBillingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "defaultShippingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "activeShippingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "salutation": { - "$ref": "#/components/schemas/Salutation" - }, - "addresses": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CustomerAddress" - } - }, - "tags": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Tag" - } - } - }, - "type": "object" - }, - "CustomerAddress": { - "description": "Added since version: 6.0.0.0", - "required": [ - "customerId", - "countryId", - "firstName", - "lastName", - "city", - "street", - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "customerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "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" + } + }, + "type": "object" + }, + "CustomEntity": { + "description": "Added since version: 6.4.9.0", + "required": [ + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, "createdAt": { "type": "string", @@ -2970,54 +3311,20 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "$ref": "#/components/schemas/CountryState" - }, - "salutation": { - "$ref": "#/components/schemas/Salutation" } }, "type": "object" }, - "CustomerGroup": { + "CustomField": { "description": "Added since version: 6.0.0.0", "required": [ - "createdAt", - "name" + "createdAt" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - }, - "customFields": { - "type": "object" - }, - "registrationActive": { - "type": "boolean" - }, - "registrationTitle": { - "type": "string" - }, - "registrationIntroduction": { - "type": "string" - }, - "registrationOnlyCompanyRegistration": { - "type": "boolean" - }, - "registrationSeoMetaDescription": { - "type": "string" - }, "createdAt": { "type": "string", "format": "date-time", @@ -3027,15 +3334,12 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "translated": { - "type": "object" } }, "type": "object" }, - "CustomerRecovery": { - "description": "Added since version: 6.1.0.0", + "CustomFieldSet": { + "description": "Added since version: 6.0.0.0", "required": [ "createdAt" ], @@ -3057,9 +3361,9 @@ }, "type": "object" }, - "CustomerSpecificFeatures": { + "CustomFieldSetRelation": { + "description": "Added since version: 6.0.0.0", "required": [ - "customerId", "createdAt" ], "properties": { @@ -3067,10 +3371,6 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "customerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, "createdAt": { "type": "string", "format": "date-time", @@ -3080,54 +3380,39 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "customer": { - "$ref": "#/components/schemas/Customer" } }, "type": "object" }, - "CustomerTag": { - "description": "Added since version: 6.0.0.0", + "CustomPrice": { "required": [ - "customerId", - "tagId" + "id", + "productId", + "price", + "createdAt" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "customerId": { + "productId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "tagId": { + "productVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "tag": { - "$ref": "#/components/schemas/Tag" - } - }, - "type": "object" - }, - "CustomerWishlist": { - "description": "Added since version: 6.3.4.0", - "required": [ - "customerId", - "createdAt" - ], - "properties": { - "id": { + "customerId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "customerId": { + "customerGroupId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "customFields": { + "price": { "type": "object" }, "createdAt": { @@ -3139,14 +3424,37 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "customer": { + "$ref": "#/components/schemas/Customer" + }, + "customerGroup": { + "$ref": "#/components/schemas/CustomerGroup" + }, + "product": { + "$ref": "#/components/schemas/Product" } }, "type": "object" }, - "CustomerWishlistProduct": { - "description": "Added since version: 6.3.4.0", + "Customer": { + "description": "Added since version: 6.0.0.0", "required": [ - "productId", + "apiAlias", + "activeBillingAddress", + "activeShippingAddress", + "id", + "groupId", + "salesChannelId", + "languageId", + "defaultBillingAddressId", + "defaultShippingAddressId", + "customerNumber", + "firstName", + "lastName", + "email", + "accountType", + "defaultPaymentMethodId", "createdAt" ], "properties": { @@ -3154,239 +3462,138 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "productId": { + "groupId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "productVersionId": { + "salesChannelId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "DeliveryTime": { - "description": "Added since version: 6.0.0.0", - "required": [ - "name", - "min", - "max", - "unit", - "createdAt" - ], - "properties": { - "id": { + "languageId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "name": { - "type": "string" - }, - "min": { - "type": "integer", - "format": "int64" - }, - "max": { - "type": "integer", - "format": "int64" - }, - "unit": { - "type": "string" - }, - "customFields": { - "type": "object" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { + "lastPaymentMethodId": { "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "translated": { - "type": "object" - } - }, - "type": "object" - }, - "Document": { - "description": "Added since version: 6.0.0.0", - "required": [ - "documentTypeId", - "fileType", - "orderId", - "config", - "deepLinkCode", - "createdAt" - ], - "properties": { - "id": { + "defaultBillingAddressId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "documentTypeId": { + "defaultShippingAddressId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "fileType": { + "customerNumber": { "type": "string" }, - "referencedDocumentId": { + "salutationId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "orderId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "firstName": { + "type": "string" }, - "documentMediaFileId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "lastName": { + "type": "string" }, - "orderVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "company": { + "type": "string" }, - "config": { - "type": "object" + "email": { + "type": "string" }, - "sent": { - "type": "boolean" + "title": { + "type": "string" }, - "static": { - "type": "boolean" + "vatIds": { + "type": "array", + "items": { + "type": "string" + } }, - "deepLinkCode": { + "affiliateCode": { "type": "string" }, - "documentNumber": { + "campaignCode": { "type": "string" }, - "customFields": { - "type": "object" + "active": { + "type": "boolean" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "doubleOptInRegistration": { + "type": "boolean" }, - "updatedAt": { + "doubleOptInEmailSentDate": { "type": "string", - "format": "date-time", - "readOnly": true - }, - "documentType": { - "$ref": "#/components/schemas/DocumentType" - }, - "order": { - "$ref": "#/components/schemas/Order" + "format": "date-time" }, - "referencedDocument": { - "$ref": "#/components/schemas/Document" + "doubleOptInConfirmDate": { + "type": "string", + "format": "date-time" }, - "dependentDocuments": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Document" - } + "hash": { + "type": "string" }, - "documentMediaFile": { - "$ref": "#/components/schemas/Media" - } - }, - "type": "object" - }, - "DocumentBaseConfig": { - "description": "Added since version: 6.0.0.0", - "required": [ - "documentTypeId", - "name", - "global", - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "guest": { + "type": "boolean" }, - "documentTypeId": { + "firstLogin": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time" }, - "logoId": { + "lastLogin": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "name": { - "type": "string" - }, - "filenamePrefix": { - "type": "string" + "format": "date-time" }, - "filenameSuffix": { + "birthday": { "type": "string" }, - "global": { - "type": "boolean" + "lastOrderDate": { + "type": "string", + "format": "date-time", + "readOnly": true }, - "documentNumber": { - "type": "string" + "orderCount": { + "type": "integer", + "format": "int64", + "readOnly": true }, - "config": { - "type": "object" + "orderTotalAmount": { + "type": "number", + "format": "float", + "readOnly": true }, - "createdAt": { - "type": "string", - "format": "date-time", + "reviewCount": { + "type": "integer", + "format": "int64", "readOnly": true }, "customFields": { "type": "object" }, - "updatedAt": { - "type": "string", - "format": "date-time", + "tagIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "readOnly": true }, - "logo": { - "$ref": "#/components/schemas/Media" - } - }, - "type": "object" - }, - "DocumentBaseConfigSalesChannel": { - "description": "Added since version: 6.0.0.0", - "required": [ - "documentBaseConfigId", - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "accountType": { + "type": "string" }, - "documentBaseConfigId": { + "createdById": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "salesChannelId": { + "updatedById": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "documentTypeId": { + "defaultPaymentMethodId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, @@ -3399,50 +3606,99 @@ "type": "string", "format": "date-time", "readOnly": true - } - }, - "type": "object" - }, - "DocumentType": { - "description": "Added since version: 6.0.0.0", - "required": [ - "technicalName", - "createdAt", - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" }, - "name": { - "type": "string" + "extensions": { + "properties": { + "specificFeatures": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/customer/ce26601dac0dea138b7295f02b7620a7/specificFeatures" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "customer_specific_features" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "5cfb6fcb7542e25892e1a35cd6a06c54" + } + } + } + }, + "type": "object" + } + }, + "type": "object" }, - "technicalName": { - "type": "string" + "group": { + "$ref": "#/components/schemas/CustomerGroup" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "language": { + "$ref": "#/components/schemas/Language" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "lastPaymentMethod": { + "$ref": "#/components/schemas/PaymentMethod" }, - "customFields": { - "type": "object" + "defaultBillingAddress": { + "$ref": "#/components/schemas/CustomerAddress" }, - "translated": { - "type": "object" + "activeBillingAddress": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "defaultShippingAddress": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "activeShippingAddress": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" + }, + "addresses": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomerAddress" + } + }, + "tags": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Tag" + } + }, + "defaultPaymentMethod": { + "$ref": "#/components/schemas/PaymentMethod" + }, + "apiAlias": { + "type": "string", + "enum": [ + "customer" + ] } }, "type": "object" }, - "Flow": { - "description": "Added since version: 6.4.6.0", + "CustomerAddress": { + "description": "Added since version: 6.0.0.0", "required": [ + "id", + "customerId", + "countryId", + "firstName", + "lastName", + "city", + "street", "createdAt" ], "properties": { @@ -3450,6 +3706,58 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "customerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "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" + }, "createdAt": { "type": "string", "format": "date-time", @@ -3459,20 +3767,56 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "$ref": "#/components/schemas/CountryState" + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, "type": "object" }, - "FlowSequence": { - "description": "Added since version: 6.4.6.0", + "CustomerGroup": { + "description": "Added since version: 6.0.0.0", "required": [ - "createdAt" + "translated", + "id", + "createdAt", + "name" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "name": { + "type": "string" + }, + "displayGross": { + "type": "boolean" + }, + "customFields": { + "type": "object" + }, + "registrationActive": { + "type": "boolean" + }, + "registrationTitle": { + "type": "string" + }, + "registrationIntroduction": { + "type": "string" + }, + "registrationOnlyCompanyRegistration": { + "type": "boolean" + }, + "registrationSeoMetaDescription": { + "type": "string" + }, "createdAt": { "type": "string", "format": "date-time", @@ -3482,12 +3826,29 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "translated": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "registrationIntroduction": { + "type": "string" + }, + "registrationSeoMetaDescription": { + "type": "string" + }, + "registrationTitle": { + "type": "string" + } + } } }, "type": "object" }, - "FlowTemplate": { - "description": "Added since version: 6.4.18.0", + "CustomerRecovery": { + "description": "Added since version: 6.1.0.0", "required": [ "createdAt" ], @@ -3509,9 +3870,10 @@ }, "type": "object" }, - "ImportExportFile": { - "description": "Added since version: 6.0.0.0", + "CustomerSpecificFeatures": { "required": [ + "customerId", + "features", "createdAt" ], "properties": { @@ -3519,6 +3881,13 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "customerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "features": { + "type": "object" + }, "createdAt": { "type": "string", "format": "date-time", @@ -3528,36 +3897,43 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "customer": { + "$ref": "#/components/schemas/Customer" } }, "type": "object" }, - "ImportExportLog": { + "CustomerTag": { "description": "Added since version: 6.0.0.0", "required": [ - "createdAt" + "customerId", + "tagId" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { + "customerId": { "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "updatedAt": { + "tagId": { "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" + }, + "tag": { + "$ref": "#/components/schemas/Tag" } }, "type": "object" }, - "ImportExportProfile": { - "description": "Added since version: 6.0.0.0", + "CustomerWishlist": { + "description": "Added since version: 6.3.4.0", "required": [ + "id", + "customerId", "createdAt" ], "properties": { @@ -3565,6 +3941,13 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "customerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "customFields": { + "type": "object" + }, "createdAt": { "type": "string", "format": "date-time", @@ -3574,16 +3957,15 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "translated": { - "type": "object" } }, "type": "object" }, - "Integration": { - "description": "Added since version: 6.0.0.0", + "CustomerWishlistProduct": { + "description": "Added since version: 6.3.4.0", "required": [ + "id", + "productId", "createdAt" ], "properties": { @@ -3591,6 +3973,14 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "productId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "createdAt": { "type": "string", "format": "date-time", @@ -3604,190 +3994,123 @@ }, "type": "object" }, - "LandingPageJsonApi": { - "description": "Added since version: 6.4.0.0", - "allOf": [ - { - "$ref": "#/components/schemas/resource" - }, - { - "required": [ - "createdAt", - "name", - "url" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "active": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "customFields": { - "type": "object" - }, - "slotConfig": { - "type": "object" - }, - "metaTitle": { - "type": "string" - }, - "metaDescription": { - "type": "string" - }, - "keywords": { - "type": "string" - }, - "url": { - "type": "string" - }, - "cmsPageId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "cmsPageVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - }, - "relationships": { - "properties": { - "cmsPage": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/landing-page/815c27537bec3b60c50a2ae4d2ce875d/cmsPage" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "cms_page" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "7b1460918b1abb93311108f3dc021c9b" - } - } - } - }, - "type": "object" - }, - "seoUrls": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/landing-page/815c27537bec3b60c50a2ae4d2ce875d/seoUrls" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "seo_url" - }, - "id": { - "type": "string", - "example": "5321b5a71127b8b98cdd4b068ad56c4c" - } - } - } - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - ] - }, - "LandingPage": { - "description": "Added since version: 6.4.0.0", + "DeliveryTime": { + "description": "Added since version: 6.0.0.0", "required": [ - "createdAt", + "id", "name", - "url" + "min", + "max", + "unit", + "createdAt" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "name": { + "type": "string" }, - "active": { - "type": "boolean" + "min": { + "type": "integer", + "format": "int64" }, - "name": { + "max": { + "type": "integer", + "format": "int64" + }, + "unit": { "type": "string" }, "customFields": { "type": "object" }, - "slotConfig": { + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { "type": "object" + } + }, + "type": "object" + }, + "Document": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "documentTypeId", + "fileType", + "orderId", + "config", + "deepLinkCode", + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "metaTitle": { - "type": "string" + "documentTypeId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "metaDescription": { + "fileType": { "type": "string" }, - "keywords": { - "type": "string" + "referencedDocumentId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "url": { - "type": "string" + "orderId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "cmsPageId": { + "documentMediaFileId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "cmsPageVersionId": { + "orderVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "config": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "title": { + "type": "string" + } + }, + "required": [ + "name", + "title" + ] + }, + "sent": { + "type": "boolean" + }, + "static": { + "type": "boolean" + }, + "deepLinkCode": { + "type": "string" + }, + "documentNumber": { + "type": "string" + }, + "customFields": { + "type": "object" + }, "createdAt": { "type": "string", "format": "date-time", @@ -3798,199 +4121,34 @@ "format": "date-time", "readOnly": true }, - "translated": { - "type": "object" + "documentType": { + "$ref": "#/components/schemas/DocumentType" }, - "cmsPage": { - "$ref": "#/components/schemas/CmsPage" + "order": { + "$ref": "#/components/schemas/Order" }, - "seoUrls": { + "referencedDocument": { + "$ref": "#/components/schemas/Document" + }, + "dependentDocuments": { "type": "array", "items": { - "$ref": "#/components/schemas/SeoUrl" + "$ref": "#/components/schemas/Document" } + }, + "documentMediaFile": { + "$ref": "#/components/schemas/Media" } }, "type": "object" }, - "LanguageJsonApi": { - "description": "Added since version: 6.0.0.0", - "allOf": [ - { - "$ref": "#/components/schemas/resource" - }, - { - "required": [ - "localeId", - "name", - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "parentId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "localeId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "translationCodeId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "name": { - "type": "string" - }, - "customFields": { - "type": "object" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "relationships": { - "properties": { - "parent": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/language/4994a8ffeba4ac3140beb89e8d41f174/parent" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "language" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "d0e45878043844ffc41aac437e86b602" - } - } - } - }, - "type": "object" - }, - "locale": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/language/4994a8ffeba4ac3140beb89e8d41f174/locale" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "locale" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "fb216d9e8791e63c8d12bdc420956839" - } - } - } - }, - "type": "object" - }, - "translationCode": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/language/4994a8ffeba4ac3140beb89e8d41f174/translationCode" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "locale" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "6ef2035242b8fcb7b61c3a41850e60b3" - } - } - } - }, - "type": "object" - }, - "children": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/language/4994a8ffeba4ac3140beb89e8d41f174/children" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "language" - }, - "id": { - "type": "string", - "example": "268184c12df027f536154d099d497b31" - } - } - } - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - ] - }, - "Language": { + "DocumentBaseConfig": { "description": "Added since version: 6.0.0.0", "required": [ - "localeId", + "id", + "documentTypeId", "name", + "global", "createdAt" ], "properties": { @@ -3998,22 +4156,30 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "parentId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "localeId": { + "documentTypeId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "translationCodeId": { + "logoId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, "name": { "type": "string" }, - "customFields": { + "filenamePrefix": { + "type": "string" + }, + "filenameSuffix": { + "type": "string" + }, + "global": { + "type": "boolean" + }, + "documentNumber": { + "type": "string" + }, + "config": { "type": "object" }, "createdAt": { @@ -4021,53 +4187,75 @@ "format": "date-time", "readOnly": true }, + "customFields": { + "type": "object" + }, "updatedAt": { "type": "string", "format": "date-time", "readOnly": true }, - "parent": { - "$ref": "#/components/schemas/Language" - }, - "locale": { - "$ref": "#/components/schemas/Locale" - }, - "translationCode": { - "$ref": "#/components/schemas/Locale" - }, - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Language" - } + "logo": { + "$ref": "#/components/schemas/Media" } }, "type": "object" }, - "Locale": { + "DocumentBaseConfigSalesChannel": { "description": "Added since version: 6.0.0.0", "required": [ - "code", - "createdAt", - "name", - "territory" + "id", + "documentBaseConfigId", + "createdAt" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "code": { - "type": "string" + "documentBaseConfigId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "name": { - "type": "string" + "salesChannelId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "territory": { - "type": "string" + "documentTypeId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "customFields": { - "type": "object" + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "DocumentType": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "technicalName", + "createdAt", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "name": { + "type": "string" + }, + "technicalName": { + "type": "string" }, "createdAt": { "type": "string", @@ -4079,14 +4267,17 @@ "format": "date-time", "readOnly": true }, + "customFields": { + "type": "object" + }, "translated": { "type": "object" } }, "type": "object" }, - "LogEntry": { - "description": "Added since version: 6.0.0.0", + "Flow": { + "description": "Added since version: 6.4.6.0", "required": [ "createdAt" ], @@ -4108,38 +4299,16 @@ }, "type": "object" }, - "MailHeaderFooter": { - "description": "Added since version: 6.0.0.0", + "FlowSequence": { + "description": "Added since version: 6.4.6.0", "required": [ - "createdAt", - "name" + "createdAt" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "systemDefault": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "headerHtml": { - "type": "string" - }, - "headerPlain": { - "type": "string" - }, - "footerHtml": { - "type": "string" - }, - "footerPlain": { - "type": "string" - }, "createdAt": { "type": "string", "format": "date-time", @@ -4149,41 +4318,20 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "translated": { - "type": "object" } }, "type": "object" }, - "MailTemplate": { - "description": "Added since version: 6.0.0.0", + "FlowTemplate": { + "description": "Added since version: 6.4.18.0", "required": [ - "createdAt", - "subject", - "contentHtml", - "contentPlain" + "createdAt" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "systemDefault": { - "type": "boolean" - }, - "senderName": { - "type": "string" - }, - "contentHtml": { - "type": "string" - }, - "contentPlain": { - "type": "string" - }, - "customFields": { - "type": "object" - }, "createdAt": { "type": "string", "format": "date-time", @@ -4193,76 +4341,91 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "translated": { - "type": "object" - }, - "mailTemplateType": { - "$ref": "#/components/schemas/MailTemplateType" - }, - "media": { - "type": "array", - "items": { - "$ref": "#/components/schemas/MailTemplateMedia" - } } }, "type": "object" }, - "MailTemplateMedia": { + "ImportExportFile": { "description": "Added since version: 6.0.0.0", "required": [ - "mailTemplateId", - "languageId", - "mediaId" + "createdAt" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "mailTemplateId": { + "createdAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "languageId": { + "updatedAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "mediaId": { + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "ImportExportLog": { + "description": "Added since version: 6.0.0.0", + "required": [ + "createdAt" + ], + "properties": { + "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "position": { - "type": "integer", - "format": "int64" + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, - "media": { - "$ref": "#/components/schemas/Media" + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true } }, "type": "object" }, - "MailTemplateType": { + "ImportExportProfile": { "description": "Added since version: 6.0.0.0", "required": [ - "technicalName", - "createdAt", - "name" + "createdAt" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "name": { - "type": "string" + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, - "technicalName": { - "type": "string" + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, - "customFields": { + "translated": { "type": "object" + } + }, + "type": "object" + }, + "Integration": { + "description": "Added since version: 6.0.0.0", + "required": [ + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, "createdAt": { "type": "string", @@ -4273,48 +4436,61 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "translated": { - "type": "object" } }, "type": "object" }, - "MainCategoryJsonApi": { - "description": "Added since version: 6.1.0.0", + "LandingPageJsonApi": { + "description": "Added since version: 6.4.0.0", "allOf": [ { "$ref": "#/components/schemas/resource" }, { "required": [ - "productId", - "categoryId", - "salesChannelId", - "createdAt" + "id", + "createdAt", + "name", + "url" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "productId": { + "versionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "productVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "active": { + "type": "boolean" }, - "categoryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "name": { + "type": "string" }, - "categoryVersionId": { + "customFields": { + "type": "object" + }, + "slotConfig": { + "type": "object" + }, + "metaTitle": { + "type": "string" + }, + "metaDescription": { + "type": "string" + }, + "keywords": { + "type": "string" + }, + "url": { + "type": "string" + }, + "cmsPageId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "salesChannelId": { + "cmsPageVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, @@ -4327,116 +4503,129 @@ "type": "string", "format": "date-time", "readOnly": true - } - }, - "type": "object" - } - ] - }, - "MainCategory": { - "description": "Added since version: 6.1.0.0", - "required": [ - "productId", - "categoryId", - "salesChannelId", - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "categoryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "categoryVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "salesChannelId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + }, + "translated": { + "type": "object" + }, + "relationships": { + "properties": { + "cmsPage": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/landing-page/815c27537bec3b60c50a2ae4d2ce875d/cmsPage" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "cms_page" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "7b1460918b1abb93311108f3dc021c9b" + } + } + } + }, + "type": "object" + }, + "seoUrls": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/landing-page/815c27537bec3b60c50a2ae4d2ce875d/seoUrls" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "seo_url" + }, + "id": { + "type": "string", + "example": "5321b5a71127b8b98cdd4b068ad56c4c" + } + } + } + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" } - }, - "type": "object" + ] }, - "Media": { - "description": "Added since version: 6.0.0.0", + "LandingPage": { + "description": "Added since version: 6.4.0.0", "required": [ - "createdAt" + "apiAlias", + "id", + "createdAt", + "name", + "url" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "mimeType": { - "type": "string", - "readOnly": true - }, - "fileExtension": { + "versionId": { "type": "string", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "uploadedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "active": { + "type": "boolean" }, - "fileName": { - "type": "string", - "readOnly": true + "name": { + "type": "string" }, - "fileSize": { - "type": "integer", - "format": "int64", - "readOnly": true + "customFields": { + "type": "object" }, - "metaData": { - "type": "object", - "readOnly": true + "slotConfig": { + "type": "object" }, - "alt": { + "metaTitle": { "type": "string" }, - "title": { + "metaDescription": { "type": "string" }, - "url": { - "description": "Runtime field, cannot be used as part of the criteria.", + "keywords": { "type": "string" }, - "path": { + "url": { "type": "string" }, - "hasFile": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean" - }, - "private": { - "type": "boolean" + "cmsPageId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "customFields": { - "type": "object" + "cmsPageVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, "createdAt": { "type": "string", @@ -4451,110 +4640,204 @@ "translated": { "type": "object" }, - "extensions": { - "properties": { - "mediaAiTag": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/media/3b563524fdb17b4a86590470d40bef74/mediaAiTag" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "media_ai_tag" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "3c88197809d464216a8c40a8db191b38" - } - } - } - }, - "type": "object" - } - }, - "type": "object" - }, - "thumbnails": { - "type": "array", - "items": { - "$ref": "#/components/schemas/MediaThumbnail" - } - } - }, - "type": "object" - }, - "MediaAiTag": { - "required": [ - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "cmsPage": { + "$ref": "#/components/schemas/CmsPage" }, - "tags": { + "seoUrls": { "type": "array", "items": { - "type": "object", - "additionalProperties": false + "$ref": "#/components/schemas/SeoUrl" } }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { + "apiAlias": { "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - }, - "media": { - "$ref": "#/components/schemas/Media" + "enum": [ + "landing_page" + ] } }, "type": "object" }, - "MediaDefaultFolder": { + "LanguageJsonApi": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "allOf": [ + { + "$ref": "#/components/schemas/resource" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "MediaFolder": { - "description": "Added since version: 6.0.0.0", + { + "required": [ + "id", + "localeId", + "name", + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "parentId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "localeId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "translationCodeId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "name": { + "type": "string" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "relationships": { + "properties": { + "parent": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/language/4994a8ffeba4ac3140beb89e8d41f174/parent" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "language" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "d0e45878043844ffc41aac437e86b602" + } + } + } + }, + "type": "object" + }, + "locale": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/language/4994a8ffeba4ac3140beb89e8d41f174/locale" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "locale" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "fb216d9e8791e63c8d12bdc420956839" + } + } + } + }, + "type": "object" + }, + "translationCode": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/language/4994a8ffeba4ac3140beb89e8d41f174/translationCode" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "locale" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "6ef2035242b8fcb7b61c3a41850e60b3" + } + } + } + }, + "type": "object" + }, + "children": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/language/4994a8ffeba4ac3140beb89e8d41f174/children" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "language" + }, + "id": { + "type": "string", + "example": "268184c12df027f536154d099d497b31" + } + } + } + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + ] + }, + "Language": { + "description": "Added since version: 6.0.0.0", "required": [ + "id", + "localeId", + "name", "createdAt" ], "properties": { @@ -4562,6 +4845,24 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "parentId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "localeId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "translationCodeId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "name": { + "type": "string" + }, + "customFields": { + "type": "object" + }, "createdAt": { "type": "string", "format": "date-time", @@ -4571,20 +4872,51 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "parent": { + "$ref": "#/components/schemas/Language" + }, + "locale": { + "$ref": "#/components/schemas/Locale" + }, + "translationCode": { + "$ref": "#/components/schemas/Locale" + }, + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + } } }, "type": "object" }, - "MediaFolderConfiguration": { + "Locale": { "description": "Added since version: 6.0.0.0", "required": [ - "createdAt" + "id", + "code", + "createdAt", + "name", + "territory" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "code": { + "type": "string" + }, + "name": { + "type": "string" + }, + "territory": { + "type": "string" + }, + "customFields": { + "type": "object" + }, "createdAt": { "type": "string", "format": "date-time", @@ -4594,70 +4926,107 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "translated": { + "type": "object" } }, "type": "object" }, - "MediaTag": { + "LogEntry": { "description": "Added since version: 6.0.0.0", "required": [ - "mediaId", - "tagId" + "createdAt" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "mediaId": { + "createdAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "tagId": { + "updatedAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "media": { - "$ref": "#/components/schemas/Media" - }, - "tag": { - "$ref": "#/components/schemas/Tag" + "format": "date-time", + "readOnly": true } }, "type": "object" }, - "MediaThumbnail": { + "MailHeaderFooter": { "description": "Added since version: 6.0.0.0", "required": [ - "mediaId", - "width", - "height", - "createdAt" + "createdAt", + "name" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "mediaId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "systemDefault": { + "type": "boolean" }, - "width": { - "type": "integer", - "format": "int64", + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "headerHtml": { + "type": "string" + }, + "headerPlain": { + "type": "string" + }, + "footerHtml": { + "type": "string" + }, + "footerPlain": { + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time", "readOnly": true }, - "height": { - "type": "integer", - "format": "int64", + "updatedAt": { + "type": "string", + "format": "date-time", "readOnly": true }, - "url": { - "description": "Runtime field, cannot be used as part of the criteria.", + "translated": { + "type": "object" + } + }, + "type": "object" + }, + "MailTemplate": { + "description": "Added since version: 6.0.0.0", + "required": [ + "createdAt", + "subject", + "contentHtml", + "contentPlain" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "systemDefault": { + "type": "boolean" + }, + "senderName": { "type": "string" }, - "path": { + "contentHtml": { + "type": "string" + }, + "contentPlain": { "type": "string" }, "customFields": { @@ -4672,30 +5041,76 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "translated": { + "type": "object" + }, + "mailTemplateType": { + "$ref": "#/components/schemas/MailTemplateType" + }, + "media": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MailTemplateMedia" + } } }, "type": "object" }, - "MediaThumbnailSize": { + "MailTemplateMedia": { "description": "Added since version: 6.0.0.0", "required": [ - "width", - "height", - "createdAt" + "id", + "mailTemplateId", + "languageId", + "mediaId" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "width": { - "type": "integer", - "format": "int64" + "mailTemplateId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "height": { + "languageId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "mediaId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "position": { "type": "integer", "format": "int64" }, + "media": { + "$ref": "#/components/schemas/Media" + } + }, + "type": "object" + }, + "MailTemplateType": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "technicalName", + "createdAt", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "name": { + "type": "string" + }, + "technicalName": { + "type": "string" + }, "customFields": { "type": "object" }, @@ -4708,18 +5123,25 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "translated": { + "type": "object" } }, "type": "object" }, - "NewsletterRecipientJsonApi": { - "description": "Added since version: 6.0.0.0", + "MainCategoryJsonApi": { + "description": "Added since version: 6.1.0.0", "allOf": [ { "$ref": "#/components/schemas/resource" }, { "required": [ + "id", + "productId", + "categoryId", + "salesChannelId", "createdAt" ], "properties": { @@ -4727,6 +5149,26 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "productId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "categoryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "categoryVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "salesChannelId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "createdAt": { "type": "string", "format": "date-time", @@ -4742,9 +5184,13 @@ } ] }, - "NewsletterRecipient": { - "description": "Added since version: 6.0.0.0", + "MainCategory": { + "description": "Added since version: 6.1.0.0", "required": [ + "id", + "productId", + "categoryId", + "salesChannelId", "createdAt" ], "properties": { @@ -4752,76 +5198,23 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "Notification": { - "description": "Added since version: 6.4.7.0", - "required": [ - "createdAt" - ], - "properties": { - "id": { + "productId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "NumberRange": { - "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt", - "name" - ], - "properties": { - "id": { + "productVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { + "categoryId": { "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "updatedAt": { + "categoryVersionId": { "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "translated": { - "type": "object" - } - }, - "type": "object" - }, - "NumberRangeSalesChannel": { - "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], - "properties": { - "id": { + "salesChannelId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, @@ -4838,9 +5231,17 @@ }, "type": "object" }, - "NumberRangeState": { + "Media": { "description": "Added since version: 6.0.0.0", "required": [ + "apiAlias", + "fileExtension", + "fileName", + "hasFile", + "path", + "private", + "url", + "id", "createdAt" ], "properties": { @@ -4848,245 +5249,58 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { + "mimeType": { "type": "string", - "format": "date-time", "readOnly": true }, - "updatedAt": { + "fileExtension": { "type": "string", - "format": "date-time", "readOnly": true - } - }, - "type": "object" - }, - "NumberRangeType": { - "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt", - "typeName" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { + "uploadedAt": { "type": "string", "format": "date-time", "readOnly": true }, - "updatedAt": { + "fileName": { "type": "string", - "format": "date-time", "readOnly": true }, - "translated": { - "type": "object" - } - }, - "type": "object" - }, - "Order": { - "description": "Added since version: 6.0.0.0", - "required": [ - "billingAddressId", - "currencyId", - "languageId", - "salesChannelId", - "orderDateTime", - "currencyFactor", - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "orderNumber": { - "type": "string" - }, - "billingAddressId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "billingAddressVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "languageId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "salesChannelId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "orderDateTime": { - "type": "string", - "format": "date-time" - }, - "orderDate": { - "type": "string", - "readOnly": true - }, - "price": { - "required": [ - "netPrice", - "totalPrice", - "positionPrice", - "rawTotal", - "taxStatus" - ], - "properties": { - "netPrice": { - "type": "number", - "format": "float" - }, - "totalPrice": { - "type": "number", - "format": "float" - }, - "calculatedTaxes": { - "type": "object" - }, - "taxRules": { - "type": "object" - }, - "positionPrice": { - "type": "number", - "format": "float" - }, - "rawTotal": { - "type": "number", - "format": "float" - }, - "taxStatus": { - "type": "string" - } - }, - "type": "object" - }, - "amountTotal": { - "type": "number", - "format": "float", - "readOnly": true - }, - "amountNet": { - "type": "number", - "format": "float", - "readOnly": true - }, - "positionPrice": { - "type": "number", - "format": "float", + "fileSize": { + "type": "integer", + "format": "int64", "readOnly": true }, - "taxStatus": { - "type": "string", + "metaData": { + "type": "object", "readOnly": true }, - "shippingCosts": { - "required": [ - "unitPrice", - "totalPrice", - "quantity" - ], - "properties": { - "unitPrice": { - "type": "number", - "format": "float" - }, - "totalPrice": { - "type": "number", - "format": "float" - }, - "quantity": { - "type": "integer", - "format": "int64" - }, - "calculatedTaxes": { - "type": "object" - }, - "taxRules": { - "type": "object" - }, - "referencePrice": { - "type": "object" - }, - "listPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - }, - "discount": { - "type": "number", - "format": "float" - }, - "percentage": { - "type": "number", - "format": "float" - } - }, - "type": "object" - }, - "regulationPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - } - }, - "type": "object" - } - }, + "config": { "type": "object" }, - "shippingTotal": { - "type": "number", - "format": "float", - "readOnly": true - }, - "currencyFactor": { - "type": "number", - "format": "float" - }, - "deepLinkCode": { + "alt": { "type": "string" }, - "affiliateCode": { + "title": { "type": "string" }, - "campaignCode": { + "url": { + "description": "Runtime field, cannot be used as part of the criteria.", "type": "string" }, - "customerComment": { + "path": { "type": "string" }, - "source": { - "type": "string" + "hasFile": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "boolean" + }, + "private": { + "type": "boolean" }, "customFields": { "type": "object" }, - "createdById": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "updatedById": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, "createdAt": { "type": "string", "format": "date-time", @@ -5097,9 +5311,12 @@ "format": "date-time", "readOnly": true }, + "translated": { + "type": "object" + }, "extensions": { "properties": { - "subscription": { + "mediaAiTag": { "properties": { "links": { "type": "object", @@ -5107,7 +5324,7 @@ "related": { "type": "string", "format": "uri-reference", - "example": "/order/a240fa27925a635b08dc28c9e4f9216d/subscription" + "example": "/media/3b563524fdb17b4a86590470d40bef74/mediaAiTag" } } }, @@ -5116,43 +5333,12 @@ "properties": { "type": { "type": "string", - "example": "subscription" + "example": "media_ai_tag" }, "id": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "example": "b48b13e73a6ac2a86dc54425dd24d9ff" - } - } - } - }, - "type": "object" - }, - "returns": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/order/a240fa27925a635b08dc28c9e4f9216d/returns" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "order_return" - }, - "id": { - "type": "string", - "example": "7fff84525c6516919851a9005373f87e" - } + "example": "3c88197809d464216a8c40a8db191b38" } } } @@ -5162,68 +5348,60 @@ }, "type": "object" }, - "stateMachineState": { - "$ref": "#/components/schemas/StateMachineState" - }, - "orderCustomer": { - "$ref": "#/components/schemas/OrderCustomer" + "thumbnails": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MediaThumbnail" + } }, - "currency": { - "$ref": "#/components/schemas/Currency" - }, - "language": { - "$ref": "#/components/schemas/Language" - }, - "addresses": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrderAddress" - } - }, - "billingAddress": { - "$ref": "#/components/schemas/OrderAddress" + "apiAlias": { + "type": "string", + "enum": [ + "media" + ] + } + }, + "type": "object" + }, + "MediaAiTag": { + "required": [ + "id", + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "deliveries": { + "tags": { "type": "array", "items": { - "$ref": "#/components/schemas/OrderDelivery" + "type": "object", + "additionalProperties": false } }, - "lineItems": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrderLineItem" - } + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, - "transactions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrderTransaction" - } + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, - "documents": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Document" - } + "translated": { + "type": "object" }, - "tags": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Tag" - } + "media": { + "$ref": "#/components/schemas/Media" } }, "type": "object" }, - "OrderAddress": { + "MediaDefaultFolder": { "description": "Added since version: 6.0.0.0", "required": [ - "countryId", - "firstName", - "lastName", - "street", - "city", "createdAt" ], "properties": { @@ -5231,57 +5409,29 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { + "createdAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "countryId": { + "updatedAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryStateId": { + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "MediaFolder": { + "description": "Added since version: 6.0.0.0", + "required": [ + "createdAt" + ], + "properties": { + "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "street": { - "type": "string" - }, - "zipcode": { - "type": "string" - }, - "city": { - "type": "string" - }, - "company": { - "type": "string" - }, - "department": { - "type": "string" - }, - "title": { - "type": "string" - }, - "vatId": { - "type": "string" - }, - "phoneNumber": { - "type": "string" - }, - "additionalAddressLine1": { - "type": "string" - }, - "additionalAddressLine2": { - "type": "string" - }, - "customFields": { - "type": "object" - }, "createdAt": { "type": "string", "format": "date-time", @@ -5291,62 +5441,95 @@ "type": "string", "format": "date-time", "readOnly": true + } + }, + "type": "object" + }, + "MediaFolderConfiguration": { + "description": "Added since version: 6.0.0.0", + "required": [ + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "$ref": "#/components/schemas/CountryState" + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true } }, "type": "object" }, - "OrderCustomer": { + "MediaTag": { "description": "Added since version: 6.0.0.0", "required": [ - "email", - "firstName", - "lastName", - "createdAt" + "mediaId", + "tagId" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { + "mediaId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "email": { - "type": "string" + "tagId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "salutationId": { + "media": { + "$ref": "#/components/schemas/Media" + }, + "tag": { + "$ref": "#/components/schemas/Tag" + } + }, + "type": "object" + }, + "MediaThumbnail": { + "description": "Added since version: 6.0.0.0", + "required": [ + "url", + "id", + "mediaId", + "width", + "height", + "createdAt" + ], + "properties": { + "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "firstName": { - "type": "string" + "mediaId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "lastName": { - "type": "string" + "width": { + "type": "integer", + "format": "int64", + "readOnly": true }, - "company": { - "type": "string" + "height": { + "type": "integer", + "format": "int64", + "readOnly": true }, - "title": { + "url": { + "description": "Runtime field, cannot be used as part of the criteria.", "type": "string" }, - "vatIds": { - "type": "array", - "items": { - "type": "string" - } - }, - "customerNumber": { + "path": { "type": "string" }, "customFields": { @@ -5361,23 +5544,16 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "salutation": { - "$ref": "#/components/schemas/Salutation" } }, "type": "object" }, - "OrderDelivery": { + "MediaThumbnailSize": { "description": "Added since version: 6.0.0.0", "required": [ - "orderId", - "shippingOrderAddressId", - "shippingMethodId", - "stateId", - "trackingCodes", - "shippingDateEarliest", - "shippingDateLatest", + "id", + "width", + "height", "createdAt" ], "properties": { @@ -5385,107 +5561,69 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "width": { + "type": "integer", + "format": "int64" }, - "orderId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "height": { + "type": "integer", + "format": "int64" }, - "orderVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shippingOrderAddressId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shippingOrderAddressVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shippingMethodId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "stateId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "trackingCodes": { - "type": "array", - "items": { - "type": "string" - } + "customFields": { + "type": "object" }, - "shippingDateEarliest": { + "createdAt": { "type": "string", - "format": "date-time" + "format": "date-time", + "readOnly": true }, - "shippingDateLatest": { + "updatedAt": { "type": "string", - "format": "date-time" + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "NewsletterRecipientJsonApi": { + "description": "Added since version: 6.0.0.0", + "allOf": [ + { + "$ref": "#/components/schemas/resource" }, - "shippingCosts": { + { "required": [ - "unitPrice", - "totalPrice", - "quantity" + "createdAt" ], "properties": { - "unitPrice": { - "type": "number", - "format": "float" - }, - "totalPrice": { - "type": "number", - "format": "float" - }, - "quantity": { - "type": "integer", - "format": "int64" - }, - "calculatedTaxes": { - "type": "object" - }, - "taxRules": { - "type": "object" - }, - "referencePrice": { - "type": "object" + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "listPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - }, - "discount": { - "type": "number", - "format": "float" - }, - "percentage": { - "type": "number", - "format": "float" - } - }, - "type": "object" + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, - "regulationPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - } - }, - "type": "object" + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true } }, "type": "object" - }, - "customFields": { - "type": "object" + } + ] + }, + "NewsletterRecipient": { + "description": "Added since version: 6.0.0.0", + "required": [ + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, "createdAt": { "type": "string", @@ -5496,30 +5634,13 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "stateMachineState": { - "$ref": "#/components/schemas/StateMachineState" - }, - "shippingOrderAddress": { - "$ref": "#/components/schemas/OrderAddress" - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" - }, - "positions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrderDeliveryPosition" - } } }, "type": "object" }, - "OrderDeliveryPosition": { - "description": "Added since version: 6.0.0.0", + "Notification": { + "description": "Added since version: 6.4.7.0", "required": [ - "orderDeliveryId", - "orderLineItemId", "createdAt" ], "properties": { @@ -5527,98 +5648,6 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "orderDeliveryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "orderDeliveryVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "orderLineItemId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "orderLineItemVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "price": { - "required": [ - "unitPrice", - "totalPrice", - "quantity" - ], - "properties": { - "unitPrice": { - "type": "number", - "format": "float" - }, - "totalPrice": { - "type": "number", - "format": "float" - }, - "quantity": { - "type": "integer", - "format": "int64" - }, - "calculatedTaxes": { - "type": "object" - }, - "taxRules": { - "type": "object" - }, - "referencePrice": { - "type": "object" - }, - "listPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - }, - "discount": { - "type": "number", - "format": "float" - }, - "percentage": { - "type": "number", - "format": "float" - } - }, - "type": "object" - }, - "regulationPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "unitPrice": { - "type": "number", - "format": "float" - }, - "totalPrice": { - "type": "number", - "format": "float" - }, - "quantity": { - "type": "integer", - "format": "int64" - }, - "customFields": { - "type": "object" - }, "createdAt": { "type": "string", "format": "date-time", @@ -5632,110 +5661,43 @@ }, "type": "object" }, - "OrderLineItem": { + "NumberRange": { "description": "Added since version: 6.0.0.0", "required": [ - "orderId", - "identifier", - "quantity", - "label", - "position", - "states", - "children", - "createdAt" + "createdAt", + "name" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { + "createdAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "orderId": { + "updatedAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "orderVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "parentId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "parentVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "coverId": { + "translated": { + "type": "object" + } + }, + "type": "object" + }, + "NumberRangeSalesChannel": { + "description": "Added since version: 6.0.0.0", + "required": [ + "createdAt" + ], + "properties": { + "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "identifier": { - "type": "string" - }, - "referencedId": { - "type": "string" - }, - "quantity": { - "type": "integer", - "format": "int64" - }, - "label": { - "type": "string" - }, - "payload": { - "type": "object" - }, - "good": { - "type": "boolean" - }, - "removable": { - "type": "boolean" - }, - "stackable": { - "type": "boolean" - }, - "position": { - "type": "integer", - "format": "int64" - }, - "states": { - "type": "array", - "items": { - "type": "string" - } - }, - "priceDefinition": { - "type": "object" - }, - "unitPrice": { - "type": "number", - "format": "float" - }, - "totalPrice": { - "type": "number", - "format": "float" - }, - "description": { - "type": "string" - }, - "type": { - "type": "string" - }, - "customFields": { - "type": "object" - }, "createdAt": { "type": "string", "format": "date-time", @@ -5745,106 +5707,13 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "extensions": { - "properties": { - "returns": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/order-line-item/40b401ac0b29ac5c5c8ffce649fdef62/returns" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "order_return_line_item" - }, - "id": { - "type": "string", - "example": "7fff84525c6516919851a9005373f87e" - } - } - } - } - }, - "type": "object" - }, - "state": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/order-line-item/40b401ac0b29ac5c5c8ffce649fdef62/state" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "state_machine_state" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "9ed39e2ea931586b6a985a6942ef573e" - } - } - } - }, - "type": "object" - } - }, - "type": "object" - }, - "cover": { - "$ref": "#/components/schemas/Media" - }, - "orderDeliveryPositions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrderDeliveryPosition" - } - }, - "downloads": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrderLineItemDownload" - } - }, - "parent": { - "$ref": "#/components/schemas/OrderLineItem" - }, - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrderLineItem" - } } }, "type": "object" }, - "OrderLineItemDownload": { - "description": "Added since version: 6.4.19.0", + "NumberRangeState": { + "description": "Added since version: 6.0.0.0", "required": [ - "orderLineItemId", - "mediaId", - "position", - "accessGranted", "createdAt" ], "properties": { @@ -5852,32 +5721,6 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "orderLineItemId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "orderLineItemVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "mediaId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "position": { - "type": "integer", - "format": "int64" - }, - "accessGranted": { - "type": "boolean" - }, - "customFields": { - "type": "object" - }, "createdAt": { "type": "string", "format": "date-time", @@ -5887,19 +5730,15 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "orderLineItem": { - "$ref": "#/components/schemas/OrderLineItem" - }, - "media": { - "$ref": "#/components/schemas/Media" } }, "type": "object" }, - "OrderProductWarehouse": { + "NumberRangeType": { + "description": "Added since version: 6.0.0.0", "required": [ - "createdAt" + "createdAt", + "typeName" ], "properties": { "id": { @@ -5915,16 +5754,26 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "translated": { + "type": "object" } }, "type": "object" }, - "OrderReturn": { + "Order": { + "description": "Added since version: 6.0.0.0", "required": [ - "orderId", - "stateId", - "returnNumber", - "requestedAt", + "documents", + "orderDate", + "stateMachineState", + "id", + "billingAddressId", + "currencyId", + "languageId", + "salesChannelId", + "orderDateTime", + "currencyFactor", "createdAt" ], "properties": { @@ -5936,24 +5785,47 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "orderId": { + "orderNumber": { + "type": "string" + }, + "billingAddressId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "orderVersionId": { + "billingAddressVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "price": { - "required": [ - "netPrice", - "totalPrice", - "positionPrice", - "rawTotal", - "taxStatus" - ], - "properties": { - "netPrice": { + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "languageId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "salesChannelId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "orderDateTime": { + "type": "string", + "format": "date-time" + }, + "orderDate": { + "type": "string", + "readOnly": true + }, + "price": { + "required": [ + "netPrice", + "totalPrice", + "positionPrice", + "rawTotal", + "taxStatus" + ], + "properties": { + "netPrice": { "type": "number", "format": "float" }, @@ -5981,6 +5853,25 @@ }, "type": "object" }, + "amountTotal": { + "type": "number", + "format": "float", + "readOnly": true + }, + "amountNet": { + "type": "number", + "format": "float", + "readOnly": true + }, + "positionPrice": { + "type": "number", + "format": "float", + "readOnly": true + }, + "taxStatus": { + "type": "string", + "readOnly": true + }, "shippingCosts": { "required": [ "unitPrice", @@ -6038,24 +5929,32 @@ }, "type": "object" }, - "stateId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "shippingTotal": { + "type": "number", + "format": "float", + "readOnly": true }, - "returnNumber": { + "currencyFactor": { + "type": "number", + "format": "float" + }, + "deepLinkCode": { "type": "string" }, - "requestedAt": { - "type": "string", - "format": "date-time" + "affiliateCode": { + "type": "string" }, - "amountTotal": { - "type": "number", - "format": "float" + "campaignCode": { + "type": "string" }, - "amountNet": { - "type": "number", - "format": "float" + "customerComment": { + "type": "string" + }, + "source": { + "type": "string" + }, + "customFields": { + "type": "object" }, "createdById": { "type": "string", @@ -6075,25 +5974,134 @@ "format": "date-time", "readOnly": true }, - "state": { + "extensions": { + "properties": { + "subscription": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/order/a240fa27925a635b08dc28c9e4f9216d/subscription" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "subscription" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "b48b13e73a6ac2a86dc54425dd24d9ff" + } + } + } + }, + "type": "object" + }, + "returns": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/order/a240fa27925a635b08dc28c9e4f9216d/returns" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "order_return" + }, + "id": { + "type": "string", + "example": "7fff84525c6516919851a9005373f87e" + } + } + } + } + }, + "type": "object" + } + }, + "type": "object" + }, + "stateMachineState": { "$ref": "#/components/schemas/StateMachineState" }, + "orderCustomer": { + "$ref": "#/components/schemas/OrderCustomer" + }, + "currency": { + "$ref": "#/components/schemas/Currency" + }, + "language": { + "$ref": "#/components/schemas/Language" + }, + "addresses": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrderAddress" + } + }, + "billingAddress": { + "$ref": "#/components/schemas/OrderAddress" + }, + "deliveries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrderDelivery" + } + }, "lineItems": { "type": "array", "items": { - "$ref": "#/components/schemas/OrderReturnLineItem" + "$ref": "#/components/schemas/OrderLineItem" + } + }, + "transactions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrderTransaction" + } + }, + "documents": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Document" + } + }, + "tags": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Tag" } } }, "type": "object" }, - "OrderReturnLineItem": { + "OrderAddress": { + "description": "Added since version: 6.0.0.0", "required": [ - "orderReturnId", - "orderLineItemId", - "reasonId", - "quantity", - "stateId", + "id", + "countryId", + "firstName", + "lastName", + "street", + "city", "createdAt" ], "properties": { @@ -6105,81 +6113,124 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "orderReturnId": { + "countryId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "orderReturnVersionId": { + "countryStateId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "orderLineItemId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "firstName": { + "type": "string" }, - "orderLineItemVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "lastName": { + "type": "string" }, - "reasonId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "street": { + "type": "string" }, - "quantity": { - "type": "integer", - "format": "int64" + "zipcode": { + "type": "string" }, - "refundAmount": { - "type": "number", - "format": "float" + "city": { + "type": "string" }, - "restockQuantity": { - "type": "integer", - "format": "int64" + "company": { + "type": "string" }, - "customFields": { - "type": "object" + "department": { + "type": "string" }, - "stateId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "title": { + "type": "string" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "vatId": { + "type": "string" + }, + "phoneNumber": { + "type": "string" + }, + "additionalAddressLine1": { + "type": "string" + }, + "additionalAddressLine2": { + "type": "string" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, "updatedAt": { "type": "string", "format": "date-time", "readOnly": true }, - "reason": { - "$ref": "#/components/schemas/OrderReturnLineItemReason" + "country": { + "$ref": "#/components/schemas/Country" }, - "state": { - "$ref": "#/components/schemas/StateMachineState" + "countryState": { + "$ref": "#/components/schemas/CountryState" + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, "type": "object" }, - "OrderReturnLineItemReason": { + "OrderCustomer": { + "description": "Added since version: 6.0.0.0", "required": [ - "reasonKey", - "createdAt", - "content" + "id", + "email", + "firstName", + "lastName", + "createdAt" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "reasonKey": { + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "email": { "type": "string" }, - "content": { + "salutationId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "company": { + "type": "string" + }, + "title": { + "type": "string" + }, + "vatIds": { + "type": "array", + "items": { + "type": "string" + } + }, + "customerNumber": { "type": "string" }, + "customFields": { + "type": "object" + }, "createdAt": { "type": "string", "format": "date-time", @@ -6190,23 +6241,34 @@ "format": "date-time", "readOnly": true }, - "translated": { - "type": "object" + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, "type": "object" }, - "OrderTag": { + "OrderDelivery": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "orderId", - "tagId" + "shippingOrderAddressId", + "shippingMethodId", + "stateId", + "trackingCodes", + "shippingDateEarliest", + "shippingDateLatest", + "createdAt" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "orderId": { "type": "string", "pattern": "^[0-9a-f]{32}$" @@ -6215,50 +6277,37 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "tagId": { + "shippingOrderAddressId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "order": { - "$ref": "#/components/schemas/Order" - }, - "tag": { - "$ref": "#/components/schemas/Tag" - } - }, - "type": "object" - }, - "OrderTransaction": { - "description": "Added since version: 6.0.0.0", - "required": [ - "orderId", - "paymentMethodId", - "amount", - "stateId", - "createdAt" - ], - "properties": { - "id": { + "shippingOrderAddressVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { + "shippingMethodId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "orderId": { + "stateId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "orderVersionId": { + "trackingCodes": { + "type": "array", + "items": { + "type": "string" + } + }, + "shippingDateEarliest": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time" }, - "paymentMethodId": { + "shippingDateLatest": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time" }, - "amount": { + "shippingCosts": { "required": [ "unitPrice", "totalPrice", @@ -6315,10 +6364,6 @@ }, "type": "object" }, - "stateId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, "customFields": { "type": "object" }, @@ -6335,24 +6380,27 @@ "stateMachineState": { "$ref": "#/components/schemas/StateMachineState" }, - "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethod" + "shippingOrderAddress": { + "$ref": "#/components/schemas/OrderAddress" }, - "captures": { + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + }, + "positions": { "type": "array", "items": { - "$ref": "#/components/schemas/OrderTransactionCapture" + "$ref": "#/components/schemas/OrderDeliveryPosition" } } }, "type": "object" }, - "OrderTransactionCapture": { - "description": "Added since version: 6.4.12.0", + "OrderDeliveryPosition": { + "description": "Added since version: 6.0.0.0", "required": [ - "orderTransactionId", - "stateId", - "amount", + "id", + "orderDeliveryId", + "orderLineItemId", "createdAt" ], "properties": { @@ -6364,22 +6412,23 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "orderTransactionId": { + "orderDeliveryId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "orderTransactionVersionId": { + "orderDeliveryVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "stateId": { + "orderLineItemId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "externalReference": { - "type": "string" + "orderLineItemVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "amount": { + "price": { "required": [ "unitPrice", "totalPrice", @@ -6436,6 +6485,18 @@ }, "type": "object" }, + "unitPrice": { + "type": "number", + "format": "float" + }, + "totalPrice": { + "type": "number", + "format": "float" + }, + "quantity": { + "type": "integer", + "format": "int64" + }, "customFields": { "type": "object" }, @@ -6448,28 +6509,22 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "stateMachineState": { - "$ref": "#/components/schemas/StateMachineState" - }, - "transaction": { - "$ref": "#/components/schemas/OrderTransaction" - }, - "refunds": { - "type": "array", - "items": { - "$ref": "#/components/schemas/OrderTransactionCaptureRefund" - } } }, "type": "object" }, - "OrderTransactionCaptureRefund": { - "description": "Added since version: 6.4.12.0", + "OrderLineItem": { + "description": "Added since version: 6.0.0.0", "required": [ - "captureId", - "stateId", - "amount", + "apiAlias", + "id", + "orderId", + "identifier", + "quantity", + "label", + "position", + "states", + "children", "createdAt" ], "properties": { @@ -6481,80 +6536,184 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "captureId": { + "orderId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "captureVersionId": { + "orderVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "stateId": { + "productId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "externalReference": { + "productVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "promotionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "parentId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "parentVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "coverId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "identifier": { "type": "string" }, - "reason": { + "referencedId": { "type": "string" }, - "amount": { - "required": [ - "unitPrice", - "totalPrice", - "quantity" - ], + "quantity": { + "type": "integer", + "format": "int64" + }, + "label": { + "type": "string" + }, + "payload": { + "type": "object", "properties": { - "unitPrice": { - "type": "number", - "format": "float" - }, - "totalPrice": { - "type": "number", - "format": "float" + "categoryIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true }, - "quantity": { - "type": "integer", - "format": "int64" + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, - "calculatedTaxes": { + "customFields": { "type": "object" }, - "taxRules": { - "type": "object" + "features": { + "type": "array" }, - "referencePrice": { - "type": "object" + "isCloseout": { + "type": "boolean" }, - "listPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - }, - "discount": { - "type": "number", - "format": "float" - }, - "percentage": { - "type": "number", - "format": "float" - } + "isNew": { + "type": "boolean" + }, + "manufacturerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "markAsTopseller": { + "type": "boolean" + }, + "optionIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "type": "object" + "readOnly": true }, - "regulationPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - } + "options": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PropertyGroupOption" + } + }, + "parentId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productNumber": { + "type": "string" + }, + "propertyIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "type": "object" + "readOnly": true + }, + "purchasePrices": { + "type": "string" + }, + "releaseDate": { + "type": "string", + "format": "date-time" + }, + "stock": { + "type": "integer", + "format": "int64" + }, + "streamIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "tagIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "taxId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } - }, - "type": "object" + } + }, + "good": { + "type": "boolean" + }, + "removable": { + "type": "boolean" + }, + "stackable": { + "type": "boolean" + }, + "position": { + "type": "integer", + "format": "int64" + }, + "states": { + "type": "array", + "items": { + "type": "string" + } + }, + "priceDefinition": { + "type": "object", + "$ref": "#/components/schemas/CartPriceQuantity" + }, + "unitPrice": { + "type": "number", + "format": "float" + }, + "totalPrice": { + "type": "number", + "format": "float" + }, + "description": { + "type": "string" + }, + "type": { + "type": "string" }, "customFields": { "type": "object" @@ -6569,27 +6728,116 @@ "format": "date-time", "readOnly": true }, - "stateMachineState": { - "$ref": "#/components/schemas/StateMachineState" + "extensions": { + "properties": { + "returns": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/order-line-item/40b401ac0b29ac5c5c8ffce649fdef62/returns" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "order_return_line_item" + }, + "id": { + "type": "string", + "example": "7fff84525c6516919851a9005373f87e" + } + } + } + } + }, + "type": "object" + }, + "state": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/order-line-item/40b401ac0b29ac5c5c8ffce649fdef62/state" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "state_machine_state" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "9ed39e2ea931586b6a985a6942ef573e" + } + } + } + }, + "type": "object" + } + }, + "type": "object" }, - "transactionCapture": { - "$ref": "#/components/schemas/OrderTransactionCapture" + "cover": { + "$ref": "#/components/schemas/Media" }, - "positions": { + "orderDeliveryPositions": { "type": "array", "items": { - "$ref": "#/components/schemas/OrderTransactionCaptureRefundPosition" + "$ref": "#/components/schemas/OrderDeliveryPosition" + } + }, + "downloads": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrderLineItemDownload" + } + }, + "parent": { + "$ref": "#/components/schemas/OrderLineItem" + }, + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrderLineItem" } + }, + "apiAlias": { + "type": "string", + "enum": [ + "order_line_item" + ] + }, + "translated": { + "type": "object" } }, "type": "object" }, - "OrderTransactionCaptureRefundPosition": { - "description": "Added since version: 6.4.12.0", + "OrderLineItemDownload": { + "description": "Added since version: 6.4.19.0", "required": [ - "refundId", + "media", + "id", "orderLineItemId", - "amount", + "mediaId", + "position", + "accessGranted", "createdAt" ], "properties": { @@ -6601,33 +6849,133 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "refundId": { + "orderLineItemId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "refundVersionId": { + "orderLineItemVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "orderLineItemId": { + "mediaId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "orderLineItemVersionId": { + "position": { + "type": "integer", + "format": "int64" + }, + "accessGranted": { + "type": "boolean" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "orderLineItem": { + "$ref": "#/components/schemas/OrderLineItem" + }, + "media": { + "$ref": "#/components/schemas/Media" + } + }, + "type": "object" + }, + "OrderProductWarehouse": { + "required": [ + "createdAt" + ], + "properties": { + "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "externalReference": { - "type": "string" + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, - "reason": { - "type": "string" + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "OrderReturn": { + "required": [ + "id", + "orderId", + "stateId", + "returnNumber", + "requestedAt", + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "quantity": { - "type": "integer", - "format": "int64" + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "amount": { + "orderId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "orderVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "price": { + "required": [ + "netPrice", + "totalPrice", + "positionPrice", + "rawTotal", + "taxStatus" + ], + "properties": { + "netPrice": { + "type": "number", + "format": "float" + }, + "totalPrice": { + "type": "number", + "format": "float" + }, + "calculatedTaxes": { + "type": "object" + }, + "taxRules": { + "type": "object" + }, + "positionPrice": { + "type": "number", + "format": "float" + }, + "rawTotal": { + "type": "number", + "format": "float" + }, + "taxStatus": { + "type": "string" + } + }, + "type": "object" + }, + "shippingCosts": { "required": [ "unitPrice", "totalPrice", @@ -6684,9 +7032,113 @@ }, "type": "object" }, + "stateId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "returnNumber": { + "type": "string" + }, + "requestedAt": { + "type": "string", + "format": "date-time" + }, + "amountTotal": { + "type": "number", + "format": "float" + }, + "amountNet": { + "type": "number", + "format": "float" + }, + "createdById": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "updatedById": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "state": { + "$ref": "#/components/schemas/StateMachineState" + }, + "lineItems": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrderReturnLineItem" + } + } + }, + "type": "object" + }, + "OrderReturnLineItem": { + "required": [ + "id", + "orderReturnId", + "orderLineItemId", + "reasonId", + "quantity", + "stateId", + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "orderReturnId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "orderReturnVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "orderLineItemId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "orderLineItemVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "reasonId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "quantity": { + "type": "integer", + "format": "int64" + }, + "refundAmount": { + "type": "number", + "format": "float" + }, + "restockQuantity": { + "type": "integer", + "format": "int64" + }, "customFields": { "type": "object" }, + "stateId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "createdAt": { "type": "string", "format": "date-time", @@ -6697,24 +7149,33 @@ "format": "date-time", "readOnly": true }, - "orderLineItem": { - "$ref": "#/components/schemas/OrderLineItem" + "reason": { + "$ref": "#/components/schemas/OrderReturnLineItemReason" }, - "orderTransactionCaptureRefund": { - "$ref": "#/components/schemas/OrderTransactionCaptureRefund" + "state": { + "$ref": "#/components/schemas/StateMachineState" } }, "type": "object" }, - "OrderWarehouseGroup": { + "OrderReturnLineItemReason": { "required": [ - "createdAt" + "id", + "reasonKey", + "createdAt", + "content" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "reasonKey": { + "type": "string" + }, + "content": { + "type": "string" + }, "createdAt": { "type": "string", "format": "date-time", @@ -6724,812 +7185,644 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "translated": { + "type": "object" } }, "type": "object" }, - "PaymentMethodJsonApi": { - "description": "Added since version: 6.0.0.0", - "allOf": [ - { - "$ref": "#/components/schemas/resource" - }, - { - "required": [ - "createdAt", - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "name": { - "type": "string" - }, - "distinguishableName": { - "type": "string", - "readOnly": true - }, - "description": { - "type": "string" - }, - "position": { - "type": "integer", - "format": "int64" - }, - "active": { - "type": "boolean" - }, - "afterOrderEnabled": { - "type": "boolean" - }, - "customFields": { - "type": "object" - }, - "mediaId": { - "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 - }, - "shortName": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "string" - }, - "technicalName": { - "type": "string" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - }, - "relationships": { - "properties": { - "media": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/payment-method/da8da1569e6bef3249a7064261df833f/media" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "media" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "62933a2951ef01f4eafd9bdf4d3cd2f0" - } - } - } - }, - "type": "object" - } - }, - "type": "object" - } - }, - "type": "object" - } - ] - }, - "PaymentMethod": { + "OrderTag": { "description": "Added since version: 6.0.0.0", "required": [ - "createdAt", - "name" + "orderId", + "tagId" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "name": { - "type": "string" - }, - "distinguishableName": { - "type": "string", - "readOnly": true - }, - "description": { - "type": "string" - }, - "position": { - "type": "integer", - "format": "int64" - }, - "active": { - "type": "boolean" - }, - "afterOrderEnabled": { - "type": "boolean" - }, - "customFields": { - "type": "object" - }, - "mediaId": { + "orderId": { "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 - }, - "shortName": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "string" - }, - "technicalName": { - "type": "string" - }, - "createdAt": { + "orderVersionId": { "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "updatedAt": { + "tagId": { "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "translated": { - "type": "object" + "order": { + "$ref": "#/components/schemas/Order" }, - "media": { - "$ref": "#/components/schemas/Media" + "tag": { + "$ref": "#/components/schemas/Tag" } }, "type": "object" }, - "Plugin": { + "OrderTransaction": { "description": "Added since version: 6.0.0.0", "required": [ - "createdAt", - "label" + "id", + "orderId", + "paymentMethodId", + "amount", + "stateId", + "createdAt" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { + "versionId": { "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "updatedAt": { + "orderId": { "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "translated": { - "type": "object" - } - }, - "type": "object" - }, - "ProductJsonApi": { - "description": "Added since version: 6.0.0.0", - "allOf": [ - { - "$ref": "#/components/schemas/resource" + "orderVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - { + "paymentMethodId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "amount": { "required": [ - "taxId", - "productNumber", - "stock", - "createdAt", - "name" + "unitPrice", + "totalPrice", + "quantity" ], "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "unitPrice": { + "type": "number", + "format": "float" }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "parentId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "parentVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "manufacturerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productManufacturerVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "unitId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "taxId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "coverId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productMediaVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "deliveryTimeId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "canonicalProductId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "cmsPageId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "cmsPageVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productNumber": { - "type": "string" - }, - "restockTime": { - "type": "integer", - "format": "int64" - }, - "active": { - "type": "boolean" - }, - "available": { - "type": "boolean", - "readOnly": true - }, - "isCloseout": { - "type": "boolean" - }, - "displayGroup": { - "type": "string", - "readOnly": true - }, - "manufacturerNumber": { - "type": "string" - }, - "ean": { - "type": "string" - }, - "purchaseSteps": { - "type": "integer", - "format": "int64" - }, - "maxPurchase": { - "type": "integer", - "format": "int64" + "totalPrice": { + "type": "number", + "format": "float" }, - "minPurchase": { + "quantity": { "type": "integer", "format": "int64" }, - "purchaseUnit": { - "type": "number", - "format": "float" + "calculatedTaxes": { + "type": "object" }, - "referenceUnit": { - "type": "number", - "format": "float" + "taxRules": { + "type": "object" }, - "shippingFree": { - "type": "boolean" + "referencePrice": { + "type": "object" }, - "markAsTopseller": { - "type": "boolean" + "listPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + }, + "discount": { + "type": "number", + "format": "float" + }, + "percentage": { + "type": "number", + "format": "float" + } + }, + "type": "object" }, - "weight": { + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "validationData": { + "type": "object" + }, + "stateId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "stateMachineState": { + "$ref": "#/components/schemas/StateMachineState" + }, + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod" + }, + "captures": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrderTransactionCapture" + } + } + }, + "type": "object" + }, + "OrderTransactionCapture": { + "description": "Added since version: 6.4.12.0", + "required": [ + "id", + "orderTransactionId", + "stateId", + "amount", + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "orderTransactionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "orderTransactionVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "stateId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "externalReference": { + "type": "string" + }, + "amount": { + "required": [ + "unitPrice", + "totalPrice", + "quantity" + ], + "properties": { + "unitPrice": { "type": "number", "format": "float" }, - "width": { + "totalPrice": { "type": "number", "format": "float" }, - "height": { - "type": "number", - "format": "float" + "quantity": { + "type": "integer", + "format": "int64" }, - "length": { - "type": "number", - "format": "float" + "calculatedTaxes": { + "type": "object" }, - "releaseDate": { - "type": "string", - "format": "date-time" + "taxRules": { + "type": "object" }, - "ratingAverage": { - "type": "number", - "format": "float", - "readOnly": true + "referencePrice": { + "type": "object" }, - "categoryTree": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "listPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + }, + "discount": { + "type": "number", + "format": "float" + }, + "percentage": { + "type": "number", + "format": "float" + } }, - "readOnly": true + "type": "object" }, - "propertyIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, - "optionIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, - "streamIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, - "tagIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, - "categoryIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, - "childCount": { - "type": "integer", - "format": "int64", - "readOnly": true - }, - "sales": { - "type": "integer", - "format": "int64", - "readOnly": true - }, - "states": { - "type": "array", - "items": { - "type": "string" + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + } }, - "readOnly": true - }, - "metaDescription": { - "type": "string" - }, - "name": { - "type": "string" - }, - "keywords": { - "type": "string" - }, - "description": { - "type": "string" - }, - "metaTitle": { - "type": "string" - }, - "packUnit": { - "type": "string" - }, - "packUnitPlural": { - "type": "string" - }, - "customFields": { - "type": "object" - }, - "availableStock": { - "type": "integer", - "format": "int64" - }, - "stock": { - "type": "integer", - "format": "int64" - }, - "calculatedPrice": { "type": "object" + } + }, + "type": "object" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "stateMachineState": { + "$ref": "#/components/schemas/StateMachineState" + }, + "transaction": { + "$ref": "#/components/schemas/OrderTransaction" + }, + "refunds": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrderTransactionCaptureRefund" + } + } + }, + "type": "object" + }, + "OrderTransactionCaptureRefund": { + "description": "Added since version: 6.4.12.0", + "required": [ + "id", + "captureId", + "stateId", + "amount", + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "captureId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "captureVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "stateId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "externalReference": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "amount": { + "required": [ + "unitPrice", + "totalPrice", + "quantity" + ], + "properties": { + "unitPrice": { + "type": "number", + "format": "float" }, - "calculatedPrices": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": false - } + "totalPrice": { + "type": "number", + "format": "float" }, - "calculatedMaxPurchase": { - "description": "Runtime field, cannot be used as part of the criteria.", + "quantity": { "type": "integer", "format": "int64" }, - "calculatedCheapestPrice": { + "calculatedTaxes": { "type": "object" }, - "isNew": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean" - }, - "sortedProperties": { + "taxRules": { "type": "object" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { + "referencePrice": { "type": "object" }, - "extensions": { + "listPrice": { "properties": { - "reviewSummaries": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/reviewSummaries" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product_review_summary" - }, - "id": { - "type": "string", - "example": "c9c718522e64ffa5effb26cef94f4849" - } - } - } - } - }, - "type": "object" + "price": { + "type": "number", + "format": "float" + }, + "discount": { + "type": "number", + "format": "float" + }, + "percentage": { + "type": "number", + "format": "float" } }, "type": "object" }, - "relationships": { + "regulationPrice": { "properties": { - "downloads": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/downloads" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product_download" - }, - "id": { - "type": "string", - "example": "d07d50a751bc6ddf12bf3af0efee9b45" - } - } - } - } - }, - "type": "object" - }, - "parent": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/parent" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "d0e45878043844ffc41aac437e86b602" - } - } - } - }, - "type": "object" - }, - "children": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/children" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product" - }, - "id": { - "type": "string", - "example": "268184c12df027f536154d099d497b31" - } - } - } - } - }, - "type": "object" - }, - "deliveryTime": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/deliveryTime" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "delivery_time" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "8c888ae25a7bd42057370e31f7e01044" - } - } - } - }, - "type": "object" + "price": { + "type": "number", + "format": "float" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "stateMachineState": { + "$ref": "#/components/schemas/StateMachineState" + }, + "transactionCapture": { + "$ref": "#/components/schemas/OrderTransactionCapture" + }, + "positions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrderTransactionCaptureRefundPosition" + } + } + }, + "type": "object" + }, + "OrderTransactionCaptureRefundPosition": { + "description": "Added since version: 6.4.12.0", + "required": [ + "id", + "refundId", + "orderLineItemId", + "amount", + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "refundId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "refundVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "orderLineItemId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "orderLineItemVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "externalReference": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "quantity": { + "type": "integer", + "format": "int64" + }, + "amount": { + "required": [ + "unitPrice", + "totalPrice", + "quantity" + ], + "properties": { + "unitPrice": { + "type": "number", + "format": "float" + }, + "totalPrice": { + "type": "number", + "format": "float" + }, + "quantity": { + "type": "integer", + "format": "int64" + }, + "calculatedTaxes": { + "type": "object" + }, + "taxRules": { + "type": "object" + }, + "referencePrice": { + "type": "object" + }, + "listPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" }, - "tax": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/tax" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "tax" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "06565e5611f23fdf8cc43e5077b92b54" - } - } - } - }, - "type": "object" + "discount": { + "type": "number", + "format": "float" }, - "manufacturer": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/manufacturer" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product_manufacturer" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "c2904bca62b22443d6cf5e9d89cab204" - } - } - } - }, - "type": "object" - }, - "unit": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/unit" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "unit" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "3e34bdebd9bd5edda27e8728904a2552" - } - } - } - }, - "type": "object" - }, - "cover": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/cover" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product_media" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "41d0e299ca1abeb2094852da042165c7" - } - } - } - }, - "type": "object" - }, - "cmsPage": { + "percentage": { + "type": "number", + "format": "float" + } + }, + "type": "object" + }, + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "orderLineItem": { + "$ref": "#/components/schemas/OrderLineItem" + }, + "orderTransactionCaptureRefund": { + "$ref": "#/components/schemas/OrderTransactionCaptureRefund" + } + }, + "type": "object" + }, + "OrderWarehouseGroup": { + "required": [ + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "PaymentMethodJsonApi": { + "description": "Added since version: 6.0.0.0", + "allOf": [ + { + "$ref": "#/components/schemas/resource" + }, + { + "required": [ + "id", + "createdAt", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "name": { + "type": "string" + }, + "distinguishableName": { + "type": "string", + "readOnly": true + }, + "description": { + "type": "string" + }, + "position": { + "type": "integer", + "format": "int64" + }, + "active": { + "type": "boolean" + }, + "afterOrderEnabled": { + "type": "boolean" + }, + "customFields": { + "type": "object" + }, + "mediaId": { + "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 + }, + "shortName": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "string" + }, + "technicalName": { + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + }, + "relationships": { + "properties": { + "media": { "properties": { "links": { "type": "object", @@ -7537,7 +7830,7 @@ "related": { "type": "string", "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/cmsPage" + "example": "/payment-method/da8da1569e6bef3249a7064261df833f/media" } } }, @@ -7546,28 +7839,746 @@ "properties": { "type": { "type": "string", - "example": "cms_page" + "example": "media" }, "id": { "type": "string", "pattern": "^[0-9a-f]{32}$", - "example": "7b1460918b1abb93311108f3dc021c9b" + "example": "62933a2951ef01f4eafd9bdf4d3cd2f0" } } } }, "type": "object" - }, - "canonicalProduct": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/canonicalProduct" - } + } + }, + "type": "object" + } + }, + "type": "object" + } + ] + }, + "PaymentMethod": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "createdAt", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "name": { + "type": "string" + }, + "distinguishableName": { + "type": "string", + "readOnly": true + }, + "description": { + "type": "string" + }, + "position": { + "type": "integer", + "format": "int64" + }, + "active": { + "type": "boolean" + }, + "afterOrderEnabled": { + "type": "boolean" + }, + "customFields": { + "type": "object" + }, + "mediaId": { + "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 + }, + "shortName": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "string" + }, + "technicalName": { + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + }, + "media": { + "$ref": "#/components/schemas/Media" + } + }, + "type": "object" + }, + "Plugin": { + "description": "Added since version: 6.0.0.0", + "required": [ + "createdAt", + "label" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + }, + "ProductJsonApi": { + "description": "Added since version: 6.0.0.0", + "allOf": [ + { + "$ref": "#/components/schemas/resource" + }, + { + "required": [ + "id", + "taxId", + "productNumber", + "stock", + "createdAt", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "parentId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "parentVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "manufacturerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productManufacturerVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "unitId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "taxId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "coverId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productMediaVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "deliveryTimeId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "canonicalProductId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "canonicalProductVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "cmsPageId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "cmsPageVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productNumber": { + "type": "string" + }, + "restockTime": { + "type": "integer", + "format": "int64" + }, + "active": { + "type": "boolean" + }, + "available": { + "type": "boolean", + "readOnly": true + }, + "isCloseout": { + "type": "boolean" + }, + "availableStock": { + "type": "integer", + "format": "int64", + "readOnly": true + }, + "stock": { + "type": "integer", + "format": "int64" + }, + "displayGroup": { + "type": "string", + "readOnly": true + }, + "manufacturerNumber": { + "type": "string" + }, + "ean": { + "type": "string" + }, + "purchaseSteps": { + "type": "integer", + "format": "int64" + }, + "maxPurchase": { + "type": "integer", + "format": "int64" + }, + "minPurchase": { + "type": "integer", + "format": "int64" + }, + "purchaseUnit": { + "type": "number", + "format": "float" + }, + "referenceUnit": { + "type": "number", + "format": "float" + }, + "shippingFree": { + "type": "boolean" + }, + "markAsTopseller": { + "type": "boolean" + }, + "weight": { + "type": "number", + "format": "float" + }, + "width": { + "type": "number", + "format": "float" + }, + "height": { + "type": "number", + "format": "float" + }, + "length": { + "type": "number", + "format": "float" + }, + "releaseDate": { + "type": "string", + "format": "date-time" + }, + "ratingAverage": { + "type": "number", + "format": "float", + "readOnly": true + }, + "categoryTree": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "propertyIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "optionIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "streamIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "tagIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "categoryIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "childCount": { + "type": "integer", + "format": "int64", + "readOnly": true + }, + "sales": { + "type": "integer", + "format": "int64", + "readOnly": true + }, + "states": { + "type": "array", + "items": { + "type": "string" + }, + "readOnly": true + }, + "metaDescription": { + "type": "string" + }, + "name": { + "type": "string" + }, + "keywords": { + "type": "string" + }, + "description": { + "type": "string" + }, + "metaTitle": { + "type": "string" + }, + "packUnit": { + "type": "string" + }, + "packUnitPlural": { + "type": "string" + }, + "customFields": { + "type": "object" + }, + "calculatedPrice": { + "type": "object" + }, + "calculatedPrices": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false + } + }, + "calculatedMaxPurchase": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "integer", + "format": "int64" + }, + "calculatedCheapestPrice": { + "type": "object" + }, + "isNew": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "boolean" + }, + "sortedProperties": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + }, + "extensions": { + "properties": { + "reviewSummaries": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/reviewSummaries" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product_review_summary" + }, + "id": { + "type": "string", + "example": "c9c718522e64ffa5effb26cef94f4849" + } + } + } + } + }, + "type": "object" + } + }, + "type": "object" + }, + "relationships": { + "properties": { + "downloads": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/downloads" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product_download" + }, + "id": { + "type": "string", + "example": "d07d50a751bc6ddf12bf3af0efee9b45" + } + } + } + } + }, + "type": "object" + }, + "parent": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/parent" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "d0e45878043844ffc41aac437e86b602" + } + } + } + }, + "type": "object" + }, + "children": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/children" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product" + }, + "id": { + "type": "string", + "example": "268184c12df027f536154d099d497b31" + } + } + } + } + }, + "type": "object" + }, + "deliveryTime": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/deliveryTime" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "delivery_time" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "8c888ae25a7bd42057370e31f7e01044" + } + } + } + }, + "type": "object" + }, + "tax": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/tax" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "tax" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "06565e5611f23fdf8cc43e5077b92b54" + } + } + } + }, + "type": "object" + }, + "manufacturer": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/manufacturer" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product_manufacturer" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "c2904bca62b22443d6cf5e9d89cab204" + } + } + } + }, + "type": "object" + }, + "unit": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/unit" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "unit" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "3e34bdebd9bd5edda27e8728904a2552" + } + } + } + }, + "type": "object" + }, + "cover": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/cover" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product_media" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "41d0e299ca1abeb2094852da042165c7" + } + } + } + }, + "type": "object" + }, + "cmsPage": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/cmsPage" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "cms_page" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "7b1460918b1abb93311108f3dc021c9b" + } + } + } + }, + "type": "object" + }, + "canonicalProduct": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/canonicalProduct" + } } }, "data": { @@ -7771,222 +8782,2718 @@ } } }, - "type": "object" + "type": "object" + }, + "options": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/options" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "property_group_option" + }, + "id": { + "type": "string", + "example": "93da65a9fd0004d9477aeac024e08e15" + } + } + } + } + }, + "type": "object" + }, + "properties": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/properties" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "property_group_option" + }, + "id": { + "type": "string", + "example": "74693d2fc58b46bd06410f278e39aa71" + } + } + } + } + }, + "type": "object" + }, + "categories": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/categories" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "category" + }, + "id": { + "type": "string", + "example": "b0b5ccb4a195a07fd3eed14affb8695f" + } + } + } + } + }, + "type": "object" + }, + "streams": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/streams" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product_stream" + }, + "id": { + "type": "string", + "example": "2f6f4768f1c2d7c8f1f54823723f1a70" + } + } + } + } + }, + "type": "object" + }, + "categoriesRo": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/categoriesRo" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "category" + }, + "id": { + "type": "string", + "example": "7f0702d3a90d965b8c9158c451f43fdb" + } + } + } + } + }, + "type": "object" + }, + "tags": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/tags" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "tag" + }, + "id": { + "type": "string", + "example": "d57ac45256849d9b13e2422d91580fb9" + } + } + } + } + }, + "type": "object" + }, + "seoCategory": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/seoCategory" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "category" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "9354d004d12e03d35ad8292bf0bb234d" + } + } + } + }, + "type": "object" + } + }, + "type": "object" + } + }, + "type": "object" + } + ] + }, + "Product": { + "description": "Represents a product along with detailed information required to display a variant selection.", + "required": [ + "apiAlias", + "calculatedPrice", + "calculatedPrices", + "seoCategory", + "id", + "taxId", + "productNumber", + "stock", + "createdAt", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "parentId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "parentVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "manufacturerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productManufacturerVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "unitId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "taxId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "coverId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productMediaVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "deliveryTimeId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "canonicalProductId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "canonicalProductVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "cmsPageId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "cmsPageVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productNumber": { + "type": "string" + }, + "restockTime": { + "type": "integer", + "format": "int64" + }, + "active": { + "type": "boolean" + }, + "available": { + "type": "boolean", + "readOnly": true + }, + "isCloseout": { + "type": "boolean" + }, + "availableStock": { + "type": "integer", + "format": "int64", + "readOnly": true + }, + "stock": { + "type": "integer", + "format": "int64" + }, + "displayGroup": { + "type": "string", + "readOnly": true + }, + "manufacturerNumber": { + "type": "string" + }, + "ean": { + "type": "string" + }, + "purchaseSteps": { + "type": "integer", + "format": "int64" + }, + "maxPurchase": { + "type": "integer", + "format": "int64" + }, + "minPurchase": { + "type": "integer", + "format": "int64" + }, + "purchaseUnit": { + "type": "number", + "format": "float" + }, + "referenceUnit": { + "type": "number", + "format": "float" + }, + "shippingFree": { + "type": "boolean" + }, + "markAsTopseller": { + "type": "boolean" + }, + "weight": { + "type": "number", + "format": "float" + }, + "width": { + "type": "number", + "format": "float" + }, + "height": { + "type": "number", + "format": "float" + }, + "length": { + "type": "number", + "format": "float" + }, + "releaseDate": { + "type": "string", + "format": "date-time" + }, + "ratingAverage": { + "type": "number", + "format": "float", + "readOnly": true + }, + "categoryTree": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "propertyIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "optionIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "streamIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "tagIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "categoryIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "childCount": { + "type": "integer", + "format": "int64", + "readOnly": true + }, + "sales": { + "type": "integer", + "format": "int64", + "readOnly": true + }, + "states": { + "type": "array", + "items": { + "type": "string" + }, + "readOnly": true + }, + "metaDescription": { + "type": "string" + }, + "name": { + "type": "string" + }, + "keywords": { + "type": "string" + }, + "description": { + "type": "string" + }, + "metaTitle": { + "type": "string" + }, + "packUnit": { + "type": "string" + }, + "packUnitPlural": { + "type": "string" + }, + "customFields": { + "type": "object" + }, + "calculatedPrice": { + "type": "object", + "$ref": "#/components/schemas/CalculatedPrice" + }, + "calculatedPrices": { + "type": "array", + "items": { + "type": "object", + "additionalProperties": false, + "allOf": [ + { + "$ref": "#/components/schemas/CalculatedPrice" + } + ] + } + }, + "calculatedMaxPurchase": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "integer", + "format": "int64" + }, + "calculatedCheapestPrice": { + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/CalculatedPrice" + }, + { + "type": "object", + "properties": { + "unitPrice": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "totalPrice": { + "type": "number" + }, + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { + "type": "object", + "properties": { + "price": { + "type": "number" + } + }, + "required": [ + "price" + ], + "nullable": true }, - "options": { + "hasRange": { + "type": "boolean" + }, + "variantId": { + "type": "string", + "format": "", + "nullable": true + }, + "apiAlias": { + "type": "string", + "enum": [ + "calculated_cheapest_price" + ] + } + } + } + ] + }, + "isNew": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "boolean" + }, + "sortedProperties": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + }, + "extensions": { + "properties": { + "reviewSummaries": { + "properties": { + "links": { + "type": "object", "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/options" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "property_group_option" - }, - "id": { - "type": "string", - "example": "93da65a9fd0004d9477aeac024e08e15" - } - } + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/reviewSummaries" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "product_review_summary" + }, + "id": { + "type": "string", + "example": "c9c718522e64ffa5effb26cef94f4849" } } - }, - "type": "object" + } + } + }, + "type": "object" + } + }, + "type": "object" + }, + "downloads": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductDownload" + } + }, + "parent": { + "$ref": "#/components/schemas/Product" + }, + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "deliveryTime": { + "$ref": "#/components/schemas/DeliveryTime" + }, + "tax": { + "$ref": "#/components/schemas/Tax" + }, + "manufacturer": { + "$ref": "#/components/schemas/ProductManufacturer" + }, + "unit": { + "$ref": "#/components/schemas/Unit" + }, + "cover": { + "$ref": "#/components/schemas/ProductMedia" + }, + "cmsPage": { + "$ref": "#/components/schemas/CmsPage" + }, + "canonicalProduct": { + "$ref": "#/components/schemas/Product" + }, + "media": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductMedia" + } + }, + "crossSellings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductCrossSelling" + } + }, + "configuratorSettings": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductConfiguratorSetting" + } + }, + "productReviews": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductReview" + } + }, + "mainCategories": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MainCategory" + } + }, + "seoUrls": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" + } + }, + "options": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PropertyGroupOption" + } + }, + "properties": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PropertyGroupOption" + } + }, + "categories": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + } + }, + "streams": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductStream" + } + }, + "categoriesRo": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + } + }, + "tags": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Tag" + } + }, + "seoCategory": { + "$ref": "#/components/schemas/Category" + }, + "apiAlias": { + "type": "string", + "enum": [ + "product" + ] + }, + "variantListingConfig": { + "nullable": true, + "type": "object", + "properties": { + "displayParent": { + "type": "boolean" + } + } + } + }, + "type": "object" + }, + "ProductConfiguratorSetting": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "productId", + "optionId", + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "mediaId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "optionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "position": { + "type": "integer", + "format": "int64" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "media": { + "$ref": "#/components/schemas/Media" + }, + "option": { + "$ref": "#/components/schemas/PropertyGroupOption" + } + }, + "type": "object" + }, + "ProductCrossSelling": { + "description": "Added since version: 6.1.0.0", + "required": [ + "id", + "name", + "position", + "type", + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "name": { + "type": "string" + }, + "position": { + "type": "integer", + "format": "int64" + }, + "sortBy": { + "type": "string" + }, + "sortDirection": { + "type": "string" + }, + "type": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "limit": { + "type": "integer", + "format": "int64" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + }, + "ProductCrossSellingAssignedProducts": { + "description": "Added since version: 6.2.0.0", + "required": [ + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "ProductDownload": { + "description": "Added since version: 6.4.19.0", + "required": [ + "id", + "productId", + "mediaId", + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "mediaId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "position": { + "type": "integer", + "format": "int64" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "product": { + "$ref": "#/components/schemas/Product" + }, + "media": { + "$ref": "#/components/schemas/Media" + } + }, + "type": "object" + }, + "ProductExport": { + "description": "Added since version: 6.1.0.0", + "required": [ + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "ProductFeatureSet": { + "description": "Added since version: 6.3.0.0", + "required": [ + "createdAt", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + }, + "ProductKeywordDictionary": { + "description": "Added since version: 6.0.0.0", + "required": [ + "languageId", + "keyword" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "languageId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "keyword": { + "type": "string" + } + }, + "type": "object" + }, + "ProductManufacturer": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "createdAt", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "mediaId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "link": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + }, + "media": { + "$ref": "#/components/schemas/Media" + } + }, + "type": "object" + }, + "ProductMedia": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "productId", + "mediaId", + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "mediaId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "position": { + "type": "integer", + "format": "int64" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "media": { + "$ref": "#/components/schemas/Media" + }, + "thumbnails": { + "$ref": "#/components/schemas/MediaThumbnail" + } + }, + "type": "object" + }, + "ProductPrice": { + "description": "Added since version: 6.0.0.0", + "required": [ + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "ProductReview": { + "description": "Added since version: 6.0.0.0", + "required": [ + "points", + "id", + "productId", + "salesChannelId", + "languageId", + "title", + "content", + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "salesChannelId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "languageId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "title": { + "type": "string" + }, + "content": { + "type": "string" + }, + "points": { + "type": "number", + "format": "float" + }, + "status": { + "type": "boolean" + }, + "comment": { + "type": "string" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "ProductReviewSummary": { + "required": [ + "id", + "productId", + "salesChannelId", + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "salesChannelId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "summary": { + "type": "string" + }, + "visible": { + "type": "boolean" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + }, + "product": { + "$ref": "#/components/schemas/Product" + }, + "salesChannel": { + "$ref": "#/components/schemas/SalesChannel" + } + }, + "type": "object" + }, + "ProductSearchConfig": { + "description": "Added since version: 6.3.5.0", + "required": [ + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "ProductSearchConfigField": { + "description": "Added since version: 6.3.5.0", + "required": [ + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "ProductSearchKeyword": { + "description": "Added since version: 6.0.0.0", + "required": [ + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "ProductSorting": { + "description": "Added since version: 6.3.2.0", + "required": [ + "key", + "priority", + "createdAt", + "label" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "key": { + "type": "string" + }, + "priority": { + "type": "integer", + "format": "int64" + }, + "label": { + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + }, + "ProductStream": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "createdAt", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + }, + "ProductStreamFilter": { + "description": "Added since version: 6.0.0.0", + "required": [ + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "ProductVisibility": { + "description": "Added since version: 6.0.0.0", + "required": [ + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "ProductWarehouse": { + "required": [ + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "Promotion": { + "description": "Added since version: 6.0.0.0", + "required": [ + "createdAt", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + }, + "PromotionDiscount": { + "description": "Added since version: 6.0.0.0", + "required": [ + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "PromotionDiscountPrices": { + "description": "Added since version: 6.0.0.0", + "required": [ + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "PromotionIndividualCode": { + "description": "Added since version: 6.0.0.0", + "required": [ + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "PromotionSalesChannel": { + "description": "Added since version: 6.0.0.0", + "required": [ + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "PromotionSetgroup": { + "description": "Added since version: 6.0.0.0", + "required": [ + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "PropertyGroup": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "displayType", + "sortingType", + "createdAt", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "displayType": { + "type": "string" + }, + "sortingType": { + "type": "string" + }, + "filterable": { + "type": "boolean" + }, + "visibleOnProductDetailPage": { + "type": "boolean" + }, + "position": { + "type": "integer", + "format": "int64" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + }, + "options": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PropertyGroupOption" + } + } + }, + "type": "object" + }, + "PropertyGroupOption": { + "description": "Added since version: 6.0.0.0", + "required": [ + "group", + "option", + "id", + "groupId", + "createdAt", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "groupId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "name": { + "type": "string" + }, + "position": { + "type": "integer", + "format": "int64" + }, + "colorHexCode": { + "type": "string" + }, + "mediaId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + }, + "media": { + "$ref": "#/components/schemas/Media" + }, + "group": { + "$ref": "#/components/schemas/PropertyGroup" + }, + "option": { + "type": "string" + } + }, + "type": "object" + }, + "Quote": { + "description": "Added since version: 6.5.3.0", + "required": [ + "id", + "stateId", + "currencyId", + "languageId", + "salesChannelId", + "customerId", + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "stateId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "userId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "languageId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "salesChannelId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdById": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "updatedById": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "customerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "orderId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "orderVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "quoteNumber": { + "type": "string" + }, + "expirationDate": { + "type": "string", + "format": "date-time" + }, + "sentAt": { + "type": "string", + "format": "date-time" + }, + "price": { + "required": [ + "netPrice", + "totalPrice", + "positionPrice", + "rawTotal", + "taxStatus" + ], + "properties": { + "netPrice": { + "type": "number", + "format": "float" + }, + "totalPrice": { + "type": "number", + "format": "float" + }, + "calculatedTaxes": { + "type": "object" + }, + "taxRules": { + "type": "object" + }, + "positionPrice": { + "type": "number", + "format": "float" + }, + "rawTotal": { + "type": "number", + "format": "float" + }, + "taxStatus": { + "type": "string" + } + }, + "type": "object" + }, + "shippingCosts": { + "required": [ + "unitPrice", + "totalPrice", + "quantity" + ], + "properties": { + "unitPrice": { + "type": "number", + "format": "float" + }, + "totalPrice": { + "type": "number", + "format": "float" + }, + "quantity": { + "type": "integer", + "format": "int64" + }, + "calculatedTaxes": { + "type": "object" + }, + "taxRules": { + "type": "object" + }, + "referencePrice": { + "type": "object" + }, + "listPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" }, - "properties": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/properties" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "property_group_option" - }, - "id": { - "type": "string", - "example": "74693d2fc58b46bd06410f278e39aa71" - } - } - } - } - }, - "type": "object" + "discount": { + "type": "number", + "format": "float" }, - "categories": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/categories" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "category" - }, - "id": { - "type": "string", - "example": "b0b5ccb4a195a07fd3eed14affb8695f" - } - } - } - } - }, - "type": "object" + "percentage": { + "type": "number", + "format": "float" + } + }, + "type": "object" + }, + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "discount": { + "properties": { + "type": { + "type": "string" + }, + "value": { + "type": "number", + "format": "float" + } + }, + "type": "object" + }, + "taxStatus": { + "type": "string", + "readOnly": true + }, + "amountTotal": { + "type": "number", + "format": "float", + "readOnly": true + }, + "amountNet": { + "type": "number", + "format": "float", + "readOnly": true + }, + "subtotalNet": { + "type": "number", + "format": "float" + }, + "totalDiscount": { + "type": "number", + "format": "float" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "stateMachineState": { + "$ref": "#/components/schemas/StateMachineState" + }, + "currency": { + "$ref": "#/components/schemas/Currency" + }, + "language": { + "$ref": "#/components/schemas/Language" + }, + "lineItems": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QuoteLineItem" + } + }, + "deliveries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QuoteDelivery" + } + }, + "transactions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QuoteTransaction" + } + }, + "comments": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QuoteComment" + } + }, + "documents": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QuoteDocument" + } + } + }, + "type": "object" + }, + "QuoteComment": { + "required": [ + "id", + "comment", + "quoteId", + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "comment": { + "type": "string" + }, + "seenAt": { + "type": "string", + "format": "date-time" + }, + "quoteId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "quoteVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "stateId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "customerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdById": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "stateMachineState": { + "$ref": "#/components/schemas/StateMachineState" + }, + "customer": { + "$ref": "#/components/schemas/Customer" + } + }, + "type": "object" + }, + "QuoteDelivery": { + "description": "Added since version: 6.5.3.0", + "required": [ + "id", + "quoteId", + "shippingMethodId", + "shippingDateEarliest", + "shippingDateLatest", + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "quoteId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "quoteVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingMethodId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingDateEarliest": { + "type": "string", + "format": "date-time" + }, + "shippingDateLatest": { + "type": "string", + "format": "date-time" + }, + "shippingCosts": { + "required": [ + "unitPrice", + "totalPrice", + "quantity" + ], + "properties": { + "unitPrice": { + "type": "number", + "format": "float" + }, + "totalPrice": { + "type": "number", + "format": "float" + }, + "quantity": { + "type": "integer", + "format": "int64" + }, + "calculatedTaxes": { + "type": "object" + }, + "taxRules": { + "type": "object" + }, + "referencePrice": { + "type": "object" + }, + "listPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" }, - "streams": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/streams" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product_stream" - }, - "id": { - "type": "string", - "example": "2f6f4768f1c2d7c8f1f54823723f1a70" - } - } - } - } - }, - "type": "object" + "discount": { + "type": "number", + "format": "float" }, - "categoriesRo": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/categoriesRo" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "category" - }, - "id": { - "type": "string", - "example": "7f0702d3a90d965b8c9158c451f43fdb" - } - } - } - } - }, - "type": "object" + "percentage": { + "type": "number", + "format": "float" + } + }, + "type": "object" + }, + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + }, + "positions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QuoteDeliveryPosition" + } + } + }, + "type": "object" + }, + "QuoteDeliveryPosition": { + "description": "Added since version: 6.5.3.0", + "required": [ + "id", + "quoteDeliveryId", + "quoteLineItemId", + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "quoteDeliveryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "quoteDeliveryVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "quoteLineItemId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "quoteLineItemVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "price": { + "required": [ + "unitPrice", + "totalPrice", + "quantity" + ], + "properties": { + "unitPrice": { + "type": "number", + "format": "float" + }, + "totalPrice": { + "type": "number", + "format": "float" + }, + "quantity": { + "type": "integer", + "format": "int64" + }, + "calculatedTaxes": { + "type": "object" + }, + "taxRules": { + "type": "object" + }, + "referencePrice": { + "type": "object" + }, + "listPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + }, + "discount": { + "type": "number", + "format": "float" + }, + "percentage": { + "type": "number", + "format": "float" + } + }, + "type": "object" + }, + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "unitPrice": { + "type": "number", + "format": "float" + }, + "totalPrice": { + "type": "number", + "format": "float" + }, + "quantity": { + "type": "integer", + "format": "int64" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "QuoteDocument": { + "required": [ + "id", + "documentTypeId", + "fileType", + "quoteId", + "config", + "deepLinkCode", + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "documentNumber": { + "type": "string" + }, + "documentTypeId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "fileType": { + "type": "string" + }, + "quoteId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "quoteVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "config": { + "type": "object" + }, + "sent": { + "type": "boolean" + }, + "static": { + "type": "boolean" + }, + "active": { + "type": "boolean" + }, + "deepLinkCode": { + "type": "string" + }, + "documentMediaFileId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "documentType": { + "$ref": "#/components/schemas/DocumentType" + }, + "quote": { + "$ref": "#/components/schemas/Quote" + }, + "documentMediaFile": { + "$ref": "#/components/schemas/Media" + } + }, + "type": "object" + }, + "QuoteEmployee": { + "required": [ + "firstName", + "lastName", + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "QuoteLineItem": { + "description": "Added since version: 6.5.3.0", + "required": [ + "id", + "quoteId", + "identifier", + "children", + "states", + "label", + "quantity", + "position", + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "quoteId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "quoteVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "identifier": { + "type": "string" + }, + "parentId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "parentVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "states": { + "type": "array", + "items": { + "type": "string" + } + }, + "label": { + "type": "string" + }, + "description": { + "type": "string" + }, + "quantity": { + "type": "integer", + "format": "int64" + }, + "type": { + "type": "string" + }, + "payload": { + "type": "object" + }, + "unitPrice": { + "type": "number", + "format": "float" + }, + "totalPrice": { + "type": "number", + "format": "float" + }, + "priceDefinition": { + "type": "object" + }, + "productPrice": { + "type": "object" + }, + "purchasePrice": { + "type": "object" + }, + "discount": { + "properties": { + "type": { + "type": "string" + }, + "value": { + "type": "integer", + "format": "int64" + } + }, + "type": "object" + }, + "good": { + "type": "boolean" + }, + "removable": { + "type": "boolean" + }, + "stackable": { + "type": "boolean" + }, + "position": { + "type": "integer", + "format": "int64" + }, + "referencedId": { + "type": "string" + }, + "coverId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "parent": { + "$ref": "#/components/schemas/QuoteLineItem" + }, + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/QuoteLineItem" + } + }, + "cover": { + "$ref": "#/components/schemas/Media" + } + }, + "type": "object" + }, + "QuoteTransaction": { + "description": "Added since version: 6.5.3.0", + "required": [ + "id", + "quoteId", + "paymentMethodId", + "amount", + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "versionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "quoteId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "quoteVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "paymentMethodId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "amount": { + "required": [ + "unitPrice", + "totalPrice", + "quantity" + ], + "properties": { + "unitPrice": { + "type": "number", + "format": "float" + }, + "totalPrice": { + "type": "number", + "format": "float" + }, + "quantity": { + "type": "integer", + "format": "int64" + }, + "calculatedTaxes": { + "type": "object" + }, + "taxRules": { + "type": "object" + }, + "referencePrice": { + "type": "object" + }, + "listPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" }, - "tags": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/tags" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "tag" - }, - "id": { - "type": "string", - "example": "d57ac45256849d9b13e2422d91580fb9" - } - } - } - } - }, - "type": "object" + "discount": { + "type": "number", + "format": "float" }, - "seoCategory": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/seoCategory" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "category" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "9354d004d12e03d35ad8292bf0bb234d" - } + "percentage": { + "type": "number", + "format": "float" + } + }, + "type": "object" + }, + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + } + }, + "type": "object" + } + }, + "type": "object" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod" + } + }, + "type": "object" + }, + "Rule": { + "description": "Added since version: 6.0.0.0", + "required": [ + "name", + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "extensions": { + "properties": { + "warehouseGroup": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/rule/ab7a485ebe75b6dd7243ad719f23c7de/warehouseGroup" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "warehouse_group" + }, + "id": { + "type": "string", + "example": "1768e3071b62161d415e0c24332055ed" } } - }, - "type": "object" + } } }, "type": "object" @@ -7994,272 +11501,134 @@ }, "type": "object" } - ] + }, + "type": "object" }, - "Product": { + "RuleCondition": { "description": "Added since version: 6.0.0.0", "required": [ - "taxId", - "productNumber", - "stock", - "createdAt", - "name" + "createdAt" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { + "createdAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "parentId": { + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "SalesChannel": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "languageId", + "customerGroupId", + "currencyId", + "paymentMethodId", + "shippingMethodId", + "countryId", + "navigationCategoryId", + "createdAt", + "name", + "homeEnabled" + ], + "properties": { + "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "parentVersionId": { + "languageId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "manufacturerId": { + "customerGroupId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "productManufacturerVersionId": { + "currencyId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "unitId": { + "paymentMethodId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "taxId": { + "shippingMethodId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "coverId": { + "countryId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "productMediaVersionId": { + "navigationCategoryId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "deliveryTimeId": { + "navigationCategoryVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "canonicalProductId": { + "navigationCategoryDepth": { + "type": "integer", + "format": "int64" + }, + "footerCategoryId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "cmsPageId": { + "footerCategoryVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "cmsPageVersionId": { + "serviceCategoryId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "productNumber": { - "type": "string" - }, - "restockTime": { - "type": "integer", - "format": "int64" - }, - "active": { - "type": "boolean" - }, - "available": { - "type": "boolean", - "readOnly": true - }, - "isCloseout": { - "type": "boolean" - }, - "displayGroup": { + "serviceCategoryVersionId": { "type": "string", - "readOnly": true - }, - "manufacturerNumber": { - "type": "string" - }, - "ean": { - "type": "string" - }, - "purchaseSteps": { - "type": "integer", - "format": "int64" - }, - "maxPurchase": { - "type": "integer", - "format": "int64" - }, - "minPurchase": { - "type": "integer", - "format": "int64" - }, - "purchaseUnit": { - "type": "number", - "format": "float" - }, - "referenceUnit": { - "type": "number", - "format": "float" - }, - "shippingFree": { - "type": "boolean" - }, - "markAsTopseller": { - "type": "boolean" - }, - "weight": { - "type": "number", - "format": "float" - }, - "width": { - "type": "number", - "format": "float" - }, - "height": { - "type": "number", - "format": "float" - }, - "length": { - "type": "number", - "format": "float" + "pattern": "^[0-9a-f]{32}$" }, - "releaseDate": { + "mailHeaderFooterId": { "type": "string", - "format": "date-time" - }, - "ratingAverage": { - "type": "number", - "format": "float", - "readOnly": true - }, - "categoryTree": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, - "propertyIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, - "optionIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, - "streamIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, - "tagIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, - "categoryIds": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "readOnly": true - }, - "childCount": { - "type": "integer", - "format": "int64", - "readOnly": true - }, - "sales": { - "type": "integer", - "format": "int64", - "readOnly": true - }, - "states": { - "type": "array", - "items": { - "type": "string" - }, - "readOnly": true - }, - "metaDescription": { - "type": "string" - }, - "name": { - "type": "string" - }, - "keywords": { - "type": "string" + "pattern": "^[0-9a-f]{32}$" }, - "description": { - "type": "string" + "hreflangDefaultDomainId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "metaTitle": { + "name": { "type": "string" }, - "packUnit": { + "shortName": { "type": "string" }, - "packUnitPlural": { + "taxCalculationType": { "type": "string" }, - "customFields": { - "type": "object" - }, - "availableStock": { - "type": "integer", - "format": "int64" - }, - "stock": { - "type": "integer", - "format": "int64" - }, - "calculatedPrice": { + "configuration": { "type": "object" }, - "calculatedPrices": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": false - } - }, - "calculatedMaxPurchase": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "integer", - "format": "int64" + "active": { + "type": "boolean" }, - "calculatedCheapestPrice": { - "type": "object" + "hreflangActive": { + "type": "boolean" }, - "isNew": { - "description": "Runtime field, cannot be used as part of the criteria.", + "maintenance": { "type": "boolean" }, - "sortedProperties": { + "customFields": { "type": "object" }, "createdAt": { @@ -8275,191 +11644,226 @@ "translated": { "type": "object" }, - "extensions": { - "properties": { - "reviewSummaries": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/reviewSummaries" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "product_review_summary" - }, - "id": { - "type": "string", - "example": "c9c718522e64ffa5effb26cef94f4849" - } - } - } - } - }, - "type": "object" - } - }, - "type": "object" + "language": { + "$ref": "#/components/schemas/Language" }, - "downloads": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductDownload" - } + "currency": { + "$ref": "#/components/schemas/Currency" }, - "parent": { - "$ref": "#/components/schemas/Product" + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod" }, - "children": { + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "domains": { "type": "array", "items": { - "$ref": "#/components/schemas/Product" + "$ref": "#/components/schemas/SalesChannelDomain" } }, - "deliveryTime": { - "$ref": "#/components/schemas/DeliveryTime" - }, - "tax": { - "$ref": "#/components/schemas/Tax" - }, - "manufacturer": { - "$ref": "#/components/schemas/ProductManufacturer" - }, - "unit": { - "$ref": "#/components/schemas/Unit" + "navigationCategory": { + "$ref": "#/components/schemas/Category" }, - "cover": { - "$ref": "#/components/schemas/ProductMedia" + "footerCategory": { + "$ref": "#/components/schemas/Category" }, - "cmsPage": { - "$ref": "#/components/schemas/CmsPage" + "serviceCategory": { + "$ref": "#/components/schemas/Category" }, - "canonicalProduct": { - "$ref": "#/components/schemas/Product" + "hreflangDefaultDomain": { + "$ref": "#/components/schemas/SalesChannelDomain" + } + }, + "type": "object" + }, + "SalesChannelAnalytics": { + "description": "Added since version: 6.2.0.0", + "required": [ + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "media": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductMedia" - } + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, - "crossSellings": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductCrossSelling" - } + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "SalesChannelDomain": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "url", + "salesChannelId", + "languageId", + "currencyId", + "snippetSetId", + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "configuratorSettings": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductConfiguratorSetting" - } + "url": { + "type": "string" }, - "productReviews": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductReview" - } + "salesChannelId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "mainCategories": { - "type": "array", - "items": { - "$ref": "#/components/schemas/MainCategory" - } + "languageId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "seoUrls": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "options": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PropertyGroupOption" - } + "snippetSetId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "properties": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PropertyGroupOption" - } + "hreflangUseOnlyLocale": { + "type": "boolean" }, - "categories": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } + "customFields": { + "type": "object" }, - "streams": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductStream" - } + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, - "categoriesRo": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true }, - "tags": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Tag" - } + "language": { + "$ref": "#/components/schemas/Language" }, - "seoCategory": { - "$ref": "#/components/schemas/Category" + "currency": { + "$ref": "#/components/schemas/Currency" + }, + "salesChannelDefaultHreflang": { + "$ref": "#/components/schemas/SalesChannel" } }, "type": "object" }, - "ProductConfiguratorSetting": { + "SalesChannelType": { "description": "Added since version: 6.0.0.0", "required": [ - "productId", - "optionId", - "createdAt" + "createdAt", + "name" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { + "createdAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "productId": { + "updatedAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "productVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "translated": { + "type": "object" + } + }, + "type": "object" + }, + "SalutationJsonApi": { + "description": "Added since version: 6.0.0.0", + "allOf": [ + { + "$ref": "#/components/schemas/resource" }, - "mediaId": { + { + "required": [ + "id", + "salutationKey", + "createdAt", + "displayName", + "letterName" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "salutationKey": { + "type": "string" + }, + "displayName": { + "type": "string" + }, + "letterName": { + "type": "string" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + } + }, + "type": "object" + } + ] + }, + "Salutation": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "salutationKey", + "createdAt", + "displayName", + "letterName" + ], + "properties": { + "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "optionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "salutationKey": { + "type": "string" }, - "position": { - "type": "integer", - "format": "int64" + "displayName": { + "type": "string" + }, + "letterName": { + "type": "string" }, "customFields": { "type": "object" @@ -8474,21 +11878,15 @@ "format": "date-time", "readOnly": true }, - "media": { - "$ref": "#/components/schemas/Media" - }, - "option": { - "$ref": "#/components/schemas/PropertyGroupOption" + "translated": { + "type": "object" } }, "type": "object" }, - "ProductCrossSelling": { - "description": "Added since version: 6.1.0.0", + "ScheduledTask": { + "description": "Added since version: 6.0.0.0", "required": [ - "name", - "position", - "type", "createdAt" ], "properties": { @@ -8496,29 +11894,6 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "name": { - "type": "string" - }, - "position": { - "type": "integer", - "format": "int64" - }, - "sortBy": { - "type": "string" - }, - "sortDirection": { - "type": "string" - }, - "type": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "limit": { - "type": "integer", - "format": "int64" - }, "createdAt": { "type": "string", "format": "date-time", @@ -8528,15 +11903,12 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "translated": { - "type": "object" } }, "type": "object" }, - "ProductCrossSellingAssignedProducts": { - "description": "Added since version: 6.2.0.0", + "Script": { + "description": "Added since version: 6.4.7.0", "required": [ "createdAt" ], @@ -8558,11 +11930,92 @@ }, "type": "object" }, - "ProductDownload": { - "description": "Added since version: 6.4.19.0", + "SeoUrlJsonApi": { + "description": "Added since version: 6.0.0.0", + "allOf": [ + { + "$ref": "#/components/schemas/resource" + }, + { + "required": [ + "id", + "languageId", + "foreignKey", + "routeName", + "pathInfo", + "seoPathInfo", + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "salesChannelId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "languageId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "foreignKey": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "routeName": { + "type": "string" + }, + "pathInfo": { + "type": "string" + }, + "seoPathInfo": { + "type": "string" + }, + "isCanonical": { + "type": "boolean" + }, + "isModified": { + "type": "boolean" + }, + "isDeleted": { + "type": "boolean" + }, + "error": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "string" + }, + "url": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "string" + }, + "customFields": { + "type": "object" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + } + ] + }, + "SeoUrl": { + "description": "Added since version: 6.0.0.0", "required": [ - "productId", - "mediaId", + "id", + "languageId", + "foreignKey", + "routeName", + "pathInfo", + "seoPathInfo", "createdAt" ], "properties": { @@ -8570,25 +12023,48 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { + "salesChannelId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "productId": { + "languageId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "productVersionId": { + "foreignKey": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "mediaId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "routeName": { + "type": "string", + "enum": [ + "frontend.navigation.page", + "frontend.landing.page", + "frontend.detail.page" + ] + }, + "pathInfo": { + "type": "string" + }, + "seoPathInfo": { + "type": "string" + }, + "isCanonical": { + "type": "boolean" + }, + "isModified": { + "type": "boolean" + }, + "isDeleted": { + "type": "boolean" }, - "position": { - "type": "integer", - "format": "int64" + "error": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "string" + }, + "url": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "string" }, "customFields": { "type": "object" @@ -8602,18 +12078,12 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "product": { - "$ref": "#/components/schemas/Product" - }, - "media": { - "$ref": "#/components/schemas/Media" } }, "type": "object" }, - "ProductExport": { - "description": "Added since version: 6.1.0.0", + "SeoUrlTemplate": { + "description": "Added since version: 6.0.0.0", "required": [ "createdAt" ], @@ -8622,6 +12092,16 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "salesChannelId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "isValid": { + "type": "boolean" + }, + "customFields": { + "type": "object" + }, "createdAt": { "type": "string", "format": "date-time", @@ -8635,57 +12115,265 @@ }, "type": "object" }, - "ProductFeatureSet": { - "description": "Added since version: 6.3.0.0", - "required": [ - "createdAt", - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "ShippingMethodJsonApi": { + "description": "Added since version: 6.0.0.0", + "allOf": [ + { + "$ref": "#/components/schemas/resource" }, - "translated": { + { + "required": [ + "id", + "deliveryTimeId", + "taxType", + "createdAt", + "name" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "name": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "position": { + "type": "integer", + "format": "int64" + }, + "customFields": { + "type": "object" + }, + "mediaId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "deliveryTimeId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "taxType": { + "type": "string" + }, + "description": { + "type": "string" + }, + "trackingUrl": { + "type": "string" + }, + "technicalName": { + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + }, + "relationships": { + "properties": { + "deliveryTime": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/shipping-method/d72e7a227a27328b28342b32fc66b6bf/deliveryTime" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "delivery_time" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "8c888ae25a7bd42057370e31f7e01044" + } + } + } + }, + "type": "object" + }, + "availabilityRule": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/shipping-method/d72e7a227a27328b28342b32fc66b6bf/availabilityRule" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "rule" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "9fbb7961d1cb158094924c679e1b302c" + } + } + } + }, + "type": "object" + }, + "prices": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/shipping-method/d72e7a227a27328b28342b32fc66b6bf/prices" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "shipping_method_price" + }, + "id": { + "type": "string", + "example": "afae32efe0f84fece3f96b377b768b33" + } + } + } + } + }, + "type": "object" + }, + "media": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/shipping-method/d72e7a227a27328b28342b32fc66b6bf/media" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "media" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "62933a2951ef01f4eafd9bdf4d3cd2f0" + } + } + } + }, + "type": "object" + }, + "tags": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/shipping-method/d72e7a227a27328b28342b32fc66b6bf/tags" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "tag" + }, + "id": { + "type": "string", + "example": "d57ac45256849d9b13e2422d91580fb9" + } + } + } + } + }, + "type": "object" + }, + "tax": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/shipping-method/d72e7a227a27328b28342b32fc66b6bf/tax" + } + } + }, + "data": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "tax" + }, + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "example": "06565e5611f23fdf8cc43e5077b92b54" + } + } + } + }, + "type": "object" + } + }, + "type": "object" + } + }, "type": "object" } - }, - "type": "object" - }, - "ProductKeywordDictionary": { - "description": "Added since version: 6.0.0.0", - "required": [ - "languageId", - "keyword" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "languageId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "keyword": { - "type": "string" - } - }, - "type": "object" + ] }, - "ProductManufacturer": { + "ShippingMethod": { "description": "Added since version: 6.0.0.0", "required": [ + "id", + "deliveryTimeId", + "taxType", "createdAt", "name" ], @@ -8694,72 +12382,11 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "mediaId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "link": { - "type": "string" - }, "name": { "type": "string" }, - "description": { - "type": "string" - }, - "customFields": { - "type": "object" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - }, - "media": { - "$ref": "#/components/schemas/Media" - } - }, - "type": "object" - }, - "ProductMedia": { - "description": "Added since version: 6.0.0.0", - "required": [ - "productId", - "mediaId", - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "mediaId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "active": { + "type": "boolean" }, "position": { "type": "integer", @@ -8768,132 +12395,25 @@ "customFields": { "type": "object" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "media": { - "$ref": "#/components/schemas/Media" - } - }, - "type": "object" - }, - "ProductPrice": { - "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "ProductReview": { - "description": "Added since version: 6.0.0.0", - "required": [ - "productId", - "salesChannelId", - "languageId", - "title", - "content", - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "salesChannelId": { + "mediaId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "languageId": { + "deliveryTimeId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "title": { - "type": "string" - }, - "content": { + "taxType": { "type": "string" }, - "points": { - "type": "number", - "format": "float" - }, - "status": { - "type": "boolean" - }, - "comment": { + "description": { "type": "string" }, - "customFields": { - "type": "object" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "ProductReviewSummary": { - "required": [ - "productId", - "salesChannelId", - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "salesChannelId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "summary": { + "trackingUrl": { "type": "string" }, - "visible": { - "type": "boolean" + "technicalName": { + "type": "string" }, "createdAt": { "type": "string", @@ -8908,18 +12428,38 @@ "translated": { "type": "object" }, - "product": { - "$ref": "#/components/schemas/Product" + "deliveryTime": { + "$ref": "#/components/schemas/DeliveryTime" }, - "salesChannel": { - "$ref": "#/components/schemas/SalesChannel" + "availabilityRule": { + "$ref": "#/components/schemas/Rule" + }, + "prices": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingMethodPrice" + } + }, + "media": { + "$ref": "#/components/schemas/Media" + }, + "tags": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Tag" + } + }, + "tax": { + "$ref": "#/components/schemas/Tax" } }, "type": "object" }, - "ProductSearchConfig": { - "description": "Added since version: 6.3.5.0", + "ShippingMethodPrice": { + "description": "Added since version: 6.0.0.0", "required": [ + "id", + "shippingMethodId", "createdAt" ], "properties": { @@ -8927,29 +12467,36 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { + "shippingMethodId": { "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "updatedAt": { + "ruleId": { "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "ProductSearchConfigField": { - "description": "Added since version: 6.3.5.0", - "required": [ - "createdAt" - ], - "properties": { - "id": { + "pattern": "^[0-9a-f]{32}$" + }, + "calculation": { + "type": "integer", + "format": "int64" + }, + "calculationRuleId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "quantityStart": { + "type": "number", + "format": "float" + }, + "quantityEnd": { + "type": "number", + "format": "float" + }, + "currencyPrice": { + "type": "object" + }, + "customFields": { + "type": "object" + }, "createdAt": { "type": "string", "format": "date-time", @@ -8963,9 +12510,12 @@ }, "type": "object" }, - "ProductSearchKeyword": { + "Snippet": { "description": "Added since version: 6.0.0.0", "required": [ + "setId", + "translationKey", + "value", "createdAt" ], "properties": { @@ -8973,42 +12523,19 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "ProductSorting": { - "description": "Added since version: 6.3.2.0", - "required": [ - "key", - "priority", - "createdAt", - "label" - ], - "properties": { - "id": { + "setId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "key": { + "translationKey": { "type": "string" }, - "priority": { - "type": "integer", - "format": "int64" - }, - "label": { + "value": { "type": "string" }, + "customFields": { + "type": "object" + }, "createdAt": { "type": "string", "format": "date-time", @@ -9018,18 +12545,16 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "translated": { - "type": "object" } }, "type": "object" }, - "ProductStream": { + "SnippetSet": { "description": "Added since version: 6.0.0.0", "required": [ - "createdAt", - "name" + "name", + "iso", + "createdAt" ], "properties": { "id": { @@ -9039,7 +12564,7 @@ "name": { "type": "string" }, - "description": { + "iso": { "type": "string" }, "customFields": { @@ -9055,14 +12580,16 @@ "format": "date-time", "readOnly": true }, - "translated": { - "type": "object" + "snippets": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Snippet" + } } }, "type": "object" }, - "ProductStreamFilter": { - "description": "Added since version: 6.0.0.0", + "SpatialRenderConfigSize": { "required": [ "createdAt" ], @@ -9084,8 +12611,7 @@ }, "type": "object" }, - "ProductVisibility": { - "description": "Added since version: 6.0.0.0", + "SpatialScene": { "required": [ "createdAt" ], @@ -9107,7 +12633,7 @@ }, "type": "object" }, - "ProductWarehouse": { + "SpatialSceneCamera": { "required": [ "createdAt" ], @@ -9129,20 +12655,15 @@ }, "type": "object" }, - "Promotion": { - "description": "Added since version: 6.0.0.0", + "SpatialSceneLight": { "required": [ - "createdAt", - "name" + "createdAt" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "customFields": { - "type": "object" - }, "createdAt": { "type": "string", "format": "date-time", @@ -9152,15 +12673,11 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "translated": { - "type": "object" } }, "type": "object" }, - "PromotionDiscount": { - "description": "Added since version: 6.0.0.0", + "SpatialSceneObject": { "required": [ "createdAt" ], @@ -9182,8 +12699,7 @@ }, "type": "object" }, - "PromotionDiscountPrices": { - "description": "Added since version: 6.0.0.0", + "SsoProvider": { "required": [ "createdAt" ], @@ -9201,12 +12717,14 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "media": { + "$ref": "#/components/schemas/Media" } }, "type": "object" }, - "PromotionIndividualCode": { - "description": "Added since version: 6.0.0.0", + "SsoProviderCustomer": { "required": [ "createdAt" ], @@ -9228,10 +12746,11 @@ }, "type": "object" }, - "PromotionSalesChannel": { + "StateMachine": { "description": "Added since version: 6.0.0.0", "required": [ - "createdAt" + "createdAt", + "name" ], "properties": { "id": { @@ -9247,11 +12766,26 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "translated": { + "type": "object" + }, + "states": { + "type": "array", + "items": { + "$ref": "#/components/schemas/StateMachineState" + } + }, + "transitions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/StateMachineTransition" + } } }, "type": "object" }, - "PromotionSetgroup": { + "StateMachineHistory": { "description": "Added since version: 6.0.0.0", "required": [ "createdAt" @@ -9270,15 +12804,20 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "fromStateMachineState": { + "$ref": "#/components/schemas/StateMachineState" + }, + "toStateMachineState": { + "$ref": "#/components/schemas/StateMachineState" } }, "type": "object" }, - "PropertyGroup": { + "StateMachineState": { "description": "Added since version: 6.0.0.0", "required": [ - "displayType", - "sortingType", + "technicalName", "createdAt", "name" ], @@ -9287,28 +12826,12 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "displayType": { + "technicalName": { "type": "string" }, - "sortingType": { + "name": { "type": "string" }, - "filterable": { - "type": "boolean" - }, - "visibleOnProductDetailPage": { - "type": "boolean" - }, - "position": { - "type": "integer", - "format": "int64" - }, "customFields": { "type": "object" }, @@ -9322,50 +12845,21 @@ "format": "date-time", "readOnly": true }, - "translated": { - "type": "object" - }, - "options": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PropertyGroupOption" - } - } - }, - "type": "object" - }, - "PropertyGroupOption": { - "description": "Added since version: 6.0.0.0", - "required": [ - "groupId", - "createdAt", - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "groupId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "name": { - "type": "string" - }, - "position": { - "type": "integer", - "format": "int64" - }, - "colorHexCode": { - "type": "string" - }, - "mediaId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "customFields": { + "translated": { "type": "object" + } + }, + "type": "object" + }, + "StateMachineTransition": { + "description": "Added since version: 6.0.0.0", + "required": [ + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, "createdAt": { "type": "string", @@ -9376,27 +12870,29 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "translated": { - "type": "object" - }, - "media": { - "$ref": "#/components/schemas/Media" - }, - "group": { - "$ref": "#/components/schemas/PropertyGroup" } }, "type": "object" }, - "Quote": { - "description": "Added since version: 6.5.3.0", + "Subscription": { "required": [ - "stateId", + "id", + "convertedOrder", + "subscriptionNumber", + "nextSchedule", + "salesChannelId", + "subscriptionPlanName", + "subscriptionIntervalName", + "dateInterval", + "cronInterval", + "initialExecutionCount", + "remainingExecutionCount", + "billingAddressId", + "shippingAddressId", + "shippingMethodId", + "paymentMethodId", "currencyId", "languageId", - "salesChannelId", - "customerId", "createdAt" ], "properties": { @@ -9404,192 +12900,71 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "convertedOrder": { + "type": "object" }, - "stateId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "subscriptionNumber": { + "type": "string" }, - "userId": { + "nextSchedule": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time" }, - "currencyId": { + "salesChannelId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "languageId": { + "subscriptionPlanId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "salesChannelId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "subscriptionPlanName": { + "type": "string" }, - "createdById": { + "subscriptionIntervalId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "updatedById": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "subscriptionIntervalName": { + "type": "string" }, - "customerId": { + "dateInterval": { + "type": "string" + }, + "cronInterval": { + "type": "string" + }, + "initialExecutionCount": { + "type": "integer", + "format": "int64" + }, + "remainingExecutionCount": { + "type": "integer", + "format": "int64" + }, + "billingAddressId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "orderId": { + "shippingAddressId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "orderVersionId": { + "shippingMethodId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "quoteNumber": { - "type": "string" - }, - "expirationDate": { + "paymentMethodId": { "type": "string", - "format": "date-time" + "pattern": "^[0-9a-f]{32}$" }, - "sentAt": { + "currencyId": { "type": "string", - "format": "date-time" - }, - "price": { - "required": [ - "netPrice", - "totalPrice", - "positionPrice", - "rawTotal", - "taxStatus" - ], - "properties": { - "netPrice": { - "type": "number", - "format": "float" - }, - "totalPrice": { - "type": "number", - "format": "float" - }, - "calculatedTaxes": { - "type": "object" - }, - "taxRules": { - "type": "object" - }, - "positionPrice": { - "type": "number", - "format": "float" - }, - "rawTotal": { - "type": "number", - "format": "float" - }, - "taxStatus": { - "type": "string" - } - }, - "type": "object" - }, - "shippingCosts": { - "required": [ - "unitPrice", - "totalPrice", - "quantity" - ], - "properties": { - "unitPrice": { - "type": "number", - "format": "float" - }, - "totalPrice": { - "type": "number", - "format": "float" - }, - "quantity": { - "type": "integer", - "format": "int64" - }, - "calculatedTaxes": { - "type": "object" - }, - "taxRules": { - "type": "object" - }, - "referencePrice": { - "type": "object" - }, - "listPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - }, - "discount": { - "type": "number", - "format": "float" - }, - "percentage": { - "type": "number", - "format": "float" - } - }, - "type": "object" - }, - "regulationPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "discount": { - "properties": { - "type": { - "type": "string" - }, - "value": { - "type": "number", - "format": "float" - } - }, - "type": "object" + "pattern": "^[0-9a-f]{32}$" }, - "taxStatus": { + "languageId": { "type": "string", - "readOnly": true - }, - "amountTotal": { - "type": "number", - "format": "float", - "readOnly": true - }, - "amountNet": { - "type": "number", - "format": "float", - "readOnly": true - }, - "subtotalNet": { - "type": "number", - "format": "float" - }, - "totalDiscount": { - "type": "number", - "format": "float" - }, - "originalPrice": { - "type": "number", - "format": "float" + "pattern": "^[0-9a-f]{32}$" }, "customFields": { "type": "object" @@ -9604,52 +12979,66 @@ "format": "date-time", "readOnly": true }, - "stateMachineState": { - "$ref": "#/components/schemas/StateMachineState" + "subscriptionPlan": { + "$ref": "#/components/schemas/SubscriptionPlan" }, - "currency": { - "$ref": "#/components/schemas/Currency" + "subscriptionInterval": { + "$ref": "#/components/schemas/SubscriptionInterval" }, - "language": { - "$ref": "#/components/schemas/Language" + "subscriptionCustomer": { + "$ref": "#/components/schemas/SubscriptionCustomer" }, - "lineItems": { - "type": "array", - "items": { - "$ref": "#/components/schemas/QuoteLineItem" - } + "billingAddress": { + "$ref": "#/components/schemas/SubscriptionAddress" }, - "deliveries": { - "type": "array", - "items": { - "$ref": "#/components/schemas/QuoteDelivery" - } + "shippingAddress": { + "$ref": "#/components/schemas/SubscriptionAddress" }, - "transactions": { + "addresses": { "type": "array", "items": { - "$ref": "#/components/schemas/QuoteTransaction" + "$ref": "#/components/schemas/SubscriptionAddress" } }, - "comments": { + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod" + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + }, + "stateMachineState": { + "$ref": "#/components/schemas/StateMachineState" + }, + "orders": { "type": "array", "items": { - "$ref": "#/components/schemas/QuoteComment" + "$ref": "#/components/schemas/Order" } }, - "documents": { + "tags": { "type": "array", "items": { - "$ref": "#/components/schemas/QuoteDocument" + "$ref": "#/components/schemas/Tag" } + }, + "currency": { + "$ref": "#/components/schemas/Currency" + }, + "language": { + "$ref": "#/components/schemas/Language" } }, "type": "object" }, - "QuoteComment": { + "SubscriptionAddress": { "required": [ - "comment", - "quoteId", + "id", + "countryId", + "subscriptionId", + "firstName", + "lastName", + "street", + "city", "createdAt" ], "properties": { @@ -9657,36 +13046,60 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { + "countryId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "comment": { - "type": "string" - }, - "seenAt": { - "type": "string", - "format": "date-time" - }, - "quoteId": { + "subscriptionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "quoteVersionId": { + "countryStateId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "stateId": { + "salutationId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "customerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "firstName": { + "type": "string" }, - "createdById": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "lastName": { + "type": "string" + }, + "street": { + "type": "string" + }, + "zipcode": { + "type": "string" + }, + "city": { + "type": "string" + }, + "company": { + "type": "string" + }, + "department": { + "type": "string" + }, + "title": { + "type": "string" + }, + "vatId": { + "type": "string" + }, + "phoneNumber": { + "type": "string" + }, + "additionalAddressLine1": { + "type": "string" + }, + "additionalAddressLine2": { + "type": "string" + }, + "customFields": { + "type": "object" }, "createdAt": { "type": "string", @@ -9698,22 +13111,34 @@ "format": "date-time", "readOnly": true }, - "stateMachineState": { - "$ref": "#/components/schemas/StateMachineState" + "billingSubscription": { + "$ref": "#/components/schemas/Subscription" }, - "customer": { - "$ref": "#/components/schemas/Customer" + "shippingSubscription": { + "$ref": "#/components/schemas/Subscription" + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "$ref": "#/components/schemas/CountryState" + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" + }, + "subscription": { + "$ref": "#/components/schemas/Subscription" } }, "type": "object" }, - "QuoteDelivery": { - "description": "Added since version: 6.5.3.0", + "SubscriptionCustomer": { "required": [ - "quoteId", - "shippingMethodId", - "shippingDateEarliest", - "shippingDateLatest", + "id", + "salutationId", + "email", + "firstName", + "lastName", "createdAt" ], "properties": { @@ -9721,86 +13146,37 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { + "customerId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "quoteId": { + "salutationId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "quoteVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "email": { + "type": "string" }, - "shippingMethodId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "firstName": { + "type": "string" }, - "shippingDateEarliest": { - "type": "string", - "format": "date-time" + "lastName": { + "type": "string" }, - "shippingDateLatest": { - "type": "string", - "format": "date-time" + "company": { + "type": "string" }, - "shippingCosts": { - "required": [ - "unitPrice", - "totalPrice", - "quantity" - ], - "properties": { - "unitPrice": { - "type": "number", - "format": "float" - }, - "totalPrice": { - "type": "number", - "format": "float" - }, - "quantity": { - "type": "integer", - "format": "int64" - }, - "calculatedTaxes": { - "type": "object" - }, - "taxRules": { - "type": "object" - }, - "referencePrice": { - "type": "object" - }, - "listPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - }, - "discount": { - "type": "number", - "format": "float" - }, - "percentage": { - "type": "number", - "format": "float" - } - }, - "type": "object" - }, - "regulationPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - } - }, - "type": "object" - } - }, - "type": "object" + "title": { + "type": "string" + }, + "customerNumber": { + "type": "string" + }, + "vatIds": { + "type": "array", + "items": { + "type": "string" + } }, "customFields": { "type": "object" @@ -9815,23 +13191,19 @@ "format": "date-time", "readOnly": true }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" - }, - "positions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/QuoteDeliveryPosition" - } + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, "type": "object" }, - "QuoteDeliveryPosition": { - "description": "Added since version: 6.5.3.0", + "SubscriptionInterval": { "required": [ - "quoteDeliveryId", - "quoteLineItemId", + "id", + "name", + "active", + "dateInterval", + "cronInterval", "createdAt" ], "properties": { @@ -9839,96 +13211,187 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "name": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "dateInterval": { + "type": "string" + }, + "cronInterval": { + "type": "string" }, - "quoteDeliveryId": { + "availabilityRuleId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "quoteDeliveryVersionId": { + "createdAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "quoteLineItemId": { + "updatedAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "quoteLineItemVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "translated": { + "type": "object" }, - "price": { + "subscriptions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Subscription" + } + } + }, + "type": "object" + }, + "SubscriptionPlanJsonApi": { + "allOf": [ + { + "$ref": "#/components/schemas/resource" + }, + { "required": [ - "unitPrice", - "totalPrice", - "quantity" + "id", + "name", + "active", + "activeStorefrontLabel", + "createdAt" ], "properties": { - "unitPrice": { - "type": "number", - "format": "float" + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "totalPrice": { - "type": "number", - "format": "float" + "name": { + "type": "string" }, - "quantity": { + "description": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "minimumExecutionCount": { "type": "integer", "format": "int64" }, - "calculatedTaxes": { - "type": "object" + "activeStorefrontLabel": { + "type": "boolean" }, - "taxRules": { - "type": "object" + "availabilityRuleId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "referencePrice": { + "discountPercentage": { + "type": "number", + "format": "float" + }, + "label": { + "type": "string" + }, + "discountPrice": { "type": "object" }, - "listPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - }, - "discount": { - "type": "number", - "format": "float" - }, - "percentage": { - "type": "number", - "format": "float" - } - }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { "type": "object" }, - "regulationPrice": { + "relationships": { "properties": { - "price": { - "type": "number", - "format": "float" + "subscriptions": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/subscription-plan/5e63f9057837020694081b9412211bfb/subscriptions" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "subscription" + }, + "id": { + "type": "string", + "example": "2d5d14f95af035cbd8437948de61f94c" + } + } + } + } + }, + "type": "object" } }, "type": "object" } }, "type": "object" + } + ] + }, + "SubscriptionPlan": { + "required": [ + "id", + "name", + "active", + "activeStorefrontLabel", + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "unitPrice": { - "type": "number", - "format": "float" + "name": { + "type": "string" }, - "totalPrice": { - "type": "number", - "format": "float" + "description": { + "type": "string" }, - "quantity": { + "active": { + "type": "boolean" + }, + "minimumExecutionCount": { "type": "integer", "format": "int64" }, - "customFields": { + "activeStorefrontLabel": { + "type": "boolean" + }, + "availabilityRuleId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "discountPercentage": { + "type": "number", + "format": "float" + }, + "label": { + "type": "string" + }, + "discountPrice": { "type": "object" }, "createdAt": { @@ -9940,94 +13403,107 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "translated": { + "type": "object" + }, + "subscriptions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Subscription" + } } }, "type": "object" }, - "QuoteDocument": { + "SubscriptionPlanIntervalMapping": { "required": [ - "documentTypeId", - "fileType", - "quoteId", - "config", - "deepLinkCode", - "createdAt" + "subscriptionIntervalId", + "subscriptionPlanId" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { + "subscriptionIntervalId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "documentNumber": { - "type": "string" - }, - "documentTypeId": { + "subscriptionPlanId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "fileType": { - "type": "string" + "subscriptionPlan": { + "$ref": "#/components/schemas/SubscriptionPlan" }, - "quoteId": { + "subscriptionInterval": { + "$ref": "#/components/schemas/SubscriptionInterval" + } + }, + "type": "object" + }, + "SubscriptionPlanProductMapping": { + "required": [ + "productId", + "subscriptionPlanId" + ], + "properties": { + "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "quoteVersionId": { + "productId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "config": { - "type": "object" - }, - "sent": { - "type": "boolean" - }, - "static": { - "type": "boolean" + "productVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "active": { - "type": "boolean" + "subscriptionPlanId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "deepLinkCode": { - "type": "string" + "subscriptionPlan": { + "$ref": "#/components/schemas/SubscriptionPlan" }, - "documentMediaFileId": { + "product": { + "$ref": "#/components/schemas/Product" + } + }, + "type": "object" + }, + "SubscriptionTagMapping": { + "required": [ + "subscriptionId", + "tagId" + ], + "properties": { + "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "customFields": { - "type": "object" - }, - "createdAt": { + "subscriptionId": { "type": "string", - "format": "date-time", - "readOnly": true + "pattern": "^[0-9a-f]{32}$" }, - "updatedAt": { + "tagId": { "type": "string", - "format": "date-time", - "readOnly": true - }, - "documentType": { - "$ref": "#/components/schemas/DocumentType" + "pattern": "^[0-9a-f]{32}$" }, - "quote": { - "$ref": "#/components/schemas/Quote" + "subscription": { + "$ref": "#/components/schemas/Subscription" }, - "documentMediaFile": { - "$ref": "#/components/schemas/Media" + "tag": { + "$ref": "#/components/schemas/Tag" } }, "type": "object" }, - "QuoteEmployee": { + "SwagDelayAction": { "required": [ - "firstName", - "lastName", + "id", "createdAt" ], "properties": { @@ -10035,11 +13511,13 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "firstName": { - "type": "string" + "orderId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "lastName": { - "type": "string" + "customerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, "createdAt": { "type": "string", @@ -10054,16 +13532,12 @@ }, "type": "object" }, - "QuoteLineItem": { - "description": "Added since version: 6.5.3.0", + "SystemConfig": { + "description": "Added since version: 6.0.0.0", "required": [ - "quoteId", - "identifier", - "children", - "states", - "label", - "quantity", - "position", + "id", + "configurationKey", + "configurationValue", "createdAt" ], "properties": { @@ -10071,111 +13545,21 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "quoteId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "quoteVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "identifier": { - "type": "string" - }, - "parentId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "parentVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "states": { - "type": "array", - "items": { - "type": "string" - } - }, - "label": { - "type": "string" - }, - "description": { - "type": "string" - }, - "quantity": { - "type": "integer", - "format": "int64" - }, - "type": { + "configurationKey": { "type": "string" }, - "payload": { - "type": "object" - }, - "unitPrice": { - "type": "number", - "format": "float" - }, - "totalPrice": { - "type": "number", - "format": "float" - }, - "priceDefinition": { - "type": "object" - }, - "productPrice": { - "type": "object" - }, - "purchasePrice": { - "type": "object" - }, - "discount": { + "configurationValue": { "properties": { - "type": { - "type": "string" - }, - "value": { - "type": "integer", - "format": "int64" + "_value": { + "type": "object" } }, "type": "object" }, - "good": { - "type": "boolean" - }, - "removable": { - "type": "boolean" - }, - "stackable": { - "type": "boolean" - }, - "position": { - "type": "integer", - "format": "int64" - }, - "referencedId": { - "type": "string" - }, - "coverId": { + "salesChannelId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "customFields": { - "type": "object" - }, "createdAt": { "type": "string", "format": "date-time", @@ -10186,27 +13570,17 @@ "format": "date-time", "readOnly": true }, - "parent": { - "$ref": "#/components/schemas/QuoteLineItem" - }, - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/QuoteLineItem" - } - }, - "cover": { - "$ref": "#/components/schemas/Media" + "salesChannel": { + "$ref": "#/components/schemas/SalesChannel" } }, "type": "object" }, - "QuoteTransaction": { - "description": "Added since version: 6.5.3.0", + "Tag": { + "description": "Added since version: 6.0.0.0", "required": [ - "quoteId", - "paymentMethodId", - "amount", + "id", + "name", "createdAt" ], "properties": { @@ -10214,81 +13588,8 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "quoteId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "quoteVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "paymentMethodId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "amount": { - "required": [ - "unitPrice", - "totalPrice", - "quantity" - ], - "properties": { - "unitPrice": { - "type": "number", - "format": "float" - }, - "totalPrice": { - "type": "number", - "format": "float" - }, - "quantity": { - "type": "integer", - "format": "int64" - }, - "calculatedTaxes": { - "type": "object" - }, - "taxRules": { - "type": "object" - }, - "referencePrice": { - "type": "object" - }, - "listPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - }, - "discount": { - "type": "number", - "format": "float" - }, - "percentage": { - "type": "number", - "format": "float" - } - }, - "type": "object" - }, - "regulationPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - } - }, - "type": "object" - } - }, - "type": "object" - }, - "customFields": { - "type": "object" + "name": { + "type": "string" }, "createdAt": { "type": "string", @@ -10299,17 +13600,17 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethod" } }, "type": "object" }, - "Rule": { + "Tax": { "description": "Added since version: 6.0.0.0", "required": [ + "id", + "taxRate", "name", + "position", "createdAt" ], "properties": { @@ -10317,11 +13618,17 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "taxRate": { + "type": "number", + "format": "float" + }, "name": { "type": "string" }, - "description": { - "type": "string" + "position": { + "description": "Added since version: 6.4.0.0.", + "type": "integer", + "format": "int64" }, "customFields": { "type": "object" @@ -10335,56 +13642,43 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "extensions": { - "properties": { - "warehouseGroup": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/rule/ab7a485ebe75b6dd7243ad719f23c7de/warehouseGroup" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "warehouse_group" - }, - "id": { - "type": "string", - "example": "1768e3071b62161d415e0c24332055ed" - } - } - } - } - }, - "type": "object" - } - }, - "type": "object" } }, "type": "object" }, - "RuleCondition": { - "description": "Added since version: 6.0.0.0", + "TaxProvider": { + "description": "Added since version: 6.5.0.0", "required": [ - "createdAt" + "id", + "priority", + "createdAt", + "name" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "active": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "priority": { + "type": "integer", + "format": "int64" + }, + "processUrl": { + "type": "string" + }, + "appId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "customFields": { + "type": "object" + }, "createdAt": { "type": "string", "format": "date-time", @@ -10394,113 +13688,115 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "translated": { + "type": "object" } }, "type": "object" }, - "SalesChannel": { - "description": "Added since version: 6.0.0.0", + "TaxRule": { + "description": "Added since version: 6.1.0.0", "required": [ - "languageId", - "customerGroupId", - "currencyId", - "paymentMethodId", - "shippingMethodId", - "countryId", - "navigationCategoryId", - "createdAt", - "name", - "homeEnabled" + "createdAt" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "languageId": { + "createdAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "customerGroupId": { + "updatedAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "currencyId": { + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "TaxRuleType": { + "description": "Added since version: 6.1.0.0", + "required": [ + "createdAt", + "typeName" + ], + "properties": { + "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "paymentMethodId": { + "createdAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "shippingMethodId": { + "updatedAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "countryId": { + "translated": { + "type": "object" + } + }, + "type": "object" + }, + "Theme": { + "description": "Added since version: 6.0.0.0", + "required": [ + "id", + "name", + "author", + "active", + "createdAt" + ], + "properties": { + "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "navigationCategoryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "technicalName": { + "type": "string" }, - "navigationCategoryVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "name": { + "type": "string" }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int64" + "author": { + "type": "string" }, - "footerCategoryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "description": { + "type": "string" }, - "footerCategoryVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "labels": { + "type": "object" }, - "serviceCategoryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "helpTexts": { + "type": "object" }, - "serviceCategoryVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "customFields": { + "type": "object" }, - "mailHeaderFooterId": { + "previewMediaId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "hreflangDefaultDomainId": { + "parentThemeId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "taxCalculationType": { - "type": "string" + "baseConfig": { + "type": "object" }, - "configuration": { + "configValues": { "type": "object" }, "active": { "type": "boolean" }, - "hreflangActive": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "customFields": { - "type": "object" - }, "createdAt": { "type": "string", "format": "date-time", @@ -10514,52 +13810,37 @@ "translated": { "type": "object" }, - "language": { - "$ref": "#/components/schemas/Language" - }, - "currency": { - "$ref": "#/components/schemas/Currency" - }, - "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethod" - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "domains": { + "media": { "type": "array", "items": { - "$ref": "#/components/schemas/SalesChannelDomain" + "$ref": "#/components/schemas/Media" } - }, - "navigationCategory": { - "$ref": "#/components/schemas/Category" - }, - "footerCategory": { - "$ref": "#/components/schemas/Category" - }, - "serviceCategory": { - "$ref": "#/components/schemas/Category" - }, - "hreflangDefaultDomain": { - "$ref": "#/components/schemas/SalesChannelDomain" } }, "type": "object" }, - "SalesChannelAnalytics": { - "description": "Added since version: 6.2.0.0", + "Unit": { + "description": "Added since version: 6.0.0.0", "required": [ - "createdAt" + "id", + "createdAt", + "shortCode", + "name" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "shortCode": { + "type": "string" + }, + "name": { + "type": "string" + }, + "customFields": { + "type": "object" + }, "createdAt": { "type": "string", "format": "date-time", @@ -10569,18 +13850,16 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "translated": { + "type": "object" } }, "type": "object" }, - "SalesChannelDomain": { + "User": { "description": "Added since version: 6.0.0.0", "required": [ - "url", - "salesChannelId", - "languageId", - "currencyId", - "snippetSetId", "createdAt" ], "properties": { @@ -10588,31 +13867,6 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "url": { - "type": "string" - }, - "salesChannelId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "languageId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "snippetSetId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "hreflangUseOnlyLocale": { - "type": "boolean" - }, - "customFields": { - "type": "object" - }, "createdAt": { "type": "string", "format": "date-time", @@ -10622,24 +13876,14 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "language": { - "$ref": "#/components/schemas/Language" - }, - "currency": { - "$ref": "#/components/schemas/Currency" - }, - "salesChannelDefaultHreflang": { - "$ref": "#/components/schemas/SalesChannel" } }, "type": "object" }, - "SalesChannelType": { + "UserAccessKey": { "description": "Added since version: 6.0.0.0", "required": [ - "createdAt", - "name" + "createdAt" ], "properties": { "id": { @@ -10655,86 +13899,20 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "translated": { - "type": "object" } }, "type": "object" }, - "SalutationJsonApi": { - "description": "Added since version: 6.0.0.0", - "allOf": [ - { - "$ref": "#/components/schemas/resource" - }, - { - "required": [ - "salutationKey", - "createdAt", - "displayName", - "letterName" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "salutationKey": { - "type": "string" - }, - "displayName": { - "type": "string" - }, - "letterName": { - "type": "string" - }, - "customFields": { - "type": "object" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - } - }, - "type": "object" - } - ] - }, - "Salutation": { - "description": "Added since version: 6.0.0.0", + "UserConfig": { + "description": "Added since version: 6.3.5.0", "required": [ - "salutationKey", - "createdAt", - "displayName", - "letterName" + "createdAt" ], "properties": { "id": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "salutationKey": { - "type": "string" - }, - "displayName": { - "type": "string" - }, - "letterName": { - "type": "string" - }, - "customFields": { - "type": "object" - }, "createdAt": { "type": "string", "format": "date-time", @@ -10744,14 +13922,11 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "translated": { - "type": "object" } }, "type": "object" }, - "ScheduledTask": { + "UserRecovery": { "description": "Added since version: 6.0.0.0", "required": [ "createdAt" @@ -10774,8 +13949,7 @@ }, "type": "object" }, - "Script": { - "description": "Added since version: 6.4.7.0", + "Warehouse": { "required": [ "createdAt" ], @@ -10797,90 +13971,8 @@ }, "type": "object" }, - "SeoUrlJsonApi": { - "description": "Added since version: 6.0.0.0", - "allOf": [ - { - "$ref": "#/components/schemas/resource" - }, - { - "required": [ - "languageId", - "foreignKey", - "routeName", - "pathInfo", - "seoPathInfo", - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "salesChannelId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "languageId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "foreignKey": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "routeName": { - "type": "string" - }, - "pathInfo": { - "type": "string" - }, - "seoPathInfo": { - "type": "string" - }, - "isCanonical": { - "type": "boolean" - }, - "isModified": { - "type": "boolean" - }, - "isDeleted": { - "type": "boolean" - }, - "url": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "string" - }, - "customFields": { - "type": "object" - }, - "isValid": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - } - ] - }, - "SeoUrl": { - "description": "Added since version: 6.0.0.0", + "WarehouseGroup": { "required": [ - "languageId", - "foreignKey", - "routeName", - "pathInfo", - "seoPathInfo", "createdAt" ], "properties": { @@ -10888,46 +13980,28 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "salesChannelId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "languageId": { + "createdAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "foreignKey": { + "updatedAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "routeName": { - "type": "string" - }, - "pathInfo": { - "type": "string" - }, - "seoPathInfo": { - "type": "string" - }, - "isCanonical": { - "type": "boolean" - }, - "isModified": { - "type": "boolean" - }, - "isDeleted": { - "type": "boolean" - }, - "url": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "string" - }, - "customFields": { - "type": "object" - }, - "isValid": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean" + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, + "Webhook": { + "description": "Added since version: 6.3.1.0", + "required": [ + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, "createdAt": { "type": "string", @@ -10942,8 +14016,8 @@ }, "type": "object" }, - "SeoUrlTemplate": { - "description": "Added since version: 6.0.0.0", + "WebhookEventLog": { + "description": "Added since version: 6.4.1.0", "required": [ "createdAt" ], @@ -10952,16 +14026,6 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "salesChannelId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "isValid": { - "type": "boolean" - }, - "customFields": { - "type": "object" - }, "createdAt": { "type": "string", "format": "date-time", @@ -10975,3422 +14039,4537 @@ }, "type": "object" }, - "ShippingMethodJsonApi": { - "description": "Added since version: 6.0.0.0", - "allOf": [ - { - "$ref": "#/components/schemas/resource" + "AggregationEntity": { + "title": "AggregationEntity", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - { - "required": [ - "deliveryTimeId", - "taxType", - "createdAt", - "name" - ], + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "entity" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "definition": { + "description": "The entity definition e.g \"product_manufacturer\".", + "type": "string" + } + }, + "required": [ + "name", + "type", + "field", + "definition" + ] + }, + "AggregationFilter": { + "title": "AggregationFilter", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "filter" + ] + }, + "filter": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Filters" + } + } + }, + "required": [ + "name", + "type", + "filter" + ] + }, + "AggregationTerms": { + "title": "AggregationTerms", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "terms" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "limit": { + "description": "The number of terms to return", + "type": "number" + }, + "sort": { + "type": "array", + "description": "Sorting the aggregation result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "AggregationHistogram": { + "title": "AggregationHistogram", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "histogram" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "interval": { + "description": "The interval of the histogram", + "type": "number" + }, + "format": { + "description": "The format of the histogram", + "type": "string" + }, + "timeZone": { + "description": "The timezone of the histogram", + "type": "string" + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "AggregationRange": { + "title": "AggregationRange", + "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "range" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "ranges": { + "description": "The ranges of the aggregation", + "type": "array", + "items": { + "type": "object", + "anyOf": [ + { + "type": "object", + "title": "From and to", + "properties": { + "from": { + "type": "number", + "description": "The lower bound of the range" + }, + "to": { + "type": "number", + "description": "The upper bound of the range" + } + }, + "required": [ + "from", + "to" + ] + }, + { + "type": "object", + "title": "From only", + "properties": { + "from": { + "type": "string", + "description": "The lower bound of the range" + } + }, + "required": [ + "from" + ] + }, + { + "type": "object", + "title": "To only", + "properties": { + "to": { + "type": "string", + "description": "The upper bound of the range" + } + }, + "required": [ + "to" + ] + } + ] + } + } + }, + "required": [ + "name", + "type", + "field", + "ranges" + ] + }, + "WishlistLoadRouteResponse": { + "type": "object", + "properties": { + "wishlist": { + "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "customerId": { + "type": "string" + }, + "salesChannelId": { + "type": "string" + } + } + }, + "products": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + }, + "SalesChannelContext": { + "type": "object", + "properties": { + "token": { + "description": "Context the user session", + "type": "string" + }, + "currentCustomerGroup": { + "type": "object", + "description": "Customer group of the current user", + "properties": { + "name": { + "type": "string" + }, + "displayGross": { + "type": "boolean" + } + } + }, + "fallbackCustomerGroup": { + "description": "Fallback group if the default customer group is not applicable", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "displayGross": { + "type": "boolean" + } + } + }, + "currency": { + "$ref": "#/components/schemas/Currency" + }, + "salesChannel": { + "description": "Information about the current sales channel", + "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" }, - "active": { + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { "type": "boolean" }, - "position": { - "type": "integer", - "format": "int64" + "maintenanceIpWhitelist": { + "type": "string" }, - "customFields": { - "type": "object" + "mailHeaderFooterId": { + "type": "string" }, - "mediaId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "customerGroupId": { + "type": "string" }, - "deliveryTimeId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "hreflangActive": { + "type": "boolean" }, - "taxType": { + "hreflangDefaultDomainId": { "type": "string" }, - "description": { + "analyticsId": { "type": "string" + } + } + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } + }, + "customer": { + "$ref": "#/components/schemas/Customer" + }, + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod" + }, + "shippingLocation": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] }, - "trackingUrl": { + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + } + } + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + }, + "context": { + "description": "Core context with general configuration values and state", + "type": "object", + "properties": { + "versionId": { "type": "string" }, - "technicalName": { + "currencyId": { "type": "string" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "currencyFactor": { + "type": "integer" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "currencyPrecision": { + "type": "integer", + "format": "int32" }, - "translated": { - "type": "object" + "languageIdChain": { + "type": "array", + "items": { + "type": "string" + } }, - "relationships": { - "properties": { - "deliveryTime": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/shipping-method/d72e7a227a27328b28342b32fc66b6bf/deliveryTime" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "delivery_time" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "8c888ae25a7bd42057370e31f7e01044" - } - } - } - }, - "type": "object" - }, - "availabilityRule": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/shipping-method/d72e7a227a27328b28342b32fc66b6bf/availabilityRule" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "rule" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "9fbb7961d1cb158094924c679e1b302c" - } - } - } - }, - "type": "object" - }, - "prices": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/shipping-method/d72e7a227a27328b28342b32fc66b6bf/prices" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "shipping_method_price" - }, - "id": { - "type": "string", - "example": "afae32efe0f84fece3f96b377b768b33" - } - } - } - } - }, - "type": "object" - }, - "media": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/shipping-method/d72e7a227a27328b28342b32fc66b6bf/media" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "media" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "62933a2951ef01f4eafd9bdf4d3cd2f0" - } - } - } - }, - "type": "object" - }, - "tags": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/shipping-method/d72e7a227a27328b28342b32fc66b6bf/tags" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "tag" - }, - "id": { - "type": "string", - "example": "d57ac45256849d9b13e2422d91580fb9" - } - } - } - } - }, - "type": "object" - }, - "tax": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/shipping-method/d72e7a227a27328b28342b32fc66b6bf/tax" - } - } - }, - "data": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "tax" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "example": "06565e5611f23fdf8cc43e5077b92b54" - } - } - } - }, - "type": "object" - } - }, - "type": "object" + "scope": { + "type": "string" + }, + "source": { + "type": "string" + }, + "taxState": { + "type": "string" + }, + "useCache": { + "type": "boolean" } - }, - "type": "object" + } } - ] + } }, - "ShippingMethod": { - "description": "Added since version: 6.0.0.0", - "required": [ - "deliveryTimeId", - "taxType", - "createdAt", - "name" - ], + "Sitemap": { + "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "name": { + "filename": { "type": "string" }, - "active": { - "type": "boolean" - }, - "position": { - "type": "integer", - "format": "int64" - }, - "customFields": { - "type": "object" - }, - "mediaId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "deliveryTimeId": { + "created": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time" + } + }, + "required": [ + "filename", + "created" + ] + }, + "CartDeliveryPosition": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } }, - "taxType": { + "identifier": { "type": "string" }, - "description": { - "type": "string" + "lineItem": { + "$ref": "#/components/schemas/LineItem" }, - "trackingUrl": { - "type": "string" + "price": { + "$ref": "#/components/schemas/CalculatedPrice" + } + } + }, + "CartItems": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + } + } + }, + "Criteria": { + "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", + "properties": { + "page": { + "description": "Search result page", + "type": "integer" }, - "technicalName": { + "term": { + "description": "Search term", "type": "string" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "limit": { + "description": "Number of items per result page", + "type": "integer" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "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" + } + ] + } }, - "translated": { - "type": "object" + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } }, - "deliveryTime": { - "$ref": "#/components/schemas/DeliveryTime" + "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" + } }, - "availabilityRule": { - "$ref": "#/components/schemas/Rule" + "associations": { + "type": "array", + "description": "Associations to include. For more information, see [Search Queries > Associations](https://shopware.stoplight.io/docs/store-api/cf710bf73d0cd-search-queries#associations)", + "items": { + "$ref": "#/components/schemas/Association" + } }, - "prices": { + "post-filter": { "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", "items": { - "$ref": "#/components/schemas/ShippingMethodPrice" + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] } }, - "media": { - "$ref": "#/components/schemas/Media" + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + } }, - "tags": { + "aggregations": { + "$ref": "#/components/schemas/Aggregations" + }, + "fields": { "type": "array", + "description": "Fields which should be returned in the search result.", "items": { - "$ref": "#/components/schemas/Tag" + "type": "string", + "description": "Name of a field" + } + }, + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Include" + } + } + }, + "Association": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Criteria" + } + }, + "Include": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "Aggregations": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" + }, + { + "title": "AggregationEntity", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationEntity" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationFilter", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationFilter" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationTerms", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationRange", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationRange" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] } + ] + } + }, + "SubAggregations": { + "type": "object", + "properties": { + "aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" + }, + { + "$ref": "#/components/schemas/AggregationEntity" + }, + { + "$ref": "#/components/schemas/AggregationFilter" + }, + { + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/AggregationRange" + } + ] + } + } + }, + "TotalCountMode": { + "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", + "type": "string", + "default": "none", + "enum": [ + "none", + "exact", + "next-pages" + ] + }, + "Query": { + "type": "object", + "properties": { + "score": { + "type": "number" + }, + "query": { + "oneOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "additionalProperties": true + }, + "Sort": { + "type": "object", + "properties": { + "field": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] }, - "tax": { - "$ref": "#/components/schemas/Tax" + "naturalSorting": { + "type": "boolean" + }, + "type": { + "type": "string" } }, - "type": "object" - }, - "ShippingMethodPrice": { - "description": "Added since version: 6.0.0.0", "required": [ - "shippingMethodId", - "createdAt" - ], + "field", + "order" + ] + }, + "Filters": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "SimpleFilter": { + "type": "object", "properties": { - "id": { + "type": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "enum": [ + "contains", + "equalsAny", + "prefix", + "suffix" + ] }, - "shippingMethodId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "field": { + "type": "string" }, - "ruleId": { + "value": { + "type": "string" + } + }, + "required": [ + "type", + "field", + "value" + ] + }, + "EqualsFilter": { + "type": "object", + "properties": { + "type": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "enum": [ + "equals" + ] }, - "calculation": { - "type": "integer", - "format": "int64" + "field": { + "type": "string" }, - "calculationRuleId": { + "value": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "type", + "field", + "value" + ] + }, + "MultiNotFilter": { + "type": "object", + "properties": { + "type": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "quantityStart": { - "type": "number", - "format": "float" - }, - "quantityEnd": { - "type": "number", - "format": "float" - }, - "currencyPrice": { - "type": "object" - }, - "customFields": { - "type": "object" + "enum": [ + "multi", + "not" + ] }, - "createdAt": { + "operator": { "type": "string", - "format": "date-time", - "readOnly": true + "enum": [ + "AND", + "and", + "OR", + "or" + ] }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "queries": { + "$ref": "#/components/schemas/Filters" } }, - "type": "object" - }, - "Snippet": { - "description": "Added since version: 6.0.0.0", "required": [ - "setId", - "translationKey", - "value", - "createdAt" - ], + "type", + "operator", + "queries" + ] + }, + "RangeFilter": { + "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "setId": { + "type": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "translationKey": { - "type": "string" + "enum": [ + "range" + ] }, - "value": { + "field": { "type": "string" }, - "customFields": { - "type": "object" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "parameters": { + "type": "object", + "properties": { + "gte": { + "type": "number" + }, + "gt": { + "type": "number" + }, + "lte": { + "type": "number" + }, + "lt": { + "type": "number" + } + } } }, - "type": "object" - }, - "SnippetSet": { - "description": "Added since version: 6.0.0.0", "required": [ - "name", - "iso", - "createdAt" - ], + "type", + "field", + "parameters" + ] + }, + "NavigationRouteResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + } + }, + "SuccessResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + } + } + }, + "ProductListingCriteria": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + }, + { + "type": "object", + "description": "Additional search parameters for product listings", + "properties": { + "order": { + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "type": "string" + }, + "limit": { + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "type": "integer", + "minimum": 0 + }, + "p": { + "description": "Search result page", + "type": "integer", + "default": 1 + }, + "manufacturer": { + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "type": "string" + }, + "min-price": { + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "max-price": { + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "rating": { + "description": "Filter products with a minimum average rating.", + "type": "integer" + }, + "shipping-free": { + "description": "Filters products that are marked as shipping-free.", + "type": "boolean", + "default": false + }, + "properties": { + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "type": "string" + }, + "manufacturer-filter": { + "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "price-filter": { + "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "rating-filter": { + "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "shipping-free-filter": { + "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-filter": { + "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-whitelist": { + "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", + "type": "string" + }, + "reduce-aggregations": { + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "type": "string", + "nullable": true + } + } + } + ] + }, + "ProductDetailResponse": { + "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "name": { - "type": "string" - }, - "iso": { - "type": "string" - }, - "customFields": { - "type": "object" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "product": { + "$ref": "#/components/schemas/Product" }, - "snippets": { + "configurator": { "type": "array", + "description": "List of property groups with their corresponding options and information on how to display them.", "items": { - "$ref": "#/components/schemas/Snippet" + "$ref": "#/components/schemas/PropertyGroup" } } }, - "type": "object" - }, - "StateMachine": { - "description": "Added since version: 6.0.0.0", "required": [ - "createdAt", - "name" - ], + "product" + ] + }, + "CalculatedPrice": { + "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "unitPrice": { + "type": "number" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "quantity": { + "type": "number" }, - "translated": { - "type": "object" + "rawTotal": { + "type": "number" }, - "states": { - "type": "array", - "items": { - "$ref": "#/components/schemas/StateMachineState" - } + "totalPrice": { + "type": "number" }, - "transitions": { + "calculatedTaxes": { "type": "array", "items": { - "$ref": "#/components/schemas/StateMachineTransition" + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] } - } - }, - "type": "object" - }, - "StateMachineHistory": { - "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] }, - "fromStateMachineState": { - "$ref": "#/components/schemas/StateMachineState" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] }, - "toStateMachineState": { - "$ref": "#/components/schemas/StateMachineState" - } - }, - "type": "object" - }, - "StateMachineState": { - "description": "Added since version: 6.0.0.0", - "required": [ - "technicalName", - "createdAt", - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "positionPrice": { + "type": "number" }, - "technicalName": { - "type": "string" + "netPrice": { + "type": "number" }, - "name": { - "type": "string" + "regulationPrice": { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + }, + "nullable": true }, - "customFields": { - "type": "object" + "hasRange": { + "type": "boolean" }, - "createdAt": { + "variantId": { "type": "string", - "format": "date-time", - "readOnly": true + "format": "^[0-9a-f]{32}$", + "nullable": true }, - "updatedAt": { + "apiAlias": { "type": "string", - "format": "date-time", - "readOnly": true + "enum": [ + "calculated_price" + ] }, - "translated": { - "type": "object" + "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" + ] + }, + "NavigationType": { + "type": "string", + "enum": [ + "main-navigation", + "footer-navigation", + "service-navigation" + ] + }, + "ShippingMethodPageRouteResponse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "deliveryTimeId": { + "type": "string" + }, + "deliveryTime": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "min": { + "type": "integer", + "format": "int32" + }, + "max": { + "type": "integer", + "format": "int32" + }, + "unit": { + "type": "string" + } + } + }, + "translations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + } + } + } + }, + "orderDeliveries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "orderId": { + "type": "string" + }, + "shippingOrderAddressId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "shippingDateEarliest": { + "type": "string", + "format": "date-time" + }, + "shippingDateLatest": { + "type": "string", + "format": "date-time" + }, + "stateId": { + "type": "string" + } + } + } + }, + "salesChannelDefaultAssignments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } + } + }, + "salesChannels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } + } + }, + "availabilityRule": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "priority": { + "type": "integer", + "format": "int32" + }, + "invalid": { + "type": "boolean" + } + } + }, + "availabilityRuleId": { + "type": "string" + }, + "prices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "ruleId": { + "type": "string" + }, + "calculation": { + "type": "integer", + "format": "int32" + }, + "quantityStart": { + "type": "number", + "format": "float" + }, + "quantityEnd": { + "type": "number", + "format": "float" + }, + "price": { + "type": "number", + "format": "float" + }, + "calculationRuleId": { + "type": "string" + } + } + } + }, + "mediaId": { + "type": "string" + }, + "media": { + "type": "object", + "properties": { + "userId": { + "type": "string" + }, + "mimeType": { + "type": "string" + }, + "fileExtension": { + "type": "string" + }, + "fileSize": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string" + }, + "metaDataRaw": { + "type": "string" + }, + "mediaTypeRaw": { + "type": "string" + }, + "uploadedAt": { + "type": "string", + "format": "date-time" + }, + "alt": { + "type": "string" + }, + "url": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "mediaFolderId": { + "type": "string" + }, + "private": { + "type": "boolean" + }, + "thumbnailsRo": { + "type": "string" + } + } + }, + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + } + } } - }, - "type": "object" + } }, - "StateMachineTransition": { - "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], + "FindProductVariantRouteResponse": { + "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "foundCombination": { + "type": "object", + "properties": { + "variantId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "options": { + "type": "array", + "items": { + "type": "string" + } + } + } } - }, - "type": "object" + } }, - "Subscription": { - "required": [ - "convertedOrder", - "subscriptionNumber", - "nextSchedule", - "salesChannelId", - "subscriptionPlanName", - "subscriptionIntervalName", - "dateInterval", - "cronInterval", - "initialExecutionCount", - "remainingExecutionCount", - "billingAddressId", - "shippingAddressId", - "shippingMethodId", - "paymentMethodId", - "currencyId", - "languageId", - "createdAt" - ], + "ProductListingFlags": { + "type": "object", + "description": "Additional flags for product listings", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "convertedOrder": { - "type": "object" - }, - "subscriptionNumber": { - "type": "string" - }, - "nextSchedule": { - "type": "string", - "format": "date-time" - }, - "salesChannelId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "subscriptionPlanId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "subscriptionPlanName": { - "type": "string" - }, - "subscriptionIntervalId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "subscriptionIntervalName": { - "type": "string" - }, - "dateInterval": { - "type": "string" - }, - "cronInterval": { - "type": "string" - }, - "initialExecutionCount": { - "type": "integer", - "format": "int64" - }, - "remainingExecutionCount": { - "type": "integer", - "format": "int64" - }, - "billingAddressId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shippingAddressId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shippingMethodId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "paymentMethodId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "languageId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "customFields": { - "type": "object" - }, - "createdAt": { + "no-aggregations": { + "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", "type": "string", - "format": "date-time", - "readOnly": true + "nullable": true }, - "updatedAt": { + "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", - "format": "date-time", - "readOnly": true - }, - "subscriptionPlan": { - "$ref": "#/components/schemas/SubscriptionPlan" - }, - "subscriptionInterval": { - "$ref": "#/components/schemas/SubscriptionInterval" - }, - "subscriptionCustomer": { - "$ref": "#/components/schemas/SubscriptionCustomer" - }, - "billingAddress": { - "$ref": "#/components/schemas/SubscriptionAddress" - }, - "shippingAddress": { - "$ref": "#/components/schemas/SubscriptionAddress" - }, - "addresses": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SubscriptionAddress" - } - }, - "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethod" - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" - }, - "stateMachineState": { - "$ref": "#/components/schemas/StateMachineState" - }, - "orders": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order" - } - }, - "tags": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Tag" - } - }, - "currency": { - "$ref": "#/components/schemas/Currency" - }, - "language": { - "$ref": "#/components/schemas/Language" + "nullable": true } - }, - "type": "object" + } }, - "SubscriptionAddress": { - "required": [ - "countryId", - "subscriptionId", - "firstName", - "lastName", - "street", - "city", - "createdAt" - ], + "LineItemType": { + "type": "string", + "enum": [ + "product", + "credit", + "custom", + "promotion", + "discount", + "container", + "quantity" + ] + }, + "LineItem": { + "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "subscriptionId": { - "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" - }, - "street": { - "type": "string" - }, - "zipcode": { - "type": "string" + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } }, - "city": { - "type": "string" + "cover": { + "$ref": "#/components/schemas/ProductMedia" }, - "company": { + "dataContextHash": { "type": "string" }, - "department": { + "dataTimestamp": { "type": "string" }, - "title": { - "type": "string" + "deliveryInformation": { + "$ref": "#/components/schemas/CartDeliveryInformation" }, - "vatId": { + "description": { "type": "string" }, - "phoneNumber": { - "type": "string" + "good": { + "type": "boolean" }, - "additionalAddressLine1": { + "id": { "type": "string" }, - "additionalAddressLine2": { + "label": { "type": "string" }, - "customFields": { - "type": "object" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "billingSubscription": { - "$ref": "#/components/schemas/Subscription" - }, - "shippingSubscription": { - "$ref": "#/components/schemas/Subscription" - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "$ref": "#/components/schemas/CountryState" - }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "modified": { + "type": "boolean" }, - "subscription": { - "$ref": "#/components/schemas/Subscription" - } - }, - "type": "object" - }, - "SubscriptionCustomer": { - "required": [ - "salutationId", - "email", - "firstName", - "lastName", - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "modifiedByApp": { + "type": "boolean" }, - "customerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "payload": { + "$ref": "#/components/schemas/ProductJsonApi" }, - "salutationId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "price": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] + }, + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] + }, + "quantity": { + "type": "number" + }, + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + }, + "nullable": true + }, + "totalPrice": { + "type": "number" + }, + "unitPrice": { + "type": "number" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } + } + }, + "required": [ + "apiAlias", + "totalPrice", + "quantity", + "unitPrice" + ] }, - "email": { - "type": "string" + "priceDefinition": { + "$ref": "#/components/schemas/CartPriceQuantity" }, - "firstName": { - "type": "string" + "quantity": { + "type": "number" }, - "lastName": { - "type": "string" + "quantityInformation": { + "type": "object", + "properties": { + "maxPurchase": { + "type": "number" + }, + "minPurchase": { + "type": "number" + }, + "purchaseSteps": { + "type": "number" + } + } }, - "company": { + "referencedId": { "type": "string" }, - "title": { - "type": "string" + "removable": { + "type": "boolean" }, - "customerNumber": { - "type": "string" + "stackable": { + "type": "boolean" }, - "vatIds": { + "states": { "type": "array", "items": { - "type": "string" + "type": "string", + "enum": [ + "is-physical", + "is-download" + ] } }, - "customFields": { - "type": "object" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "type": { + "$ref": "#/components/schemas/LineItemType" }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "uniqueIdentifier": { + "type": "string" } }, - "type": "object" - }, - "SubscriptionInterval": { "required": [ - "name", - "active", - "dateInterval", - "cronInterval", - "createdAt" - ], + "id", + "type" + ] + }, + "CartDelivery": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "name": { - "type": "string" - }, - "active": { - "type": "boolean" + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } }, - "dateInterval": { - "type": "string" + "location": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "state": { + "$ref": "#/components/schemas/CountryState" + } + } }, - "cronInterval": { - "type": "string" + "positions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDeliveryPosition" + } }, - "availabilityRuleId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "shippingCosts": { + "$ref": "#/components/schemas/CalculatedPrice" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + } + } + }, + "AggregationMetrics": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - "updatedAt": { + "type": { "type": "string", - "format": "date-time", - "readOnly": true + "enum": [ + "avg", + "count", + "max", + "min", + "stats", + "sum" + ] }, - "translated": { - "type": "object" + "field": { + "type": "string" + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "OrderRouteResponse": { + "type": "object", + "properties": { + "orders": { + "allOf": [ + { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" + } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] }, - "subscriptions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Subscription" + "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" } } }, - "type": "object" + "required": [ + "orders" + ] }, - "SubscriptionPlanJsonApi": { + "ProductListingResult": { "allOf": [ { - "$ref": "#/components/schemas/resource" + "$ref": "#/components/schemas/EntitySearchResult" }, { - "required": [ - "name", - "active", - "activeStorefrontLabel", - "createdAt" - ], + "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "minimumExecutionCount": { - "type": "integer", - "format": "int64" - }, - "activeStorefrontLabel": { - "type": "boolean" - }, - "availabilityRuleId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "currentFilters": { + "type": "object", + "description": "Contains the state of the filters. These can be used to create listing filters.", + "properties": { + "navigationId": { + "type": "string" + }, + "manufacturer": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "price": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "default": 0 + }, + "max": { + "type": "integer", + "default": 0 + } + }, + "required": [ + "min", + "max" + ] + }, + "rating": { + "type": "integer", + "nullable": true + }, + "shipping-free": { + "type": "boolean", + "default": false + }, + "properties": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "search": { + "type": "string" + } + }, + "required": [ + "manufacturer", + "navigationId", + "price", + "properties", + "rating", + "shipping-free" + ] }, - "discountPercentage": { - "type": "number", - "format": "float" + "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" + ] + } }, - "label": { + "sorting": { "type": "string" }, - "discountPrice": { - "type": "object" + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } }, - "createdAt": { + "entity": { "type": "string", - "format": "date-time", - "readOnly": true + "enum": [ + "product" + ] }, - "updatedAt": { + "apiAlias": { "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - }, - "relationships": { - "properties": { - "subscriptions": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/subscription-plan/5e63f9057837020694081b9412211bfb/subscriptions" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "subscription" - }, - "id": { - "type": "string", - "example": "2d5d14f95af035cbd8437948de61f94c" - } - } - } - } - }, - "type": "object" - } - }, - "type": "object" + "enum": [ + "product_listing" + ] } }, - "type": "object" + "required": [ + "elements", + "availableSortings", + "currentFilters", + "apiAlias" + ] } ] }, - "SubscriptionPlan": { + "CustomerAddressBody": { + "description": "Added since version: 6.0.0.0", "required": [ - "name", - "active", - "activeStorefrontLabel", - "createdAt" + "countryId", + "firstName", + "lastName", + "city", + "street" ], "properties": { - "id": { + "countryId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "name": { + "countryStateId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "salutationId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "firstName": { "type": "string" }, - "description": { + "lastName": { "type": "string" }, - "active": { - "type": "boolean" + "zipcode": { + "type": "string" }, - "minimumExecutionCount": { - "type": "integer", - "format": "int64" + "city": { + "type": "string" }, - "activeStorefrontLabel": { - "type": "boolean" + "company": { + "type": "string" }, - "availabilityRuleId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "street": { + "type": "string" }, - "discountPercentage": { - "type": "number", - "format": "float" + "department": { + "type": "string" }, - "label": { + "title": { "type": "string" }, - "discountPrice": { - "type": "object" + "phoneNumber": { + "type": "string" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "additionalAddressLine1": { + "type": "string" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "additionalAddressLine2": { + "type": "string" }, - "translated": { + "customFields": { "type": "object" }, - "subscriptions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Subscription" - } + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "$ref": "#/components/schemas/CountryState" + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, "type": "object" }, - "SubscriptionPlanIntervalMapping": { - "required": [ - "subscriptionIntervalId", - "subscriptionPlanId" - ], + "AccountNewsletterRecipient": { + "type": "object", "properties": { - "id": { + "status": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "enum": [ + "undefined", + "notSet", + "direct", + "optIn", + "optOut" + ] }, - "subscriptionIntervalId": { + "apiAlias": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "enum": [ + "account_newsletter_recipient" + ] + } + }, + "required": [ + "status", + "apiAlias" + ] + }, + "CrossSellingElement": { + "type": "object", + "properties": { + "crossSelling": { + "$ref": "#/components/schemas/ProductCrossSelling" }, - "subscriptionPlanId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } }, - "subscriptionPlan": { - "$ref": "#/components/schemas/SubscriptionPlan" + "total": { + "type": "integer", + "format": "int32" }, - "subscriptionInterval": { - "$ref": "#/components/schemas/SubscriptionInterval" + "streamId": { + "type": "string", + "format": "uuid" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cross_selling_element" + ] } }, - "type": "object" - }, - "SubscriptionPlanProductMapping": { "required": [ - "productId", - "subscriptionPlanId" - ], + "crossSelling", + "products", + "total", + "apiAlias" + ] + }, + "CustomerAddressRead": { + "type": "object", "properties": { "id": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "pattern": "^[0-9a-f]{32}$", + "readOnly": true }, - "productId": { + "customerId": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "pattern": "^[0-9a-f]{32}$", + "readOnly": true }, - "productVersionId": { + "createdAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time" }, - "subscriptionPlanId": { + "updatedAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "nullable": true }, - "subscriptionPlan": { - "$ref": "#/components/schemas/SubscriptionPlan" + "country": { + "$ref": "#/components/schemas/Country" }, - "product": { - "$ref": "#/components/schemas/Product" + "countryState": { + "$ref": "#/components/schemas/CountryState", + "nullable": true + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, - "type": "object" - }, - "SubscriptionTagMapping": { "required": [ - "subscriptionId", - "tagId" - ], + "customerId", + "createdAt", + "updatedAt", + "country", + "salutation" + ] + }, + "CartPriceQuantity": { + "type": "object", "properties": { - "id": { + "apiAlias": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "enum": [ + "cart_price_quantity" + ] }, - "subscriptionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "isCalculated": { + "type": "boolean" }, - "tagId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "listPrice": { + "$ref": "#/components/schemas/CartListPrice" }, - "subscription": { - "$ref": "#/components/schemas/Subscription" + "price": { + "type": "number" }, - "tag": { - "$ref": "#/components/schemas/Tag" + "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" } }, - "type": "object" - }, - "SwagDelayAction": { "required": [ - "createdAt" - ], + "apiAlias" + ] + }, + "EntitySearchResult": { + "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "entity": { + "type": "string" }, - "orderId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "total": { + "type": "integer", + "description": "The total number of found entities" }, - "customerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "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" + } }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." } - }, - "type": "object" + } }, - "SystemConfig": { - "description": "Added since version: 6.0.0.0", - "required": [ - "configurationKey", - "configurationValue", - "createdAt" - ], + "CartError": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "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" + } + } + } + } + }, + "Cart": { + "type": "object", + "properties": { + "name": { + "description": "Name of the cart - for example `guest-cart`", + "type": "string" }, - "configurationKey": { + "token": { + "description": "Context token identifying the cart and the user session", "type": "string" }, - "configurationValue": { - "properties": { - "_value": { - "type": "object" + "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" + } + }, + "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" + } } - }, - "type": "object" + } }, - "salesChannelId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "modified": { + "type": "boolean" }, - "createdAt": { + "customerComment": { "type": "string", - "format": "date-time", - "readOnly": true + "description": "A comment that can be added to the cart.", + "nullable": true }, - "updatedAt": { + "affiliateCode": { "type": "string", - "format": "date-time", - "readOnly": true + "description": "An affiliate tracking code", + "nullable": true }, - "salesChannel": { - "$ref": "#/components/schemas/SalesChannel" + "campaignCode": { + "type": "string", + "description": "A campaign tracking code", + "nullable": true } - }, - "type": "object" + } }, - "Tag": { - "description": "Added since version: 6.0.0.0", - "required": [ - "name", - "createdAt" - ], + "CartPriceReference": { + "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "purchaseUnit": { + "type": "number" }, - "name": { + "referenceUnit": { + "type": "number" + }, + "unitName": { "type": "string" }, - "createdAt": { + "price": { + "type": "number" + }, + "apiAlias": { "type": "string", - "format": "date-time", - "readOnly": true + "enum": [ + "cart_price_reference" + ] }, - "updatedAt": { + "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": "date-time", - "readOnly": true + "format": "^[0-9a-f]{32}$", + "nullable": true } }, - "type": "object" - }, - "Tax": { - "description": "Added since version: 6.0.0.0", "required": [ - "taxRate", - "name", - "position", - "createdAt" - ], + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" + ] + }, + "CartListPrice": { + "type": "object", + "description": "", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - }, - "position": { - "description": "Added since version: 6.4.0.0.", - "type": "integer", - "format": "int64" + "discount": { + "type": "number" }, - "customFields": { - "type": "object" + "percentage": { + "type": "number" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "price": { + "type": "number" }, - "updatedAt": { + "apiAlias": { "type": "string", - "format": "date-time", - "readOnly": true + "enum": [ + "cart_list_price" + ] } }, - "type": "object" - }, - "TaxProvider": { - "description": "Added since version: 6.5.0.0", "required": [ - "priority", - "createdAt", - "name" - ], + "apiAlias" + ] + }, + "CrossSellingElementCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrossSellingElement" + } + }, + "CartDeliveryInformation": { + "type": "object", "properties": { - "id": { + "apiAlias": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "enum": [ + "cart_delivery_information" + ] }, - "active": { + "freeDelivery": { "type": "boolean" }, - "name": { - "type": "string" - }, - "priority": { - "type": "integer", - "format": "int64" + "deliveryTime": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "min": { + "type": "integer" + }, + "max": { + "type": "integer" + }, + "unit": { + "type": "string" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_time" + ] + } + } }, - "processUrl": { - "type": "string" + "height": { + "type": "integer" }, - "appId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "length": { + "type": "integer" }, - "customFields": { - "type": "object" + "restockTime": { + "type": "integer" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "stock": { + "type": "integer" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "weight": { + "type": "integer" }, - "translated": { - "type": "object" + "width": { + "type": "integer" } }, - "type": "object" - }, - "TaxRule": { - "description": "Added since version: 6.1.0.0", "required": [ - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "apiAlias" + ] + }, + "SearchByImageSearchTermResponse": { + "type": "array", + "items": { + "type": "object", + "required": [ + "term", + "apiAlias" + ], + "properties": { + "term": { + "type": "string" + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_image_upload_search_term" + ] + }, + "extensions": { + "type": "array", + "items": { + "type": "object" + } + } } - }, - "type": "object" + } }, - "TaxRuleType": { - "description": "Added since version: 6.1.0.0", - "required": [ - "createdAt", - "typeName" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" + "NaturalLanguageSearchTermResponse": { + "type": "array", + "items": { + "type": "object", + "required": [ + "term", + "reason", + "apiAlias" + ], + "properties": { + "term": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_natural_language_search_term" + ] + } } - }, - "type": "object" + } }, - "Theme": { - "description": "Added since version: 6.0.0.0", - "required": [ - "name", - "author", - "active", - "createdAt" - ], + "ApprovalRule": { "properties": { "id": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "uuid" }, - "technicalName": { + "businessPartnerCustomerId": { "type": "string" }, "name": { "type": "string" }, - "author": { - "type": "string" + "priority": { + "type": "integer" }, "description": { "type": "string" }, - "labels": { - "type": "object" - }, - "helpTexts": { - "type": "object" - }, - "customFields": { - "type": "object" - }, - "previewMediaId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "parentThemeId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "baseConfig": { - "type": "object" - }, - "configValues": { - "type": "object" - }, "active": { "type": "boolean" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - }, - "media": { + "conditions": { "type": "array", "items": { - "$ref": "#/components/schemas/Media" + "type": "object", + "properties": { + "type": { + "type": "string" + }, + "value": { + "type": "string" + } + } } } }, "type": "object" }, - "Unit": { - "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt", - "shortCode", - "name" - ], + "PendingOrder": { + "type": "object", "properties": { "id": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "uuid" }, - "shortCode": { + "number": { "type": "string" }, - "name": { + "reason": { "type": "string" }, - "customFields": { + "cartPayload": { + "oneOf": [ + { + "type": "object" + }, + { + "type": "string" + } + ] + }, + "price": { "type": "object" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "lineItemCount": { + "type": "integer" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "employeeId": { + "type": "string" }, - "translated": { - "type": "object" - } - }, - "type": "object" - }, - "User": { - "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "decidedById": { + "type": "string" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "customerId": { + "type": "string" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "UserAccessKey": { - "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "stateId": { + "type": "string" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "currencyId": { + "type": "string" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "UserConfig": { - "description": "Added since version: 6.3.5.0", - "required": [ - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "shippingMethodId": { + "type": "string" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "paymentMethodId": { + "type": "string" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "UserRecovery": { - "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "countryId": { + "type": "string" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "salesChannelId": { + "type": "string" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "Warehouse": { - "required": [ - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "languageId": { + "type": "string" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "billingAddress": { + "type": "object", + "nullable": true }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "WarehouseGroup": { - "required": [ - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "language": { + "type": "object", + "nullable": true + }, + "country": { + "type": "object", + "nullable": true + }, + "currency": { + "type": "object", + "nullable": true + }, + "salesChannel": { + "type": "object", + "nullable": true + }, + "approvalRuleId": { + "type": "string" }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "itemRounding": { + "type": "object", + "nullable": true }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "Webhook": { - "description": "Added since version: 6.3.1.0", - "required": [ - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "totalRounding": { + "type": "object", + "nullable": true }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "taxStatus": { + "type": "string" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "WebhookEventLog": { - "description": "Added since version: 6.4.1.0", - "required": [ - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "amountTotal": { + "type": "number", + "nullable": true }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "amountNet": { + "type": "number", + "nullable": true }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true + "originalPrice": { + "type": "number", + "nullable": true } - }, - "type": "object" - }, - "Sitemap": { - "allOf": [ - { - "$ref": "#/components/schemas/ArrayStruct" - }, - { - "type": "object", - "properties": { - "filename": { - "type": "string" - }, - "created": { - "type": "string", - "format": "date-time" - } + } + } + }, + "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." + } + ] } - } - ] - }, - "CartItems": { - "allOf": [ - { - "$ref": "#/components/schemas/ArrayStruct" }, - { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "404", + "title": "Not Found", + "description": "Resource with given parameter was not found." } - } + ] } } - ] - }, - "Struct": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "description": "Alias which can be used to restrict response fields. For more information see [includes](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#includes-apialias)." - } } }, - "Cart": { - "allOf": [ - { - "$ref": "#/components/schemas/ArrayStruct" - }, - { - "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": { - "type": "object", - "properties": { - "netPrice": { - "description": "Net price of the cart", - "type": "number", - "format": "float" - }, - "totalPrice": { - "description": "Total price of the cart, including shipping costs, discounts and taxes", - "type": "number", - "format": "float" - }, - "positionPrice": { - "description": "Price for all line items in the cart", - "type": "number", - "format": "float" - }, - "taxStatus": { - "description": "Tax calculation for the cart. One of `gross`, `net` or `tax-free`", - "type": "string" - } - } - }, - "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": { - "type": "object", - "properties": { - "key": { - "type": "string" - }, - "level": { - "type": "string" - }, - "message": { - "type": "string" - } - } + "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." } - }, - "transactions": { - "description": "A list of all payment transactions associated with the current cart.", - "type": "array", - "items": { - "type": "object", - "properties": { - "paymentMethodId": { - "type": "string" - } - } + ] + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "403", + "title": "Forbidden", + "description": "This operation is restricted to logged in users." } - }, - "modified": { - "type": "boolean" - }, - "customerComment": { - "type": "string", - "description": "A comment that can be added to the cart." - }, - "affiliateCode": { - "type": "string", - "description": "An affiliate tracking code" - }, - "campaignCode": { - "type": "string", - "description": "A campaign tracking code" - } + ] } } - ] + } }, - "ProductDetailResponse": { - "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", - "properties": { - "product": { - "$ref": "#/components/schemas/Product" + "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." + } + ] + } }, - "configurator": { - "type": "array", - "description": "List of property groups with their corresponding options and information on how to display them.", - "items": { - "$ref": "#/components/schemas/PropertyGroup" + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "401", + "title": "Unauthorized", + "description": "Authorization information is missing or invalid." + } + ] } } } }, - "OrderRouteResponse": { - "type": "object", - "properties": { - "orders": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order" + "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." + } + ] } }, - "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" + "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." + } + ] } } } }, - "CrossSellingElementCollection": { - "type": "array", - "items": { - "type": "object", - "properties": { - "crossSelling": { + "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" + } + } + }, + "content": { + "application/json": { + "schema": { "type": "object", "properties": { - "name": { + "redirectUrl": { + "description": "Define the URL which browser will be redirected to", "type": "string" - }, - "position": { - "type": "integer", - "format": "int32" - }, - "sortBy": { + } + } + } + } + } + }, + "OpenApi3": { + "description": "Returns information about the store API.", + "content": { + "application/json": { + "schema": { + "properties": { + "openapi": { "type": "string" }, - "sortDirection": { + "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" }, - "limit": { - "type": "integer", - "format": "int32" + "webhooks": { + "type": "object" }, - "active": { - "type": "boolean" + "servers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + } + }, + "required": [ + "url" + ] + } }, - "productId": { - "type": "string" + "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" + } + } }, - "productStreamId": { - "type": "string" + "security": { + "type": "array", + "items": { + "type": "object" + } }, - "type": { - "type": "string" - } - } - }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - }, - "total": { - "type": "integer", - "format": "int32" - } - } - } - }, - "EntitySearchResult": { - "allOf": [ - { - "$ref": "#/components/schemas/ArrayStruct" - }, - { - "type": "object", - "properties": { - "entity": { - "type": "string" - }, - "total": { - "type": "integer", - "description": "The total number of found entities" - }, - "aggregations": { - "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", - "items": { + "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" + ] } }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." - }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." - } + "type": "object", + "required": [ + "openapi", + "info" + ] } } - ] + } + } + }, + "parameters": { + "contentType": { + "name": "Content-Type", + "in": "header", + "description": "Content type of the request", + "required": true, + "schema": { + "type": "string", + "default": "application/json" + } }, - "SuccessResponse": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - } + "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" }, - "SalesChannelContext": { - "allOf": [ - { - "$ref": "#/components/schemas/ArrayStruct" - }, - { - "type": "object", - "properties": { - "token": { - "description": "Context the user session", - "type": "string" - }, - "currentCustomerGroup": { - "type": "object", - "description": "Customer group of the current user", + "ContextToken": { + "type": "apiKey", + "description": "Identifies an anonymous or identified user session", + "name": "sw-context-token", + "in": "header" + } + } + }, + "security": [ + { + "ApiKey": [] + } + ], + "paths": { + "/role/create": { + "post": { + "tags": [ + "B2B Employee Management" + ], + "summary": "Create a single role and returns the role", + "description": "This route is used to create and return an role", + "operationId": "createRole", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { "properties": { "name": { + "description": "Name of the new role", "type": "string" }, - "displayGross": { - "type": "boolean" - } - } - }, - "fallbackCustomerGroup": { - "description": "Fallback group if the default customer group is not applicable", - "type": "object", - "properties": { - "name": { - "type": "string" + "permissions": { + "description": "Permissions of the new role", + "type": "array", + "items": { + "type": "string" + } }, - "displayGross": { + "isDefaultRole": { + "description": "Ability to set the new role as default", "type": "boolean" } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Role entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/B2bComponentsRole" } - }, - "currency": { - "type": "object", - "description": "Currency associated with the current user", - "properties": { - "isoCode": { - "type": "string" - }, - "factor": { - "type": "integer" - }, - "symbol": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "name": { - "type": "string" - }, - "position": { - "type": "integer", - "format": "int32" - }, - "decimalPrecision": { - "type": "integer", - "format": "int32" - }, - "isSystemDefault": { - "type": "boolean" + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/role": { + "get": { + "tags": [ + "B2B Employee Management" + ], + "summary": "Fetch a list of roles", + "description": "This route is used to load roles", + "operationId": "readRoles", + "parameters": [], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Entity search result containing roles", + "content": { + "application/json": { + "schema": { + "type": "object", + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/B2bComponentsRole" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } - }, - "salesChannel": { - "description": "Information about the current sales channel", - "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" - }, - "analyticsId": { - "type": "string" + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + }, + "post": { + "tags": [ + "B2B" + ], + "summary": "Fetch a list of roles", + "description": "This route is used to load roles", + "operationId": "readRolesPOST", + "parameters": [], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - } - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { + ] + } + } + } + }, + "responses": { + "200": { + "description": "Entity search result containing roles", + "content": { + "application/json": { + "schema": { "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/B2bComponentsRole" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" } - } + ] } - }, - "customer": { - "type": "object", - "description": "Information about the current customer - `null` if the customer is not logged in", - "properties": { - "groupId": { - "type": "string" - }, - "defaultPaymentMethodId": { - "type": "string" - }, - "salesChannelId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "lastPaymentMethodId": { - "type": "string" - }, - "defaultBillingAddressId": { - "type": "string" - }, - "defaultShippingAddressId": { - "type": "string" - }, - "defaultBillingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "defaultShippingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "activeBillingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "activeShippingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "customerNumber": { - "type": "string" - }, - "salutationId": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "company": { - "type": "string" - }, - "password": { - "type": "string" - }, - "email": { - "type": "string" - }, - "title": { - "type": "string" - }, - "affiliateCode": { - "type": "string" - }, - "campaignCode": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "doubleOptInRegistration": { - "type": "boolean" - }, - "doubleOptInEmailSentDate": { - "type": "string", - "format": "date-time" - }, - "doubleOptInConfirmDate": { - "type": "string", - "format": "date-time" - }, - "hash": { - "type": "string" - }, - "guest": { - "type": "boolean" - }, - "firstLogin": { - "type": "string", - "format": "date-time" - }, - "lastLogin": { - "type": "string", - "format": "date-time" - }, - "newsletter": { - "type": "boolean" - }, - "birthday": { - "type": "string", - "format": "date-time" - }, - "lastOrderDate": { - "type": "string", - "format": "date-time" - }, - "orderCount": { - "type": "integer", - "format": "int32" - }, - "legacyEncoder": { - "type": "string" - }, - "legacyPassword": { - "type": "string" - }, - "autoIncrement": { - "type": "integer", - "format": "int32" - }, - "remoteAddress": { - "type": "string" - } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/role/{id}": { + "get": { + "tags": [ + "B2B Employee Management" + ], + "summary": "Fetch a one role by id", + "description": "This route is used to fetch one role by id", + "operationId": "readRole", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Identifier of the role to be fetched", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "responses": { + "200": { + "description": "Role entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/B2bComponentsRole" } - }, - "paymentMethod": { - "type": "object", - "description": "Selected payment method", + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + }, + "patch": { + "tags": [ + "B2B" + ], + "summary": "Update a one role by id", + "description": "This route is used to update one role by id", + "operationId": "updateRole", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Identifier of the role to be updated", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { "properties": { - "pluginId": { - "type": "string" - }, - "handlerIdentifier": { - "type": "string" - }, "name": { + "description": "New name of the role", "type": "string" }, - "description": { - "type": "string" - }, - "position": { - "type": "integer", - "format": "int32" + "permissions": { + "description": "New permissions of the role", + "type": "array", + "items": { + "type": "string" + } }, - "active": { + "isDefaultRole": { + "description": "Ability to set the role as default", "type": "boolean" - }, - "availabilityRuleId": { - "type": "string" - }, - "mediaId": { - "type": "string" - }, - "formattedHandlerIdentifier": { - "type": "string" } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Role entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/B2bComponentsRole" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + }, + "delete": { + "tags": [ + "B2B" + ], + "summary": "Delete an role by id", + "description": "This route is used to delete one role by id", + "operationId": "deleteRole", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Identifier of the role to be fetched", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "responses": { + "204": { + "description": "No content response" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/role/permissions": { + "get": { + "tags": [ + "B2B Employee Management" + ], + "summary": "Fetch a available permissions", + "description": "This route is used to fetch all available permissions", + "operationId": "readPermissions", + "responses": { + "200": { + "description": "Permission collection", + "content": { + "application/json": { + "schema": { + "type": "object", + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "type": "object", + "properties": { + "permissionName": { + "type": "string" + }, + "permissionDependencies": { + "type": "array", + "items": { + "type": "string" + } + }, + "permissionGroupName": { + "type": "string" + } + } + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } - }, - "shippingMethod": { - "type": "object", - "description": "Selected shipping method", + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/role/default": { + "post": { + "tags": [ + "B2B Employee Management" + ], + "summary": "Sets the default role Id for new employees", + "description": "This route is used to update the defaultRoleId for new employees", + "operationId": "updateDefaultRoleId", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { "properties": { - "name": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "trackingUrl": { - "type": "string" - }, - "deliveryTimeId": { - "type": "string" - }, - "availabilityRuleId": { - "type": "string" - }, - "mediaId": { + "id": { + "description": "Id of the roleId to be set as default", "type": "string" } - } - }, - "context": { - "description": "Core context with general configuration values and state", - "type": "object", + }, + "type": "object" + } + } + } + }, + "responses": { + "204": { + "description": "No content response" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/employee/create": { + "post": { + "tags": [ + "B2B Employee Management" + ], + "summary": "Create a single employee and returns the employee", + "description": "This route is used to create and return an employee", + "operationId": "createEmployee", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { "properties": { - "versionId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "currencyFactor": { - "type": "integer" - }, - "currencyPrecision": { - "type": "integer", - "format": "int32" - }, - "scope": { + "firstName": { + "description": "First name of the new employee", "type": "string" }, - "source": { + "lastName": { + "description": "Last name of the new employee", "type": "string" }, - "taxState": { + "email": { + "description": "Email of the new employee", "type": "string" }, - "useCache": { - "type": "boolean" + "roleId": { + "description": "Id of the role of the new employee", + "type": "string", + "pattern": "^[0-9a-f]{32}$" } - } + }, + "required": [ + "firstName", + "lastName", + "email" + ], + "type": "object" } } } - ] - }, - "Criteria": { - "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", - "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "limit": { - "description": "Number of items per result page", - "type": "integer" - }, - "filter": { - "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "field": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "required": [ - "type", - "field", - "value" - ] - } - }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "type": "object", - "properties": { - "field": { - "type": "string" - }, - "order": { - "type": "string" - }, - "naturalSorting": { - "type": "boolean" + }, + "responses": { + "200": { + "description": "Employee entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/B2bEmployee" } - }, - "required": [ - "field" - ] + } } - }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "field": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "required": [ - "type", - "field", - "value" - ] + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/employee": { + "post": { + "tags": [ + "B2B Employee Management" + ], + "summary": "Fetch a list of employees", + "description": "This route is used to load employees", + "operationId": "readEmployees", + "parameters": [], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } } - }, - "associations": { - "type": "object", - "description": "Used to fetch associations which are not fetched by default." - }, - "aggregations": { - "type": "array", - "description": "Used to perform aggregations on the search result. For more information, see [Search Queries > Aggregations](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#aggregations)", - "items": { - "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" - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + } + }, + "responses": { + "200": { + "description": "Entity search result containing employees", + "content": { + "application/json": { + "schema": { + "type": "object", + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/B2bEmployee" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } - }, - "required": [ - "name", - "type", - "field" - ] - } - }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" + } } - }, - "fields": { - "type": "array", - "description": "Fields which should be returned in the search result.", - "items": { + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/employee/{id}": { + "post": { + "tags": [ + "B2B Employee Management" + ], + "summary": "Fetch a one employee by id", + "description": "This route is used to fetch one employee by id", + "operationId": "readEmployee", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Identifier of the employee to be fetched", + "required": true, + "schema": { "type": "string", - "description": "Name of a field" + "pattern": "^[0-9a-f]{32}$" } - }, - "total-count-mode": { - "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" - ] - } - } - }, - "LineItem": { - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "referencedId": { - "type": "string" - }, - "label": { - "type": "string" - }, - "quantity": { - "type": "integer", - "format": "int32" - }, - "type": { - "type": "string" - }, - "good": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "removable": { - "type": "boolean" - }, - "stackable": { - "type": "boolean" - }, - "modified": { - "type": "boolean" } - } - }, - "FindProductVariantRouteResponse": { - "type": "object", - "properties": { - "foundCombination": { - "type": "object", - "properties": { - "variantId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "options": { - "type": "array", - "items": { - "type": "string" + ], + "responses": { + "200": { + "description": "Employee entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/B2bEmployee" } } } } - } - }, - "ProductListingCriteria": { - "allOf": [ + }, + "security": [ { - "$ref": "#/components/schemas/Criteria" - }, + "ApiKey": [] + } + ] + }, + "patch": { + "tags": [ + "B2B" + ], + "summary": "Update a one employee by id", + "description": "This route is used to update one employee by id", + "operationId": "updateEmployee", + "parameters": [ { - "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.", - "type": "string", - "nullable": true + "name": "id", + "in": "path", + "description": "Identifier of the employee to be updated", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "firstName": { + "description": "New first name of the employee", + "type": "string" + }, + "lastName": { + "description": "New last name of the employee", + "type": "string" + }, + "email": { + "description": "New email of the employee", + "type": "string" + }, + "roleId": { + "description": "New id of the role of the employee", + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Employee entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/B2bEmployee" + } } } } + }, + "security": [ + { + "ApiKey": [] + } ] }, - "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 + "delete": { + "tags": [ + "B2B" + ], + "summary": "Delete an employee by id", + "description": "This route is used to delete one employee by id", + "operationId": "deleteEmployee", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Identifier of the employee to be deleted", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } - } - }, - "ProductListingResult": { - "allOf": [ + ], + "responses": { + "204": { + "description": "No content response" + } + }, + "security": [ { - "$ref": "#/components/schemas/EntitySearchResult" - }, + "ApiKey": [] + } + ] + } + }, + "/employee/reinvite/{id}": { + "post": { + "tags": [ + "B2B Employee Management" + ], + "summary": "Reinvite employee by id", + "description": "This route is used to reinvite an employee via email by id", + "operationId": "reinviteEmployee", + "parameters": [ { - "type": "object", - "properties": { - "currentFilters": { - "type": "object", - "description": "Contains the state of the filters. These can be used to create listing filters.", + "name": "id", + "in": "path", + "description": "Identifier of the employee to be reinvited", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { "properties": { - "navigationId": { + "storefrontUrl": { + "description": "URL of the storefront domain", "type": "string" - }, - "manufacturer": { - "type": "array", - "items": { - "type": "object" - } - }, - "price": { - "type": "object", - "properties": { - "min": { - "type": "integer" - }, - "max": { - "type": "integer" - } - } - }, - "rating": { - "type": "integer" - }, - "shipping-free": { - "type": "boolean" - }, - "properties": { - "type": "array", - "items": { - "type": "object" - } } - } - }, - "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" - } - }, - "sorting": { - "type": "string" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } + }, + "type": "object" } } } - ] - }, - "WishlistLoadRouteResponse": { - "type": "object", - "properties": { - "wishlist": { - "type": "object", - "properties": { - "customerId": { - "type": "string" - }, - "salesChannelId": { - "type": "string" + }, + "responses": { + "200": { + "description": "Employee entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/B2bEmployee" + } } } - }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductListingResult" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/sso/auth/{providerId}": { + "post": { + "tags": [ + "Sso" + ], + "summary": "Authenticates via SSO", + "description": "Authenticates login via a given SSO provider ID", + "operationId": "auth", + "parameters": [ + { + "name": "providerId", + "in": "path", + "description": "Identifier of the SSO provider used to authenticate", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } - } - }, - "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" + ], + "responses": { + "204": { + "description": "Successfully authenticated", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" } } - }, - "translations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/sso/redirect/{providerId}": { + "post": { + "tags": [ + "Sso" + ], + "summary": "Redirects after authentication", + "description": "Redirects after authenticated login via a given SSO provider ID", + "operationId": "redirect", + "parameters": [ + { + "name": "providerId", + "in": "path", + "description": "Identifier of the SSO provider used to authenticate", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "responses": { + "204": { + "description": "Successfully authenticated", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" } } - }, - "orderDeliveries": { - "type": "array", - "items": { - "type": "object", + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/quote/request": { + "post": { + "tags": [ + "B2B Quote Management" + ], + "summary": "Request new quote", + "description": "This route is used to request a new quote from the store", + "operationId": "requestQuote", + "parameters": [], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { "properties": { - "orderId": { - "type": "string" - }, - "shippingOrderAddressId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "shippingDateEarliest": { - "type": "string", - "format": "date-time" - }, - "shippingDateLatest": { - "type": "string", - "format": "date-time" - }, - "stateId": { + "comment": { + "description": "Message content", "type": "string" } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Quote entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Quote" } } - }, - "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" + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/quotes": { + "post": { + "tags": [ + "B2B Quote Management" + ], + "summary": "Fetch a list of quotes", + "description": "This route is used to load quotes", + "operationId": "readQuotes", + "parameters": [], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Entity search result containing quotes", + "content": { + "application/json": { + "schema": { + "type": "object", + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Quote" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } - }, - "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" - } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/quote/detail/{id}": { + "post": { + "tags": [ + "B2B Quote Management" + ], + "summary": "Fetch a one quote by id", + "description": "This route is used to fetch one quote by id", + "operationId": "readQuote", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Identifier of the quote to be fetched", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "responses": { + "200": { + "description": "Quote entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Quote" } } - }, - "availabilityRule": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "priority": { - "type": "integer", - "format": "int32" + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/quote/{id}/decline": { + "post": { + "tags": [ + "B2B Quote Management" + ], + "summary": "Decline a quote by id", + "description": "This route is used to decline a quote from the store by id", + "operationId": "declineQuote", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Identifier of the quote to be reinvited", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "properties": { + "comment": { + "description": "Message content", + "type": "string" + } }, - "invalid": { - "type": "boolean" - } + "type": "object" } - }, - "availabilityRuleId": { - "type": "string" - }, - "prices": { - "type": "array", - "items": { - "type": "object", + } + } + }, + "responses": { + "204": { + "description": "No content response" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/quote/{id}/request-change": { + "post": { + "tags": [ + "B2B Quote Management" + ], + "summary": "Request change a quote by id", + "description": "This route is used to request change a quote from the store by id", + "operationId": "requestChangeQuote", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Identifier of the quote to be reinvited", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { "properties": { - "shippingMethodId": { - "type": "string" - }, - "currencyId": { + "comment": { + "description": "Message content", "type": "string" - }, - "ruleId": { + } + }, + "type": "object" + } + } + } + }, + "responses": { + "204": { + "description": "No content response" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/quote/{id}/configure": { + "post": { + "tags": [ + "B2B Quote Management" + ], + "summary": "Change payment or shipping method", + "description": "This route is used to change a payment or shipping method when place a order ", + "operationId": "switchPaymentOrShippingMethod", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Identifier of the quote to be reinvited", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "properties": { + "paymentMethodId": { + "description": "Id of the payment method", "type": "string" }, - "calculation": { - "type": "integer", - "format": "int32" - }, - "quantityStart": { - "type": "number", - "format": "float" - }, - "quantityEnd": { - "type": "number", - "format": "float" - }, - "price": { - "type": "number", - "format": "float" - }, - "calculationRuleId": { + "shippingMethodId": { + "description": "Id of the shipping method", "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" - } + "type": "object" } - }, - "tags": { - "type": "array", - "items": { - "type": "object", + } + } + }, + "responses": { + "204": { + "description": "No content response" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/quote/order/{id}": { + "post": { + "tags": [ + "B2B Quote Management" + ], + "summary": "Create a order from a quote", + "description": "This route is used to create a order from a quote", + "operationId": "createOrderFromQuote", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Identifier of the quote to be reinvited", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { "properties": { - "name": { + "customerComment": { + "description": "Message content", "type": "string" } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Order entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Order" } } } } - } - }, - "AccountNewsletterRecipientResult": { - "allOf": [ + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/quote/document/download/{documentId}/{deepLinkCode}": { + "post": { + "tags": [ + "B2B Quote Management" + ], + "summary": "Download a document", + "description": "This route is used to download a document", + "operationId": "downloadQuoteDocument", + "parameters": [ { - "$ref": "#/components/schemas/Struct" + "name": "documentId", + "in": "path", + "description": "Identifier of the quote document to be reinvited", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } }, { - "type": "object", - "properties": { - "status": { - "type": "string" - } + "name": "deepLinkCode", + "in": "path", + "description": "Deep link code of the quote document", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } - ] - }, - "ArrayStruct": { - "$ref": "#/components/schemas/Struct" - }, - "NavigationRouteResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - }, - "NaturalLanguageSearchTermResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/NaturalLanguageSearchTerm" - } - }, - "NaturalLanguageSearchTerm": { - "type": "object", - "required": [ - "term", - "reason", - "apiAlias" ], - "properties": { - "term": { - "type": "string" - }, - "reason": { - "type": "string" - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_natural_language_search_term" - ] + "responses": { + "200": { + "description": "Document content response" } - } + }, + "security": [ + { + "ApiKey": [] + } + ] } }, - "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." + "/product/natural-language/search-term": { + "post": { + "tags": [ + "Natural language search", + "AI Search", + "Experimental" + ], + "summary": "Fetch search terms by natural language search query", + "description": "Experimental until v6.7.0\n\nFetch search terms by natural search language query", + "operationId": "naturalLanguageSearchTerm", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "query": { + "description": "Natural language query", + "type": "string", + "example": "I'm looking for a present for my wife" + } } - ] + } } - }, - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "404", - "title": "Not Found", - "description": "Resource with given parameter was not found." + } + }, + "responses": { + "200": { + "description": "A collection of search terms, with an associated 'reason' based on search context", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NaturalLanguageSearchTermResponse" } - ] + } } } } - }, - "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." + } + }, + "/product/image-upload-search/search-term": { + "post": { + "tags": [ + "Search by Image", + "AI Search", + "Experimental" + ], + "summary": "Fetch product search terms by uploading an image.", + "description": "Experimental until v6.7.0\n\nFetch product search terms by uploading an image.", + "operationId": "searchByImageSearchTerm", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "file": { + "description": "Base-64 encoded image", + "type": "string", + "format": "binary" + } } - ] + } } - }, - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "403", - "title": "Forbidden", - "description": "This operation is restricted to logged in users." + } + }, + "responses": { + "200": { + "description": "A collection of search terms", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SearchByImageSearchTermResponse" } - ] + } } } } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/vnd.api+json": { + } + }, + "/approval-rule": { + "post": { + "tags": [ + "B2B Order Approval" + ], + "summary": "List all approval rules", + "description": "This route is used to list all approval rules from the store", + "operationId": "listApprovalRules", + "parameters": [ + { + "name": "p", + "in": "query", + "description": "Page number", + "required": false, "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "401", - "title": "Unauthorized", - "description": "Authorization information is missing or invalid." - } - ] + "type": "integer", + "default": 1 } }, - "application/json": { + { + "name": "limit", + "in": "query", + "description": "Number of items per page", + "required": false, "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "401", - "title": "Unauthorized", - "description": "Authorization information is missing or invalid." + "type": "integer", + "default": 10 + } + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Entity search result containing approval rules", + "content": { + "application/json": { + "schema": { + "type": "object", + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ApprovalRule" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } - ] + } } } - } + }, + "security": [ + { + "ApiKey": [] + } + ] }, - "400": { - "description": "Bad Request", - "content": { - "application/vnd.api+json": { + "get": { + "tags": [ + "B2B Order Approval" + ], + "summary": "Fetch a list of approval rules", + "description": "This route is used to load approval rules", + "operationId": "readApprovalRules", + "parameters": [ + { + "name": "p", + "in": "query", + "description": "Page number", + "required": false, "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "400", - "title": "Bad Request", - "description": "Bad parameters for this endpoint. See documentation for the correct ones." - } - ] + "type": "integer", + "default": 1 } }, - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "400", - "title": "Bad Request", - "description": "Bad parameters for this endpoint. See documentation for the correct ones." - } - ] - } - } - } - }, - "204": { - "description": "No Content" - }, - "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", + { + "name": "limit", + "in": "query", + "description": "Number of items per page", + "required": false, "schema": { - "type": "string" + "type": "integer", + "default": 10 } } - }, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "contextToken": { - "deprecated": true, - "description": "Deprecated since v6.6.0.0. Please retrieve the context token from the response header instead.", - "type": "string" - }, - "redirectUrl": { - "description": "Define the URL which browser will be redirected to", - "type": "string" + ], + "responses": { + "200": { + "description": "Entity search result containing approval rules", + "content": { + "application/json": { + "schema": { + "type": "object", + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ApprovalRule" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } } - } - } - }, - "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" - } + }, + "security": [ + { + "ApiKey": [] + } + ] } }, - "securitySchemes": { - "ApiKey": { - "type": "apiKey", - "description": "Identifies the sales channel you want to access the API through", - "name": "sw-access-key", - "in": "header" - }, - "ContextToken": { - "type": "apiKey", - "description": "Identifies an anonymous or identified user session", - "name": "sw-context-token", - "in": "header" - } - } - }, - "security": [ - { - "ApiKey": [] - } - ], - "paths": { - "/store-api/role/create": { + "/approval-rule/create": { "post": { "tags": [ - "B2B" + "B2B Order Approval" ], - "summary": "Create a single role and returns the role", - "description": "This route is used to create and return an role", - "operationId": "createRole", + "summary": "Create a new approval rule", + "description": "This route is used to create a new approval rule", + "operationId": "createApprovalRule", "parameters": [], "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { "properties": { - "name": { - "description": "Name of the new role", + "approvalRuleName": { + "description": "Name of the approval rule", "type": "string" }, - "permissions": { - "description": "Permissions of the new role", - "type": "array", - "items": { - "type": "string" - } + "approvalRuleApprove": { + "description": "ID of the role that can approve the rule", + "type": "string" }, - "isDefaultRole": { - "description": "Ability to set the new role as default", + "approvalRuleRole": { + "description": "ID of the role that is affected by the rule", + "type": "string" + }, + "priority": { + "description": "Priority of the approval rule", + "type": "integer" + }, + "description": { + "description": "Description of the approval rule", + "type": "string" + }, + "active": { + "description": "Active status of the approval rule", "type": "boolean" + }, + "approvalRuleCondition": { + "description": "List of rules", + "type": "object", + "properties": { + "type": { + "description": "Type of the rule", + "type": "string" + }, + "value": { + "description": "Value", + "type": "string" + } + } } }, "type": "object" @@ -14400,11 +18579,11 @@ }, "responses": { "200": { - "description": "Role entity", + "description": "Approval rule entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/B2bComponentsRole" + "$ref": "#/components/schemas/ApprovalRule" } } } @@ -14417,52 +18596,120 @@ ] } }, - "/store-api/role": { + "/approval-rule/{id}": { "get": { "tags": [ - "B2B" + "B2B Order Approval" + ], + "summary": "Fetch one approval rule by id", + "description": "This route is used to fetch a approval rule from the store by id", + "operationId": "readApprovalRule", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Identifier of the approval rule to be fetched", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "responses": { + "200": { + "description": "Approval rule entity", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ApprovalRule" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + }, + "patch": { + "tags": [ + "B2B Order Approval" + ], + "summary": "Update a approval rule by id", + "description": "This route is used to update a approval rule from the store by id", + "operationId": "updateApprovalRule", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Identifier of the approval rule to be updated", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } ], - "summary": "Fetch a list of roles", - "description": "This route is used to load roles", - "operationId": "readRoles", - "parameters": [], "requestBody": { "required": false, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "properties": { + "approvalRuleName": { + "description": "Name of the approval rule", + "type": "string" + }, + "approvalRuleApprove": { + "description": "ID of the role that can approve the rule", + "type": "string" + }, + "approvalRuleRole": { + "description": "ID of the role that is affected by the rule", + "type": "string" + }, + "priority": { + "description": "Priority of the approval rule", + "type": "integer" + }, + "description": { + "description": "Description of the approval rule", + "type": "string" + }, + "active": { + "description": "Active status of the approval rule", + "type": "boolean" + }, + "approvalRuleCondition": { + "description": "List of rules", + "type": "object", + "properties": { + "type": { + "description": "Type of the rule", + "type": "string" + }, + "value": { + "description": "Value", + "type": "string" + } + } } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "Entity search result containing roles", + "description": "Approval rule entity", "content": { "application/json": { "schema": { - "type": "object", - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/B2bComponentsRole" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/ApprovalRule" } } } @@ -14473,52 +18720,40 @@ "ApiKey": [] } ] - }, + } + }, + "/pending-order/request": { "post": { "tags": [ - "B2B" + "B2B Order Approval" ], - "summary": "Fetch a list of roles", - "description": "This route is used to load roles", - "operationId": "readRolesPOST", + "summary": "Request new order approval", + "description": "This route is used to request a new order approval", + "operationId": "requestOrderApproval", "parameters": [], "requestBody": { "required": false, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "properties": { + "comment": { + "description": "Message content", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "Entity search result containing roles", + "description": "Pending order entity", "content": { "application/json": { "schema": { - "type": "object", - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/B2bComponentsRole" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/PendingOrder" } } } @@ -14531,19 +18766,19 @@ ] } }, - "/store-api/role/{id}": { - "get": { + "/pending-order/{id}": { + "post": { "tags": [ - "B2B" + "B2B Order Approval" ], - "summary": "Fetch a one role by id", - "description": "This route is used to fetch one role by id", - "operationId": "readRole", + "summary": "Fetch one pending order by id", + "description": "This route is used to fetch a pending order from the store by id", + "operationId": "fetchPendingOrder", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the role to be fetched", + "description": "Identifier of the pending order to be fetched", "required": true, "schema": { "type": "string", @@ -14553,11 +18788,11 @@ ], "responses": { "200": { - "description": "Role entity", + "description": "Pending order entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/B2bComponentsRole" + "$ref": "#/components/schemas/PendingOrder" } } } @@ -14568,19 +18803,21 @@ "ApiKey": [] } ] - }, - "patch": { + } + }, + "/pending-order/{id}/decline": { + "post": { "tags": [ - "B2B" + "B2B Order Approval" ], - "summary": "Update a one role by id", - "description": "This route is used to update one role by id", - "operationId": "updateRole", + "summary": "Decline a pending order by id", + "description": "This route is used to decline a pending order from the store by id", + "operationId": "declinePendingOrder", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the role to be updated", + "description": "Identifier of the pending order to be declined", "required": true, "schema": { "type": "string", @@ -14589,25 +18826,14 @@ } ], "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { "properties": { - "name": { - "description": "New name of the role", + "comment": { + "description": "Message content", "type": "string" - }, - "permissions": { - "description": "New permissions of the role", - "type": "array", - "items": { - "type": "string" - } - }, - "isDefaultRole": { - "description": "Ability to set the role as default", - "type": "boolean" } }, "type": "object" @@ -14616,15 +18842,8 @@ } }, "responses": { - "200": { - "description": "Role entity", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/B2bComponentsRole" - } - } - } + "204": { + "description": "No content response" } }, "security": [ @@ -14632,19 +18851,21 @@ "ApiKey": [] } ] - }, - "delete": { + } + }, + "/pending-order/{id}/approve": { + "post": { "tags": [ - "B2B" + "B2B Order Approval" ], - "summary": "Delete an role by id", - "description": "This route is used to delete one role by id", - "operationId": "deleteRole", + "summary": "Approve a pending order by id", + "description": "This route is used to approve a pending order from the store by id", + "operationId": "approvePendingOrder", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the role to be fetched", + "description": "Identifier of the pending order to be approved", "required": true, "schema": { "type": "string", @@ -14652,6 +18873,22 @@ } } ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "properties": { + "comment": { + "description": "Message content", + "type": "string" + } + }, + "type": "object" + } + } + } + }, "responses": { "204": { "description": "No content response" @@ -14664,51 +18901,49 @@ ] } }, - "/store-api/role/permissions": { - "get": { + "/pending-order/{id}/checkout/order": { + "post": { "tags": [ - "B2B" + "B2B Order Approval" ], - "summary": "Fetch a available permissions", - "description": "This route is used to fetch all available permissions", - "operationId": "readPermissions", + "summary": "Create a order from a pending order", + "description": "This route is used to create a order from a pending order", + "operationId": "createOrderFromPendingOrder", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Identifier of the pending order to be used to create a order", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "properties": { + "customerComment": { + "description": "Message content", + "type": "string" + } + }, + "type": "object" + } + } + } + }, "responses": { "200": { - "description": "Permission collection", + "description": "Order entity", "content": { "application/json": { "schema": { - "type": "object", - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "type": "object", - "properties": { - "permissionName": { - "type": "string" - }, - "permissionDependencies": { - "type": "array", - "items": { - "type": "string" - } - }, - "permissionGroupName": { - "type": "string" - } - } - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/Order" } } } @@ -14721,26 +18956,51 @@ ] } }, - "/store-api/role/default": { + "/account/shopping-list": { "post": { "tags": [ - "B2B" + "B2B Shopping Lists" ], - "summary": "Sets the default role Id for new employees", - "description": "This route is used to update the defaultRoleId for new employees", - "operationId": "updateDefaultRoleId", + "summary": "Create new shopping list", + "description": "This route is used to create a new shopping list from the store", + "operationId": "createShoppingList", + "parameters": [], "requestBody": { "required": true, "content": { "application/json": { "schema": { "properties": { - "id": { - "description": "Id of the roleId to be set as default", + "name": { + "description": "Shopping list name", "type": "string" + }, + "lineItems": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "id": { + "description": "Product id", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "quantity": { + "description": "Quantity of the product", + "type": "integer" + } + }, + "required": [ + "id", + "quantity" + ] + } } }, - "type": "object" + "type": "object", + "required": [ + "name" + ] } } } @@ -14755,55 +19015,40 @@ "ApiKey": [] } ] - } - }, - "/store-api/employee/create": { - "post": { + }, + "delete": { "tags": [ - "B2B" + "B2B Shopping Lists" ], - "summary": "Create a single employee and returns the employee", - "description": "This route is used to create and return an employee", - "operationId": "createEmployee", - "parameters": [], + "summary": "Delete shopping lists", + "description": "This route is used to delete shopping lists", + "operationId": "removeShoppingLists", "requestBody": { "required": true, "content": { "application/json": { "schema": { + "type": "object", + "required": [ + "ids" + ], "properties": { - "firstName": { - "description": "First name of the new employee", - "type": "string" - }, - "lastName": { - "description": "Last name of the new employee", - "type": "string" - }, - "email": { - "description": "Email of the new employee", - "type": "string" - }, - "roleId": { - "description": "Id of the role of the new employee", - "type": "string" + "ids": { + "description": "Shopping list ids", + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } - }, - "type": "object" + } } } } }, "responses": { - "200": { - "description": "Employee entity", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/B2bEmployee" - } - } - } + "204": { + "description": "No content response" } }, "security": [ @@ -14813,47 +19058,41 @@ ] } }, - "/store-api/employee": { + "/account/shopping-lists": { "post": { "tags": [ - "B2B" + "B2B Shopping Lists" ], - "summary": "Fetch a list of employees", - "description": "This route is used to load employees", - "operationId": "readEmployees", - "parameters": [], + "summary": "Load shopping lists", + "description": "This route is used to load all shopping lists", + "operationId": "readShoppingLists", "requestBody": { "required": false, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] + "$ref": "#/components/schemas/Criteria" } } } }, "responses": { "200": { - "description": "Entity search result containing employees", + "description": "Entity search result containing shopping lists", "content": { "application/json": { "schema": { - "type": "object", "allOf": [ { + "type": "object", "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/B2bEmployee" + "$ref": "#/components/schemas/B2bComponentsShoppingList" } } - }, - "type": "object" + } }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -14871,19 +19110,19 @@ ] } }, - "/store-api/employee/{id}": { + "/account/shopping-list/{id}": { "post": { "tags": [ - "B2B" + "B2B Shopping Lists" ], - "summary": "Fetch a one employee by id", - "description": "This route is used to fetch one employee by id", - "operationId": "readEmployee", + "summary": "Load one shopping list", + "description": "This route is used to load one shopping list", + "operationId": "readShoppingList", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the employee to be fetched", + "description": "Identifier of the shopping list to be fetched", "required": true, "schema": { "type": "string", @@ -14893,11 +19132,11 @@ ], "responses": { "200": { - "description": "Employee entity", + "description": "Shopping list entity", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/B2bEmployee" + "$ref": "#/components/schemas/B2bComponentsShoppingList" } } } @@ -14908,19 +19147,21 @@ "ApiKey": [] } ] - }, + } + }, + "/account/shopping-list/{id}/change-name": { "patch": { "tags": [ - "B2B" + "B2B Shopping Lists" ], - "summary": "Update a one employee by id", - "description": "This route is used to update one employee by id", - "operationId": "updateEmployee", + "summary": "Update shopping list name", + "description": "This route is used to update shopping list name", + "operationId": "updateShoppingList", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the employee to be updated", + "description": "Identifier of the shopping list to be fetched", "required": true, "schema": { "type": "string", @@ -14933,36 +19174,84 @@ "content": { "application/json": { "schema": { + "type": "object", "properties": { - "firstName": { - "description": "New first name of the employee", - "type": "string" - }, - "lastName": { - "description": "New last name of the employee", - "type": "string" - }, - "email": { - "description": "New email of the employee", + "name": { + "description": "Shopping list name", "type": "string" - }, - "roleId": { - "description": "New id of the role of the employee", + } + }, + "required": [ + "name" + ] + } + } + } + }, + "responses": { + "204": { + "description": "No content response" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/account/shopping-list/{id}/duplicate": { + "post": { + "tags": [ + "B2B Shopping Lists" + ], + "summary": "Duplicate new shopping list", + "description": "This route is used to duplicate a new shopping list from the store", + "operationId": "duplicateShoppingList", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Identifier of the shopping list to be fetched", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "name": { + "description": "Shopping list name", "type": "string" } }, - "type": "object" + "type": "object", + "required": [ + "name" + ] } } } }, "responses": { "200": { - "description": "Employee entity", + "description": "The generated id of the duplicated shopping list", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/B2bEmployee" + "properties": { + "id": { + "description": "The generated id of the duplicated shopping list", + "type": "string" + } + }, + "type": "object" } } } @@ -14973,19 +19262,21 @@ "ApiKey": [] } ] - }, - "delete": { + } + }, + "/account/shopping-list/{id}/summary": { + "get": { "tags": [ - "B2B" + "B2B Shopping Lists" ], - "summary": "Delete an employee by id", - "description": "This route is used to delete one employee by id", - "operationId": "deleteEmployee", + "summary": "Price summary for shopping list", + "description": "This route is used to get a price summary for shopping list", + "operationId": "summaryShoppingList", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the employee to be deleted", + "description": "Identifier of the shopping list to be fetched", "required": true, "schema": { "type": "string", @@ -14994,8 +19285,41 @@ } ], "responses": { - "204": { - "description": "No content response" + "200": { + "description": "Shopping list summary", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "price": { + "type": "object", + "properties": { + "netPrice": { + "description": "Net price of the cart", + "type": "number", + "format": "float" + }, + "totalPrice": { + "description": "Total price of the cart, including shipping costs, discounts and taxes", + "type": "number", + "format": "float" + }, + "positionPrice": { + "description": "Price for all line items in the cart", + "type": "number", + "format": "float" + }, + "taxStatus": { + "description": "Tax calculation for the cart. One of `gross`, `net` or `tax-free`", + "type": "string" + } + } + } + } + } + } + } } }, "security": [ @@ -15005,19 +19329,19 @@ ] } }, - "/store-api/employee/reinvite/{id}": { + "/account/shopping-list/line-item/{id}/add": { "post": { "tags": [ - "B2B" + "B2B Shopping Lists" ], - "summary": "Reinvite employee by id", - "description": "This route is used to reinvite an employee via email by id", - "operationId": "reinviteEmployee", + "summary": "Add more product to shopping list", + "description": "This route is used to add more products to shopping list", + "operationId": "addLineItems", "parameters": [ { "name": "id", "in": "path", - "description": "Identifier of the employee to be reinvited", + "description": "Identifier of the shopping list to be fetched", "required": true, "schema": { "type": "string", @@ -15026,33 +19350,90 @@ } ], "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { + "type": "object", "properties": { - "storefrontUrl": { - "description": "URL of the storefront domain", - "type": "string" + "lineItems": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "id": { + "description": "Product id", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "quantity": { + "description": "Quantity of the product", + "type": "integer" + } + }, + "required": [ + "id", + "quantity" + ] + } } }, - "type": "object" + "required": [ + "lineItems" + ] } } } }, "responses": { - "200": { - "description": "Employee entity", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/B2bEmployee" + "204": { + "description": "No content response" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/account/shopping-list/line-item/remove": { + "delete": { + "tags": [ + "B2B Shopping Lists" + ], + "summary": "Delete shopping list line items", + "description": "This route is used to delete shopping list line items", + "operationId": "removeLineItems", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ids" + ], + "properties": { + "ids": { + "description": "Line items ids", + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } } } } } }, + "responses": { + "204": { + "description": "No content response" + } + }, "security": [ { "ApiKey": [] @@ -15060,15 +19441,26 @@ ] } }, - "/store-api/product/natural-language/search-term": { - "post": { + "/account/shopping-list/line-item/{id}/change-quantity": { + "patch": { "tags": [ - "Natural language search", - "Experimental" + "B2B Shopping Lists" + ], + "summary": "Update shopping list line item quantity", + "description": "This route is used to update shopping list line item quantity", + "operationId": "updateLineItems", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Identifier of the shopping list line item to be fetched", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } ], - "summary": "Fetch search terms by natural language query", - "description": "Experimental until v6.7.0\n\nFetch search terms by natural language query", - "operationId": "naturalLanguageSearchTerm", "requestBody": { "required": true, "content": { @@ -15076,28 +19468,72 @@ "schema": { "type": "object", "properties": { - "query": { - "description": "Natural language query", - "type": "string", - "example": "I'm looking for a present for my wife" + "quantity": { + "description": "new line item quantity", + "type": "integer" } - } + }, + "required": [ + "quantity" + ] } } } }, "responses": { - "200": { - "description": "Returns search terms", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/NaturalLanguageSearchTermResponse" + "204": { + "description": "No content response" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/shopping-lists/add-to-cart": { + "post": { + "tags": [ + "B2B Shopping Lists" + ], + "summary": "Add shopping lists to cart", + "description": "This route is used to add shopping lists to cart", + "operationId": "addShoppingListsToCart", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "ids" + ], + "properties": { + "ids": { + "description": "Shopping list ids", + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } } } } } - } + }, + "responses": { + "204": { + "description": "No content response" + } + }, + "security": [ + { + "ApiKey": [] + } + ] } } }, From 662002f000c207b5f84c5b214c44b7c3e307d842 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 27 Sep 2024 09:01:12 +0200 Subject: [PATCH 15/35] [create-pull-request] automated change (#291) Co-authored-by: shopwareBot --- storeapi.json | 10776 ++++++++++++++++++++++++++++++------------------ 1 file changed, 6653 insertions(+), 4123 deletions(-) diff --git a/storeapi.json b/storeapi.json index 5bfd855..57229ef 100644 --- a/storeapi.json +++ b/storeapi.json @@ -3,7 +3,11 @@ "info": { "title": "Shopware Store API", "description": "This endpoint reference contains an overview of all endpoints comprising the Shopware Store API", - "version": "6.5.7.3" + "license": { + "name": "MIT", + "url": "https://github.com/shopware/shopware/blob/trunk/LICENSE" + }, + "version": "6.6.6.1" }, "servers": [ { @@ -675,6 +679,7 @@ }, { "required": [ + "id", "displayNestedProducts", "type", "productAssignmentType", @@ -1005,6 +1010,12 @@ "Category": { "description": "Added since version: 6.0.0.0", "required": [ + "apiAlias", + "breadcrumb", + "children", + "childCount", + "translated", + "id", "displayNestedProducts", "type", "productAssignmentType", @@ -1053,7 +1064,7 @@ "breadcrumb": { "type": "array", "items": { - "type": "object", + "type": "string", "additionalProperties": false }, "readOnly": true, @@ -1071,7 +1082,7 @@ "description": "A relative URL to the category." }, "childCount": { - "type": "integer", + "type": "number", "format": "int64", "readOnly": true, "description": "Number of categories below the main category." @@ -1168,6 +1179,18 @@ }, "translated": { "type": "object", + "additionalProperties": true, + "properties": { + "breadcrumb": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "breadcrumb" + ], "description": "Contains the translations of all translated fields." }, "parent": { @@ -1196,6 +1219,12 @@ "items": { "$ref": "#/components/schemas/SeoUrl" } + }, + "apiAlias": { + "type": "string", + "enum": [ + "category" + ] } }, "type": "object" @@ -1203,6 +1232,8 @@ "CmsBlock": { "description": "Added since version: 6.0.0.0", "required": [ + "apiAlias", + "slots", "position", "type", "sectionId", @@ -1314,6 +1345,12 @@ "items": { "$ref": "#/components/schemas/CmsSlot" } + }, + "apiAlias": { + "type": "string", + "enum": [ + "cms_block" + ] } }, "type": "object" @@ -1321,6 +1358,9 @@ "CmsPage": { "description": "Added since version: 6.0.0.0", "required": [ + "apiAlias", + "sections", + "id", "type", "createdAt" ], @@ -1397,6 +1437,12 @@ "items": { "$ref": "#/components/schemas/LandingPage" } + }, + "apiAlias": { + "type": "string", + "enum": [ + "cms_page" + ] } }, "type": "object" @@ -1404,6 +1450,8 @@ "CmsSection": { "description": "Added since version: 6.0.0.0", "required": [ + "apiAlias", + "blocks", "position", "type", "pageId", @@ -1505,6 +1553,12 @@ "items": { "$ref": "#/components/schemas/CmsBlock" } + }, + "apiAlias": { + "type": "string", + "enum": [ + "cms_section" + ] } }, "type": "object" @@ -1512,6 +1566,7 @@ "CmsSlot": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "type", "slot", "blockId", @@ -1597,6 +1652,8 @@ }, { "required": [ + "id", + "isEu", "createdAt", "name", "addressFormat" @@ -1701,6 +1758,9 @@ "defaultPostalCodePattern": { "type": "string" }, + "isEu": { + "type": "boolean" + }, "createdAt": { "type": "string", "format": "date-time", @@ -1758,6 +1818,8 @@ "Country": { "description": "Added since version: 6.0.0.0", "required": [ + "id", + "isEu", "createdAt", "name", "addressFormat" @@ -1887,6 +1949,9 @@ "type": "string", "description": "Default pattern of postal or zip code." }, + "isEu": { + "type": "boolean" + }, "createdAt": { "type": "string", "format": "date-time", @@ -1924,6 +1989,7 @@ }, { "required": [ + "id", "countryId", "shortCode", "createdAt", @@ -1975,6 +2041,7 @@ "CountryState": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "countryId", "shortCode", "createdAt", @@ -2037,6 +2104,7 @@ }, { "required": [ + "id", "factor", "symbol", "isoCode", @@ -2083,6 +2151,11 @@ "type": "object" }, "itemRounding": { + "required": [ + "decimals", + "interval", + "roundForNet" + ], "properties": { "decimals": { "type": "integer", @@ -2099,6 +2172,11 @@ "type": "object" }, "totalRounding": { + "required": [ + "decimals", + "interval", + "roundForNet" + ], "properties": { "decimals": { "type": "integer", @@ -2135,6 +2213,7 @@ "Currency": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "factor", "symbol", "isoCode", @@ -2190,6 +2269,11 @@ "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, "itemRounding": { + "required": [ + "decimals", + "interval", + "roundForNet" + ], "properties": { "decimals": { "type": "integer", @@ -2209,6 +2293,11 @@ "type": "object" }, "totalRounding": { + "required": [ + "decimals", + "interval", + "roundForNet" + ], "properties": { "decimals": { "type": "integer", @@ -2367,8 +2456,11 @@ "Customer": { "description": "Added since version: 6.0.0.0", "required": [ + "apiAlias", + "activeBillingAddress", + "activeShippingAddress", + "id", "groupId", - "defaultPaymentMethodId", "salesChannelId", "languageId", "defaultBillingAddressId", @@ -2378,6 +2470,7 @@ "lastName", "email", "accountType", + "defaultPaymentMethodId", "createdAt" ], "properties": { @@ -2391,11 +2484,6 @@ "pattern": "^[0-9a-f]{32}$", "description": "Unique identity of customer group." }, - "defaultPaymentMethodId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of default payment method." - }, "salesChannelId": { "type": "string", "pattern": "^[0-9a-f]{32}$", @@ -2554,6 +2642,11 @@ "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", @@ -2567,9 +2660,6 @@ "group": { "$ref": "#/components/schemas/CustomerGroup" }, - "defaultPaymentMethod": { - "$ref": "#/components/schemas/PaymentMethod" - }, "language": { "$ref": "#/components/schemas/Language" }, @@ -2603,6 +2693,15 @@ "$ref": "#/components/schemas/Tag" } }, + "defaultPaymentMethod": { + "$ref": "#/components/schemas/PaymentMethod" + }, + "apiAlias": { + "type": "string", + "enum": [ + "customer" + ] + }, "extensions": { "properties": { "specificFeatures": { @@ -2616,6 +2715,7 @@ "CustomerAddress": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "customerId", "countryId", "firstName", @@ -2723,6 +2823,8 @@ "CustomerGroup": { "description": "Added since version: 6.0.0.0", "required": [ + "translated", + "id", "createdAt", "name" ], @@ -2776,6 +2878,20 @@ }, "translated": { "type": "object", + "properties": { + "name": { + "type": "string" + }, + "registrationIntroduction": { + "type": "string" + }, + "registrationSeoMetaDescription": { + "type": "string" + }, + "registrationTitle": { + "type": "string" + } + }, "description": "Contains the translations of all translated fields." } }, @@ -2836,6 +2952,7 @@ "CustomerWishlist": { "description": "Added since version: 6.3.4.0", "required": [ + "id", "customerId", "createdAt" ], @@ -2870,6 +2987,7 @@ "CustomerWishlistProduct": { "description": "Added since version: 6.3.4.0", "required": [ + "id", "productId", "createdAt" ], @@ -2905,6 +3023,7 @@ "DeliveryTime": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "name", "min", "max", @@ -2959,6 +3078,7 @@ "Document": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "documentTypeId", "fileType", "orderId", @@ -3003,6 +3123,18 @@ }, "config": { "type": "object", + "properties": { + "name": { + "type": "string" + }, + "title": { + "type": "string" + } + }, + "required": [ + "name", + "title" + ], "description": "Specifies detailed information about how the component is to be rendered." }, "sent": { @@ -3058,6 +3190,7 @@ "DocumentBaseConfig": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "documentTypeId", "name", "global", @@ -3127,6 +3260,7 @@ "DocumentBaseConfigSalesChannel": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "documentBaseConfigId", "createdAt" ], @@ -3167,6 +3301,7 @@ "DocumentType": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "technicalName", "createdAt", "name" @@ -3387,6 +3522,7 @@ }, { "required": [ + "id", "createdAt", "name", "url" @@ -3518,6 +3654,8 @@ "LandingPage": { "description": "Added since version: 6.4.0.0", "required": [ + "apiAlias", + "id", "createdAt", "name", "url" @@ -3596,6 +3734,12 @@ "items": { "$ref": "#/components/schemas/SeoUrl" } + }, + "apiAlias": { + "type": "string", + "enum": [ + "landing_page" + ] } }, "type": "object" @@ -3608,6 +3752,7 @@ }, { "required": [ + "id", "localeId", "name", "createdAt" @@ -3776,6 +3921,7 @@ "Language": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "localeId", "name", "createdAt" @@ -3840,6 +3986,7 @@ "Locale": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "code", "createdAt", "name", @@ -4028,6 +4175,7 @@ "MailTemplateMedia": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "mailTemplateId", "languageId", "mediaId" @@ -4067,6 +4215,7 @@ "MailTemplateType": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "technicalName", "createdAt", "name" @@ -4114,6 +4263,7 @@ }, { "required": [ + "id", "productId", "categoryId", "salesChannelId", @@ -4162,6 +4312,7 @@ "MainCategory": { "description": "Added since version: 6.1.0.0", "required": [ + "id", "productId", "categoryId", "salesChannelId", @@ -4214,6 +4365,14 @@ "Media": { "description": "Added since version: 6.0.0.0", "required": [ + "apiAlias", + "fileExtension", + "fileName", + "hasFile", + "path", + "private", + "url", + "id", "createdAt" ], "properties": { @@ -4254,6 +4413,9 @@ "readOnly": true, "description": "Details of the media file uploaded." }, + "config": { + "type": "object" + }, "alt": { "type": "string", "description": "Alternate text for media." @@ -4301,6 +4463,12 @@ "$ref": "#/components/schemas/MediaThumbnail" } }, + "apiAlias": { + "type": "string", + "enum": [ + "media" + ] + }, "extensions": { "description": "To store additional data to a media from extensions." } @@ -4413,6 +4581,8 @@ "MediaThumbnail": { "description": "Added since version: 6.0.0.0", "required": [ + "url", + "id", "mediaId", "width", "height", @@ -4468,6 +4638,7 @@ "MediaThumbnailSize": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "width", "height", "createdAt" @@ -4692,6 +4863,10 @@ "Order": { "description": "Added since version: 6.0.0.0", "required": [ + "documents", + "orderDate", + "stateMachineState", + "id", "billingAddressId", "currencyId", "languageId", @@ -4995,6 +5170,7 @@ "OrderAddress": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "countryId", "firstName", "lastName", @@ -5100,6 +5276,7 @@ "OrderCustomer": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "email", "firstName", "lastName", @@ -5175,6 +5352,7 @@ "OrderDelivery": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "orderId", "shippingOrderAddressId", "shippingMethodId", @@ -5344,6 +5522,7 @@ "OrderDeliveryPosition": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "orderDeliveryId", "orderLineItemId", "createdAt" @@ -5481,6 +5660,8 @@ "OrderLineItem": { "description": "Added since version: 6.0.0.0", "required": [ + "apiAlias", + "id", "orderId", "identifier", "quantity", @@ -5521,6 +5702,10 @@ "pattern": "^[0-9a-f]{32}$", "description": "Unique identity of products's version." }, + "promotionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "parentId": { "type": "string", "pattern": "^[0-9a-f]{32}$", @@ -5555,6 +5740,100 @@ }, "payload": { "type": "object", + "properties": { + "categoryIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "customFields": { + "type": "object" + }, + "features": { + "type": "array" + }, + "isCloseout": { + "type": "boolean" + }, + "isNew": { + "type": "boolean" + }, + "manufacturerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "markAsTopseller": { + "type": "boolean" + }, + "optionIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "options": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PropertyGroupOption" + } + }, + "parentId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productNumber": { + "type": "string" + }, + "propertyIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "purchasePrices": { + "type": "string" + }, + "releaseDate": { + "type": "string", + "format": "date-time" + }, + "stock": { + "type": "integer", + "format": "int64" + }, + "streamIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "tagIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "taxId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, "description": "Any data related to product is passed." }, "good": { @@ -5583,6 +5862,7 @@ }, "priceDefinition": { "type": "object", + "$ref": "#/components/schemas/CartPriceQuantity", "description": "Description of how the price has to be calculated. For example, in percentage or absolute value, etc." }, "unitPrice": { @@ -5641,8 +5921,18 @@ "$ref": "#/components/schemas/OrderLineItem" } }, + "apiAlias": { + "type": "string", + "enum": [ + "order_line_item" + ] + }, "extensions": { + "type": "object", "description": "To store additional data to an order line item from extensions." + }, + "translated": { + "type": "object" } }, "type": "object" @@ -5650,6 +5940,8 @@ "OrderLineItemDownload": { "description": "Added since version: 6.4.19.0", "required": [ + "media", + "id", "orderLineItemId", "mediaId", "position", @@ -5753,6 +6045,7 @@ "OrderTransaction": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "orderId", "paymentMethodId", "amount", @@ -5845,6 +6138,9 @@ }, "type": "object" }, + "validationData": { + "type": "object" + }, "stateId": { "type": "string", "pattern": "^[0-9a-f]{32}$", @@ -5915,6 +6211,7 @@ "OrderTransactionCapture": { "description": "Added since version: 6.4.12.0", "required": [ + "id", "orderTransactionId", "stateId", "amount", @@ -6075,6 +6372,7 @@ "OrderTransactionCaptureRefund": { "description": "Added since version: 6.4.12.0", "required": [ + "id", "captureId", "stateId", "amount", @@ -6239,6 +6537,7 @@ "OrderTransactionCaptureRefundPosition": { "description": "Added since version: 6.4.12.0", "required": [ + "id", "refundId", "orderLineItemId", "amount", @@ -6412,6 +6711,7 @@ }, { "required": [ + "id", "createdAt", "name" ], @@ -6534,6 +6834,7 @@ "PaymentMethod": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "createdAt", "name" ], @@ -6667,6 +6968,7 @@ }, { "required": [ + "id", "taxId", "productNumber", "stock", @@ -6722,6 +7024,10 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "canonicalProductVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "cmsPageId": { "type": "string", "pattern": "^[0-9a-f]{32}$" @@ -6747,6 +7053,15 @@ "isCloseout": { "type": "boolean" }, + "availableStock": { + "type": "integer", + "format": "int64", + "readOnly": true + }, + "stock": { + "type": "integer", + "format": "int64" + }, "displayGroup": { "type": "string", "readOnly": true @@ -6897,14 +7212,6 @@ "customFields": { "type": "object" }, - "availableStock": { - "type": "integer", - "format": "int64" - }, - "stock": { - "type": "integer", - "format": "int64" - }, "calculatedPrice": { "type": "object" }, @@ -7649,8 +7956,13 @@ ] }, "Product": { - "description": "Added since version: 6.0.0.0", + "description": "Represents a product along with detailed information required to display a variant selection.", "required": [ + "apiAlias", + "calculatedPrice", + "calculatedPrices", + "seoCategory", + "id", "taxId", "productNumber", "stock", @@ -7718,6 +8030,10 @@ "pattern": "^[0-9a-f]{32}$", "description": "Unique identifier of canonical product." }, + "canonicalProductVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "cmsPageId": { "type": "string", "pattern": "^[0-9a-f]{32}$", @@ -7750,6 +8066,17 @@ "type": "boolean", "description": "When the value is set to true, the product is hidden when sold out." }, + "availableStock": { + "type": "integer", + "format": "int64", + "readOnly": true, + "description": "Indicates the number of products still available. This value results from the stock minus the open orders." + }, + "stock": { + "type": "integer", + "format": "int64", + "description": "Indicate the number of product/s currently in stock. As soon as the order status of an order is set to completed, the stock is reduced." + }, "displayGroup": { "type": "string", "readOnly": true, @@ -7932,25 +8259,21 @@ "type": "object", "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, - "availableStock": { - "type": "integer", - "format": "int64", - "description": "Indicates the number of products still available. This value results from the stock minus the open orders." - }, - "stock": { - "type": "integer", - "format": "int64", - "description": "Indicate the number of product/s currently in stock. As soon as the order status of an order is set to completed, the stock is reduced." - }, - "calculatedPrice": { - "type": "object", - "description": "Runtime field, cannot be used as part of the criteria." + "calculatedPrice": { + "type": "object", + "$ref": "#/components/schemas/CalculatedPrice", + "description": "Runtime field, cannot be used as part of the criteria." }, "calculatedPrices": { "type": "array", "items": { "type": "object", - "additionalProperties": false + "additionalProperties": false, + "allOf": [ + { + "$ref": "#/components/schemas/CalculatedPrice" + } + ] }, "description": "Runtime field, cannot be used as part of the criteria." }, @@ -7961,6 +8284,71 @@ }, "calculatedCheapestPrice": { "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/CalculatedPrice" + }, + { + "type": "object", + "properties": { + "unitPrice": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "totalPrice": { + "type": "number" + }, + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { + "type": "object", + "properties": { + "price": { + "type": "number" + } + }, + "required": [ + "price" + ], + "nullable": true + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "type": "string", + "format": "", + "nullable": true + }, + "apiAlias": { + "type": "string", + "enum": [ + "calculated_cheapest_price" + ] + } + } + } + ], "description": "Runtime field, cannot be used as part of the criteria." }, "isNew": { @@ -8096,6 +8484,21 @@ "seoCategory": { "$ref": "#/components/schemas/Category" }, + "apiAlias": { + "type": "string", + "enum": [ + "product" + ] + }, + "variantListingConfig": { + "nullable": true, + "type": "object", + "properties": { + "displayParent": { + "type": "boolean" + } + } + }, "mainVariantId": { "description": "Unique identity of main variant." }, @@ -8108,6 +8511,7 @@ "ProductConfiguratorSetting": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "productId", "optionId", "createdAt" @@ -8174,6 +8578,7 @@ "ProductCrossSelling": { "description": "Added since version: 6.1.0.0", "required": [ + "id", "name", "position", "type", @@ -8259,6 +8664,7 @@ "ProductDownload": { "description": "Added since version: 6.4.19.0", "required": [ + "id", "productId", "mediaId", "createdAt" @@ -8397,6 +8803,7 @@ "ProductManufacturer": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "createdAt", "name" ], @@ -8455,6 +8862,7 @@ "ProductMedia": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "productId", "mediaId", "createdAt" @@ -8506,6 +8914,9 @@ }, "media": { "$ref": "#/components/schemas/Media" + }, + "thumbnails": { + "$ref": "#/components/schemas/MediaThumbnail" } }, "type": "object" @@ -8537,6 +8948,8 @@ "ProductReview": { "description": "Added since version: 6.0.0.0", "required": [ + "points", + "id", "productId", "salesChannelId", "languageId", @@ -8727,6 +9140,7 @@ "ProductStream": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "createdAt", "name" ], @@ -8969,6 +9383,7 @@ "PropertyGroup": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "displayType", "sortingType", "createdAt", @@ -9039,6 +9454,9 @@ "PropertyGroupOption": { "description": "Added since version: 6.0.0.0", "required": [ + "group", + "option", + "id", "groupId", "createdAt", "name" @@ -9095,6 +9513,9 @@ }, "group": { "$ref": "#/components/schemas/PropertyGroup" + }, + "option": { + "type": "string" } }, "type": "object" @@ -9166,6 +9587,7 @@ "SalesChannel": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "languageId", "customerGroupId", "currencyId", @@ -9366,6 +9788,7 @@ "SalesChannelDomain": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "url", "salesChannelId", "languageId", @@ -9470,6 +9893,7 @@ }, { "required": [ + "id", "salutationKey", "createdAt", "displayName", @@ -9513,6 +9937,7 @@ "Salutation": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "salutationKey", "createdAt", "displayName", @@ -9613,6 +10038,7 @@ }, { "required": [ + "id", "languageId", "foreignKey", "routeName", @@ -9655,6 +10081,10 @@ "isDeleted": { "type": "boolean" }, + "error": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "string" + }, "url": { "description": "Runtime field, cannot be used as part of the criteria.", "type": "string" @@ -9662,10 +10092,6 @@ "customFields": { "type": "object" }, - "isValid": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean" - }, "createdAt": { "type": "string", "format": "date-time", @@ -9684,6 +10110,7 @@ "SeoUrl": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "languageId", "foreignKey", "routeName", @@ -9714,6 +10141,11 @@ }, "routeName": { "type": "string", + "enum": [ + "frontend.navigation.page", + "frontend.landing.page", + "frontend.detail.page" + ], "description": "A destination routeName that has been registered somewhere in the app's router. For example: \"frontend.detail.page\"" }, "pathInfo": { @@ -9736,6 +10168,10 @@ "type": "boolean", "description": "When set to true, the URL is deleted and cannot be used any more but it is still available on table and can be restored later." }, + "error": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "string" + }, "url": { "description": "Runtime field, cannot be used as part of the criteria.", "type": "string" @@ -9744,10 +10180,6 @@ "type": "object", "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, - "isValid": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean" - }, "createdAt": { "type": "string", "format": "date-time", @@ -9806,6 +10238,7 @@ }, { "required": [ + "id", "deliveryTimeId", "taxType", "createdAt", @@ -10053,6 +10486,7 @@ "ShippingMethod": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "deliveryTimeId", "taxType", "createdAt", @@ -10150,6 +10584,7 @@ "ShippingMethodPrice": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "shippingMethodId", "createdAt" ], @@ -10438,6 +10873,7 @@ "SystemConfig": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "configurationKey", "configurationValue", "createdAt" @@ -10485,6 +10921,7 @@ "Tag": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "name", "createdAt" ], @@ -10513,6 +10950,7 @@ "Tax": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "taxRate", "name", "position", @@ -10558,6 +10996,7 @@ "TaxProvider": { "description": "Added since version: 6.5.0.0", "required": [ + "id", "priority", "createdAt", "name" @@ -10667,6 +11106,7 @@ "Theme": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "name", "author", "active", @@ -10756,6 +11196,7 @@ "Unit": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "createdAt", "shortCode", "name" @@ -10939,637 +11380,286 @@ }, "type": "object" }, - "ProductListingResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EntitySearchResult" + "AggregationEntity": { + "title": "AggregationEntity", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - { - "type": "object", - "properties": { - "currentFilters": { - "type": "object", - "description": "Contains the state of the filters. These can be used to create listing filters.", - "properties": { - "navigationId": { - "type": "string" - }, - "manufacturer": { - "type": "array", - "items": { - "type": "object" - } - }, - "price": { - "type": "object", - "properties": { - "min": { - "type": "integer" - }, - "max": { - "type": "integer" - } - } - }, - "rating": { - "type": "integer" - }, - "shipping-free": { - "type": "boolean" - }, - "properties": { - "type": "array", - "items": { - "type": "object" - } - } - } - }, - "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" - } - }, - "sorting": { - "type": "string" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - } - } + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "entity" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "definition": { + "description": "The entity definition e.g \"product_manufacturer\".", + "type": "string" } + }, + "required": [ + "name", + "type", + "field", + "definition" ] }, - "Cart": { - "allOf": [ - { - "$ref": "#/components/schemas/ArrayStruct" + "AggregationFilter": { + "title": "AggregationFilter", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - { - "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": { - "type": "object", - "properties": { - "netPrice": { - "description": "Net price of the cart", - "type": "number", - "format": "float" - }, - "totalPrice": { - "description": "Total price of the cart, including shipping costs, discounts and taxes", - "type": "number", - "format": "float" - }, - "positionPrice": { - "description": "Price for all line items in the cart", - "type": "number", - "format": "float" - }, - "taxStatus": { - "description": "Tax calculation for the cart. One of `gross`, `net` or `tax-free`", - "type": "string" - } - } - }, - "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": { - "type": "object", - "properties": { - "key": { - "type": "string" - }, - "level": { - "type": "string" - }, - "message": { - "type": "string" - } - } - } - }, - "transactions": { - "description": "A list of all payment transactions associated with the current cart.", - "type": "array", - "items": { - "type": "object", - "properties": { - "paymentMethodId": { - "type": "string" - } - } - } - }, - "modified": { - "type": "boolean" - }, - "customerComment": { - "type": "string", - "description": "A comment that can be added to the cart." - }, - "affiliateCode": { - "type": "string", - "description": "An affiliate tracking code" - }, - "campaignCode": { - "type": "string", - "description": "A campaign tracking code" - } + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "filter" + ] + }, + "filter": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Filters" } } - ], + }, + "required": [ + "name", + "type", + "filter" + ] + }, + "AggregationTerms": { + "title": "AggregationTerms", + "type": "object", "properties": { - "id": { - "description": "Unique identity of cart." + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "errors": { - "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." - } - } + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "terms" + ] }, - "transactions": { - "properties": { - "paymentMethodId": { - "description": "Unique identity of payment method." - } - } + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "modified": { - "description": "It signifies any changes to cart." + "limit": { + "description": "The number of terms to return", + "type": "number" + }, + "sort": { + "type": "array", + "description": "Sorting the aggregation result.", + "items": { + "$ref": "#/components/schemas/Sort" + } } - } + }, + "required": [ + "name", + "type", + "field" + ] }, - "LineItem": { + "AggregationHistogram": { + "title": "AggregationHistogram", "type": "object", "properties": { - "id": { - "type": "string", - "description": "Unique identity of line item." + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "referencedId": { + "type": { + "description": "The type of aggregation", "type": "string", - "description": "Unique identity of type of entity." + "enum": [ + "histogram" + ] }, - "label": { - "type": "string", - "description": "It is a typical product name given to the line item." + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "quantity": { - "type": "integer", - "format": "int32", - "description": "Number of items of product." + "interval": { + "description": "The interval of the histogram", + "type": "number" }, - "type": { - "type": "string", - "description": "Type refers to the entity type of an item whether it is product or promotion for instance." + "format": { + "description": "The format of the histogram", + "type": "string" }, - "good": { - "type": "boolean", - "description": "When set to true, it indicates the line item is physical else it is virtual." + "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" }, - "description": { + "type": { + "description": "The type of aggregation", "type": "string", - "description": "Description of line items in an order." + "enum": [ + "range" + ] }, - "removable": { - "type": "boolean", - "description": "Allows the line item to be removable from the cart when set to true." + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "stackable": { - "type": "boolean", - "description": "Allows to change the quantity of the line item when set to true." + "ranges": { + "description": "The ranges of the aggregation", + "type": "array", + "items": { + "type": "object", + "anyOf": [ + { + "type": "object", + "title": "From and to", + "properties": { + "from": { + "type": "number", + "description": "The lower bound of the range" + }, + "to": { + "type": "number", + "description": "The upper bound of the range" + } + }, + "required": [ + "from", + "to" + ] + }, + { + "type": "object", + "title": "From only", + "properties": { + "from": { + "type": "string", + "description": "The lower bound of the range" + } + }, + "required": [ + "from" + ] + }, + { + "type": "object", + "title": "To only", + "properties": { + "to": { + "type": "string", + "description": "The upper bound of the range" + } + }, + "required": [ + "to" + ] + } + ] + } + } + }, + "required": [ + "name", + "type", + "field", + "ranges" + ] + }, + "WishlistLoadRouteResponse": { + "type": "object", + "properties": { + "wishlist": { + "type": "object", + "properties": { + "customerId": { + "type": "string", + "description": "Unique identity of the customer." + }, + "salesChannelId": { + "type": "string", + "description": "Unique identity of the sales channel." + } + } }, - "modified": { - "type": "boolean", - "description": "When boolean value is `true`, line items are said to be modified." + "products": { + "$ref": "#/components/schemas/ProductListingResult" } } }, "SalesChannelContext": { - "allOf": [ - { - "$ref": "#/components/schemas/ArrayStruct" + "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": { - "token": { - "description": "Context the user session", + "name": { "type": "string" }, - "currentCustomerGroup": { - "type": "object", - "description": "Customer group of the current user", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } - } + "displayGross": { + "type": "boolean" + } + } + }, + "currency": { + "$ref": "#/components/schemas/Currency", + "properties": { + "isoCode": { + "description": "Standard international three digit code to represent currency in a given sales channel. For example, USD." }, - "fallbackCustomerGroup": { - "description": "Fallback group if the default customer group is not applicable", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } - } + "factor": { + "description": "Currency exchange rate in a specific sales channel the customer is currently interacting with." }, - "currency": { - "type": "object", - "description": "Currency associated with the current user", - "properties": { - "isoCode": { - "type": "string" - }, - "factor": { - "type": "integer" - }, - "symbol": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "name": { - "type": "string" - }, - "position": { - "type": "integer", - "format": "int32" - }, - "decimalPrecision": { - "type": "integer", - "format": "int32" - }, - "isSystemDefault": { - "type": "boolean" - } - } - }, - "salesChannel": { - "description": "Information about the current sales channel", - "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" - }, - "analyticsId": { - "type": "string" - } - } - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } - }, - "customer": { - "type": "object", - "description": "Information about the current customer - `null` if the customer is not logged in", - "properties": { - "groupId": { - "type": "string" - }, - "defaultPaymentMethodId": { - "type": "string" - }, - "salesChannelId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "lastPaymentMethodId": { - "type": "string" - }, - "defaultBillingAddressId": { - "type": "string" - }, - "defaultShippingAddressId": { - "type": "string" - }, - "defaultBillingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "defaultShippingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "activeBillingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "activeShippingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "customerNumber": { - "type": "string" - }, - "salutationId": { - "type": "string" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "company": { - "type": "string" - }, - "password": { - "type": "string" - }, - "email": { - "type": "string" - }, - "title": { - "type": "string" - }, - "affiliateCode": { - "type": "string" - }, - "campaignCode": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "doubleOptInRegistration": { - "type": "boolean" - }, - "doubleOptInEmailSentDate": { - "type": "string", - "format": "date-time" - }, - "doubleOptInConfirmDate": { - "type": "string", - "format": "date-time" - }, - "hash": { - "type": "string" - }, - "guest": { - "type": "boolean" - }, - "firstLogin": { - "type": "string", - "format": "date-time" - }, - "lastLogin": { - "type": "string", - "format": "date-time" - }, - "newsletter": { - "type": "boolean" - }, - "birthday": { - "type": "string", - "format": "date-time" - }, - "lastOrderDate": { - "type": "string", - "format": "date-time" - }, - "orderCount": { - "type": "integer", - "format": "int32" - }, - "legacyEncoder": { - "type": "string" - }, - "legacyPassword": { - "type": "string" - }, - "autoIncrement": { - "type": "integer", - "format": "int32" - }, - "remoteAddress": { - "type": "string" - } - } - }, - "paymentMethod": { - "type": "object", - "description": "Selected payment method", - "properties": { - "pluginId": { - "type": "string" - }, - "handlerIdentifier": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "position": { - "type": "integer", - "format": "int32" - }, - "active": { - "type": "boolean" - }, - "availabilityRuleId": { - "type": "string" - }, - "mediaId": { - "type": "string" - }, - "formattedHandlerIdentifier": { - "type": "string" - } - } - }, - "shippingMethod": { - "type": "object", - "description": "Selected shipping method", - "properties": { - "name": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "trackingUrl": { - "type": "string" - }, - "deliveryTimeId": { - "type": "string" - }, - "availabilityRuleId": { - "type": "string" - }, - "mediaId": { - "type": "string" - } - } - }, - "context": { - "description": "Core context with general configuration values and state", - "type": "object", - "properties": { - "versionId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "currencyFactor": { - "type": "integer" - }, - "currencyPrecision": { - "type": "integer", - "format": "int32" - }, - "scope": { - "type": "string" - }, - "source": { - "type": "string" - }, - "taxState": { - "type": "string" - }, - "useCache": { - "type": "boolean" - } - } - } - } - } - ], - "properties": { - "currentCustomerGroup": { - "properties": { - "name": { - "description": "Name of customer group to which the customer belongs within the specific sales channel they are currently interacting with." - }, - "displayGross": { - "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." - } - } - }, - "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." + "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." @@ -11589,83 +11679,122 @@ } }, "salesChannel": { + "description": "Information about the current sales channel", + "type": "object", "properties": { "typeId": { + "type": "string", "description": "Unique identity of a sales channel's type within a specific sales channel." }, "languageId": { + "type": "string", "description": "Unique identity of a sales channel's language within a specific sales channel." }, "currencyId": { + "type": "string", "description": "Unique identity of a sales channel's currency within a specific sales channel." }, "paymentMethodId": { + "type": "string", "description": "Unique identity of a sales channel's payment method within a specific sales channel." }, "shippingMethodId": { + "type": "string", "description": "Unique identity of a sales channel's shipping method within a specific sales channel." }, "countryId": { + "type": "string", "description": "Unique identity of a sales channel's country within a specific sales channel." }, "navigationCategoryId": { + "type": "string", "description": "Unique identity of a sales channel's navigation category within a specific sales channel." }, "navigationCategoryDepth": { + "type": "integer", + "format": "int32", "description": "It determines the number of levels of subcategories in the storefront category menu within a specific sales channel." }, "footerCategoryId": { + "type": "string", "description": "Unique identity of a sales channel's footer category within a specific sales channel." }, "serviceCategoryId": { + "type": "string", "description": "Unique identity of a sales channel's service category within a specific sales channel." }, "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." }, "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." }, "customerGroupId": { + "type": "string", "description": "Unique identity of a sales channel's customer group within a specific sales channel." }, "hreflangActive": { + "type": "boolean", "description": "When `true`, the sales channel pages are available in different languages within a specific sales channel." }, "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." } } }, "taxRules": { - "properties": { - "taxRate": { - "description": "Rate of tax within a specific sales channel." - }, - "name": { - "description": "Name defined for a Tax within a specific sales channel." - } + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + }, + "properties": { + "taxRate": { + "description": "Rate of tax within a specific sales channel." + }, + "name": { + "description": "Name defined for a Tax within a specific sales channel." + } } }, "customer": { + "$ref": "#/components/schemas/Customer", "properties": { "groupId": { "description": "Unique identity of a customer's group within a specific sales channel." @@ -11769,6 +11898,7 @@ } }, "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod", "properties": { "pluginId": { "description": "Unique identity of payment plugin within a specific sales channel." @@ -11799,7 +11929,25 @@ } } }, + "shippingLocation": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + } + } + }, "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod", "properties": { "name": { "description": "Name of the shipping method within a specific sales channel." @@ -11825,153 +11973,105 @@ } }, "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." } } } } }, - "AccountNewsletterRecipientResult": { - "allOf": [ - { - "$ref": "#/components/schemas/Struct" - }, - { - "type": "object", - "properties": { - "status": { - "type": "string" - } - } - } - ], + "Sitemap": { + "type": "object", "properties": { - "status": { - "description": "Status indicates if the customer has subscribed to the news letter or not." - } - } - }, - "CrossSellingElementCollection": { - "type": "array", - "items": { - "type": "object", - "properties": { - "crossSelling": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "position": { - "type": "integer", - "format": "int32" - }, - "sortBy": { - "type": "string" - }, - "sortDirection": { - "type": "string" - }, - "limit": { - "type": "integer", - "format": "int32" - }, - "active": { - "type": "boolean" - }, - "productId": { - "type": "string" - }, - "productStreamId": { - "type": "string" - }, - "type": { - "type": "string" - } - } - }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - }, - "total": { - "type": "integer", - "format": "int32" - } + "filename": { + "type": "string", + "description": "Name of the file which holds a list of all URL's." + }, + "created": { + "type": "string", + "format": "date-time" } }, - "properties": { - "total": { - "description": "Number of cross selling elements found." - } - } + "required": [ + "filename", + "created" + ] }, - "FindProductVariantRouteResponse": { + "CartDeliveryPosition": { "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "foundCombination": { + "deliveryDate": { "type": "object", "properties": { - "variantId": { + "earliest": { "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of a variant." + "format": "date-time" }, - "options": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Available product variant options. For example, for variant `Size`, option would be `XS`, `S`, `M`, `L`, `XL`." + "latest": { + "type": "string", + "format": "date-time" } } + }, + "identifier": { + "type": "string" + }, + "lineItem": { + "$ref": "#/components/schemas/LineItem" + }, + "price": { + "$ref": "#/components/schemas/CalculatedPrice" } } }, "CartItems": { - "allOf": [ - { - "$ref": "#/components/schemas/ArrayStruct" - }, - { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - } - } - } - ], + "type": "object", "properties": { "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + }, "properties": { "id": { "description": "Unique identity of cart item." @@ -11983,113 +12083,114 @@ } } }, - "ProductListingCriteria": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "Criteria": { + "type": "object", + "description": "Criteria to query entities.", + "properties": { + "page": { + "description": "Search result page", + "type": "integer" }, - { - "type": "object", - "description": "Additional search parameters for product listings", + "term": { + "description": "Search term", + "type": "string" + }, + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + }, "properties": { - "order": { - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "type": "string" + "type": { + "description": "To filter the results and aggregations with filter types like ==, >=, etc." }, - "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 + "field": { + "description": "To filter the results and aggregations by field like an property identifier." }, - "p": { - "description": "Search result page", - "type": "integer", - "default": 1 + "value": { + "description": "To filter the results and aggregations by value." + } + } + }, + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } + }, + "query": { + "type": "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" + } + }, + "associations": { + "type": "array", + "description": "Associations to include. For more information, see [Search Queries > Associations](https://shopware.stoplight.io/docs/store-api/cf710bf73d0cd-search-queries#associations)", + "items": { + "$ref": "#/components/schemas/Association" + } + }, + "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." }, - "manufacturer": { - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", - "type": "string" + "field": { + "description": "To filter only the results but not the aggregations by field like an property identifier." }, - "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.", - "type": "string", - "nullable": true - } - } - } - ], - "properties": { - "filter": { - "properties": { - "type": { - "description": "To filter the results and aggregations with filter types like ==, >=, etc." - }, - "field": { - "description": "To filter the results and aggregations by field like an property identifier." - }, - "value": { - "description": "To filter the results and aggregations by value." - } - } - }, - "sort": { - "properties": { - "field": { - "description": "Sort the search results by field like an property identifier." + "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." @@ -12099,163 +12200,835 @@ } } }, - "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." - } - } - } - } - }, - "OrderRouteResponse": { - "type": "object", - "properties": { - "orders": { + "aggregations": { + "$ref": "#/components/schemas/Aggregations" + }, + "fields": { "type": "array", + "description": "Fields which should be returned in the search result.", "items": { - "$ref": "#/components/schemas/Order" + "type": "string", + "description": "Name of a field" } }, - "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" + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" } + }, + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Include" } } }, - "SuccessResponse": { + "Association": { "type": "object", - "properties": { - "success": { - "type": "boolean" - } + "additionalProperties": { + "$ref": "#/components/schemas/Criteria" } }, - "WishlistLoadRouteResponse": { + "Include": { "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": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductListingResult" - } + "additionalProperties": { + "type": "array", + "items": { + "type": "string" } } }, - "ShippingMethodPageRouteResponse": { + "Aggregations": { "type": "array", "items": { - "type": "object", - "properties": { - "name": { - "type": "string" + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" }, - "active": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "deliveryTimeId": { - "type": "string" - }, - "deliveryTime": { - "type": "object", - "properties": { - "name": { - "type": "string" + { + "title": "AggregationEntity", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationEntity" }, - "min": { - "type": "integer", - "format": "int32" + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationFilter", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationFilter" }, - "max": { - "type": "integer", - "format": "int32" + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationTerms", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationTerms" }, - "unit": { - "type": "string" + { + "$ref": "#/components/schemas/SubAggregations" } - } + ] }, - "translations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - } + { + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/SubAggregations" } - } + ] }, - "orderDeliveries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "orderId": { - "type": "string" - }, - "shippingOrderAddressId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "shippingDateEarliest": { - "type": "string", - "format": "date-time" - }, - "shippingDateLatest": { - "type": "string", - "format": "date-time" - }, - "stateId": { - "type": "string" - } + { + "title": "AggregationRange", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationRange" + }, + { + "$ref": "#/components/schemas/SubAggregations" } + ] + } + ] + } + }, + "SubAggregations": { + "type": "object", + "properties": { + "aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" + }, + { + "$ref": "#/components/schemas/AggregationEntity" + }, + { + "$ref": "#/components/schemas/AggregationFilter" + }, + { + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/AggregationRange" } - }, - "salesChannelDefaultAssignments": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, + ] + } + } + }, + "TotalCountMode": { + "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", + "type": "string", + "default": "none", + "enum": [ + "none", + "exact", + "next-pages" + ] + }, + "Query": { + "type": "object", + "properties": { + "score": { + "type": "number" + }, + "query": { + "oneOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "additionalProperties": true + }, + "Sort": { + "type": "object", + "properties": { + "field": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + }, + "naturalSorting": { + "type": "boolean" + }, + "type": { + "type": "string" + } + }, + "required": [ + "field", + "order" + ] + }, + "Filters": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "SimpleFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "contains", + "equalsAny", + "prefix", + "suffix" + ] + }, + "field": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": [ + "type", + "field", + "value" + ] + }, + "EqualsFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "equals" + ] + }, + "field": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "type", + "field", + "value" + ] + }, + "MultiNotFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "multi", + "not" + ] + }, + "operator": { + "type": "string", + "enum": [ + "AND", + "and", + "OR", + "or" + ] + }, + "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" + ] + }, + "NavigationRouteResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + }, + "properties": { + "id": { + "description": "Unique identity of navigation route response." + } + } + }, + "SuccessResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + } + } + }, + "ProductListingCriteria": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + }, + { + "type": "object", + "description": "Additional search parameters for product listings", + "properties": { + "order": { + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "type": "string" + }, + "limit": { + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "type": "integer", + "minimum": 0 + }, + "p": { + "description": "Search result page", + "type": "integer", + "default": 1 + }, + "manufacturer": { + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "type": "string" + }, + "min-price": { + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "max-price": { + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "rating": { + "description": "Filter products with a minimum average rating.", + "type": "integer" + }, + "shipping-free": { + "description": "Filters products that are marked as shipping-free.", + "type": "boolean", + "default": false + }, + "properties": { + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "type": "string" + }, + "manufacturer-filter": { + "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "price-filter": { + "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "rating-filter": { + "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "shipping-free-filter": { + "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-filter": { + "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-whitelist": { + "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", + "type": "string" + }, + "reduce-aggregations": { + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "type": "string", + "nullable": true + } + } + } + ], + "properties": { + "filter": { + "properties": { + "type": { + "description": "To filter the results and aggregations with filter types like ==, >=, etc." + }, + "field": { + "description": "To filter the results and aggregations by field like an property identifier." + }, + "value": { + "description": "To filter the results and aggregations by value." + } + } + }, + "sort": { + "properties": { + "field": { + "description": "Sort the search results by field like an property identifier." + }, + "order": { + "description": "Sort the search results of orders by ascending or descending." + }, + "naturalSorting": { + "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." + } + } + }, + "post-filter": { + "properties": { + "type": { + "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." + }, + "field": { + "description": "To filter only the results but not the aggregations by field like an property identifier." + }, + "value": { + "description": "To filter only the results but not the aggregations by value." + } + } + } + } + }, + "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" + ] + }, + "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": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } + }, + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] + }, + "positionPrice": { + "type": "number" + }, + "netPrice": { + "type": "number" + }, + "regulationPrice": { + "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 + }, + "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" + ] + }, + "NavigationType": { + "type": "string", + "enum": [ + "main-navigation", + "footer-navigation", + "service-navigation" + ] + }, + "ShippingMethodPageRouteResponse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "deliveryTimeId": { + "type": "string" + }, + "deliveryTime": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "min": { + "type": "integer", + "format": "int32" + }, + "max": { + "type": "integer", + "format": "int32" + }, + "unit": { + "type": "string" + } + } + }, + "translations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + } + } + } + }, + "orderDeliveries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "orderId": { + "type": "string" + }, + "shippingOrderAddressId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "shippingDateEarliest": { + "type": "string", + "format": "date-time" + }, + "shippingDateLatest": { + "type": "string", + "format": "date-time" + }, + "stateId": { + "type": "string" + } + } + } + }, + "salesChannelDefaultAssignments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } + } + }, + "salesChannels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, "currencyId": { "type": "string" }, @@ -12299,1584 +13072,3259 @@ "maintenanceIpWhitelist": { "type": "string" }, - "mailHeaderFooterId": { - "type": "string" + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } + } + }, + "availabilityRule": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "priority": { + "type": "integer", + "format": "int32" + }, + "invalid": { + "type": "boolean" + } + } + }, + "availabilityRuleId": { + "type": "string" + }, + "prices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "ruleId": { + "type": "string" + }, + "calculation": { + "type": "integer", + "format": "int32" + }, + "quantityStart": { + "type": "number", + "format": "float" + }, + "quantityEnd": { + "type": "number", + "format": "float" + }, + "price": { + "type": "number", + "format": "float" + }, + "calculationRuleId": { + "type": "string" + } + } + } + }, + "mediaId": { + "type": "string" + }, + "media": { + "type": "object", + "properties": { + "userId": { + "type": "string" + }, + "mimeType": { + "type": "string" + }, + "fileExtension": { + "type": "string" + }, + "fileSize": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string" + }, + "metaDataRaw": { + "type": "string" + }, + "mediaTypeRaw": { + "type": "string" + }, + "uploadedAt": { + "type": "string", + "format": "date-time" + }, + "alt": { + "type": "string" + }, + "url": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "mediaFolderId": { + "type": "string" + }, + "private": { + "type": "boolean" + }, + "thumbnailsRo": { + "type": "string" + } + } + }, + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + } + } + } + }, + "properties": { + "name": { + "description": "Name of the shipping method." + }, + "active": { + "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." + }, + "description": { + "description": "The order of the tabs of your defined shipping methods in the storefront by entering numerical values like 1,2,3, etc." + }, + "deliveryTimeId": { + "description": "Unique identity of the delivery time." + }, + "deliveryTime": { + "properties": { + "name": { + "description": "Name given to delivery time." + }, + "min": { + "description": "Minimum delivery time taken." + }, + "max": { + "description": "Maximum delivery time taken." + }, + "unit": { + "description": "Unit in which the delivery time is defined. For example, days or hours." + } + } + }, + "translations": { + "properties": { + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "name": { + "description": "Name of the shipping method." + }, + "description": { + "description": "A short description of the shipping method." + } + } + }, + "orderDeliveries": { + "properties": { + "orderId": { + "description": "Unique identity of order." + }, + "shippingOrderAddressId": { + "description": "Unique identity of shipping order address." + }, + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "shippingDateEarliest": { + "description": "Date and time of earliest delivery of products." + }, + "shippingDateLatest": { + "description": "Date and time of latest delivery of products." + }, + "stateId": { + "description": "Unique identity of state." + } + } + }, + "salesChannelDefaultAssignments": { + "properties": { + "stateId": { + "description": "Unique identity of state." + }, + "languageId": { + "description": "Unique identity of language." + }, + "currencyId": { + "description": "Unique identity of currency." + }, + "paymentMethodId": { + "description": "Unique identity of payment method." + }, + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "countryId": { + "description": "Unique identity of country." + }, + "navigationCategoryId": { + "description": "Unique identity of navigation category." + }, + "navigationCategoryDepth": { + "description": "It determines the number of levels of subcategories in the storefront category menu." + }, + "footerCategoryId": { + "description": "Unique identity of footer category." + }, + "serviceCategoryId": { + "description": "Unique identity of service category." + }, + "name": { + "description": "Name of the sales channel." + }, + "shortName": { + "description": "A short name for sales channel." + }, + "accessKey": { + "description": "Access key to store api." + }, + "active": { + "description": "When boolean value is `true`, the shipping methods are available for selection in the sales channel's storefront." + }, + "maintenance": { + "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." + }, + "maintenanceIpWhitelist": { + "description": "Array of IP address allowed to access the sales channel." + }, + "mailHeaderFooterId": { + "description": "Unique identity of mail header and footer." + }, + "customerGroupId": { + "description": "Unique identity of customer group." + }, + "hreflangActive": { + "description": "When boolean value is `true`, the sales channel pages are available in different languages." + }, + "hreflangDefaultDomainId": { + "description": "Unique identity of hreflangDefaultDomain." + } + } + }, + "salesChannels": { + "properties": { + "stateId": { + "description": "Unique identity of state." + }, + "languageId": { + "description": "Unique identity of language." + }, + "currencyId": { + "description": "Unique identity of currency." + }, + "paymentMethodId": { + "description": "Unique identity of payment method." + }, + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "countryId": { + "description": "Unique identity of country." + }, + "navigationCategoryId": { + "description": "Unique identity of navigation category." + }, + "navigationCategoryDepth": { + "description": "It determines the number of levels of subcategories in the storefront category menu." + }, + "footerCategoryId": { + "description": "Unique identity of footer category." + }, + "serviceCategoryId": { + "description": "Unique identity of service category." + }, + "name": { + "description": "Name of the sales channel." + }, + "shortName": { + "description": "A short name for sales channel." + }, + "accessKey": { + "description": "Access key to store api." + }, + "active": { + "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." + }, + "maintenance": { + "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." + }, + "maintenanceIpWhitelist": { + "description": "Array of IP address allowed to access the sales channel." + }, + "mailHeaderFooterId": { + "description": "Unique identity of mail header and footer." + }, + "customerGroupId": { + "description": "Unique identity of customer group." + }, + "hreflangActive": { + "description": "When boolean value is `true``, the sales channel pages are available in different languages." + }, + "hreflangDefaultDomainId": { + "description": "Unique identity of hreflangDefaultDomain." + } + } + }, + "availabilityRule": { + "properties": { + "name": { + "description": "Unique name for the rule." + }, + "description": { + "description": "A short description about the rule." + }, + "priority": { + "description": "A numerical value to prioritize one of the rules from the list." + }, + "invalid": { + "description": "When the boolean value is `true`, the rule is no more available for usage." + } + } + }, + "availabilityRuleId": { + "description": "Unique identity of availability rule." + }, + "prices": { + "properties": { + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "currencyId": { + "description": "Unique identity of currency." + }, + "ruleId": { + "description": "Unique identity of rule." + }, + "calculation": { + "description": "Shipping price calculated based on quantity, price, weight or volume of items." + }, + "quantityStart": { + "description": "Starting range of quantity of an item." + }, + "quantityEnd": { + "description": "Ending range of quantity of an item." + }, + "price": { + "description": "Shipping method price after applied rules." + }, + "calculationRuleId": { + "description": "Unique identity of calculation rule." + } + } + }, + "mediaId": { + "description": "Unique identity of media." + }, + "media": { + "properties": { + "userId": { + "description": "Unique identity of user." + }, + "mimeType": { + "description": "A string sent along with a file indicating the type of the file. For example: image/jpeg." + }, + "fileExtension": { + "description": "Type of file indication. For example: jpeg, png." + }, + "fileSize": { + "description": "Size of the file media file uploaded." + }, + "title": { + "description": "Title name give to the media." + }, + "metaDataRaw": { + "description": "Details of the media file uploaded." + }, + "alt": { + "description": "Alternate text for media." + }, + "url": { + "description": "Runtime field, cannot be used as part of the criteria." + }, + "fileName": { + "description": "Name of the media file uploaded." + }, + "mediaFolderId": { + "description": "Unique identity of media folder." + }, + "private": { + "description": "Boolean value is `true` to keep the media display private." + } + } + }, + "tags": { + "properties": { + "name": { + "description": "Name of the tag." + } + } + } + } + }, + "FindProductVariantRouteResponse": { + "type": "object", + "properties": { + "foundCombination": { + "type": "object", + "properties": { + "variantId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of a variant." + }, + "options": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Available product variant options. For example, for variant `Size`, option would be `XS`, `S`, `M`, `L`, `XL`." + } + } + } + } + }, + "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 + } + } + }, + "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": { + "type": "string" + }, + "dataTimestamp": { + "type": "string" + }, + "deliveryInformation": { + "$ref": "#/components/schemas/CartDeliveryInformation" + }, + "description": { + "type": "string", + "description": "Description of line items in an order." + }, + "good": { + "type": "boolean", + "description": "When set to true, it indicates the line item is physical else it is virtual." + }, + "id": { + "type": "string", + "description": "Unique identity of line item." + }, + "label": { + "type": "string", + "description": "It is a typical product name given to the line item." + }, + "modified": { + "type": "boolean", + "description": "When boolean value is `true`, line items are said to be modified." + }, + "modifiedByApp": { + "type": "boolean" + }, + "payload": { + "$ref": "#/components/schemas/ProductJsonApi" + }, + "price": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] + }, + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" }, - "customerGroupId": { - "type": "string" + { + "type": "null" + } + ] + }, + "quantity": { + "type": "number" + }, + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" }, - "hreflangActive": { - "type": "boolean" + { + "type": "null" + } + ] + }, + "regulationPrice": { + "type": "object", + "properties": { + "price": { + "type": "number" }, - "hreflangDefaultDomainId": { - "type": "string" + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + }, + "nullable": true + }, + "totalPrice": { + "type": "number" + }, + "unitPrice": { + "type": "number" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } } } } }, - "salesChannels": { - "type": "array", - "items": { + "required": [ + "apiAlias", + "totalPrice", + "quantity", + "unitPrice" + ] + }, + "priceDefinition": { + "$ref": "#/components/schemas/CartPriceQuantity" + }, + "quantity": { + "type": "number", + "description": "Number of items of product." + }, + "quantityInformation": { + "type": "object", + "properties": { + "maxPurchase": { + "type": "number" + }, + "minPurchase": { + "type": "number" + }, + "purchaseSteps": { + "type": "number" + } + } + }, + "referencedId": { + "type": "string", + "description": "Unique identity of type of entity." + }, + "removable": { + "type": "boolean", + "description": "Allows the line item to be removable from the cart when set to true." + }, + "stackable": { + "type": "boolean", + "description": "Allows to change the quantity of the line item when set to true." + }, + "states": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "is-physical", + "is-download" + ] + } + }, + "type": { + "$ref": "#/components/schemas/LineItemType", + "description": "Type refers to the entity type of an item whether it is product or promotion for instance." + }, + "uniqueIdentifier": { + "type": "string" + } + }, + "required": [ + "id", + "type" + ] + }, + "CartDelivery": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } + }, + "location": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "state": { + "$ref": "#/components/schemas/CountryState" + } + } + }, + "positions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDeliveryPosition" + } + }, + "shippingCosts": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + } + } + }, + "AggregationMetrics": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "type": { + "type": "string", + "enum": [ + "avg", + "count", + "max", + "min", + "stats", + "sum" + ] + }, + "field": { + "type": "string" + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "OrderRouteResponse": { + "type": "object", + "properties": { + "orders": { + "allOf": [ + { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" + } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + }, + "paymentChangeable": { + "type": "object", + "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", + "additionalProperties": { + "type": "boolean" + } + } + }, + "required": [ + "orders" + ] + }, + "ProductListingResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EntitySearchResult" + }, + { + "type": "object", + "properties": { + "currentFilters": { "type": "object", + "description": "Contains the state of the filters. These can be used to create listing filters.", "properties": { - "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": { + "navigationId": { "type": "string" }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" + "manufacturer": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } }, - "maintenanceIpWhitelist": { - "type": "string" + "price": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "default": 0 + }, + "max": { + "type": "integer", + "default": 0 + } + }, + "required": [ + "min", + "max" + ] }, - "mailHeaderFooterId": { - "type": "string" + "rating": { + "type": "integer", + "nullable": true }, - "customerGroupId": { - "type": "string" + "shipping-free": { + "type": "boolean", + "default": false }, - "hreflangActive": { - "type": "boolean" + "properties": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } }, - "hreflangDefaultDomainId": { + "search": { "type": "string" } + }, + "required": [ + "manufacturer", + "navigationId", + "price", + "properties", + "rating", + "shipping-free" + ] + }, + "availableSortings": { + "type": "array", + "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", + "items": { + "type": "object", + "properties": { + "label": { + "type": "string" + }, + "translated": { + "type": "object", + "properties": { + "label": { + "type": "string" + } + }, + "required": [ + "label" + ] + }, + "key": { + "type": "string" + }, + "priority": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_sorting" + ] + } + }, + "required": [ + "label", + "translated", + "key", + "priority", + "apiAlias" + ] + } + }, + "sorting": { + "type": "string" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" } + }, + "entity": { + "type": "string", + "enum": [ + "product" + ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_listing" + ] } }, - "availabilityRule": { + "required": [ + "elements", + "availableSortings", + "currentFilters", + "apiAlias" + ] + } + ] + }, + "CustomerAddressBody": { + "description": "Added since version: 6.0.0.0", + "required": [ + "countryId", + "firstName", + "lastName", + "city", + "street" + ], + "properties": { + "countryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryStateId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "salutationId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "firstName": { + "type": "string" + }, + "lastName": { + "type": "string" + }, + "zipcode": { + "type": "string" + }, + "city": { + "type": "string" + }, + "company": { + "type": "string" + }, + "street": { + "type": "string" + }, + "department": { + "type": "string" + }, + "title": { + "type": "string" + }, + "phoneNumber": { + "type": "string" + }, + "additionalAddressLine1": { + "type": "string" + }, + "additionalAddressLine2": { + "type": "string" + }, + "customFields": { + "type": "object" + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "$ref": "#/components/schemas/CountryState" + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" + } + }, + "type": "object" + }, + "AccountNewsletterRecipient": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": [ + "undefined", + "notSet", + "direct", + "optIn", + "optOut" + ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "account_newsletter_recipient" + ] + } + }, + "required": [ + "status", + "apiAlias" + ] + }, + "CrossSellingElement": { + "type": "object", + "properties": { + "crossSelling": { + "$ref": "#/components/schemas/ProductCrossSelling" + }, + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "streamId": { + "type": "string", + "format": "uuid" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cross_selling_element" + ] + } + }, + "required": [ + "crossSelling", + "products", + "total", + "apiAlias" + ] + }, + "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": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "$ref": "#/components/schemas/CountryState", + "nullable": true + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" + } + }, + "required": [ + "customerId", + "createdAt", + "updatedAt", + "country", + "salutation" + ] + }, + "CartPriceQuantity": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_quantity" + ] + }, + "isCalculated": { + "type": "boolean" + }, + "listPrice": { + "$ref": "#/components/schemas/CartListPrice" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + } + }, + "type": "object" + }, + "taxRules": { + "type": "array", + "items": { "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "priority": { - "type": "integer", - "format": "int32" + "properties": { + "taxRate": { + "type": "number", + "format": "float" }, - "invalid": { - "type": "boolean" + "name": { + "type": "string" } } - }, - "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" - } - } + } + }, + "type": { + "type": "string" + } + }, + "required": [ + "apiAlias" + ] + }, + "EntitySearchResult": { + "type": "object", + "properties": { + "entity": { + "type": "string" + }, + "total": { + "type": "integer", + "description": "The total number of found entities" + }, + "aggregations": { + "type": "array", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", + "items": { + "type": "object" + } + }, + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." + }, + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." + } + } + }, + "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" } + } + } + } + }, + "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" }, - "mediaId": { - "type": "string" - }, - "media": { + "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": { - "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": { + "paymentMethodId": { "type": "string" }, - "private": { - "type": "boolean" - }, - "thumbnailsRo": { - "type": "string" + "amount": { + "$ref": "#/components/schemas/CalculatedPrice" } } }, - "tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - } - } + "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." + } + } + }, + "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" + ] + }, + "CartListPrice": { + "type": "object", + "description": "", + "properties": { + "discount": { + "type": "number" + }, + "percentage": { + "type": "number" + }, + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_list_price" + ] } }, + "required": [ + "apiAlias" + ] + }, + "CrossSellingElementCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrossSellingElement" + }, "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." + "total": { + "description": "Number of cross selling elements found." + } + } + }, + "CartDeliveryInformation": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_information" + ] }, - "deliveryTimeId": { - "description": "Unique identity of the delivery time." + "freeDelivery": { + "type": "boolean" }, "deliveryTime": { + "type": "object", "properties": { "name": { - "description": "Name given to delivery time." + "type": "string" }, "min": { - "description": "Minimum delivery time taken." + "type": "integer" }, "max": { - "description": "Maximum delivery time taken." + "type": "integer" }, "unit": { - "description": "Unit in which the delivery time is defined. For example, days or hours." - } - } - }, - "translations": { - "properties": { - "shippingMethodId": { - "description": "Unique identity of shipping method." - }, - "name": { - "description": "Name of the shipping method." + "type": "string" }, - "description": { - "description": "A short description of the shipping method." + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_time" + ] } } }, - "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." - } - } + "height": { + "type": "integer" }, - "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." - } - } + "length": { + "type": "integer" }, - "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." - } - } + "restockTime": { + "type": "integer" }, - "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." - } - } + "stock": { + "type": "integer" + }, + "weight": { + "type": "integer" + }, + "width": { + "type": "integer" + } + }, + "required": [ + "apiAlias" + ] + }, + "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." }, - "availabilityRuleId": { - "description": "Unique identity of availability rule." + "versionId": { + "description": "Unique identity of order return's version." }, - "prices": { + "orderId": { + "description": "Unique identity of order." + }, + "orderVersionId": { + "description": "Unique identity of order return version." + }, + "price": { "properties": { - "shippingMethodId": { - "description": "Unique identity of shipping method." - }, - "currencyId": { - "description": "Unique identity of currency." + "netPrice": { + "description": "Net price of the product." }, - "ruleId": { - "description": "Unique identity of rule." + "totalPrice": { + "description": "Gross price of the product." }, - "calculation": { - "description": "Shipping price calculated based on quantity, price, weight or volume of items." + "calculatedTaxes": { + "description": "Contains calculated tax on order delivery price." }, - "quantityStart": { - "description": "Starting range of quantity of an item." + "taxRules": { + "description": "Pricing based on multiple taxes." }, - "quantityEnd": { - "description": "Ending range of quantity of an item." + "positionPrice": { + "description": "Price of each line item in the cart multiplied by its quantity excluding charges like shipping cost, rules, taxes etc." }, - "price": { - "description": "Shipping method price after applied rules." + "rawTotal": { + "description": "The total value before rounding off." }, - "calculationRuleId": { - "description": "Unique identity of calculation rule." + "taxStatus": { + "description": "TaxStatus takes `Free`, `Net` or `Gross` as values." } } }, - "mediaId": { - "description": "Unique identity of media." - }, - "media": { + "shippingCosts": { "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." + "unitPrice": { + "description": "Shipping cost of product per item (where, quantity=1)." }, - "title": { - "description": "Title name give to the media." + "totalPrice": { + "description": "Shipping cost of product based on quantity." }, - "metaDataRaw": { - "description": "Details of the media file uploaded." + "quantity": { + "description": "Number of items of each product." }, - "alt": { - "description": "Alternate text for media." + "calculatedTaxes": { + "description": "Contains calculated taxes based on shipping costs/methods." }, - "url": { - "description": "Runtime field, cannot be used as part of the criteria." + "taxRules": { + "description": "Pricing based on multiple taxes." }, - "fileName": { - "description": "Name of the media file uploaded." + "referencePrice": { + "description": "Original cost price of the product." }, - "mediaFolderId": { - "description": "Unique identity of media folder." + "listPrice": { + "properties": { + "price": { + "description": "Price of each line item." + }, + "discount": { + "description": "Absolute discount on each line item." + }, + "percentage": { + "description": "Discount in percentage." + } + } }, - "private": { - "description": "Boolean value is `true` to keep the media display private." + "regulationPrice": { + "properties": { + "price": { + "description": "Contains cheapest price from last 30 days as per EU law." + } + } } } }, - "tags": { - "properties": { - "name": { - "description": "Name of the tag." - } - } + "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." } } }, - "ArrayStruct": { - "$ref": "#/components/schemas/Struct" - }, - "Sitemap": { - "allOf": [ - { - "$ref": "#/components/schemas/ArrayStruct" - }, - { - "type": "object", - "properties": { - "filename": { - "type": "string" - }, - "created": { - "type": "string", - "format": "date-time" - } - } - } - ], + "SubscriptionAddress": { "properties": { - "filename": { - "description": "Name of the file which holds a list of all URL's." + "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. " } } }, - "ProductDetailResponse": { - "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", + "SubscriptionCustomer": { "properties": { - "product": { - "$ref": "#/components/schemas/Product" + "id": { + "description": "Unique identity of subscription customer." }, - "configurator": { - "type": "array", - "description": "List of property groups with their corresponding options and information on how to display them.", - "items": { - "$ref": "#/components/schemas/PropertyGroup" - } + "customerId": { + "description": "Unique identity of the customer." }, - "id": { - "description": "Unique identity of product detail response." + "salutationId": { + "description": "Unique identity of salutation." }, - "available": { - "description": "When boolean value is true, the product is available for purchase." + "firstName": { + "description": "Email address of the subscribed customer." }, - "isCloseout": { - "description": "Boolean value to check if the product is still buyable when stock value is 0." + "lastName": { + "description": "Last name of the subscribed customer. " }, - "displayGroup": { - "description": "Internal field." + "company": { + "description": "Name of the customer's company." }, - "manufacturerNumber": { - "description": "Unique number of the product manufacturer." + "title": { + "description": "Title name given to customer's order address." }, - "stock": { - "description": "Quantity of product available." + "customerNumber": { + "description": "Unique number for subscribed customer." }, - "sortedProperties": { - "description": "Properties of the product that are sorted" + "vatId": { + "description": "Unique identity of VAT." + }, + "customFields": { + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." } } }, - "Criteria": { - "type": "object", - "description": "Criteria to query entities.", + "SubscriptionInterval": { "properties": { - "page": { - "description": "Search result page", - "type": "integer" + "id": { + "description": "Unique identity of subscription interval." }, - "limit": { - "description": "Number of items per result page", - "type": "integer" + "name": { + "description": "Name of the subscription interval." }, - "filter": { - "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "field": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "required": [ - "type", - "field", - "value" - ] - }, - "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." - } - } + "active": { + "description": "When `true`, the defined subscription interval is available for selection in storefront." }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "type": "object", - "properties": { - "field": { - "type": "string" - }, - "order": { - "type": "string" - }, - "naturalSorting": { - "type": "boolean" - } - }, - "required": [ - "field" - ] - }, - "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." - } - } + "dateInterval": { + "description": "Relative interval data. For example, `every 3 days`, `every 2 months`, etc." }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string" - }, - "field": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "required": [ - "type", - "field", - "value" - ] - }, - "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." - } - } + "cronInterval": { + "description": "Absolute interval data. For example, `only on January`, `only on Mondays`, etc." + }, + "availabilityRuleId": { + "description": "Unique identity of rule." + }, + "translated": { + "description": "Contains the translations of all translated fields." + } + } + }, + "SubscriptionPlan": { + "properties": { + "id": { + "description": "Unique identity of subscription plan." + }, + "name": { + "description": "Name of the subscription plan." + }, + "description": { + "description": "A short description about the subscription plan." }, - "associations": { - "type": "object", - "description": "Used to fetch associations which are not fetched by default." + "active": { + "description": "When `true`, the subscription plan is available for selection in storefront." }, - "aggregations": { - "type": "array", - "description": "Used to perform aggregations on the search result. For more information, see [Search Queries > Aggregations](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#aggregations)", - "items": { - "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" - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - } + "activeStorefrontLabel": { + "description": "When boolean value id `true`, the label overrides the plan name." }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } + "availabilityRuleId": { + "description": "Unique identity of rule." }, - "fields": { - "type": "array", - "description": "Fields which should be returned in the search result.", - "items": { - "type": "string", - "description": "Name of a field" - } + "label": { + "description": "Label that can overwrite the active plan name. " }, - "total-count-mode": { - "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" - ] + "translated": { + "description": "Contains the translations of all translated fields." } } }, - "ProductListingFlags": { - "type": "object", - "description": "Additional flags for product listings", + "SubscriptionPlanIntervalMapping": { "properties": { - "no-aggregations": { - "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", - "type": "string", - "nullable": true + "id": { + "description": "Unique identity of subscription plan interval mapping." }, - "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 + "subscriptionIntervalId": { + "description": "Unique identity of subscription interval." + }, + "subscriptionPlanId": { + "description": "Unique identity of subscription plan." } } }, - "Struct": { - "type": "object", + "SubscriptionPlanProductMapping": { "properties": { - "apiAlias": { - "type": "string", - "description": "Alias which can be used to restrict response fields. For more information see [includes](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#includes-apialias)." + "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." } } }, - "NavigationRouteResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - }, + "SubscriptionTagMapping": { "properties": { "id": { - "description": "Unique identity of navigation route response." + "description": "Unique identity of subscription tag." + }, + "subscriptionId": { + "description": "Unique identity of subscription." + }, + "tagId": { + "description": "Unique identity of subscription tag." } } }, - "EntitySearchResult": { - "allOf": [ - { - "$ref": "#/components/schemas/ArrayStruct" + "SwagDelayAction": { + "properties": { + "id": { + "description": "Unique identity of swag delay action for flow builder" }, - { - "type": "object", - "properties": { - "entity": { - "type": "string" - }, - "total": { - "type": "integer", - "description": "The total number of found entities" - }, - "aggregations": { - "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", - "items": { - "type": "object" - } - }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." - }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." - } - } + "orderId": { + "description": "Unique identity of order." + }, + "customerId": { + "description": "Unique identity of customer." } - ] + } }, - "OrderProductWarehouse": { + "Warehouse": { "properties": { "id": { - "description": "Unique identity of order's product warehouse." + "description": "Unique identity of warehouse." } } }, - "OrderReturn": { + "WarehouseGroup": { "properties": { "id": { - "description": "Unique identity of order return." - }, - "versionId": { - "description": "Unique identity of order return's version." - }, - "orderId": { - "description": "Unique identity of order." - }, - "orderVersionId": { - "description": "Unique identity of order return version." - }, - "price": { - "properties": { - "netPrice": { - "description": "Net price of the product." - }, - "totalPrice": { - "description": "Gross price of the product." - }, - "calculatedTaxes": { - "description": "Contains calculated tax on order delivery price." - }, - "taxRules": { - "description": "Pricing based on multiple taxes." - }, - "positionPrice": { - "description": "Price of each line item in the cart multiplied by its quantity excluding charges like shipping cost, rules, taxes etc." - }, - "rawTotal": { - "description": "The total value before rounding off." - }, - "taxStatus": { - "description": "TaxStatus takes `Free`, `Net` or `Gross` as values." - } - } - }, - "shippingCosts": { - "properties": { - "unitPrice": { - "description": "Shipping cost of product per item (where, quantity=1)." - }, - "totalPrice": { - "description": "Shipping cost of product based on quantity." - }, - "quantity": { - "description": "Number of items of each product." - }, - "calculatedTaxes": { - "description": "Contains calculated taxes based on shipping costs/methods." - }, - "taxRules": { - "description": "Pricing based on multiple taxes." - }, - "referencePrice": { - "description": "Original cost price of the product." - }, - "listPrice": { - "properties": { - "price": { - "description": "Price of each line item." - }, - "discount": { - "description": "Absolute discount on each line item." - }, - "percentage": { - "description": "Discount in percentage." - } - } - }, - "regulationPrice": { - "properties": { - "price": { - "description": "Contains cheapest price from last 30 days as per EU law." - } - } - } - } - }, - "stateId": { - "description": "Unique identity of state." - }, - "returnNumber": { - "description": "Reference number for returning order." - }, - "requestedAt": { - "description": "Date and time when the order return was requested." - }, - "amountTotal": { - "description": "Gross price of the order." - }, - "amountNet": { - "description": "Net price of the order." + "description": "Unique identity of warehouse group." } } }, - "OrderReturnLineItem": { + "CustomPrice": { "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." + "description": "Unique identity of the custom price." }, - "quantity": { - "description": "Number of line items returned." + "productId": { + "description": "Unique identity of the product." }, - "refundAmount": { - "description": "Amount to be refunded." + "productVersionId": { + "description": "Unique identity of the product's version." }, - "restockQuantity": { - "description": "Update of stock quantity after the return of certain line items are initiated." + "customerId": { + "description": "Unique identity of the customer." }, - "customFields": { - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + "customerGroupId": { + "description": "Unique identity of the customer's group." }, - "stateId": { - "description": "Unique identity of state." + "price": { + "description": "Detailed information of price." } } }, - "OrderReturnLineItemReason": { + "CustomerSpecificFeatures": { "properties": { "id": { - "description": "Unique identity for reason of return." + "description": "Unique identity of the customer specific features." }, - "reasonKey": { - "description": "Unique key associated with reason for the order return. " + "customerId": { + "description": "Unique identity of the customer." + } + } + }, + "MediaAiTag": { + "properties": { + "id": { + "description": "Unique identity of the AI media tag." }, - "content": { - "description": "Description of the reason of return." + "tag": { + "description": "Tag that indicates if the media is made by AI or not." }, "translated": { "description": "Contains the translations of all translated fields." } } + } + }, + "responses": { + "404": { + "description": "Not Found", + "content": { + "application/vnd.api+json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "404", + "title": "Not Found", + "description": "Resource with given parameter was not found." + } + ] + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "404", + "title": "Not Found", + "description": "Resource with given parameter was not found." + } + ] + } + } + } }, - "OrderWarehouseGroup": { - "properties": { - "id": { - "description": "Unique identity of order warehouse group." + "403": { + "description": "Forbidden", + "content": { + "application/vnd.api+json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "403", + "title": "Forbidden", + "description": "This operation is restricted to logged in users." + } + ] + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "403", + "title": "Forbidden", + "description": "This operation is restricted to logged in users." + } + ] + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/vnd.api+json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "401", + "title": "Unauthorized", + "description": "Authorization information is missing or invalid." + } + ] + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "401", + "title": "Unauthorized", + "description": "Authorization information is missing or invalid." + } + ] + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/vnd.api+json": { + "schema": { + "$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." + } + ] + } + } + } + }, + "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" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redirectUrl": { + "description": "Define the URL which browser will be redirected to", + "type": "string" + } + } + } + } + } + }, + "OpenApi3": { + "description": "Returns information about the store API.", + "content": { + "application/json": { + "schema": { + "properties": { + "openapi": { + "type": "string" + }, + "info": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "description": { + "type": "string" + }, + "termsOfService": { + "type": "string", + "format": "uri" + }, + "contact": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "email": { + "type": "string", + "format": "email" + } + } + }, + "license": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "identifier": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "name" + ] + }, + "version": { + "type": "string" + } + }, + "required": [ + "title", + "version" + ] + }, + "jsonSchemaDialect": { + "type": "string" + }, + "webhooks": { + "type": "object" + }, + "servers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + } + }, + "required": [ + "url" + ] + } + }, + "components": { + "type": "object", + "properties": { + "schemas": { + "type": "object" + }, + "responses": { + "type": "object" + }, + "parameters": { + "type": "object" + }, + "examples": { + "type": "object" + }, + "requestBodies": { + "type": "object" + }, + "headers": { + "type": "object" + }, + "securitySchemes": { + "type": "object" + }, + "links": { + "type": "object" + }, + "callbacks": { + "type": "object" + }, + "pathItems": { + "type": "object" + } + } + }, + "security": { + "type": "array", + "items": { + "type": "object" + } + }, + "paths": { + "type": "object" + }, + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "externalDocs": { + "type": "object", + "properties": { + "description": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "url" + ] + } + }, + "required": [ + "name" + ] + } + }, + "externalDocs": { + "type": "object", + "properties": { + "description": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "url" + ] + } + }, + "type": "object", + "required": [ + "openapi", + "info" + ] + } } } - }, - "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." - } + } + }, + "parameters": { + "contentType": { + "name": "Content-Type", + "in": "header", + "description": "Content type of the request", + "required": true, + "schema": { + "type": "string", + "default": "application/json" } }, - "ProductWarehouse": { - "properties": { - "id": { - "description": "Unique identity of warehouse of product." - } + "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" }, - "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." + "ContextToken": { + "type": "apiKey", + "description": "Identifies an anonymous or identified user session", + "name": "sw-context-token", + "in": "header" + } + } + }, + "security": [ + { + "ApiKey": [] + } + ], + "paths": { + "/script/{hook}": { + "get": { + "tags": [ + "API", + "Script", + "App" + ], + "summary": "Access point for different api logics which are provided by apps over script hooks", + "operationId": "getScriptStoreApiRoute", + "parameters": [ + { + "name": "hook", + "in": "path", + "description": "Dynamic hook which used to build the hook name", + "required": true, + "schema": { + "type": "string" + } } - } - }, - "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." + ], + "responses": { + "200": { + "description": "Returns different structures of results based on the called script.", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "nullable": true + } + }, + "application/vnd.api+json": { + "schema": { + "type": "object", + "additionalProperties": true, + "nullable": true + } + } + } }, - "email": { - "description": "Last name of the subscribed customer. " + "204": { + "description": "No data by default" } - } - }, - "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." + }, + "security": [ + { + "ApiKey": [] } - } + ] }, - "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." + "post": { + "tags": [ + "API", + "Script", + "App" + ], + "summary": "Access point for different api logics which are provided by apps over script hooks", + "operationId": "postScriptStoreApiRoute", + "parameters": [ + { + "name": "hook", + "in": "path", + "description": "Dynamic hook which used to build the hook name", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns different structures of results based on the called script.", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "nullable": true + } + }, + "application/vnd.api+json": { + "schema": { + "type": "object", + "additionalProperties": true, + "nullable": true + } + } + } }, - "cronInterval": { - "description": "Absolute interval data. For example, `only on January`, `only on Mondays`, etc." + "204": { + "description": "No data by default" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/product-listing/{categoryId}": { + "post": { + "tags": [ + "Product" + ], + "summary": "Fetch a product listing by category", + "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.", + "operationId": "readProductListing", + "parameters": [ + { + "name": "categoryId", + "in": "path", + "description": "Identifier of a category.", + "required": true, + "schema": { + "type": "string" + } }, - "availabilityRuleId": { - "description": "Unique identity of rule." + { + "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" + } }, - "translated": { - "description": "Contains the translations of all translated fields." + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "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": [ + { + "ApiKey": [] + } + ] + } + }, + "/customer/wishlist/add/{productId}": { + "post": { + "tags": [ + "Wishlist" + ], + "summary": "Add a product to a wishlist", + "description": "Adds a product to a customers wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "addProductOnWishlist", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Identifier of the product to be added.", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "responses": { + "200": { + "description": "Returns a success response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/customer/wishlist": { + "post": { + "tags": [ + "Wishlist", + "Endpoints supporting Criteria " + ], + "summary": "Fetch a wishlist", + "description": "Fetch a customer's wishlist. Products on the wishlist can be filtered using a criteria object.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "readCustomerWishlist", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WishlistLoadRouteResponse" + } + } + } } - } - }, - "SubscriptionPlan": { - "properties": { - "id": { - "description": "Unique identity of subscription plan." - }, - "name": { - "description": "Name of the subscription plan." - }, - "description": { - "description": "A short description about the subscription plan." - }, - "active": { - "description": "When `true`, the subscription plan is available for selection in storefront." - }, - "activeStorefrontLabel": { - "description": "When boolean value id `true`, the label overrides the plan name." - }, - "availabilityRuleId": { - "description": "Unique identity of rule." - }, - "label": { - "description": "Label that can overwrite the active plan name. " - }, - "translated": { - "description": "Contains the translations of all translated fields." + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] } - } - }, - "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." + ] + } + }, + "/customer/wishlist/merge": { + "post": { + "tags": [ + "Wishlist" + ], + "summary": "Create a wishlist for a customer", + "description": "Create a new wishlist for a logged in customer or extend the existing wishlist given a set of products.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * A customer can only have a single wishlist.\n * The wishlist feature has to be activated.", + "operationId": "mergeProductOnWishlist", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "productIds": { + "description": "List product id", + "type": "array", + "items": { + "description": "product id", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + }, + "type": "object" + } + } } - } - }, - "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." + }, + "responses": { + "200": { + "description": "Returns a success response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } } - } - }, - "SubscriptionTagMapping": { - "properties": { - "id": { - "description": "Unique identity of subscription tag." - }, - "subscriptionId": { - "description": "Unique identity of subscription." - }, - "tagId": { - "description": "Unique identity of subscription tag." + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] } - } - }, - "SwagDelayAction": { - "properties": { - "id": { - "description": "Unique identity of swag delay action for flow builder" - }, - "orderId": { - "description": "Unique identity of order." + ] + } + }, + "/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" + } + } + } }, - "customerId": { - "description": "Unique identity of customer." + "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" + } + } + } } - } - }, - "Warehouse": { - "properties": { - "id": { - "description": "Unique identity of warehouse." + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] } - } - }, - "WarehouseGroup": { - "properties": { - "id": { - "description": "Unique identity of warehouse group." + ] + } + }, + "/salutation": { + "post": { + "tags": [ + "System & Context", + "Endpoints supporting Criteria " + ], + "summary": "Fetch salutations", + "description": "Fetches salutations with a criteria obj.", + "operationId": "readSalutation", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } - } - }, - "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." + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Entity search result containing salutations.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Salutation" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } } - } - }, - "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." + ] + } + }, + "/_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" + } + } + } + } + } + } + } + } } } } }, - "responses": { - "404": { - "description": "Not Found", - "content": { - "application/vnd.api+json": { + "/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": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "404", - "title": "Not Found", - "description": "Resource with given parameter was not found." - } - ] + "type": "string" } }, - "application/json": { + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "404", - "title": "Not Found", - "description": "Resource with given parameter was not found." + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + }, + { + "allOf": [ + { + "properties": { + "slots": { + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/ProductListingCriteria" + } + ] + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "The loaded landing page with cms page", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/LandingPage" } - ] + } } + }, + "404": { + "$ref": "#/components/responses/404" } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/vnd.api+json": { + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/app-system/{name}/generate-token": { + "post": { + "tags": [ + "App system" + ], + "summary": "Generate JWT token for app system backend", + "description": "Generate JWT token for authenticated communication with the app server", + "operationId": "generateJWTAppSystemAppServer", + "parameters": [ + { + "in": "path", + "name": "name", + "required": true, + "description": "Name of the app", "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "403", - "title": "Forbidden", - "description": "This operation is restricted to logged in users." + "type": "string" + } + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "token": { + "type": "string" + }, + "expires": { + "type": "string", + "format": "date-time" + }, + "shopId": { + "type": "string" + } + } } - ] + } } - }, - "application/json": { + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/checkout/cart": { + "get": { + "tags": [ + "Cart" + ], + "summary": "Fetch or create a cart", + "description": "Used to fetch the current cart or for creating a new one.", + "operationId": "readCart", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "403", - "title": "Forbidden", - "description": "This operation is restricted to logged in users." + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "responses": { + "200": { + "description": "Cart", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Cart" } - ] + } } } - } + }, + "security": [ + { + "ApiKey": [] + } + ] }, - "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." + "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" } - ] + } } - }, - "application/json": { + } + }, + "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, "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "401", - "title": "Unauthorized", - "description": "Authorization information is missing or invalid." + "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" } - ] + } } } - } + }, + "security": [ + { + "ApiKey": [] + } + ] }, - "400": { - "description": "Bad Request", - "content": { - "application/vnd.api+json": { + "delete": { + "tags": [ + "Cart" + ], + "summary": "Remove items from the cart", + "description": "DEPRECATED: use removeLineItem instead. This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", + "operationId": "removeLineItemDeprecated", + "deprecated": true, + "parameters": [ + { + "name": "ids", + "in": "query", + "description": "A list of product identifiers.", + "required": true, "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "400", - "title": "Bad Request", - "description": "Bad parameters for this endpoint. See documentation for the correct ones." - } - ] + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } }, - "application/json": { + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "400", - "title": "Bad Request", - "description": "Bad parameters for this endpoint. See documentation for the correct ones." + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "responses": { + "200": { + "description": "The updated cart.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Cart" } - ] + } } } - } - }, - "204": { - "description": "No Content" + }, + "security": [ + { + "ApiKey": [] + } + ] }, - "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", + "patch": { + "tags": [ + "Cart" + ], + "summary": "Update items in the cart", + "description": "This route updates items in the cart. A typical example is updating the quantity of an item.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#updating-items-in-the-cart)", + "operationId": "updateLineItem", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, "schema": { - "type": "string" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } - }, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "contextToken": { - "deprecated": true, - "description": "Deprecated since v6.6.0.0. Please retrieve the context token from the response header instead.", - "type": "string" - }, - "redirectUrl": { - "description": "Define the URL which browser will be redirected to", - "type": "string" - } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CartItems" } } } - } - } - }, - "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" + }, + "responses": { + "200": { + "description": "The updated cart.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Cart" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] } - } - }, - "security": [ - { - "ApiKey": [] - } - ], - "paths": { - "/shipping-method": { + }, + "/checkout/cart/line-item/delete": { "post": { "tags": [ - "Payment & Shipping", - "Endpoints supporting Criteria " + "Cart" ], - "summary": "Fetch shipping methods", - "description": "Perform a filtered search for shipping methods.", - "operationId": "readShippingMethod", + "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": "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.", + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, "schema": { - "type": "boolean" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } ], "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "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": "", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "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/Cart" } } } @@ -13889,33 +16337,143 @@ ] } }, - "/customer/wishlist/add/{productId}": { + "/checkout/order": { "post": { "tags": [ - "Wishlist" + "Order" ], - "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": "Create an order from a cart", + "description": "Creates a new order from the current cart and deletes the cart.\n\nIf you are using the [prepared payment flow](https://developer.shopware.com/docs/concepts/commerce/checkout-concept/payments#2.1-prepare-payment-optional), this endpoint also receives additional transaction details. The exact name of the parameters depends on the implementation of the corresponding *payment handler*.", + "operationId": "createOrder", "parameters": [ { - "name": "productId", - "in": "path", - "description": "Identifier of the product to be added.", - "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}$" } } ], + "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 a success response.", + "description": "Order", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$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" + } + } + } + } + } } } } @@ -13928,15 +16486,27 @@ ] } }, - "/customer/wishlist": { + "/language": { "post": { "tags": [ - "Wishlist", + "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch a wishlist", - "description": "Fetch a customer's wishlist. Products on the wishlist can be filtered using a criteria object.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "readCustomerWishlist", + "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}$" + } + } + ], "requestBody": { "required": false, "content": { @@ -13953,11 +16523,29 @@ }, "responses": { "200": { - "description": "", + "description": "Entity search result containing languages.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WishlistLoadRouteResponse" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + } + } + }, + "required": [ + "elements" + ], + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -13970,42 +16558,72 @@ ] } }, - "/customer/wishlist/merge": { + "/payment-method": { "post": { "tags": [ - "Wishlist" + "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}$" + } + } ], - "summary": "Create a wishlist for a customer", - "description": "Create a new wishlist for a logged in customer or extend the existing wishlist given a set of products.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * A customer can only have a single wishlist.\n * The wishlist feature has to be activated.", - "operationId": "mergeProductOnWishlist", "requestBody": { "required": true, "content": { "application/json": { "schema": { - "properties": { - "productIds": { - "description": "List product id", - "type": "array", - "items": { - "description": "product id", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + }, + { + "properties": { + "onlyAvailable": { + "description": "List only available", + "type": "boolean" + } + }, + "type": "object" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Returns a success response.", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentMethod" + } + } + }, + "type": "object" } } } @@ -14018,85 +16636,52 @@ ] } }, - "/customer/wishlist/delete/{productId}": { - "delete": { + "/document/download/{documentId}/{deepLinkCode}": { + "post": { "tags": [ - "Wishlist" + "Document", + "Endpoints supporting Criteria " ], - "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": "Download generated document", + "description": "Returns blob file of a generated document to download.", + "operationId": "download", "parameters": [ { - "name": "productId", + "name": "documentId", "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" - } - } + { + "name": "deepLinkCode", + "required": true, + "in": "path", + "schema": { + "type": "string" } - } - }, - "security": [ + }, { - "ApiKey": [] + "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}$" + } } - ] - } - }, - "/search": { - "post": { - "tags": [ - "Product" ], - "summary": "Search for products", - "description": "Performs a search for products which can be used to display a product listing.", - "operationId": "searchPage", "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" } ] } @@ -14105,11 +16690,11 @@ }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", + "description": "Returns the document information and blob to download.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "$ref": "#/components/schemas/Document" } } } @@ -14117,25 +16702,27 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/cms/{id}": { + "/seo-url": { "post": { "tags": [ - "Content" + "Sitemap & Routes", + "Endpoints supporting Criteria " ], - "summary": "Fetch and resolve a CMS page", - "description": "Loads a content management page by its identifier and resolve the slot data. This could be media files, product listing and so on.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.", - "operationId": "readCms", + "summary": "Fetch SEO routes", + "description": "Perform a filtered search for seo urls.", + "operationId": "readSeoUrl", "parameters": [ { - "name": "id", - "in": "path", - "description": "Identifier of the CMS page to be resolved", - "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}$" @@ -14143,21 +16730,13 @@ } ], "requestBody": { + "required": false, "content": { "application/json": { "schema": { "allOf": [ { - "properties": { - "slots": { - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/ProductListingCriteria" + "$ref": "#/components/schemas/Criteria" } ] } @@ -14166,11 +16745,29 @@ }, "responses": { "200": { - "description": "The loaded cms page", + "description": "Entity search result containing seo urls.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CmsPage" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" + } + } + }, + "type": "object", + "required": [ + "elements" + ] + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -14186,118 +16783,100 @@ ] } }, - "/newsletter/confirm": { + "/account/newsletter-recipient": { "post": { "tags": [ - "Newsletter" + "Profile", + "Newsletter", + "Endpoints supporting Criteria" ], - "summary": "Confirm a newsletter registration", - "description": "You have to use the hash from the link sent out via email to confirm the user registration.", - "operationId": "confirmNewsletter", + "summary": "Fetch newsletter recipients", + "description": "Perform a filtered search for newsletter recipients.", + "operationId": "readNewsletterRecipient", "requestBody": { - "required": true, + "required": false, "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" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "The newsletter confirmation was successful." + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AccountNewsletterRecipient" + } + } + } } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/newsletter/subscribe": { + "/account/change-profile": { "post": { "tags": [ - "Newsletter" + "Profile" ], - "summary": "Create or remove a newsletter subscription", - "description": "This route is used to create/remove/confirm a newsletter subscription.\n\nThe `option` property controls what should happen:\n* `direct`: The subscription is directly active and does not need a confirmation.\n* `subscribe`: An email will be send to the provided email addrees 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`: Confirmes the newsletter subscription for the provided email address.", - "operationId": "subscribeToNewsletter", + "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": { "required": [ - "email", - "option", - "storefrontUrl" + "salutationId", + "firstName", + "lastName" ], "properties": { - "email": { - "description": "Email address that will receive the confirmation and the newsletter.", - "type": "string" - }, - "option": { - "description": "Defines what should be done.", + "salutationId": { + "description": "Id of the salutation for the customer account. Fetch options using `salutation` endpoint.", "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.", + "title": { + "description": "(Academic) title of the customer", "type": "string" }, - "salutationId": { - "description": "Identifier of the salutation.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, "firstName": { - "description": "First name", + "description": "Customer first name. Value will be reused for shipping and billing address if not provided explicitly.", "type": "string" }, "lastName": { - "description": "Last name", - "type": "string" - }, - "street": { - "description": "Street", - "type": "string" - }, - "city": { - "description": "City", + "description": "Customer last name. Value will be reused for shipping and billing address if not provided explicitly.", "type": "string" }, - "zipCode": { - "description": "Zip code", + "company": { + "description": "Company of the customer. Only required when `accountType` is `business`.", "type": "string" }, - "tags": { - "description": "Zip code", - "type": "string" + "birthdayDay": { + "description": "Birthday day", + "type": "integer" }, - "languageId": { - "description": "Identifier of the language.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "birthdayMonth": { + "description": "Birthday month", + "type": "integer" }, - "customFields": { - "description": "Custom field data that should be added to the subscription.", - "type": "string" + "birthdayYear": { + "description": "Birthday year", + "type": "integer" } }, "type": "object" @@ -14307,35 +16886,53 @@ }, "responses": { "200": { - "description": "Success" + "description": "Returns a success response indicating a successful update", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/newsletter/unsubscribe": { + "/account/change-email": { "post": { "tags": [ - "Newsletter" + "Profile" ], - "summary": "Remove a newsletter subscription", - "description": "Removes a newsletter recipient from the mailing lists.", - "operationId": "unsubscribeToNewsletter", + "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" + "email", + "emailConfirmation", + "password" ], "properties": { "email": { - "description": "Email address that should be removed from the mailing lists.", + "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" } }, @@ -14346,96 +16943,11 @@ }, "responses": { "200": { - "description": "Unsubscribing was successful." - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/script/{hook}": { - "post": { - "tags": [ - "API", - "Script", - "App" - ], - "summary": "Access point for different api logics which are provided by apps over script hooks", - "operationId": "postScriptStoreApiRoute", - "parameters": [ - { - "name": "hook", - "in": "path", - "description": "Dynamic hook which used to build the hook name", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Returns different structures of results based on the called script." - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/app-system/{name}/generate-token": { - "post": { - "tags": [ - "App system" - ], - "summary": "Generate JWT token for app system backend", - "description": "Generate JWT token for authenticated communication with the app server", - "operationId": "generateJWTAppSystemAppServer", - "parameters": [ - { - "in": "path", - "name": "name", - "required": true, - "description": "Name of the app", - "schema": { - "type": "string" - } - } - ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "", + "description": "Returns a success response indicating a successful update", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "token": { - "type": "string" - }, - "expires": { - "type": "string", - "format": "date-time" - }, - "shopId": { - "type": "string" - } - } + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -14443,56 +16955,46 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/currency": { + "/account/change-language": { "post": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Profile" ], - "summary": "Fetch currencies", - "description": "Perform a filtered search for currencies.", - "operationId": "readCurrency", + "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 currencies.", + "description": "Returns a success response indicating a successful update", "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Currency" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -14500,65 +17002,56 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/payment-method": { + "/account/change-password": { "post": { "tags": [ - "Payment Method", - "Endpoints supporting Criteria " + "Profile" ], - "summary": "Loads all available payment methods", - "operationId": "readPaymentMethod", + "summary": "Change the customer's password", + "description": "Changes a customer's password using their current password as a validation.", + "operationId": "changePassword", "requestBody": { "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "password", + "newPassword", + "newPasswordConfirm" + ], + "properties": { + "password": { + "description": "Current password of the customer", + "type": "string" }, - { - "properties": { - "onlyAvailable": { - "description": "List only available", - "type": "boolean" - } - }, - "type": "object" + "newPassword": { + "description": "New Password for the customer", + "type": "string" + }, + "newPasswordConfirm": { + "description": "Confirmation of the new password", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "", + "description": "Returns a success response indicating a successful update.", "content": { "application/json": { "schema": { - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PaymentMethod" - } - } - }, - "type": "object" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -14566,37 +17059,38 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/customer-group-registration/config/{customerGroupId}": { - "get": { + "/account/change-payment-method/{paymentMethodId}": { + "post": { "tags": [ - "Login & Registration" + "Profile" ], - "summary": "Fetch registration settings for customer group", - "operationId": "getCustomerGroupRegistrationInfo", + "summary": "Change the customer's default payment method", + "description": "Changes a customer's default (preselected) payment method.", + "operationId": "changePaymentMethod", "parameters": [ { - "name": "customerGroupId", + "name": "paymentMethodId", "in": "path", - "description": "Customer group id", + "description": "Identifier of the desired default payment method", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } } ], "responses": { "200": { - "description": "Returns the customer group including registration settings.", + "description": "Returns a success response indicating a successful update.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerGroup" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -14604,76 +17098,31 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/contact-form": { + "/account/customer-recovery-is-expired": { "post": { "tags": [ - "Content" + "Profile" ], - "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": "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": [ - "salutationId", - "email", - "subject", - "comment" + "hash" ], "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 concact 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", + "hash": { + "description": "Parameter from the link in the confirmation mail sent in Step 1", "type": "string" } }, @@ -14684,7 +17133,36 @@ }, "responses": { "200": { - "description": "Message sent successful." + "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": [ @@ -14694,15 +17172,15 @@ ] } }, - "/salutation": { + "/account/customer": { "post": { "tags": [ - "System & Context", + "Profile", "Endpoints supporting Criteria " ], - "summary": "Fetch salutations", - "description": "Fetches salutations with a criteria obj.", - "operationId": "readSalutation", + "summary": "Get information about current customer", + "description": "Returns information about the current customer.", + "operationId": "readCustomer", "requestBody": { "required": false, "content": { @@ -14719,24 +17197,116 @@ }, "responses": { "200": { - "description": "Entity search result containing salutations.", + "description": "Returns the logged in customer, also for guest sessions. Check for the value of `guest` field to see whether the customer is a guest.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Customer" + } + } + } + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + }, + "delete": { + "tags": [ + "Profile" + ], + "summary": "Delete the customer's profile", + "description": "Deletes a customer profile along with their addresses, wishlists and associated data. Created orders and their payment/shipping information (addresses) and reviews are not deleted.", + "operationId": "deleteCustomer", + "responses": { + "204": { + "description": "Returns a no content response indicating a successful removal of the customer profile" + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/account/address/{addressId}": { + "delete": { + "tags": [ + "Address" + ], + "summary": "Delete an address of a customer", + "description": "Delete an address of customer.\n\n Only addresses which are not set as default addresses for shipping or billing can be deleted. You can check the current default addresses of your customer using the profile information endpoint and change them using the default address endpoint.\n\n **A customer must have at least one address (which can be used for shipping and billing).**\n\n An automatic fallback is not applied.", + "operationId": "deleteCustomerAddress", + "parameters": [ + { + "name": "addressId", + "in": "path", + "description": "ID of the address to be deleted.", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No Content response, when the address has been deleted" + }, + "400": { + "description": "Response containing a list of errors, most likely due to the address being in use" + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + }, + "patch": { + "tags": [ + "Address" + ], + "summary": "Modify an address of a customer", + "description": "Modifies an existing address of a customer.", + "operationId": "updateCustomerAddress", + "parameters": [ + { + "name": "addressId", + "in": "path", + "description": "Address ID", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomerAddressBody" + } + } + } + }, + "responses": { + "200": { + "description": "", "content": { "application/json": { "schema": { "allOf": [ { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Salutation" - } - } - }, - "type": "object" + "$ref": "#/components/schemas/CustomerAddress" }, { - "$ref": "#/components/schemas/EntitySearchResult" + "$ref": "#/components/schemas/CustomerAddressRead" } ] } @@ -14746,43 +17316,45 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/order/state/cancel": { + "/account/list-address": { "post": { "tags": [ - "Order" + "Address", + "Endpoints supporting Criteria " ], - "summary": "Cancel an order", - "description": "Cancels an order. The order state will be set to 'cancelled'.", - "operationId": "cancelOrder", + "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": true, + "required": false, "content": { "application/json": { "schema": { - "properties": { - "orderId": { - "description": "The identifier of the order to be canceled.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Returns the state of the state machine\n\n example: More information about the state machine can be found in the corresponding guide: [Using the state machine](https://developer.shopware.com/docs/guides/plugins/plugins/checkout/order/using-the-state-machine)", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/StateMachineState" + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomerAddress" + } } } } @@ -14790,50 +17362,54 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/order": { + "/account/login": { "post": { "tags": [ - "Order", - "Endpoints supporting Criteria " + "Login & Registration" ], - "summary": "Fetch a list of orders", - "description": "List orders of a customer.", - "operationId": "readOrder", + "summary": "Log in a customer", + "description": "Logs in customers given their credentials.", + "operationId": "loginCustomer", "requestBody": { "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "username", + "password" + ], + "properties": { + "username": { + "description": "Email", + "type": "string" }, - { - "properties": { - "checkPromotion": { - "description": "Check if the payment method of the order is still changeable.", - "type": "boolean" - } - }, - "type": "object" + "password": { + "description": "Password", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "An array of orders and an indicator if the payment of the order can be changed.", + "$ref": "#/components/responses/ContextTokenResponse" + }, + "401": { + "description": "If credentials are incorrect an error is returned", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OrderRouteResponse" + "$ref": "#/components/schemas/failure" } } } @@ -14846,33 +17422,36 @@ ] } }, - "/order/payment": { + "/account/login/imitate-customer": { "post": { "tags": [ - "Order" + "Login & Registration" ], - "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": "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": [ - "paymentMethodId", - "orderId" + "token", + "customerId", + "userId" ], "properties": { - "paymentMethodId": { - "description": "The identifier of the paymentMethod to be set", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "token": { + "description": "Generated customer impersonation token", + "type": "string" }, - "orderId": { - "description": "The identifier of the order.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "customerId": { + "description": "ID of the customer", + "type": "string" + }, + "userId": { + "description": "ID of the user who generated the token", + "type": "string" } }, "type": "object" @@ -14882,11 +17461,14 @@ }, "responses": { "200": { - "description": "Successfully updated the payment method of the order.", + "$ref": "#/components/responses/ContextTokenResponse" + }, + "400": { + "description": "If the token is incorrect an error is returned", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/failure" } } } @@ -14899,102 +17481,71 @@ ] } }, - "/order/download/{orderId}/{downloadId}": { - "get": { + "/account/logout": { + "post": { "tags": [ - "Order" - ], - "summary": "Download a purchased file", - "description": "Download a file included in the given order and with the given id. Access must be granted.", - "operationId": "orderDownloadFile", - "parameters": [ - { - "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}$" - } - } + "Login & Registration" ], + "summary": "Log out a customer", + "description": "Logs out a customer.", + "operationId": "logoutCustomer", "responses": { "200": { - "description": "An arbitrary binary file.", - "content": { - "application/octet-stream": { - "schema": { - "type": "string", - "format": "binary" - } - } - } + "$ref": "#/components/responses/ContextTokenResponse" + }, + "403": { + "$ref": "#/components/responses/403" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/country": { + "/account/register-confirm": { "post": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Login & Registration" ], - "summary": "Fetch countries", - "description": "Perform a filtered search for countries", - "operationId": "readCountry", + "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": "Entity search result containing countries.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Country" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } + "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": [ @@ -15004,86 +17555,99 @@ ] } }, - "/context": { - "get": { - "tags": [ - "System & Context" - ], - "summary": "Fetch the current context", - "description": "Fetches the current context. This includes for example the `customerGroup`, `currency`, `taxRules` and many more.", - "operationId": "readContext", - "responses": { - "200": { - "description": "Returns the current context.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SalesChannelContext" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - }, - "patch": { + "/account/register": { + "post": { "tags": [ - "System & Context" + "Login & Registration" ], - "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", + "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": { - "currencyId": { - "description": "Currency", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "email": { + "description": "Email of the customer. Has to be unique, unless `guest` is `true`", + "type": "string" }, - "languageId": { - "description": "Language", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "password": { + "description": "Password for the customer. Required, unless `guest` is `true`", + "type": "string" }, - "billingAddressId": { - "description": "Billing Address", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "salutationId": { + "description": "Id of the salutation for the customer account. Fetch options using `salutation` endpoint.", + "type": "string" }, - "shippingAddressId": { - "description": "Shipping Address", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "firstName": { + "description": "Customer first name. Value will be reused for shipping and billing address if not provided explicitly.", + "type": "string" }, - "paymentMethodId": { - "description": "Payment Method", + "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" + }, + "accountType": { + "description": "Account type of the customer which can be either `private` or `business`.", "type": "string", - "pattern": "^[0-9a-f]{32}$" + "default": "private" + }, + "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" }, - "shippingMethodId": { - "description": "Shipping Method", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "birthdayYear": { + "description": "Birthday year", + "type": "integer" }, - "countryId": { - "description": "Country", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "title": { + "description": "(Academic) title of the customer", + "type": "string" }, - "countryStateId": { - "description": "Country State", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "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" + ], "type": "object" } } @@ -15091,7 +17655,14 @@ }, "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" + "description": "Success", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Customer" + } + } + } } }, "security": [ @@ -15101,57 +17672,53 @@ ] } }, - "/seo-url": { + "/account/recovery-password-confirm": { "post": { "tags": [ - "Sitemap & Routes", - "Endpoints supporting Criteria " + "Profile" ], - "summary": "Fetch SEO routes", - "description": "Perform a filtered search for seo urls.", - "operationId": "readSeoUrl", + "summary": "Reset a password with recovery credentials", + "description": "This operation is Step 2 of the password reset flow. It is required to conduct Step 1 \"Send a password recovery mail\" in order to obtain the required credentials for this step.Resets a customer's password using credentials from a password recovery mail as a validation.", + "operationId": "recoveryPassword", "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "hash", + "newPassword", + "newPasswordConfirm" + ], + "properties": { + "hash": { + "description": "Parameter from the link in the confirmation mail sent in Step 1", + "type": "string" + }, + "newPassword": { + "description": "New password for the customer", + "type": "string" + }, + "newPasswordConfirm": { + "description": "Confirmation of the new password", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "Entity search result containing seo urls.", + "description": "Returns a success response indicating a successful update.", "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/SuccessResponse" } } } - }, - "404": { - "$ref": "#/components/responses/404" } }, "security": [ @@ -15161,48 +17728,45 @@ ] } }, - "/product-listing/{categoryId}": { + "/account/recovery-password": { "post": { "tags": [ - "Product" - ], - "summary": "Fetch a product listing by category", - "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.", - "operationId": "readProductListing", - "parameters": [ - { - "name": "categoryId", - "in": "path", - "description": "Identifier of a category.", - "required": true, - "schema": { - "type": "string" - } - } + "Profile" ], + "summary": "Send a password recovery mail", + "description": "This operation is Step 1 of the password reset flow. Make sure to implement Step 2 \"Reset password with recovery credentials\" in order to allow for the complete flow in your application. Sends a recovery mail containing a link with credentials that allows a customer to reset their password.", + "operationId": "sendRecoveryMail", "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/ProductListingCriteria" + "required": [ + "email", + "storefrontUrl" + ], + "properties": { + "email": { + "description": "E-Mail address to identify the customer", + "type": "string" }, - { - "$ref": "#/components/schemas/ProductListingFlags" + "storefrontUrl": { + "description": "URL of the storefront to use for the generated reset link. It has to be a domain that is configured in the sales channel domain settings.", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", + "description": "If email corresponds to an existing customer, a mail will be sent out to that customer containing a link assembled using the following schema:\n\nReturns a success indicating a successful initialisation of the reset flow.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -15215,19 +17779,19 @@ ] } }, - "/product/{productId}/cross-selling": { - "post": { + "/account/address/default-shipping/{addressId}": { + "patch": { "tags": [ - "Product" + "Address" ], - "summary": "Fetch cross-selling groups of a product", - "description": "This route is used to load the cross sellings for a product. A product has several cross selling definitions in which several products are linked. The route returns the cross sellings together with the linked products", - "operationId": "readProductCrossSellings", + "summary": "Change a customer's default shipping address", + "description": "Updates the default (preselected) shipping addresses of a customer.", + "operationId": "defaultShippingAddress", "parameters": [ { - "name": "productId", + "name": "addressId", "in": "path", - "description": "Product ID", + "description": "Address ID", "required": true, "schema": { "type": "string" @@ -15236,36 +17800,30 @@ ], "responses": { "200": { - "description": "Found cross sellings", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CrossSellingElementCollection" - } - } - } + "description": "" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/product/{productId}": { - "post": { + "/account/address/default-billing/{addressId}": { + "patch": { "tags": [ - "Product" + "Address" ], - "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", + "summary": "Change a customer's default billing address", + "description": "Updates the default (preselected) billing addresses of a customer.", + "operationId": "defaultBillingAddress", "parameters": [ { - "name": "productId", + "name": "addressId", "in": "path", - "description": "Product ID", + "description": "Address ID", "required": true, "schema": { "type": "string" @@ -15274,134 +17832,46 @@ ], "responses": { "200": { - "description": "Product information along with variant groups and options", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProductDetailResponse" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/product": { - "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", - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "Entity search result containing products", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } + "description": "" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/product/{productId}/reviews": { + "/account/address": { "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" - } - } + "Address" ], + "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/CustomerAddress" } } } }, "responses": { "200": { - "description": "Entity search result containing product reviews", + "description": "", "content": { "application/json": { "schema": { "allOf": [ { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductReview" - } - } - }, - "type": "object" + "$ref": "#/components/schemas/CustomerAddress" }, { - "$ref": "#/components/schemas/EntitySearchResult" + "$ref": "#/components/schemas/CustomerAddressRead" } ] } @@ -15411,71 +17881,77 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/product/{productId}/review": { + "/cms/{id}": { "post": { "tags": [ - "Product" + "Content" ], - "summary": "Save a product review", - "description": "Saves a review for a product. Reviews have to be activated in the settings.", - "operationId": "saveProductReview", + "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": "productId", + "name": "id", "in": "path", - "description": "Identifier of the product which is reviewed.", + "description": "Identifier of the CMS page to be resolved", "required": true, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } ], "requestBody": { "content": { "application/json": { "schema": { - "required": [ - "title", - "content", - "points" - ], - "properties": { - "name": { - "description": "The name of the review author. If not set, the first name of the customer is chosen.", - "type": "string" - }, - "email": { - "description": "The email address of the review author. If not set, the email of the customer is chosen.", - "type": "string" - }, - "title": { - "description": "The title of the review.", - "type": "string" - }, - "content": { - "description": "The content of review.", - "type": "string" + "allOf": [ + { + "properties": { + "slots": { + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", + "type": "string" + } + }, + "type": "object" }, - "points": { - "description": "The review rating for the product.", - "type": "number", - "format": "double" + { + "$ref": "#/components/schemas/ProductListingCriteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Success response indicating the review was saved successfuly." + "description": "The loaded cms page", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CmsPage" + } + } + } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -15485,42 +17961,83 @@ ] } }, - "/product/{productId}/find-variant": { + "/contact-form": { "post": { "tags": [ - "Product" + "Content" ], - "summary": "Search for a matching variant by product options.", - "description": "Performs a search for product variants and returns the best matching variant.", - "operationId": "searchProductVariantIds", + "summary": "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": "productId", - "in": "path", - "description": "Product 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": { "required": [ - "options" + "salutationId", + "email", + "subject", + "comment" ], "properties": { - "options": { - "description": "The options parameter for the variant to find.", - "type": "array", - "items": { - "type": "string" - } + "salutationId": { + "description": "Identifier of the salutation. Use `/api/salutation` endpoint to fetch possible values.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "switchedGroup": { - "description": "The id of the option group that has been switched.", + "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" } }, @@ -15531,14 +18048,7 @@ }, "responses": { "200": { - "description": "Returns an FoundCombination struct containing the ids matching the search.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/FindProductVariantRouteResponse" - } - } - } + "description": "Message sent successful." } }, "security": [ @@ -15548,20 +18058,21 @@ ] } }, - "/country-state/{countryId}": { + "/category": { "post": { "tags": [ - "System & Context", + "Category", "Endpoints supporting Criteria " ], - "summary": "Fetch the states of a country", - "description": "Perform a filtered search the states for a country", - "operationId": "readCountryState", + "summary": "Fetch a list of categories", + "description": "Perform a filtered search for categories.", + "operationId": "readCategoryList", "parameters": [ { - "name": "countryId", - "in": "path", - "required": true, + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" @@ -15584,21 +18095,21 @@ }, "responses": { "200": { - "description": "Entity search result containing countries.", + "description": "Entity search result containing categories.", "content": { "application/json": { "schema": { "allOf": [ { + "type": "object", "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/CountryState" + "$ref": "#/components/schemas/Category" } } - }, - "type": "object" + } }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -15616,19 +18127,39 @@ ] } }, - "/document/download/{documentId}/{deepLinkCode}": { + "/category/{navigationId}": { "post": { "tags": [ - "Document", + "Category", "Endpoints supporting Criteria " ], - "summary": "Download generated document", - "description": "Returns blob file of a generated document to download.", - "operationId": "download", + "summary": "Fetch a single category", + "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.", + "operationId": "readCategory", "parameters": [ { - "name": "documentId", + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "navigationId", "in": "path", + "description": "Identifier of the category to be fetched", "required": true, "schema": { "type": "string", @@ -15636,22 +18167,24 @@ } }, { - "name": "deepLinkCode", - "required": true, - "in": "path", + "name": "slots", + "in": "query", + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", "schema": { "type": "string" } } ], "requestBody": { - "required": false, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Criteria" + }, + { + "$ref": "#/components/schemas/ProductListingCriteria" } ] } @@ -15660,11 +18193,11 @@ }, "responses": { "200": { - "description": "Returns the document information and blob to download.", + "description": "The loaded category with cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Document" + "$ref": "#/components/schemas/Category" } } } @@ -15677,15 +18210,36 @@ ] } }, - "/category": { + "/country-state/{countryId}": { "post": { "tags": [ - "Category", + "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch a list of categories", - "description": "Perform a filtered search for categories.", - "operationId": "readCategoryList", + "summary": "Fetch the states of a country", + "description": "Perform a filtered search the states for a country", + "operationId": "readCountryState", + "parameters": [ + { + "name": "countryId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], "requestBody": { "required": false, "content": { @@ -15702,7 +18256,7 @@ }, "responses": { "200": { - "description": "Entity search result containing categories.", + "description": "Entity search result containing countries.", "content": { "application/json": { "schema": { @@ -15712,7 +18266,7 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Category" + "$ref": "#/components/schemas/CountryState" } } }, @@ -15734,45 +18288,35 @@ ] } }, - "/category/{navigationId}": { + "/country": { "post": { "tags": [ - "Category", + "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch a single category", - "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.", - "operationId": "readCategory", + "summary": "Fetch countries", + "description": "Perform a filtered search for countries", + "operationId": "readCountry", "parameters": [ { - "name": "navigationId", - "in": "path", - "description": "Identifier of the category to be fetched", - "required": true, + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } - }, - { - "name": "slots", - "in": "query", - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", - "schema": { - "type": "string" - } } ], "requestBody": { + "required": false, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Criteria" - }, - { - "$ref": "#/components/schemas/ProductListingCriteria" } ] } @@ -15781,11 +18325,26 @@ }, "responses": { "200": { - "description": "The loaded category with cms page", + "description": "Entity search result containing countries.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Category" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Country" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -15798,16 +18357,36 @@ ] } }, - "/search-suggest": { + "/search": { "post": { "tags": [ "Product" ], - "summary": "Search for products (suggest)", - "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", - "operationId": "searchSuggest", + "summary": "Search for products", + "description": "Performs a search for products which can be used to display a product listing.", + "operationId": "searchPage", + "parameters": [ + { + "name": "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": true, "content": { "application/json": { "schema": { @@ -15824,6 +18403,9 @@ }, "type": "object" }, + { + "$ref": "#/components/schemas/ProductListingCriteria" + }, { "$ref": "#/components/schemas/ProductListingFlags" } @@ -15834,7 +18416,7 @@ }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", + "description": "Returns a product listing containing all products and additional fields to display a listing.", "content": { "application/json": { "schema": { @@ -15851,15 +18433,35 @@ ] } }, - "/language": { + "/shipping-method": { "post": { "tags": [ - "System & Context", + "Payment & Shipping", "Endpoints supporting Criteria " ], - "summary": "Fetch languages", - "description": "Perform a filtered search for languages.", - "operationId": "readLanguages", + "summary": "Fetch shipping methods", + "description": "Perform a filtered search for shipping methods.", + "operationId": "readShippingMethod", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "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": { @@ -15876,17 +18478,25 @@ }, "responses": { "200": { - "description": "Entity search result containing languages.", + "description": "", "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/Language" + "$ref": "#/components/schemas/ShippingMethod" } } }, @@ -15908,116 +18518,59 @@ ] } }, - "/account/newsletter-recipient": { + "/search-suggest": { "post": { "tags": [ - "Profile", - "Newsletter", - "Endpoints supporting Criteria" + "Product" ], - "summary": "Fetch newsletter recipients", - "description": "Perform a filtered search for newsletter recipients.", - "operationId": "readNewsletterRecipient", - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AccountNewsletterRecipientResult" - } - } - } - } - } - }, - "security": [ + "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": [ { - "ApiKey": [] + "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/change-profile": { - "post": { - "tags": [ - "Profile" - ], - "summary": "Change the customer's information", - "description": "Make changes to a customer's account, like changing their name, salutation or title.", - "operationId": "changeProfile", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "salutationId", - "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" - }, - "company": { - "description": "Company of the customer. Only required when `accountType` is `business`.", - "type": "string" - }, - "birthdayDay": { - "description": "Birthday day", - "type": "integer" - }, - "birthdayMonth": { - "description": "Birthday month", - "type": "integer" + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "required": [ + "search" + ], + "properties": { + "search": { + "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", + "type": "string" + } + }, + "type": "object" }, - "birthdayYear": { - "description": "Birthday year", - "type": "integer" + { + "$ref": "#/components/schemas/ProductListingFlags" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Returns a success response indicating a successful update", + "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/SuccessResponse" + "$ref": "#/components/schemas/ProductListingResult" } } } @@ -16030,50 +18583,36 @@ ] } }, - "/account/change-email": { - "post": { + "/sitemap": { + "get": { "tags": [ - "Profile" + "Sitemap & Routes" ], - "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" - } + "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 success response indicating a successful update", + "description": "Returns a list of available sitemaps.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/Sitemap" + } } } } @@ -16086,40 +18625,42 @@ ] } }, - "/account/change-language": { - "post": { + "/customer-group-registration/config/{customerGroupId}": { + "get": { "tags": [ - "Profile" + "Login & Registration" ], - "summary": "Change the customer's language.", - "description": "Changes the language of the logged in customer", - "operationId": "changeLanguage", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "languageId" - ], - "properties": { - "language": { - "description": "New languageId", - "type": "string" - } - }, - "type": "object" - } + "summary": "Fetch registration settings for customer group", + "operationId": "getCustomerGroupRegistrationInfo", + "parameters": [ + { + "name": "customerGroupId", + "in": "path", + "description": "Customer group id", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } - }, + ], "responses": { "200": { - "description": "Returns a success response indicating a successful update", + "description": "Returns the customer group including registration settings.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/CustomerGroup" } } } @@ -16132,50 +18673,81 @@ ] } }, - "/account/change-password": { - "post": { + "/product-export/{accessKey}/{fileName}": { + "get": { "tags": [ - "Profile" + "Product" ], - "summary": "Change the customer's password", - "description": "Changes a customer's password using their current password as a validation.", - "operationId": "changePassword", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "password", - "newPassword", - "newPasswordConfirm" - ], - "properties": { - "password": { - "description": "Current password of the customer", - "type": "string" - }, - "newPassword": { - "description": "New Password for the customer", - "type": "string" - }, - "newPasswordConfirm": { - "description": "Confirmation of the new password", - "type": "string" - } - }, - "type": "object" - } + "summary": "Export product export", + "operationId": "readProductExport", + "parameters": [ + { + "name": "accessKey", + "in": "path", + "description": "Access Key", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "fileName", + "in": "path", + "description": "File Name", + "required": true, + "schema": { + "type": "string" } } + ], + "responses": { + "200": { + "description": "" + } }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/product/{productId}/cross-selling": { + "post": { + "tags": [ + "Product" + ], + "summary": "Fetch cross-selling groups of a product", + "description": "This route is used to load the cross sellings for a product. A product has several cross selling definitions in which several products are linked. The route returns the cross sellings together with the linked products", + "operationId": "readProductCrossSellings", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Product ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "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 success response indicating a successful update.", + "description": "Found cross sellings", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/CrossSellingElementCollection" } } } @@ -16188,32 +18760,66 @@ ] } }, - "/account/change-payment-method/{paymentMethodId}": { + "/product/{productId}": { "post": { "tags": [ - "Profile" + "Product" ], - "summary": "Change the customer's default payment method", - "description": "Changes a customer's default (preselected) payment method.", - "operationId": "changePaymentMethod", + "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": "paymentMethodId", + "name": "productId", "in": "path", - "description": "Identifier of the desired default payment method", + "description": "Product 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}$" + } + }, + { + "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" + } + ] + } + } + } + }, "responses": { "200": { - "description": "Returns a success response indicating a successful update.", + "description": "Product information along with variant groups and options", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/ProductDetailResponse" } } } @@ -16226,40 +18832,63 @@ ] } }, - "/account/customer-recovery-is-expired": { + "/product": { "post": { "tags": [ - "Profile" + "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}$" + } + } ], - "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, + "required": false, "content": { "application/json": { "schema": { - "required": [ - "hash" - ], - "properties": { - "hash": { - "description": "Parameter from the link in the confirmation mail sent in Step 1", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Returns a CustomerRecoveryIsExpiredResponse that indicates if the hash is expired or not.", + "description": "Entity search result containing products", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ArrayStruct" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -16272,15 +18901,36 @@ ] } }, - "/account/customer": { + "/product/{productId}/reviews": { "post": { "tags": [ - "Profile", + "Product", "Endpoints supporting Criteria " ], - "summary": "Get information about current customer", - "description": "Returns information about the current customer.", - "operationId": "readCustomer", + "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}$" + } + } + ], "requestBody": { "required": false, "content": { @@ -16297,11 +18947,26 @@ }, "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": "Entity search result containing product reviews", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Customer" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductReview" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -16312,74 +18977,35 @@ "ApiKey": [] } ] - }, - "delete": { - "tags": [ - "Profile" - ], - "summary": "Delete the customer's profile", - "description": "Deletes a customer profile along with their addresses, wishlists and associated data. Created orders and their payment/shipping information (addresses) and reviews are not deleted.", - "operationId": "deleteCustomer", - "responses": { - "204": { - "description": "Returns a no content response indicating a successful removal of the customer profile" - } - }, - "security": [ - { - "ApiKey": [] - } - ] } }, - "/account/address/{addressId}": { - "delete": { + "/product/{productId}/review": { + "post": { "tags": [ - "Address" + "Product" ], - "summary": "Delete an address of a customer", - "description": "Delete an address of customer.\n\n Only addresses which are not set as default addresses for shipping or billing can be deleted. You can check the current default addresses of your customer using the profile information endpoint and change them using the default address endpoint.\n\n **A customer must have at least one address (which can be used for shipping and billing).**\n\n An automatic fallback is not applied.", - "operationId": "deleteCustomerAddress", + "summary": "Save a product review", + "description": "Saves a review for a product. Reviews have to be activated in the settings.", + "operationId": "saveProductReview", "parameters": [ { - "name": "addressId", + "name": "productId", "in": "path", - "description": "ID of the address to be deleted.", + "description": "Identifier of the product which is reviewed.", "required": true, "schema": { - "type": "string" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } - } - ], - "responses": { - "204": { - "description": "No Content response, when the address has been deleted" }, - "400": { - "description": "Response containing a list of errors, most likely due to the address being in use" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - }, - "patch": { - "tags": [ - "Address" - ], - "summary": "Modify an address of a customer", - "description": "Modifies an existing address of a customer.", - "operationId": "updateCustomerAddress", - "parameters": [ { - "name": "addressId", - "in": "path", - "description": "Address ID", - "required": true, + "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}$" } } ], @@ -16387,63 +19013,113 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerAddress" + "required": [ + "title", + "content", + "points" + ], + "properties": { + "name": { + "description": "The name of the review author. If not set, the first name of the customer is chosen.", + "type": "string" + }, + "email": { + "description": "The email address of the review author. If not set, the email of the customer is chosen.", + "type": "string" + }, + "title": { + "description": "The title of the review.", + "type": "string" + }, + "content": { + "description": "The content of review.", + "type": "string" + }, + "points": { + "description": "The review rating for the product.", + "type": "number", + "format": "double" + } + }, + "type": "object" } } } }, "responses": { "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomerAddress" - } - } - } + "description": "Success response indicating the review was saved successfully." } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/product/{productId}/find-variant": { + "post": { + "tags": [ + "Product" + ], + "summary": "Search for a matching variant by product options.", + "description": "Performs a search for product variants and returns the best matching variant.", + "operationId": "searchProductVariantIds", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Product ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "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/list-address": { - "post": { - "tags": [ - "Address", - "Endpoints supporting Criteria " ], - "summary": "Fetch addresses of a customer", - "description": "Lists all addresses of the current customer and allows filtering them based on a criteria.", - "operationId": "listAddress", "requestBody": { - "required": false, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "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" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "", + "description": "Returns an FoundCombination struct containing the ids matching the search.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CustomerAddress" - } + "$ref": "#/components/schemas/FindProductVariantRouteResponse" } } } @@ -16456,30 +19132,34 @@ ] } }, - "/account/login": { + "/handle-payment": { "post": { "tags": [ - "Login & Registration" + "Payment & Shipping" ], - "summary": "Log in a customer", - "description": "Logs in customers given their credentials.", - "operationId": "loginCustomer", + "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": [ - "username", - "password" + "orderId" ], "properties": { - "username": { - "description": "Email", + "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" }, - "password": { - "description": "Password", + "errorUrl": { + "description": "URL to which the client should be redirected after erroneous payment", "type": "string" } }, @@ -16490,14 +19170,19 @@ }, "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "401": { - "description": "If credentials are incorrect an error is returned", + "description": "Redirect to external payment provider", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/failure" + "type": "object", + "properties": { + "redirectUrl": { + "type": "string" + } + }, + "required": [ + "redirectUrl" + ] } } } @@ -16510,70 +19195,52 @@ ] } }, - "/account/logout": { - "post": { - "tags": [ - "Login & Registration" - ], - "summary": "Log out a customer", - "description": "Logs out a customer.", - "operationId": "logoutCustomer", - "responses": { - "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "403": { - "$ref": "#/components/responses/403" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/account/register-confirm": { + "/media": { "post": { "tags": [ - "Login & Registration" + "Content" ], - "summary": "Confirm a customer registration", - "description": "Confirms a customer registration when double opt-in is activated.\n\nLearn more about double opt-in registration in our guide \"Register a customer\".", - "operationId": "registerConfirm", + "summary": "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": [ - "hash", - "em" - ], "properties": { - "hash": { - "description": "Hash from the email received", - "type": "string" - }, - "em": { - "description": "Email hash from the email received", - "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": { - "description": "Returns the logged in customer. The customer is automatically logged in with the `sw-context-token` header provided, which can be reused for subsequent requests." + "description": "The loaded MediaCollection containing the requested Media Entities.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Media" + } + } + } + } }, "404": { - "description": "No hash provided" - }, - "412": { - "description": "The customer has already been confirmed" + "$ref": "#/components/responses/404" } }, "security": [ @@ -16583,111 +19250,108 @@ ] } }, - "/account/register": { + "/navigation/{activeId}/{rootId}": { "post": { "tags": [ - "Login & Registration" + "Category", + "Endpoints supporting Criteria " ], - "summary": "Register a customer", - "description": "Registers a customer. Used both for normal customers and guest customers.See the Guide \"Register a customer\" for more information on customer registration.", - "operationId": "register", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "email", - "password", - "salutationId", - "firstName", - "lastName", - "acceptedDataProtection", - "storefrontUrl", - "billingAddress" - ], - "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" - }, - "accountType": { - "description": "Account type of the customer which can be either `private` or `business`.", - "type": "string", - "default": "private" - }, - "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" + "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", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "activeId", + "in": "path", + "description": "Identifier of the active category in the navigation tree (if not used, just set to the same as rootId).", + "required": true, + "schema": { + "oneOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "$ref": "#/components/schemas/NavigationType" + } + ] + } + }, + { + "name": "rootId", + "in": "path", + "description": "Identifier of the root category for your desired navigation tree. You can use it to fetch sub-trees of your navigation tree.", + "required": true, + "schema": { + "oneOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "$ref": "#/components/schemas/NavigationType" + } + ] + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" }, - "campaignCode": { - "description": "Field can be used to store a campaign tracking code", - "type": "string" + { + "properties": { + "depth": { + "description": "Determines the depth of fetched navigation levels.", + "type": "integer", + "format": "int32" + }, + "buildTree": { + "description": "Return the categories as a tree or as a flat list.", + "type": "array", + "items": { + "type": "object" + } + } + }, + "type": "object" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Success", + "description": "All available navigations", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Customer" + "$ref": "#/components/schemas/NavigationRouteResponse" } } } @@ -16700,14 +19364,14 @@ ] } }, - "/account/recovery-password-confirm": { + "/newsletter/confirm": { "post": { "tags": [ - "Profile" + "Newsletter" ], - "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", + "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": { @@ -16715,20 +19379,15 @@ "schema": { "required": [ "hash", - "newPassword", - "newPasswordConfirm" + "em" ], "properties": { "hash": { - "description": "Parameter from the link in the confirmation mail sent in Step 1", - "type": "string" - }, - "newPassword": { - "description": "New password for the customer", + "description": "Hash parameter from link the in the confirmation mail", "type": "string" }, - "newPasswordConfirm": { - "description": "Confirmation of the new password", + "em": { + "description": "Email hash parameter from the link in the confirmation mail", "type": "string" } }, @@ -16739,14 +19398,7 @@ }, "responses": { "200": { - "description": "Returns a success response indicating a successful update.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } + "description": "The newsletter confirmation was successful." } }, "security": [ @@ -16756,14 +19408,14 @@ ] } }, - "/account/recovery-password": { + "/newsletter/subscribe": { "post": { "tags": [ - "Profile" + "Newsletter" ], - "summary": "Send a password recovery mail", - "description": "This operation is Step 1 of the password reset flow. Make sure to implement Step 2 \"Reset password with recovery credentials\" in order to allow for the complete flow in your application. Sends a recovery mail containing a link with credentials that allows a customer to reset their password.", - "operationId": "sendRecoveryMail", + "summary": "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": { @@ -16771,15 +19423,58 @@ "schema": { "required": [ "email", + "option", "storefrontUrl" ], "properties": { "email": { - "description": "E-Mail address to identify the customer", + "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 to use for the generated reset link. It has to be a domain that is configured in the sales channel domain settings.", + "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" } }, @@ -16790,14 +19485,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.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } + "description": "Success" } }, "security": [ @@ -16807,28 +19495,36 @@ ] } }, - "/account/address/default-shipping/{addressId}": { - "patch": { + "/newsletter/unsubscribe": { + "post": { "tags": [ - "Address" + "Newsletter" ], - "summary": "Change a customer's default shipping address", - "description": "Updates the default (preselected) shipping addresses of a customer.", - "operationId": "defaultShippingAddress", - "parameters": [ - { - "name": "addressId", - "in": "path", - "description": "Address ID", - "required": true, - "schema": { - "type": "string" + "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": "" + "description": "Unsubscribing was successful." } }, "security": [ @@ -16838,61 +19534,53 @@ ] } }, - "/account/address/default-billing/{addressId}": { - "patch": { + "/order/state/cancel": { + "post": { "tags": [ - "Address" + "Order" ], - "summary": "Change a customer's default billing address", - "description": "Updates the default (preselected) billing addresses of a customer.", - "operationId": "defaultBillingAddress", + "summary": "Cancel an order", + "description": "Cancels an order. The order state will be set to 'cancelled'.", + "operationId": "cancelOrder", "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}$" } } ], - "responses": { - "200": { - "description": "" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/account/address": { - "post": { - "tags": [ - "Address" - ], - "summary": "Create a new address for a customer", - "description": "Creates a new address for a customer.", - "operationId": "createCustomerAddress", "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerAddress" + "properties": { + "orderId": { + "description": "The identifier of the order to be canceled.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "type": "object", + "required": [ + "orderId" + ] } } } }, "responses": { "200": { - "description": "", + "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/CustomerAddress" + "$ref": "#/components/schemas/StateMachineState" } } } @@ -16900,45 +19588,27 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/navigation/{activeId}/{rootId}": { + "/order": { "post": { "tags": [ - "Category", + "Order", "Endpoints supporting Criteria " ], - "summary": "Fetch a navigation menu", - "description": "This endpoint returns categories that can be used as a page navigation. You can either return them as a tree or as a flat list. You can also control the depth of the tree.\n\n Instead of passing uuids, you can also use one of the following aliases for the activeId and rootId parameters to get the respective navigations of your sales channel.\n\n * main-navigation\n * service-navigation\n * footer-navigation", - "operationId": "readNavigation", + "summary": "Fetch a list of orders", + "description": "List orders of a customer.", + "operationId": "readOrder", "parameters": [ { - "name": "sw-include-seo-urls", + "name": "sw-language-id", "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "description": "Instructs Shopware to return the response in the given language.", "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "activeId", - "in": "path", - "description": "Identifier of the active category in the navigation tree (if not used, just set to the same as rootId).", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "rootId", - "in": "path", - "description": "Identifier of the root category for your desired navigation tree. You can use it to fetch sub-trees of your navigation tree.", - "required": true, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" @@ -16956,17 +19626,9 @@ }, { "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" - } + "checkPromotion": { + "description": "Check if the payment method of the order is still changeable.", + "type": "boolean" } }, "type": "object" @@ -16978,11 +19640,11 @@ }, "responses": { "200": { - "description": "All available navigations", + "description": "An array of orders and an indicator if the payment of the order can be changed.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NavigationRouteResponse" + "$ref": "#/components/schemas/OrderRouteResponse" } } } @@ -16990,126 +19652,65 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/product-export/{accessKey}/{fileName}": { - "get": { + "/order/payment": { + "post": { "tags": [ - "Product" + "Order" ], - "summary": "Export product export", - "operationId": "readProductExport", + "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": "accessKey", - "in": "path", - "description": "Access Key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "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" - } - } - ], - "responses": { - "200": { - "description": "" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/checkout/cart": { - "get": { - "tags": [ - "Cart" - ], - "summary": "Fetch or create a cart", - "description": "Used to fetch the current cart or for creating a new one.", - "operationId": "readCart", - "responses": { - "200": { - "description": "Cart", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Cart" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Cart" - ], - "summary": "Delete a cart", - "description": "This route deletes the cart of the customer.", - "operationId": "deleteCart", - "responses": { - "204": { - "description": "Successfully deleted the cart", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } - }, - "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", "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CartItems" + "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": "The updated cart.", + "description": "Successfully updated the payment method of the order.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -17117,74 +19718,58 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] - }, - "delete": { + } + }, + "/order/download/{orderId}/{downloadId}": { + "get": { "tags": [ - "Cart" + "Order" ], - "summary": "Remove items from the cart", - "description": "DEPRECATED: use removeLineItem instead. This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", - "operationId": "removeLineItemDeprecated", - "deprecated": true, + "summary": "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": "ids", - "in": "query", - "description": "A list of product identifiers.", + "name": "orderId", + "in": "path", "required": true, "schema": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "type": "string", + "pattern": "^[0-9a-f]{32}$" } - } - ], - "responses": { - "200": { - "description": "The updated cart.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Cart" - } - } + }, + { + "name": "downloadId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } - } - }, - "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", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CartItems" - } + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } - }, + ], "responses": { "200": { - "description": "The updated cart.", + "description": "An arbitrary binary file.", "content": { - "application/json": { + "application/octet-stream": { "schema": { - "$ref": "#/components/schemas/Cart" + "type": "string", + "format": "binary" } } } @@ -17192,50 +19777,27 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/checkout/cart/line-item/delete": { - "post": { + "/context": { + "get": { "tags": [ - "Cart" + "System & Context" ], - "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", - "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" - } - } - } - }, + "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 updated cart.", + "description": "Returns the current context.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "$ref": "#/components/schemas/SalesChannelContext" } } } @@ -17246,33 +19808,59 @@ "ApiKey": [] } ] - } - }, - "/checkout/order": { - "post": { + }, + "patch": { "tags": [ - "Order" + "System & Context" ], - "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": "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": { - "description": "Contains additional metadata which is stored together with the order. It can also contain payment transaction details.", + "required": true, "content": { "application/json": { "schema": { "properties": { - "customerComment": { - "description": "Adds a comment from the customer to the order.", - "type": "string" + "currencyId": { + "description": "Currency", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "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" + "languageId": { + "description": "Language", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "campaignCode": { - "description": "The campaign code is used to track which action the customer came from. An example could be `Summer-Deals`", - "type": "string" + "billingAddressId": { + "description": "Billing Address", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingAddressId": { + "description": "Shipping Address", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "paymentMethodId": { + "description": "Payment Method", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingMethodId": { + "description": "Shipping Method", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryId": { + "description": "Country", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryStateId": { + "description": "Country State", + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, "type": "object" @@ -17282,14 +19870,7 @@ }, "responses": { "200": { - "description": "Order", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Order" - } - } - } + "$ref": "#/components/responses/ContextTokenResponse" } }, "security": [ @@ -17299,79 +19880,64 @@ ] } }, - "/sitemap": { + "/_info/openapi3.json": { "get": { "tags": [ - "Sitemap & Routes" + "System Info & Health Check" ], - "summary": "Fetch sitemaps", - "description": "Fetches a list of compressed sitemap files, which are often used by search engines.", - "operationId": "readSitemap", - "responses": { - "200": { - "description": "Returns a list of available sitemaps.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Sitemap" - } - } - } + "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" + ] } } - }, - "security": [ - { - "ApiKey": [] + ], + "responses": { + "200": { + "$ref": "#/components/responses/OpenApi3" } - ] + } } }, - "/landing-page/{landingPageId}": { + "/currency": { "post": { "tags": [ - "Content", + "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch a landing page with the resolved CMS page", - "description": "Loads a landing page by its identifier and resolves the CMS page.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.", - "operationId": "readLandingPage", + "summary": "Fetch currencies", + "description": "Perform a filtered search for currencies.", + "operationId": "readCurrency", "parameters": [ { - "name": "landingPageId", - "in": "path", - "description": "Identifier of the landing page.", - "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": 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" - } - ] } ] } @@ -17380,65 +19946,29 @@ }, "responses": { "200": { - "description": "The loaded landing page with cms page", + "description": "Entity search result containing currencies.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LandingPage" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Currency" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } - }, - "404": { - "$ref": "#/components/responses/404" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/handle-payment": { - "post": { - "tags": [ - "Payment & Shipping" - ], - "summary": "Initiate a payment for an order", - "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order.", - "operationId": "handlePaymentMethod", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "orderId" - ], - "properties": { - "orderId": { - "description": "Identifier of an order", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "finishUrl": { - "description": "URL to which the client should be redirected after successful payment", - "type": "string" - }, - "errorUrl": { - "description": "URL to which the client should be redirected after erroneous payment", - "type": "string" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Redirect to external payment provider" } }, "security": [ From 84d37a3a11182ff5d11c90601e410b02e9eacb53 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 27 Sep 2024 09:01:50 +0200 Subject: [PATCH 16/35] [create-pull-request] automated change (#290) Co-authored-by: shopwareBot --- SwagGuidedShopping-storeapi.json | 6797 +++++++++++++++--------------- 1 file changed, 3357 insertions(+), 3440 deletions(-) diff --git a/SwagGuidedShopping-storeapi.json b/SwagGuidedShopping-storeapi.json index bd800f9..24f6fb1 100644 --- a/SwagGuidedShopping-storeapi.json +++ b/SwagGuidedShopping-storeapi.json @@ -3,7 +3,11 @@ "info": { "title": "Shopware Store API", "description": "This endpoint reference contains an overview of all endpoints comprising the Shopware Store API", - "version": "6.5.6.1" + "license": { + "name": "MIT", + "url": "https://github.com/shopware/shopware/blob/trunk/LICENSE" + }, + "version": "6.6.6.1" }, "servers": [ { @@ -603,6 +607,29 @@ }, "type": "object" }, + "AppShippingMethod": { + "description": "Added since version: 6.5.7.0", + "required": [ + "createdAt" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + } + }, + "type": "object" + }, "AppTemplate": { "description": "Added since version: 6.3.1.0", "required": [ @@ -634,6 +661,7 @@ }, { "required": [ + "id", "displayNestedProducts", "type", "productAssignmentType", @@ -862,6 +890,37 @@ }, "type": "object" }, + "tags": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/category/3adbdb3ac060038aa0e6e6c138ef9873/tags" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "tag" + }, + "id": { + "type": "string", + "example": "d57ac45256849d9b13e2422d91580fb9" + } + } + } + } + }, + "type": "object" + }, "cmsPage": { "properties": { "links": { @@ -933,6 +992,12 @@ "Category": { "description": "Added since version: 6.0.0.0", "required": [ + "apiAlias", + "breadcrumb", + "children", + "childCount", + "translated", + "id", "displayNestedProducts", "type", "productAssignmentType", @@ -974,7 +1039,7 @@ "breadcrumb": { "type": "array", "items": { - "type": "object", + "type": "string", "additionalProperties": false }, "readOnly": true @@ -989,7 +1054,7 @@ "readOnly": true }, "childCount": { - "type": "integer", + "type": "number", "format": "int64", "readOnly": true }, @@ -1068,7 +1133,19 @@ "readOnly": true }, "translated": { - "type": "object" + "type": "object", + "additionalProperties": true, + "properties": { + "breadcrumb": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "breadcrumb" + ] }, "parent": { "$ref": "#/components/schemas/Category" @@ -1082,6 +1159,12 @@ "media": { "$ref": "#/components/schemas/Media" }, + "tags": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Tag" + } + }, "cmsPage": { "$ref": "#/components/schemas/CmsPage" }, @@ -1090,6 +1173,12 @@ "items": { "$ref": "#/components/schemas/SeoUrl" } + }, + "apiAlias": { + "type": "string", + "enum": [ + "category" + ] } }, "type": "object" @@ -1097,6 +1186,8 @@ "CmsBlock": { "description": "Added since version: 6.0.0.0", "required": [ + "apiAlias", + "slots", "position", "type", "sectionId", @@ -1192,6 +1283,12 @@ "items": { "$ref": "#/components/schemas/CmsSlot" } + }, + "apiAlias": { + "type": "string", + "enum": [ + "cms_block" + ] } }, "type": "object" @@ -1199,6 +1296,9 @@ "CmsPage": { "description": "Added since version: 6.0.0.0", "required": [ + "apiAlias", + "sections", + "id", "type", "createdAt" ], @@ -1265,6 +1365,12 @@ "items": { "$ref": "#/components/schemas/LandingPage" } + }, + "apiAlias": { + "type": "string", + "enum": [ + "cms_page" + ] } }, "type": "object" @@ -1272,11 +1378,12 @@ "CmsSection": { "description": "Added since version: 6.0.0.0", "required": [ + "apiAlias", + "blocks", "position", "type", "pageId", - "createdAt", - "name" + "createdAt" ], "properties": { "id": { @@ -1290,6 +1397,9 @@ "type": { "type": "string" }, + "name": { + "type": "string" + }, "sizingMode": { "type": "string" }, @@ -1344,9 +1454,6 @@ "format": "date-time", "readOnly": true }, - "translated": { - "type": "object" - }, "page": { "$ref": "#/components/schemas/CmsPage" }, @@ -1358,6 +1465,12 @@ "items": { "$ref": "#/components/schemas/CmsBlock" } + }, + "apiAlias": { + "type": "string", + "enum": [ + "cms_section" + ] } }, "type": "object" @@ -1365,6 +1478,7 @@ "CmsSlot": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "type", "slot", "blockId", @@ -1436,6 +1550,8 @@ }, { "required": [ + "id", + "isEu", "createdAt", "name", "addressFormat" @@ -1540,6 +1656,9 @@ "defaultPostalCodePattern": { "type": "string" }, + "isEu": { + "type": "boolean" + }, "createdAt": { "type": "string", "format": "date-time", @@ -1597,6 +1716,8 @@ "Country": { "description": "Added since version: 6.0.0.0", "required": [ + "id", + "isEu", "createdAt", "name", "addressFormat" @@ -1701,6 +1822,9 @@ "defaultPostalCodePattern": { "type": "string" }, + "isEu": { + "type": "boolean" + }, "createdAt": { "type": "string", "format": "date-time", @@ -1731,6 +1855,7 @@ }, { "required": [ + "id", "countryId", "shortCode", "createdAt", @@ -1782,6 +1907,7 @@ "CountryState": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "countryId", "shortCode", "createdAt", @@ -1836,6 +1962,7 @@ }, { "required": [ + "id", "factor", "symbol", "isoCode", @@ -1882,6 +2009,11 @@ "type": "object" }, "itemRounding": { + "required": [ + "decimals", + "interval", + "roundForNet" + ], "properties": { "decimals": { "type": "integer", @@ -1898,6 +2030,11 @@ "type": "object" }, "totalRounding": { + "required": [ + "decimals", + "interval", + "roundForNet" + ], "properties": { "decimals": { "type": "integer", @@ -1934,6 +2071,7 @@ "Currency": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "factor", "symbol", "isoCode", @@ -1980,6 +2118,11 @@ "type": "object" }, "itemRounding": { + "required": [ + "decimals", + "interval", + "roundForNet" + ], "properties": { "decimals": { "type": "integer", @@ -1996,6 +2139,11 @@ "type": "object" }, "totalRounding": { + "required": [ + "decimals", + "interval", + "roundForNet" + ], "properties": { "decimals": { "type": "integer", @@ -2145,8 +2293,11 @@ "Customer": { "description": "Added since version: 6.0.0.0", "required": [ + "apiAlias", + "activeBillingAddress", + "activeShippingAddress", + "id", "groupId", - "defaultPaymentMethodId", "salesChannelId", "languageId", "defaultBillingAddressId", @@ -2156,6 +2307,7 @@ "lastName", "email", "accountType", + "defaultPaymentMethodId", "createdAt" ], "properties": { @@ -2167,10 +2319,6 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "defaultPaymentMethodId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, "salesChannelId": { "type": "string", "pattern": "^[0-9a-f]{32}$" @@ -2298,6 +2446,10 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "defaultPaymentMethodId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "createdAt": { "type": "string", "format": "date-time", @@ -2311,9 +2463,6 @@ "group": { "$ref": "#/components/schemas/CustomerGroup" }, - "defaultPaymentMethod": { - "$ref": "#/components/schemas/PaymentMethod" - }, "language": { "$ref": "#/components/schemas/Language" }, @@ -2340,6 +2489,21 @@ "items": { "$ref": "#/components/schemas/CustomerAddress" } + }, + "tags": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Tag" + } + }, + "defaultPaymentMethod": { + "$ref": "#/components/schemas/PaymentMethod" + }, + "apiAlias": { + "type": "string", + "enum": [ + "customer" + ] } }, "type": "object" @@ -2347,6 +2511,7 @@ "CustomerAddress": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "customerId", "countryId", "firstName", @@ -2437,6 +2602,8 @@ "CustomerGroup": { "description": "Added since version: 6.0.0.0", "required": [ + "translated", + "id", "createdAt", "name" ], @@ -2480,7 +2647,21 @@ "readOnly": true }, "translated": { - "type": "object" + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "registrationIntroduction": { + "type": "string" + }, + "registrationSeoMetaDescription": { + "type": "string" + }, + "registrationTitle": { + "type": "string" + } + } } }, "type": "object" @@ -2536,6 +2717,7 @@ "CustomerWishlist": { "description": "Added since version: 6.3.4.0", "required": [ + "id", "customerId", "createdAt" ], @@ -2567,6 +2749,7 @@ "CustomerWishlistProduct": { "description": "Added since version: 6.3.4.0", "required": [ + "id", "productId", "createdAt" ], @@ -2599,6 +2782,7 @@ "DeliveryTime": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "name", "min", "max", @@ -2646,6 +2830,7 @@ "Document": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "documentTypeId", "fileType", "orderId", @@ -2682,7 +2867,19 @@ "pattern": "^[0-9a-f]{32}$" }, "config": { - "type": "object" + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "title": { + "type": "string" + } + }, + "required": [ + "name", + "title" + ] }, "sent": { "type": "boolean" @@ -2693,6 +2890,9 @@ "deepLinkCode": { "type": "string" }, + "documentNumber": { + "type": "string" + }, "customFields": { "type": "object" }, @@ -2730,6 +2930,7 @@ "DocumentBaseConfig": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "documentTypeId", "name", "global", @@ -2788,6 +2989,7 @@ "DocumentBaseConfigSalesChannel": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "documentBaseConfigId", "createdAt" ], @@ -2824,6 +3026,7 @@ "DocumentType": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "technicalName", "createdAt", "name" @@ -2927,11 +3130,9 @@ }, "type": "object" }, - "GuidedShoppingAppointment": { + "ImportExportFile": { + "description": "Added since version: 6.0.0.0", "required": [ - "salesChannelDomainId", - "name", - "createdById", "createdAt" ], "properties": { @@ -2939,67 +3140,6 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "presentationId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "guidedShoppingPresentationVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "active": { - "type": "boolean" - }, - "salesChannelDomainId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "accessibleFrom": { - "type": "string", - "format": "date-time" - }, - "accessibleTo": { - "type": "string", - "format": "date-time" - }, - "attendeeRuleIds": { - "type": "object" - }, - "guideUserId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "isPreview": { - "type": "boolean" - }, - "videoAudioSettings": { - "type": "string" - }, - "name": { - "type": "string" - }, - "startedAt": { - "type": "string", - "format": "date-time" - }, - "endedAt": { - "type": "string", - "format": "date-time" - }, - "default": { - "type": "boolean" - }, - "customFields": { - "type": "object" - }, - "createdById": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "updatedById": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, "createdAt": { "type": "string", "format": "date-time", @@ -3009,14 +3149,12 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "videoChat": { - "$ref": "#/components/schemas/GuidedShoppingAppointmentVideoChat" } }, "type": "object" }, - "GuidedShoppingAppointmentAttendee": { + "ImportExportLog": { + "description": "Added since version: 6.0.0.0", "required": [ "createdAt" ], @@ -3025,18 +3163,6 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "attendeeSubmittedAt": { - "type": "string", - "format": "date-time" - }, - "joinedAt": { - "type": "string", - "format": "date-time" - }, - "lastActive": { - "type": "string", - "format": "date-time" - }, "createdAt": { "type": "string", "format": "date-time", @@ -3050,7 +3176,8 @@ }, "type": "object" }, - "GuidedShoppingAppointmentVideoChat": { + "ImportExportProfile": { + "description": "Added since version: 6.0.0.0", "required": [ "createdAt" ], @@ -3059,18 +3186,6 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "name": { - "type": "string" - }, - "url": { - "type": "string" - }, - "startAsBroadcast": { - "type": "boolean" - }, - "customFields": { - "type": "object" - }, "createdAt": { "type": "string", "format": "date-time", @@ -3080,14 +3195,16 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "translated": { + "type": "object" } }, "type": "object" }, - "GuidedShoppingAttendeeProductCollection": { + "Integration": { + "description": "Added since version: 6.0.0.0", "required": [ - "attendeeId", - "productId", "createdAt" ], "properties": { @@ -3095,283 +3212,12 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "attendeeId": { + "createdAt": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time", + "readOnly": true }, - "productId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "GuidedShoppingInteraction": { - "required": [ - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "GuidedShoppingPresentation": { - "required": [ - "createdById", - "createdAt", - "name" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "versionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "active": { - "type": "boolean" - }, - "parentId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "parentVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "name": { - "type": "string" - }, - "customFields": { - "type": "object" - }, - "createdById": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "updatedById": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - }, - "parent": { - "$ref": "#/components/schemas/GuidedShoppingPresentation" - }, - "appointments": { - "type": "array", - "items": { - "$ref": "#/components/schemas/GuidedShoppingAppointment" - } - }, - "cmsPages": { - "type": "array", - "items": { - "$ref": "#/components/schemas/GuidedShoppingPresentationCmsPage" - } - } - }, - "type": "object" - }, - "GuidedShoppingPresentationCmsPage": { - "description": "Added since version: 6.0.0.0", - "required": [ - "presentationId", - "cmsPageId", - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "presentationId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "guidedShoppingPresentationVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "cmsPageId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "cmsPageVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "title": { - "type": "string" - }, - "customFields": { - "type": "object" - }, - "productId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "productStreamId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "pickedProductIds": { - "type": "object" - }, - "position": { - "type": "integer", - "format": "int64" - }, - "isInstantListing": { - "type": "boolean" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - }, - "cmsPage": { - "$ref": "#/components/schemas/CmsPage" - } - }, - "type": "object" - }, - "ImportExportFile": { - "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "ImportExportLog": { - "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - } - }, - "type": "object" - }, - "ImportExportProfile": { - "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "translated": { - "type": "object" - } - }, - "type": "object" - }, - "Integration": { - "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "createdAt": { - "type": "string", - "format": "date-time", - "readOnly": true - }, - "updatedAt": { + "updatedAt": { "type": "string", "format": "date-time", "readOnly": true @@ -3387,6 +3233,7 @@ }, { "required": [ + "id", "createdAt", "name", "url" @@ -3518,6 +3365,8 @@ "LandingPage": { "description": "Added since version: 6.4.0.0", "required": [ + "apiAlias", + "id", "createdAt", "name", "url" @@ -3584,6 +3433,12 @@ "items": { "$ref": "#/components/schemas/SeoUrl" } + }, + "apiAlias": { + "type": "string", + "enum": [ + "landing_page" + ] } }, "type": "object" @@ -3596,6 +3451,7 @@ }, { "required": [ + "id", "localeId", "name", "createdAt" @@ -3764,6 +3620,7 @@ "Language": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "localeId", "name", "createdAt" @@ -3822,6 +3679,7 @@ "Locale": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "code", "createdAt", "name", @@ -3987,6 +3845,7 @@ "MailTemplateMedia": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "mailTemplateId", "languageId", "mediaId" @@ -4021,6 +3880,7 @@ "MailTemplateType": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "technicalName", "createdAt", "name" @@ -4063,6 +3923,7 @@ }, { "required": [ + "id", "productId", "categoryId", "salesChannelId", @@ -4111,6 +3972,7 @@ "MainCategory": { "description": "Added since version: 6.1.0.0", "required": [ + "id", "productId", "categoryId", "salesChannelId", @@ -4157,6 +4019,14 @@ "Media": { "description": "Added since version: 6.0.0.0", "required": [ + "apiAlias", + "fileExtension", + "fileName", + "hasFile", + "path", + "private", + "url", + "id", "createdAt" ], "properties": { @@ -4190,6 +4060,9 @@ "type": "object", "readOnly": true }, + "config": { + "type": "object" + }, "alt": { "type": "string" }, @@ -4200,6 +4073,9 @@ "description": "Runtime field, cannot be used as part of the criteria.", "type": "string" }, + "path": { + "type": "string" + }, "hasFile": { "description": "Runtime field, cannot be used as part of the criteria.", "type": "boolean" @@ -4228,6 +4104,12 @@ "items": { "$ref": "#/components/schemas/MediaThumbnail" } + }, + "apiAlias": { + "type": "string", + "enum": [ + "media" + ] } }, "type": "object" @@ -4332,6 +4214,8 @@ "MediaThumbnail": { "description": "Added since version: 6.0.0.0", "required": [ + "url", + "id", "mediaId", "width", "height", @@ -4360,6 +4244,9 @@ "description": "Runtime field, cannot be used as part of the criteria.", "type": "string" }, + "path": { + "type": "string" + }, "customFields": { "type": "object" }, @@ -4379,6 +4266,7 @@ "MediaThumbnailSize": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "width", "height", "createdAt" @@ -4591,6 +4479,10 @@ "Order": { "description": "Added since version: 6.0.0.0", "required": [ + "documents", + "orderDate", + "stateMachineState", + "id", "billingAddressId", "currencyId", "languageId", @@ -4854,6 +4746,7 @@ "OrderAddress": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "countryId", "firstName", "lastName", @@ -4942,6 +4835,7 @@ "OrderCustomer": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "email", "firstName", "lastName", @@ -5006,6 +4900,7 @@ "OrderDelivery": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "orderId", "shippingOrderAddressId", "shippingMethodId", @@ -5153,6 +5048,7 @@ "OrderDeliveryPosition": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "orderDeliveryId", "orderLineItemId", "createdAt" @@ -5270,6 +5166,8 @@ "OrderLineItem": { "description": "Added since version: 6.0.0.0", "required": [ + "apiAlias", + "id", "orderId", "identifier", "quantity", @@ -5304,6 +5202,10 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "promotionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "parentId": { "type": "string", "pattern": "^[0-9a-f]{32}$" @@ -5330,7 +5232,101 @@ "type": "string" }, "payload": { - "type": "object" + "type": "object", + "properties": { + "categoryIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "customFields": { + "type": "object" + }, + "features": { + "type": "array" + }, + "isCloseout": { + "type": "boolean" + }, + "isNew": { + "type": "boolean" + }, + "manufacturerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "markAsTopseller": { + "type": "boolean" + }, + "optionIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "options": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PropertyGroupOption" + } + }, + "parentId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "productNumber": { + "type": "string" + }, + "propertyIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "purchasePrices": { + "type": "string" + }, + "releaseDate": { + "type": "string", + "format": "date-time" + }, + "stock": { + "type": "integer", + "format": "int64" + }, + "streamIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "tagIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, + "taxId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } }, "good": { "type": "boolean" @@ -5352,7 +5348,8 @@ } }, "priceDefinition": { - "type": "object" + "type": "object", + "$ref": "#/components/schemas/CartPriceQuantity" }, "unitPrice": { "type": "number", @@ -5404,6 +5401,18 @@ "items": { "$ref": "#/components/schemas/OrderLineItem" } + }, + "apiAlias": { + "type": "string", + "enum": [ + "order_line_item" + ] + }, + "extensions": { + "type": "object" + }, + "translated": { + "type": "object" } }, "type": "object" @@ -5411,6 +5420,8 @@ "OrderLineItemDownload": { "description": "Added since version: 6.4.19.0", "required": [ + "media", + "id", "orderLineItemId", "mediaId", "position", @@ -5502,6 +5513,7 @@ "OrderTransaction": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "orderId", "paymentMethodId", "amount", @@ -5586,6 +5598,9 @@ }, "type": "object" }, + "validationData": { + "type": "object" + }, "stateId": { "type": "string", "pattern": "^[0-9a-f]{32}$" @@ -5621,6 +5636,7 @@ "OrderTransactionCapture": { "description": "Added since version: 6.4.12.0", "required": [ + "id", "orderTransactionId", "stateId", "amount", @@ -5738,6 +5754,7 @@ "OrderTransactionCaptureRefund": { "description": "Added since version: 6.4.12.0", "required": [ + "id", "captureId", "stateId", "amount", @@ -5858,6 +5875,7 @@ "OrderTransactionCaptureRefundPosition": { "description": "Added since version: 6.4.12.0", "required": [ + "id", "refundId", "orderLineItemId", "amount", @@ -5985,6 +6003,7 @@ }, { "required": [ + "id", "createdAt", "name" ], @@ -6049,6 +6068,9 @@ "description": "Runtime field, cannot be used as part of the criteria.", "type": "string" }, + "technicalName": { + "type": "string" + }, "createdAt": { "type": "string", "format": "date-time", @@ -6104,6 +6126,7 @@ "PaymentMethod": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "createdAt", "name" ], @@ -6168,6 +6191,9 @@ "description": "Runtime field, cannot be used as part of the criteria.", "type": "string" }, + "technicalName": { + "type": "string" + }, "createdAt": { "type": "string", "format": "date-time", @@ -6222,6 +6248,7 @@ }, { "required": [ + "id", "taxId", "productNumber", "stock", @@ -6277,6 +6304,10 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "canonicalProductVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "cmsPageId": { "type": "string", "pattern": "^[0-9a-f]{32}$" @@ -6302,6 +6333,15 @@ "isCloseout": { "type": "boolean" }, + "availableStock": { + "type": "integer", + "format": "int64", + "readOnly": true + }, + "stock": { + "type": "integer", + "format": "int64" + }, "displayGroup": { "type": "string", "readOnly": true @@ -6395,6 +6435,14 @@ }, "readOnly": true }, + "tagIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, "categoryIds": { "type": "array", "items": { @@ -6444,14 +6492,6 @@ "customFields": { "type": "object" }, - "availableStock": { - "type": "integer", - "format": "int64" - }, - "stock": { - "type": "integer", - "format": "int64" - }, "calculatedPrice": { "type": "object" }, @@ -6490,42 +6530,6 @@ "translated": { "type": "object" }, - "extensions": { - "properties": { - "attendeeProductCollections": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/attendeeProductCollections" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "guided_shopping_attendee_product_collection" - }, - "id": { - "type": "string", - "example": "0a7b3b2f4b81f36910a74f22826f35df" - } - } - } - } - }, - "type": "object" - } - }, - "type": "object" - }, "relationships": { "properties": { "downloads": { @@ -7163,6 +7167,37 @@ }, "type": "object" }, + "tags": { + "properties": { + "links": { + "type": "object", + "properties": { + "related": { + "type": "string", + "format": "uri-reference", + "example": "/product/deb10517653c255364175796ace3553f/tags" + } + } + }, + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "example": "tag" + }, + "id": { + "type": "string", + "example": "d57ac45256849d9b13e2422d91580fb9" + } + } + } + } + }, + "type": "object" + }, "seoCategory": { "properties": { "links": { @@ -7201,8 +7236,13 @@ ] }, "Product": { - "description": "Added since version: 6.0.0.0", + "description": "Represents a product along with detailed information required to display a variant selection.", "required": [ + "apiAlias", + "calculatedPrice", + "calculatedPrices", + "seoCategory", + "id", "taxId", "productNumber", "stock", @@ -7258,6 +7298,10 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "canonicalProductVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "cmsPageId": { "type": "string", "pattern": "^[0-9a-f]{32}$" @@ -7283,6 +7327,15 @@ "isCloseout": { "type": "boolean" }, + "availableStock": { + "type": "integer", + "format": "int64", + "readOnly": true + }, + "stock": { + "type": "integer", + "format": "int64" + }, "displayGroup": { "type": "string", "readOnly": true @@ -7376,6 +7429,14 @@ }, "readOnly": true }, + "tagIds": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "readOnly": true + }, "categoryIds": { "type": "array", "items": { @@ -7425,22 +7486,20 @@ "customFields": { "type": "object" }, - "availableStock": { - "type": "integer", - "format": "int64" - }, - "stock": { - "type": "integer", - "format": "int64" - }, "calculatedPrice": { - "type": "object" + "type": "object", + "$ref": "#/components/schemas/CalculatedPrice" }, "calculatedPrices": { "type": "array", "items": { "type": "object", - "additionalProperties": false + "additionalProperties": false, + "allOf": [ + { + "$ref": "#/components/schemas/CalculatedPrice" + } + ] } }, "calculatedMaxPurchase": { @@ -7449,8 +7508,73 @@ "format": "int64" }, "calculatedCheapestPrice": { - "type": "object" - }, + "type": "object", + "allOf": [ + { + "$ref": "#/components/schemas/CalculatedPrice" + }, + { + "type": "object", + "properties": { + "unitPrice": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "totalPrice": { + "type": "number" + }, + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { + "type": "object", + "properties": { + "price": { + "type": "number" + } + }, + "required": [ + "price" + ], + "nullable": true + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "type": "string", + "format": "", + "nullable": true + }, + "apiAlias": { + "type": "string", + "enum": [ + "calculated_cheapest_price" + ] + } + } + } + ] + }, "isNew": { "description": "Runtime field, cannot be used as part of the criteria.", "type": "boolean" @@ -7471,42 +7595,6 @@ "translated": { "type": "object" }, - "extensions": { - "properties": { - "attendeeProductCollections": { - "properties": { - "links": { - "type": "object", - "properties": { - "related": { - "type": "string", - "format": "uri-reference", - "example": "/product/deb10517653c255364175796ace3553f/attendeeProductCollections" - } - } - }, - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "type": { - "type": "string", - "example": "guided_shopping_attendee_product_collection" - }, - "id": { - "type": "string", - "example": "0a7b3b2f4b81f36910a74f22826f35df" - } - } - } - } - }, - "type": "object" - } - }, - "type": "object" - }, "downloads": { "type": "array", "items": { @@ -7609,8 +7697,29 @@ "$ref": "#/components/schemas/Category" } }, + "tags": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Tag" + } + }, "seoCategory": { "$ref": "#/components/schemas/Category" + }, + "apiAlias": { + "type": "string", + "enum": [ + "product" + ] + }, + "variantListingConfig": { + "nullable": true, + "type": "object", + "properties": { + "displayParent": { + "type": "boolean" + } + } } }, "type": "object" @@ -7618,6 +7727,7 @@ "ProductConfiguratorSetting": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "productId", "optionId", "createdAt" @@ -7676,6 +7786,7 @@ "ProductCrossSelling": { "description": "Added since version: 6.1.0.0", "required": [ + "id", "name", "position", "type", @@ -7751,6 +7862,7 @@ "ProductDownload": { "description": "Added since version: 6.4.19.0", "required": [ + "id", "productId", "mediaId", "createdAt" @@ -7876,6 +7988,7 @@ "ProductManufacturer": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "createdAt", "name" ], @@ -7926,6 +8039,7 @@ "ProductMedia": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "productId", "mediaId", "createdAt" @@ -7970,6 +8084,9 @@ }, "media": { "$ref": "#/components/schemas/Media" + }, + "thumbnails": { + "$ref": "#/components/schemas/MediaThumbnail" } }, "type": "object" @@ -8000,6 +8117,8 @@ "ProductReview": { "description": "Added since version: 6.0.0.0", "required": [ + "points", + "id", "productId", "salesChannelId", "languageId", @@ -8171,6 +8290,7 @@ "ProductStream": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "createdAt", "name" ], @@ -8398,6 +8518,7 @@ "PropertyGroup": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "displayType", "sortingType", "createdAt", @@ -8458,6 +8579,9 @@ "PropertyGroupOption": { "description": "Added since version: 6.0.0.0", "required": [ + "group", + "option", + "id", "groupId", "createdAt", "name" @@ -8506,6 +8630,9 @@ }, "group": { "$ref": "#/components/schemas/PropertyGroup" + }, + "option": { + "type": "string" } }, "type": "object" @@ -8569,6 +8696,7 @@ "SalesChannel": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "languageId", "customerGroupId", "currencyId", @@ -8744,6 +8872,7 @@ "SalesChannelDomain": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "url", "salesChannelId", "languageId", @@ -8838,6 +8967,7 @@ }, { "required": [ + "id", "salutationKey", "createdAt", "displayName", @@ -8881,6 +9011,7 @@ "Salutation": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "salutationKey", "createdAt", "displayName", @@ -8973,6 +9104,7 @@ }, { "required": [ + "id", "languageId", "foreignKey", "routeName", @@ -9015,6 +9147,10 @@ "isDeleted": { "type": "boolean" }, + "error": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "string" + }, "url": { "description": "Runtime field, cannot be used as part of the criteria.", "type": "string" @@ -9022,10 +9158,6 @@ "customFields": { "type": "object" }, - "isValid": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean" - }, "createdAt": { "type": "string", "format": "date-time", @@ -9044,6 +9176,7 @@ "SeoUrl": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "languageId", "foreignKey", "routeName", @@ -9069,7 +9202,12 @@ "pattern": "^[0-9a-f]{32}$" }, "routeName": { - "type": "string" + "type": "string", + "enum": [ + "frontend.navigation.page", + "frontend.landing.page", + "frontend.detail.page" + ] }, "pathInfo": { "type": "string" @@ -9086,6 +9224,10 @@ "isDeleted": { "type": "boolean" }, + "error": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "string" + }, "url": { "description": "Runtime field, cannot be used as part of the criteria.", "type": "string" @@ -9093,10 +9235,6 @@ "customFields": { "type": "object" }, - "isValid": { - "description": "Runtime field, cannot be used as part of the criteria.", - "type": "boolean" - }, "createdAt": { "type": "string", "format": "date-time", @@ -9151,6 +9289,7 @@ }, { "required": [ + "id", "deliveryTimeId", "taxType", "createdAt", @@ -9191,6 +9330,9 @@ "trackingUrl": { "type": "string" }, + "technicalName": { + "type": "string" + }, "createdAt": { "type": "string", "format": "date-time", @@ -9395,6 +9537,7 @@ "ShippingMethod": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "deliveryTimeId", "taxType", "createdAt", @@ -9435,6 +9578,9 @@ "trackingUrl": { "type": "string" }, + "technicalName": { + "type": "string" + }, "createdAt": { "type": "string", "format": "date-time", @@ -9478,6 +9624,7 @@ "ShippingMethodPrice": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "shippingMethodId", "createdAt" ], @@ -9739,6 +9886,7 @@ "SystemConfig": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "configurationKey", "configurationValue", "createdAt" @@ -9782,6 +9930,8 @@ "Tag": { "description": "Added since version: 6.0.0.0", "required": [ + "id", + "name", "createdAt" ], "properties": { @@ -9789,6 +9939,9 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "name": { + "type": "string" + }, "createdAt": { "type": "string", "format": "date-time", @@ -9805,6 +9958,7 @@ "Tax": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "taxRate", "name", "position", @@ -9846,6 +10000,7 @@ "TaxProvider": { "description": "Added since version: 6.5.0.0", "required": [ + "id", "priority", "createdAt", "name" @@ -9944,6 +10099,7 @@ "Theme": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "name", "author", "active", @@ -10017,6 +10173,7 @@ "Unit": { "description": "Added since version: 6.0.0.0", "required": [ + "id", "createdAt", "shortCode", "name" @@ -10189,3276 +10346,3036 @@ }, "type": "object" }, - "DynamicProductPageOpenedPayload": { - "allOf": [ - { - "$ref": "#/components/schemas/AbstractDynamicPageOpenedPayload" - } - ], - "required": [ - "productId" - ], + "AggregationEntity": { + "title": "AggregationEntity", + "type": "object", "properties": { - "productId": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "the id from the product which is shown on the dynamic page" + "enum": [ + "entity" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "definition": { + "description": "The entity definition e.g \"product_manufacturer\".", + "type": "string" } - } + }, + "required": [ + "name", + "type", + "field", + "definition" + ] }, - "AttendeeRespondInvitationResponse": { + "AggregationFilter": { + "title": "AggregationFilter", "type": "object", "properties": { - "appointment": { - "type": "object", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The appointment id" - }, - "accessibleFrom": { - "type": "string", - "format": "date-time", - "description": "The time the client can access the appointment" - }, - "accessibleTo": { - "type": "string", - "format": "date-time", - "description": "The time the appointment will be closed, the client can not access" - }, - "status": { - "anyOf": [ - { - "type": "string", - "enum": [ - "started", - "ended" - ] - }, - { - "type": "null" - } - ], - "description": "The appointment status" - } - } + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "answer": { + "type": { + "description": "The type of aggregation", "type": "string", "enum": [ - "accepted", - "maybe", - "declined" - ], - "description": "The invitation status that client responded to" + "filter" + ] + }, + "filter": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Filters" + } } - } + }, + "required": [ + "name", + "type", + "filter" + ] }, - "PresentationCmsPage": { + "AggregationTerms": { + "title": "AggregationTerms", "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The presentation cms page id" - }, - "title": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "The title of presentation cms page" + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "presentationId": { + "type": { + "description": "The type of aggregation", "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The presentation using this presentation cms page" + "enum": [ + "terms" + ] }, - "guidedShoppingPresentationVersionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "cmsPageId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The CMS page id the presentation using" + "limit": { + "description": "The number of terms to return", + "type": "number" }, - "cmsPage": { - "$ref": "#/components/schemas/CmsPage" + "sort": { + "type": "array", + "description": "Sorting the aggregation result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "AggregationHistogram": { + "title": "AggregationHistogram", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "cmsPageVersionId": { + "type": { + "description": "The type of aggregation", "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The CMS page version id the presentation using" - }, - "productId": { - "anyOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } - ], - "description": "The product id is assigned to presentation if it's product detail" + "enum": [ + "histogram" + ] }, - "productStreamId": { - "anyOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } - ], - "description": "The product stream id is assigned to presentation if it's product listing" + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "pickedProductIds": { - "anyOf": [ - { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Product id" - } - }, - { - "type": "null" - } - ], - "description": "The product id is assigned to presentation if it's product listing or instant listing" + "interval": { + "description": "The interval of the histogram", + "type": "number" }, - "position": { - "type": "integer", - "description": "The position of slide" + "format": { + "description": "The format of the histogram", + "type": "string" }, - "isInstantListing": { - "type": "boolean", - "description": "True if this slide is an instant listing" + "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" }, - "createdAt": { + "type": { + "description": "The type of aggregation", "type": "string", - "format": "date-time" - }, - "updatedAt": { - "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "null" - } + "enum": [ + "range" ] }, - "customFields": { - "anyOf": [ - { - "type": "object" - }, - { - "type": "null" - } - ] + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "translated": { + "ranges": { + "description": "The ranges of the aggregation", + "type": "array", + "items": { + "type": "object", + "anyOf": [ + { + "type": "object", + "title": "From and to", + "properties": { + "from": { + "type": "number", + "description": "The lower bound of the range" + }, + "to": { + "type": "number", + "description": "The upper bound of the range" + } + }, + "required": [ + "from", + "to" + ] + }, + { + "type": "object", + "title": "From only", + "properties": { + "from": { + "type": "string", + "description": "The lower bound of the range" + } + }, + "required": [ + "from" + ] + }, + { + "type": "object", + "title": "To only", + "properties": { + "to": { + "type": "string", + "description": "The upper bound of the range" + } + }, + "required": [ + "to" + ] + } + ] + } + } + }, + "required": [ + "name", + "type", + "field", + "ranges" + ] + }, + "WishlistLoadRouteResponse": { + "type": "object", + "properties": { + "wishlist": { "type": "object", "properties": { - "title": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] + "customerId": { + "type": "string" + }, + "salesChannelId": { + "type": "string" } } + }, + "products": { + "$ref": "#/components/schemas/ProductListingResult" } } }, - "PresentationSlideData": { + "SalesChannelContext": { "type": "object", - "allOf": [ - { + "properties": { + "token": { + "description": "Context the user session", + "type": "string" + }, + "currentCustomerGroup": { + "type": "object", + "description": "Customer group of the current user", "properties": { - "cmsPage": { - "$ref": "#/components/schemas/CmsPage" + "name": { + "type": "string" }, - "extensions": { - "type": "object", - "properties": { - "cmsPageRelation": { - "$ref": "#/components/schemas/PresentationCmsPage" - } - } + "displayGross": { + "type": "boolean" } } - } - ], - "oneOf": [ - { + }, + "fallbackCustomerGroup": { + "description": "Fallback group if the default customer group is not applicable", "type": "object", - "description": "A product result contains product information and product variant/configuration information. It corresponds with presentation product page", "properties": { - "product": { - "$ref": "#/components/schemas/Product" + "name": { + "type": "string" }, - "configurator": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PropertyGroup" - } + "displayGross": { + "type": "boolean" } } }, - { + "currency": { + "$ref": "#/components/schemas/Currency" + }, + "salesChannel": { + "description": "Information about the current sales channel", "type": "object", - "description": "A category result contains category information. It corresponds with a presentation category page", "properties": { - "category": { - "$ref": "#/components/schemas/Category" + "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" + }, + "analyticsId": { + "type": "string" } } }, - { - "type": "null", - "description": "A landing page result contains no specific fields." - } - ], - "example": { - "extensions": { - "cmsPageRelation": { - "translated": { - "title": null - }, - "createdAt": "2023-08-09T11:00:13.160+00:00", - "updatedAt": null, - "presentationId": "506cce706e914c1e8b083f05670d85c4", - "cmsPageId": "33e88c7994fa4cf79a1265e5105b93b2", - "title": null, - "productId": null, - "productStreamId": null, - "position": 2, - "isInstantListing": false, - "cmsPage": { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "name": "Default Guided Shopping product listing page", - "customFields": [] + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "name": "Default Guided Shopping product listing page", - "type": "presentation_product_list", - "entity": null, - "sections": [ - { - "translated": [], - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "default", - "blocks": [ - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": [], - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "product-listing", - "slots": [ - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "config": { - "filters": { - "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", - "source": "static" - }, - "boxLayout": { - "value": "standard", - "source": "static" - }, - "showSorting": { - "value": true, - "source": "static" - }, - "defaultSorting": { - "value": "", - "source": "static" - }, - "useCustomSorting": { - "value": false, - "source": "static" - }, - "availableSortings": { - "value": [], - "source": "static" - }, - "propertyWhitelist": { - "value": [], - "source": "static" - } - }, - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "product-listing", - "slot": "content", - "block": null, - "blockId": "96ea8b9676a5461c9149d205d792ecf2", - "config": { - "filters": { - "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", - "source": "static" - }, - "boxLayout": { - "value": "standard", - "source": "static" - }, - "showSorting": { - "value": true, - "source": "static" - }, - "defaultSorting": { - "value": "", - "source": "static" - }, - "useCustomSorting": { - "value": false, - "source": "static" - }, - "availableSortings": { - "value": [], - "source": "static" - }, - "propertyWhitelist": { - "value": [], - "source": "static" - } - }, - "fieldConfig": null, - "translations": null, - "data": null, - "locked": false, - "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "customFields": null, - "apiAlias": "cms_slot" - } - ], - "sectionId": "2229e1f1208a4b8086baf7aec84f5e2c", - "position": 0, - "name": null, - "sectionPosition": "main", - "marginTop": "20px", - "marginBottom": "20px", - "marginLeft": "20px", - "marginRight": "20px", - "backgroundColor": null, - "backgroundMediaId": null, - "backgroundMedia": null, - "backgroundMediaMode": "cover", - "cssClass": null, - "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": null, - "customFields": null, - "apiAlias": "cms_block" - } - ], - "pageId": "33e88c7994fa4cf79a1265e5105b93b2", - "page": null, - "position": 0, - "sizingMode": "boxed", - "mobileBehavior": "wrap", - "backgroundColor": null, - "backgroundMediaId": null, - "backgroundMedia": null, - "backgroundMediaMode": "cover", - "cssClass": null, - "cmsPageVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": null, - "customFields": null, - "apiAlias": "cms_section" - } - ], - "translations": null, - "cssClass": null, - "config": null, - "previewMediaId": null, - "previewMedia": null, - "landingPages": null, - "id": "33e88c7994fa4cf79a1265e5105b93b2", - "customFields": null, - "apiAlias": "cms_page" - }, - "pickedProductIds": null, - "guidedShoppingPresentationVersionId": "213769ba28dd4ee788bdb49dc9ce53d2", - "id": "4ee08e142ed046eb99681594f67599f1", - "customFields": null, - "cmsPageVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "apiAlias": "guided_shopping_presentation_cms_page" - } - }, - "cmsPage": { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "name": "Default Guided Shopping product listing page", - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "name": "Default Guided Shopping product listing page", - "type": "presentation_product_list", - "entity": null, - "sections": [ - { - "translated": [], - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "default", - "blocks": [ - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": [], - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "product-listing", - "slots": [ - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "config": { - "filters": { - "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", - "source": "static" - }, - "boxLayout": { - "value": "standard", - "source": "static" - }, - "showSorting": { - "value": true, - "source": "static" - }, - "defaultSorting": { - "value": "", - "source": "static" - }, - "useCustomSorting": { - "value": false, - "source": "static" - }, - "availableSortings": { - "value": [], - "source": "static" - }, - "propertyWhitelist": { - "value": [], - "source": "static" - } - }, - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "product-listing", - "slot": "content", - "block": null, - "blockId": "96ea8b9676a5461c9149d205d792ecf2", - "config": { - "filters": { - "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", - "source": "static" - }, - "boxLayout": { - "value": "standard", - "source": "static" - }, - "showSorting": { - "value": true, - "source": "static" - }, - "defaultSorting": { - "value": "", - "source": "static" - }, - "useCustomSorting": { - "value": false, - "source": "static" - }, - "availableSortings": { - "value": [], - "source": "static" - }, - "propertyWhitelist": { - "value": [], - "source": "static" - } - }, - "fieldConfig": null, - "translations": null, - "data": { - "listing": { - "elements": [ - { - "versionId": null, - "translated": [], - "createdAt": null, - "updatedAt": null, - "parentId": null, - "childCount": null, - "taxId": null, - "manufacturerId": null, - "unitId": null, - "active": null, - "displayGroup": null, - "manufacturerNumber": null, - "ean": null, - "sales": null, - "productNumber": null, - "stock": null, - "availableStock": null, - "available": null, - "deliveryTimeId": null, - "deliveryTime": null, - "restockTime": null, - "isCloseout": null, - "purchaseSteps": null, - "maxPurchase": null, - "minPurchase": null, - "purchaseUnit": null, - "referenceUnit": null, - "shippingFree": null, - "markAsTopseller": null, - "weight": null, - "width": null, - "height": null, - "length": null, - "releaseDate": null, - "categoryTree": null, - "streamIds": null, - "optionIds": null, - "propertyIds": null, - "name": null, - "keywords": null, - "description": null, - "metaDescription": null, - "metaTitle": null, - "packUnit": null, - "packUnitPlural": null, - "tax": null, - "manufacturer": null, - "unit": null, - "cover": null, - "parent": null, - "children": null, - "media": null, - "cmsPageId": null, - "cmsPage": null, - "translations": null, - "categories": null, - "properties": null, - "options": null, - "configuratorSettings": null, - "categoriesRo": null, - "coverId": null, - "categoryIds": null, - "productReviews": null, - "ratingAverage": null, - "mainCategories": null, - "seoUrls": null, - "crossSellings": null, - "canonicalProductId": null, - "canonicalProduct": null, - "streams": null, - "downloads": null, - "states": [], - "id": "a32702bb0b1443e3881c3b9a38c09169", - "customFields": null, - "apiAlias": "product" - } - ], - "aggregations": [], - "page": 1, - "limit": null, - "entity": "product", - "total": 0, - "states": [], - "apiAlias": "dal_entity_search_result" - }, - "apiAlias": "cms_product_listing" - }, - "locked": false, - "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "customFields": null, - "apiAlias": "cms_slot" - } - ], - "sectionId": "2229e1f1208a4b8086baf7aec84f5e2c", - "position": 0, - "name": null, - "sectionPosition": "main", - "marginTop": "20px", - "marginBottom": "20px", - "marginLeft": "20px", - "marginRight": "20px", - "backgroundColor": null, - "backgroundMediaId": null, - "backgroundMedia": null, - "backgroundMediaMode": "cover", - "cssClass": null, - "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": null, - "customFields": null, - "apiAlias": "cms_block" - } - ], - "pageId": "33e88c7994fa4cf79a1265e5105b93b2", - "page": null, - "position": 0, - "sizingMode": "boxed", - "mobileBehavior": "wrap", - "backgroundColor": null, - "backgroundMediaId": null, - "backgroundMedia": null, - "backgroundMediaMode": "cover", - "cssClass": null, - "cmsPageVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": null, - "customFields": null, - "apiAlias": "cms_section" + "name": { + "type": "string" + } } - ], - "translations": null, - "cssClass": null, - "config": null, - "previewMediaId": null, - "previewMedia": null, - "landingPages": null, - "id": "33e88c7994fa4cf79a1265e5105b93b2", - "customFields": null, - "apiAlias": "cms_page" - }, - "category": { - "versionId": null, - "translated": { - "breadcrumb": [] - }, - "createdAt": null, - "updatedAt": null, - "afterCategoryId": null, - "parentId": null, - "mediaId": null, - "name": null, - "breadcrumb": [], - "path": null, - "level": null, - "active": null, - "childCount": null, - "visibleChildCount": 0, - "displayNestedProducts": null, - "parent": null, - "children": null, - "translations": null, - "media": null, - "cmsPageId": null, - "cmsPageIdSwitched": false, - "cmsPage": null, - "linkType": null, - "linkNewTab": null, - "internalLink": null, - "externalLink": null, - "visible": null, - "type": null, - "productAssignmentType": null, - "description": null, - "metaTitle": null, - "metaDescription": null, - "keywords": null, - "seoUrls": null, - "customEntityTypeId": null, - "id": "34f21c5eb6d54a939f10973204aa5f08", - "customFields": null, - "apiAlias": "category" - }, - "apiAlias": "pwa_page_result" - } - }, - "UpdateAttendeeRequestBody": { - "type": "object", - "required": [ - "attendeeName", - "videoUserId", - "guideCartPermissionsGranted", - "attendeeSubmitted" - ], - "properties": { - "attendeeName": { - "type": "string", - "description": "Name of the attendee" + } }, - "videoUserId": { - "type": "string", - "description": "Id of the attendee in the video chat tool" + "customer": { + "$ref": "#/components/schemas/Customer" }, - "guideCartPermissionsGranted": { - "type": "boolean", - "description": "The permission for guide cart actions" + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod" }, - "attendeeSubmitted": { - "type": "boolean", - "description": "The first time the attendee submit the update form" - } - } - }, - "ToggleBroadcastModePayload": { - "type": "object", - "required": [ - "active" - ], - "properties": { - "active": { - "type": "boolean", - "description": "Status if the mode is toggled to active or inactive" - } - } - }, - "ProductPayload": { - "type": "object", - "required": [ - "productId" - ], - "properties": { - "productId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "the id from the product which is used in the interaction" - } - } - }, - "AttendeeProductCollectionResponse": { - "type": "object", - "properties": { - "collection": { + "shippingLocation": { "type": "object", - "anyOf": [ - { - "type": "object", - "properties": { - "liked": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Product ids from the collection" - } - } - } + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] }, - { - "type": "object", - "properties": { - "disliked": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Product ids from the collection" - } - } + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + } + } + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + }, + "context": { + "description": "Core context with general configuration values and state", + "type": "object", + "properties": { + "versionId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "currencyFactor": { + "type": "integer" + }, + "currencyPrecision": { + "type": "integer", + "format": "int32" + }, + "languageIdChain": { + "type": "array", + "items": { + "type": "string" } + }, + "scope": { + "type": "string" + }, + "source": { + "type": "string" + }, + "taxState": { + "type": "string" + }, + "useCache": { + "type": "boolean" } - ] - } - }, - "example": { - "collection": { - "liked": [ - "0015b3d83df441e490da7f6880a9c2da", - "60793d25cbab473f92c405ce0525f3ec" - ] + } } } }, - "StateForClients": { + "Sitemap": { "type": "object", "properties": { - "videoClientToken": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] + "filename": { + "type": "string" }, - "hoveredElementId": { - "anyOf": [ - { + "created": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "filename", + "created" + ] + }, + "CartDeliveryPosition": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "format": "date-time" }, - { - "type": "null" + "latest": { + "type": "string", + "format": "date-time" } - ] + } }, - "extensions": { - "type": "array", - "default": [] + "identifier": { + "type": "string" + }, + "lineItem": { + "$ref": "#/components/schemas/LineItem" + }, + "price": { + "$ref": "#/components/schemas/CalculatedPrice" } } }, - "GuideHoveredPayload": { + "CartItems": { "type": "object", "properties": { - "$hoveredElementId": { - "anyOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "the id from the product which is used in the interaction" - }, - { - "type": "null" - } - ] + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } } } }, - "PageViewedPayload": { + "Criteria": { "type": "object", - "required": [ - "pageId", - "sectionId" - ], + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "pageId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "the id from the page which was viewed" + "page": { + "description": "Search result page", + "type": "integer" }, - "sectionId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "the id from the section within the page which was viewed" + "term": { + "description": "Search term", + "type": "string" + }, + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } + }, + "query": { + "type": "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" + } + }, + "associations": { + "type": "array", + "description": "Associations to include. For more information, see [Search Queries > Associations](https://shopware.stoplight.io/docs/store-api/cf710bf73d0cd-search-queries#associations)", + "items": { + "$ref": "#/components/schemas/Association" + } + }, + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + }, + "aggregations": { + "$ref": "#/components/schemas/Aggregations" + }, + "fields": { + "type": "array", + "description": "Fields which should be returned in the search result.", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Include" + } + } + }, + "Association": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Criteria" + } + }, + "Include": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" } } }, - "StateForMe": { + "Aggregations": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" + }, + { + "title": "AggregationEntity", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationEntity" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationFilter", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationFilter" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationTerms", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationRange", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationRange" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + } + ] + } + }, + "SubAggregations": { "type": "object", "properties": { - "attendeeName": { + "aggregation": { "anyOf": [ { - "type": "string" + "$ref": "#/components/schemas/AggregationMetrics" }, { - "type": "null" - } - ] - }, - "guideCartPermissionsGranted": { - "type": "boolean", - "default": null - }, - "attendeeSubmittedAt": { - "anyOf": [ + "$ref": "#/components/schemas/AggregationEntity" + }, { - "type": "string", - "format": "date-time" + "$ref": "#/components/schemas/AggregationFilter" }, { - "type": "null" + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/AggregationRange" } ] - }, - "extensions": { - "type": "array", - "default": [] } } }, - "StateForAll": { + "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": { - "currentGuideProductId": { - "anyOf": [ + "score": { + "type": "number" + }, + "query": { + "oneOf": [ { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "$ref": "#/components/schemas/SimpleFilter" }, { - "type": "null" + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } ] + } + }, + "additionalProperties": true + }, + "Sort": { + "type": "object", + "properties": { + "field": { + "type": "string" }, - "lastActiveGuideSection": { - "anyOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } + "order": { + "type": "string", + "enum": [ + "ASC", + "DESC" ] }, - "currentPageId": { - "anyOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } - ] + "naturalSorting": { + "type": "boolean" }, - "currentSectionId": { - "anyOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } + "type": { + "type": "string" + } + }, + "required": [ + "field", + "order" + ] + }, + "Filters": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "SimpleFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "contains", + "equalsAny", + "prefix", + "suffix" ] }, - "currentSlideAlias": { - "type": "integer", - "default": 0 - }, - "currentDynamicPage": { - "$ref": "#/components/schemas/DynamicPageOpenedPayload" - }, - "started": { - "type": "boolean", - "default": false + "field": { + "type": "string" }, - "running": { - "type": "boolean", - "default": false + "value": { + "type": "string" + } + }, + "required": [ + "type", + "field", + "value" + ] + }, + "EqualsFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "equals" + ] }, - "ended": { - "type": "boolean", - "default": false + "field": { + "type": "string" }, - "startedAt": { - "anyOf": [ + "value": { + "oneOf": [ { - "type": "string", - "format": "date-time" + "type": "string" }, { - "type": "null" - } - ] - }, - "endedAt": { - "anyOf": [ - { - "type": "string", - "format": "date-time" + "type": "number" }, { - "type": "null" - } - ] - }, - "accessibleFrom": { - "anyOf": [ - { - "type": "string", - "format": "date-time" + "type": "boolean" }, { "type": "null" } ] - }, - "accessibleTo": { - "anyOf": [ - { - "type": "string", - "format": "date-time" - }, - { - "type": "null" - } + } + }, + "required": [ + "type", + "field", + "value" + ] + }, + "MultiNotFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "multi", + "not" ] }, - "appointmentMode": { + "operator": { "type": "string", "enum": [ - "guided", - "self" + "AND", + "and", + "OR", + "or" ] }, - "videoAudioSettings": { + "queries": { + "$ref": "#/components/schemas/Filters" + } + }, + "required": [ + "type", + "operator", + "queries" + ] + }, + "RangeFilter": { + "type": "object", + "properties": { + "type": { "type": "string", "enum": [ - "both", - "none", - "audio-only" - ], - "default": "none" + "range" + ] }, - "videoRoomUrl": { - "type": "string", - "default": "" + "field": { + "type": "string" }, - "attendeeRestrictionType": { - "anyOf": [ - { - "type": "string", - "enum": [ - "open", - "customer", - "rules" - ] + "parameters": { + "type": "object", + "properties": { + "gte": { + "type": "number" }, - { - "type": "null" + "gt": { + "type": "number" + }, + "lte": { + "type": "number" + }, + "lt": { + "type": "number" } - ] + } + } + }, + "required": [ + "type", + "field", + "parameters" + ] + }, + "NavigationRouteResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + } + }, + "SuccessResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + } + } + }, + "ProductListingCriteria": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" }, - "productDetailDefaultPageId": { - "anyOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + { + "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" }, - { - "type": "null" + "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.", + "type": "string", + "nullable": true } - ] + } + } + ] + }, + "ProductDetailResponse": { + "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", + "properties": { + "product": { + "$ref": "#/components/schemas/Product" }, - "quickviewPageId": { - "anyOf": [ + "configurator": { + "type": "array", + "description": "List of property groups with their corresponding options and information on how to display them.", + "items": { + "$ref": "#/components/schemas/PropertyGroup" + } + } + }, + "required": [ + "product" + ] + }, + "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": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } + }, + "referencePrice": { + "oneOf": [ { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "$ref": "#/components/schemas/CartPriceReference" }, { "type": "null" } ] }, - "productListingDefaultPageId": { - "anyOf": [ + "listPrice": { + "oneOf": [ { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "$ref": "#/components/schemas/CartListPrice" }, { "type": "null" } ] }, - "allowUserActionsForGuide": { - "type": "boolean", - "default": false - }, - "broadcastMode": { - "type": "boolean", - "default": false - }, - "extensions": { - "type": "array", - "default": [] - } - } - }, - "DynamicPageOpenedPayload": { - "allOf": [ - { - "$ref": "#/components/schemas/AbstractDynamicPageOpenedPayload" - } - ] - }, - "DynamicProductListingPageOpenedPayload": { - "allOf": [ - { - "$ref": "#/components/schemas/AbstractDynamicPageOpenedPayload" - } - ], - "required": [ - "page" - ], - "properties": { - "page": { - "type": "integer", - "description": "Current page position in the pagination" - } - } - }, - "InteractionName": { - "type": "string", - "description": "the name/type of the interaction", - "enum": [ - "product.viewed", - "dynamicPage.opened", - "dynamicProductPage.opened", - "dynamicPage.closed", - "page.viewed", - "attendee.product.collection.liked", - "attendee.product.collection.disliked", - "attendee.product.collection.removed", - "remote.checkout.accepted", - "remote.checkout.declined", - "keep.alive", - "quickview.opened", - "quickview.closed", - "dynamicProductListingPage.opened", - "dynamicProductListingPage.loadedMore", - "remote.checkout.denied", - "guide.hovered", - "broadcastMode.toggled" - ] - }, - "JoinAppointmentResponse": { - "type": "object", - "description": "Includes all data you will need to attend to a appointment.", - "properties": { - "mercureSubscriberTopics": { - "type": "array", - "items": { - "type": "string", - "description": "mercure topic" - }, - "description": "The topics to which the attendee/guide can subscribe for" - }, - "mercurePublisherTopic": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "The topic to which the attendee/guide can send updates" - }, - "JWTMercureSubscriberToken": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "The JWT mercure token to publish updates" + "positionPrice": { + "type": "number" }, - "mercureHubPublicUrl": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "The mercure hub url to connect for subscribing and updating" + "netPrice": { + "type": "number" }, - "JWTMercurePublisherToken": { - "oneOf": [ - { - "type": "string" + "regulationPrice": { + "type": "object", + "properties": { + "price": { + "type": "number" }, - { - "type": "null" + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] } - ], - "description": "The JWT mercure token to subscribe for updates" - }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The appointment id" - }, - "newContextToken": { - "type": "string", - "description": "The new context token will be used in the header (sw-context-token) for calling the other routes" + }, + "nullable": true }, - "attendeeId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The created Id for the attendee" + "hasRange": { + "type": "boolean" }, - "salesChannelId": { + "variantId": { "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The id of the current sales channel" + "format": "^[0-9a-f]{32}$", + "nullable": true }, - "presentationGuideMode": { + "apiAlias": { "type": "string", "enum": [ - "self", - "guided" - ], - "description": "The type of the appointment" + "calculated_price" + ] }, - "isPreview": { - "type": "boolean", - "description": "To see if it's a preview appointment" - } - }, - "example": { - "mercureSubscriberTopics": [ - "gs-guide-actions-2d2c358f1ca04098aacf12873c2eed82", - "gs-presentation-state-for-client-2d2c358f1ca04098aacf12873c2eed82", - "gs-presentation-state-for-all-2d2c358f1ca04098aacf12873c2eed82" - ], - "mercurePublisherTopic": "gs-client-actions-2d2c358f1ca04098aacf12873c2eed82", - "JWTMercureSubscriberToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJtZXJjdXJlIjp7InN1YnNjcmliZSI6WyJncy1ndWlkZS1hY3Rpb25zLTJkMmMzNThmMWNhMDQwOThhYWNmMTI4NzNjMmVlZDgyIiwiZ3MtcHJlc2VudGF0aW9uLXN0YXRlLWZvci1jbGllbnQtMmQyYzM1OGYxY2EwNDA5OGFhY2YxMjg3M2MyZWVkODIiLCJncy1wcmVzZW50YXRpb24tc3RhdGUtZm9yLWFsbC0yZDJjMzU4ZjFjYTA0MDk4YWFjZjEyODczYzJlZWQ4MiJdLCJwdWJsaXNoIjpbXX19.UUkrRCu9PT2FOhkxhWKLo8nUGzwI7l3zqVo74laI-D8", - "mercureHubPublicUrl": "http://localhost:8081/.well-known/mercure", - "JWTMercurePublisherToken": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJtZXJjdXJlIjp7InN1YnNjcmliZSI6W10sInB1Ymxpc2giOlsiZ3MtY2xpZW50LWFjdGlvbnMtMmQyYzM1OGYxY2EwNDA5OGFhY2YxMjg3M2MyZWVkODIiXX19.g5-_JrB2xdeByr40t7XnnK_qxqOclaY5MKBpTytdFmY", - "id": "2d2c358f1ca04098aacf12873c2eed82", - "newContextToken": "VR9yWqI2ovhNpdRFWbbn6Z5Fy4wUmDsm", - "attendeeId": "b6358241e4ad4a4e99d0f729d21d63be", - "salesChannelId": "4a791ec7f9ff46b2ad67ae2f562891d3", - "presentationGuideMode": "guided", - "isPreview": false, - "apiAlias": "swag_guided_shopping_content_appointment_struct_appointment_join_struct" - } - }, - "PresentationStructure": { - "type": "object", - "properties": { - "cmsPageResults": { + "taxRules": { "type": "array", + "description": "Currently active tax rules and/or rates", "items": { "type": "object", "properties": { - "resourceType": { - "type": "string", - "description": "The type of presentation page", - "default": "frontend.presentation.page" - }, - "resourceIdentifier": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The presentation id" + "taxRate": { + "type": "number", + "format": "float" }, - "cmsPage": { - "$ref": "#/components/schemas/CmsPage" + "name": { + "type": "string" } } } - }, - "navigation": { - "type": "array", - "items": { + } + }, + "required": [ + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "referencePrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitPrice", + "positionPrice", + "netPrice", + "taxRules" + ] + }, + "NavigationType": { + "type": "string", + "enum": [ + "main-navigation", + "footer-navigation", + "service-navigation" + ] + }, + "ShippingMethodPageRouteResponse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "deliveryTimeId": { + "type": "string" + }, + "deliveryTime": { "type": "object", "properties": { - "groupName": { - "type": "string", - "description": "The slide name" - }, - "groupId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The presentation CMS page id" - }, - "cmsPageId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The CMS page id" - }, "name": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "description": "The section name" + "type": "string" }, - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "The section id" + "min": { + "type": "integer", + "format": "int32" }, - "index": { + "max": { "type": "integer", - "description": "The slide position" + "format": "int32" }, - "notes": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CmsSlot" - }, - "default": [] + "unit": { + "type": "string" } } - } - } - }, - "example": { - "cmsPageResults": [ - { - "resourceType": "frontend.presentation.page", - "resourceIdentifier": "45a2b8ad0bb544e48f61eab564a2171c", - "cmsPage": { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "name": "Default Guided Shopping product listing page", - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": "2023-08-10T04:30:28.668+00:00", - "name": "Default Guided Shopping product listing page", - "type": "presentation_product_list", - "entity": null, - "sections": [ - { - "extensions": { - "translations": [] - }, - "translated": [], - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": "2023-08-10T04:30:28.668+00:00", - "type": "default", - "blocks": [ - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": [], - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": "2023-08-10T04:30:28.667+00:00", - "type": "product-listing", - "slots": [ - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "config": { - "filters": { - "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", - "source": "static" - }, - "boxLayout": { - "value": "standard", - "source": "static" - }, - "showSorting": { - "value": true, - "source": "static" - }, - "defaultSorting": { - "value": "", - "source": "static" - }, - "useCustomSorting": { - "value": false, - "source": "static" - }, - "availableSortings": { - "value": [], - "source": "static" - }, - "propertyWhitelist": { - "value": [], - "source": "static" - } - }, - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "product-listing", - "slot": "content", - "block": null, - "blockId": "96ea8b9676a5461c9149d205d792ecf2", - "config": { - "filters": { - "value": "manufacturer-filter,rating-filter,price-filter,shipping-free-filter,property-filter", - "source": "static" - }, - "boxLayout": { - "value": "standard", - "source": "static" - }, - "showSorting": { - "value": true, - "source": "static" - }, - "defaultSorting": { - "value": "", - "source": "static" - }, - "useCustomSorting": { - "value": false, - "source": "static" - }, - "availableSortings": { - "value": [], - "source": "static" - }, - "propertyWhitelist": { - "value": [], - "source": "static" - } - }, - "fieldConfig": null, - "translations": null, - "data": null, - "locked": false, - "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "customFields": null, - "apiAlias": "cms_slot" - } - ], - "sectionId": "2229e1f1208a4b8086baf7aec84f5e2c", - "position": 1, - "name": null, - "sectionPosition": "main", - "marginTop": "20px", - "marginBottom": "20px", - "marginLeft": "20px", - "marginRight": "20px", - "backgroundColor": null, - "backgroundMediaId": null, - "backgroundMedia": null, - "backgroundMediaMode": "cover", - "cssClass": null, - "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": { - "mobile": true, - "tablet": true, - "desktop": true - }, - "customFields": null, - "apiAlias": "cms_block" - } - ], - "pageId": "33e88c7994fa4cf79a1265e5105b93b2", - "page": null, - "position": 0, - "sizingMode": "boxed", - "mobileBehavior": "wrap", - "backgroundColor": null, - "backgroundMediaId": null, - "backgroundMedia": null, - "backgroundMediaMode": "cover", - "cssClass": null, - "cmsPageVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": { - "mobile": true, - "tablet": true, - "desktop": true - }, - "customFields": null, - "apiAlias": "cms_section" - } - ], - "translations": null, - "cssClass": null, - "config": null, - "previewMediaId": null, - "previewMedia": null, - "landingPages": null, - "id": "33e88c7994fa4cf79a1265e5105b93b2", - "customFields": null, - "apiAlias": "cms_page" - }, - "apiAlias": "pwa_page_result" }, - { - "resourceType": "frontend.presentation.page", - "resourceIdentifier": "45a2b8ad0bb544e48f61eab564a2171c", - "cmsPage": { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "name": "Default Guided Shopping product detail page", - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "name": "Default Guided Shopping product detail page", - "type": "presentation_product_detail", - "entity": null, - "sections": [ - { - "extensions": { - "translations": [] - }, - "translated": [], - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "default", - "blocks": [ - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": [], - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "product-heading", - "slots": [ - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "config": [], - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "like", - "slot": "right", - "block": null, - "blockId": "c0d3daba2e244122947438c28f776d41", - "config": [], - "fieldConfig": null, - "translations": null, - "data": null, - "locked": false, - "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "customFields": null, - "apiAlias": "cms_slot" - }, - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "config": { - "content": { - "value": "product.name", - "source": "mapped" - }, - "verticalAlign": { - "value": null, - "source": "static" - } - }, - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "product-name", - "slot": "left", - "block": null, - "blockId": "c0d3daba2e244122947438c28f776d41", - "config": { - "content": { - "value": "product.name", - "source": "mapped" - }, - "verticalAlign": { - "value": null, - "source": "static" - } - }, - "fieldConfig": null, - "translations": null, - "data": null, - "locked": false, - "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "customFields": null, - "apiAlias": "cms_slot" - } - ], - "sectionId": "f4aaa27972314e3c9b7f3bb35c7f8a10", - "position": 0, - "name": null, - "sectionPosition": "main", - "marginTop": "0", - "marginBottom": "20px", - "marginLeft": "0", - "marginRight": "0", - "backgroundColor": null, - "backgroundMediaId": null, - "backgroundMedia": null, - "backgroundMediaMode": "cover", - "cssClass": null, - "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": null, - "customFields": null, - "apiAlias": "cms_block" - }, - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": [], - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "image-gallery-big", - "slots": [ - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "config": { - "zoom": { - "value": true, - "source": "static" - }, - "minHeight": { - "value": "430px", - "source": "static" - }, - "fullScreen": { - "value": true, - "source": "static" - }, - "displayMode": { - "value": "contain", - "source": "static" - }, - "sliderItems": { - "value": "product.media", - "source": "mapped" - }, - "bigImageMode": { - "value": true, - "source": "static" - }, - "verticalAlign": { - "value": null, - "source": "static" - }, - "navigationDots": { - "value": "inside", - "source": "static" - }, - "galleryPosition": { - "value": "left", - "source": "static" - }, - "navigationArrows": { - "value": "inside", - "source": "static" - } - }, - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "image-gallery", - "slot": "imageGallery", - "block": null, - "blockId": "47cc4a3919794162982ea83f64a836fe", - "config": { - "zoom": { - "value": true, - "source": "static" - }, - "minHeight": { - "value": "430px", - "source": "static" - }, - "fullScreen": { - "value": true, - "source": "static" - }, - "displayMode": { - "value": "contain", - "source": "static" - }, - "sliderItems": { - "value": "product.media", - "source": "mapped" - }, - "bigImageMode": { - "value": true, - "source": "static" - }, - "verticalAlign": { - "value": null, - "source": "static" - }, - "navigationDots": { - "value": "inside", - "source": "static" - }, - "galleryPosition": { - "value": "left", - "source": "static" - }, - "navigationArrows": { - "value": "inside", - "source": "static" - } - }, - "fieldConfig": null, - "translations": null, - "data": null, - "locked": false, - "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "customFields": null, - "apiAlias": "cms_slot" - } - ], - "sectionId": "f4aaa27972314e3c9b7f3bb35c7f8a10", - "position": 1, - "name": null, - "sectionPosition": "main", - "marginTop": "20px", - "marginBottom": "20px", - "marginLeft": "20px", - "marginRight": "20px", - "backgroundColor": null, - "backgroundMediaId": null, - "backgroundMedia": null, - "backgroundMediaMode": "cover", - "cssClass": null, - "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": null, - "customFields": null, - "apiAlias": "cms_block" - }, - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": [], - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "text-two-column", - "slots": [ - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "config": { - "product": { - "value": null, - "source": "static" - }, - "alignment": { - "value": null, - "source": "static" - } - }, - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "buy-box", - "slot": "right", - "block": null, - "blockId": "095cd9a4eb49493aa95ea1e7a84a9503", - "config": { - "product": { - "value": null, - "source": "static" - }, - "alignment": { - "value": null, - "source": "static" - } - }, - "fieldConfig": null, - "translations": null, - "data": null, - "locked": false, - "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "customFields": null, - "apiAlias": "cms_slot" - }, - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "config": { - "product": { - "value": null, - "source": "static" - }, - "alignment": { - "value": null, - "source": "static" - } - }, - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "product-description-reviews", - "slot": "left", - "block": null, - "blockId": "095cd9a4eb49493aa95ea1e7a84a9503", - "config": { - "product": { - "value": null, - "source": "static" - }, - "alignment": { - "value": null, - "source": "static" - } - }, - "fieldConfig": null, - "translations": null, - "data": null, - "locked": false, - "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "customFields": null, - "apiAlias": "cms_slot" - } - ], - "sectionId": "f4aaa27972314e3c9b7f3bb35c7f8a10", - "position": 2, - "name": null, - "sectionPosition": "main", - "marginTop": "20px", - "marginBottom": "20px", - "marginLeft": "20px", - "marginRight": "20px", - "backgroundColor": null, - "backgroundMediaId": null, - "backgroundMedia": null, - "backgroundMediaMode": "cover", - "cssClass": null, - "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": null, - "customFields": null, - "apiAlias": "cms_block" - }, - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": [], - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "cross-selling", - "slots": [ - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "config": { - "product": { - "value": null, - "source": "static" - }, - "boxLayout": { - "value": "standard", - "source": "static" - }, - "elMinWidth": { - "value": "300px", - "source": "static" - }, - "displayMode": { - "value": "standard", - "source": "static" - } - }, - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "cross-selling", - "slot": "content", - "block": null, - "blockId": "2d69edd4faab493baa056c81ea8d131f", - "config": { - "product": { - "value": null, - "source": "static" - }, - "boxLayout": { - "value": "standard", - "source": "static" - }, - "elMinWidth": { - "value": "300px", - "source": "static" - }, - "displayMode": { - "value": "standard", - "source": "static" - } - }, - "fieldConfig": null, - "translations": null, - "data": null, - "locked": false, - "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "customFields": null, - "apiAlias": "cms_slot" - } - ], - "sectionId": "f4aaa27972314e3c9b7f3bb35c7f8a10", - "position": 3, - "name": null, - "sectionPosition": "main", - "marginTop": "0", - "marginBottom": "0", - "marginLeft": "0", - "marginRight": "0", - "backgroundColor": null, - "backgroundMediaId": null, - "backgroundMedia": null, - "backgroundMediaMode": "cover", - "cssClass": null, - "cmsSectionVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": null, - "customFields": null, - "apiAlias": "cms_block" - } - ], - "pageId": "bea211b5099241719830df8026624f7f", - "page": null, - "position": 0, - "sizingMode": "boxed", - "mobileBehavior": "wrap", - "backgroundColor": null, - "backgroundMediaId": null, - "backgroundMedia": null, - "backgroundMediaMode": "cover", - "cssClass": null, - "cmsPageVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "visibility": null, - "customFields": null, - "apiAlias": "cms_section" + "translations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" } - ], - "translations": null, - "cssClass": null, - "config": null, - "previewMediaId": null, - "previewMedia": null, - "landingPages": null, - "id": "bea211b5099241719830df8026624f7f", - "customFields": null, - "apiAlias": "cms_page" - }, - "apiAlias": "pwa_page_result" + } + } }, - { - "resourceType": "frontend.presentation.page", - "resourceIdentifier": "45a2b8ad0bb544e48f61eab564a2171c", - "cmsPage": { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "name": "Ended presentation page", - "customFields": [] - }, - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "name": "Ended presentation page", - "type": "presentation_product_list", - "entity": null, - "sections": [ - { - "extensions": { - "translations": [] - }, - "translated": [], - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "default", - "blocks": [ - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": [], - "createdAt": "2023-08-03T17:24:09.000+00:00", - "updatedAt": null, - "type": "text-hero", - "slots": [ - { - "versionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "translated": { - "config": { - "content": { - "value": "

The live presentation ended

\n
\n

Thank you for your attention!

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

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

The live presentation ended

\n
\n

Thank you for your attention!

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

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

Lorem Ipsum dolor sit amet

\n

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

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

Lorem Ipsum dolor sit amet

\n

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

", - "source": "static" - }, - "verticalAlign": { - "value": null, - "source": "static" - } + "shippingOrderAddressId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "shippingDateEarliest": { + "type": "string", + "format": "date-time" + }, + "shippingDateLatest": { + "type": "string", + "format": "date-time" }, - "fieldConfig": null, - "translations": null, - "data": null, - "locked": false, - "cmsBlockVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425", - "id": "de28c711c20b4ad0a54871d5a23109fc", - "customFields": null + "stateId": { + "type": "string" + } } - ] - }, - { - "groupName": "Default Guided Shopping product detail page", - "groupId": "52f1e61cd45945a0b72bd613d1268d65", - "cmsPageId": "bea211b5099241719830df8026624f7f", - "name": null, - "id": "f4aaa27972314e3c9b7f3bb35c7f8a10", - "index": 2, - "notes": [] + } }, - { - "groupName": "Ended presentation page", - "groupId": "b073190abe03407993f41b8d5bc8ba57", - "cmsPageId": "8ea80092faa744559409f3e9f7adcc6b", - "name": null, - "id": "0a5e89814463470684a734b975add4ed", - "index": 3, - "notes": [] - } - ], - "apiAlias": "pwa_page_result" - } - }, - "AbstractDynamicPageOpenedPayload": { - "type": "object", - "required": [ - "type" - ], - "properties": { - "type": { - "type": "string", - "description": "The type of the current dynamic page" - }, - "opened": { - "type": "boolean", - "default": true - } - } - }, - "EmptyPayload": { - "type": "object", - "properties": [] + "salesChannelDefaultAssignments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } + } + }, + "salesChannels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } + } + }, + "availabilityRule": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "priority": { + "type": "integer", + "format": "int32" + }, + "invalid": { + "type": "boolean" + } + } + }, + "availabilityRuleId": { + "type": "string" + }, + "prices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "ruleId": { + "type": "string" + }, + "calculation": { + "type": "integer", + "format": "int32" + }, + "quantityStart": { + "type": "number", + "format": "float" + }, + "quantityEnd": { + "type": "number", + "format": "float" + }, + "price": { + "type": "number", + "format": "float" + }, + "calculationRuleId": { + "type": "string" + } + } + } + }, + "mediaId": { + "type": "string" + }, + "media": { + "type": "object", + "properties": { + "userId": { + "type": "string" + }, + "mimeType": { + "type": "string" + }, + "fileExtension": { + "type": "string" + }, + "fileSize": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string" + }, + "metaDataRaw": { + "type": "string" + }, + "mediaTypeRaw": { + "type": "string" + }, + "uploadedAt": { + "type": "string", + "format": "date-time" + }, + "alt": { + "type": "string" + }, + "url": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "mediaFolderId": { + "type": "string" + }, + "private": { + "type": "boolean" + }, + "thumbnailsRo": { + "type": "string" + } + } + }, + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + } + } + } + } }, - "AttendeeProductCollectionLastSeenResponse": { + "FindProductVariantRouteResponse": { "type": "object", "properties": { - "collection": { + "foundCombination": { "type": "object", "properties": { - "lastSeen": { + "variantId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "options": { "type": "array", "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Product ids from the collection" + "type": "string" } } } } - }, - "example": { - "collection": { - "lastSeen": [ - "0015b3d83df441e490da7f6880a9c2da", - "60793d25cbab473f92c405ce0525f3ec" - ] - } } }, - "ClientPresentationStateResponse": { + "ProductListingFlags": { "type": "object", + "description": "Additional flags for product listings", "properties": { - "stateForAll": { - "$ref": "#/components/schemas/StateForAll" - }, - "stateForClients": { - "$ref": "#/components/schemas/StateForClients" - }, - "stateForMe": { - "$ref": "#/components/schemas/StateForMe" - } - }, - "example": { - "stateForAll": { - "currentGuideProductId": null, - "lastActiveGuideSection": null, - "currentPageId": null, - "currentSectionId": null, - "currentSlideAlias": 0, - "currentDynamicPage": null, - "started": false, - "running": false, - "ended": false, - "startedAt": null, - "endedAt": null, - "accessibleFrom": null, - "accessibleTo": null, - "appointmentMode": "guided", - "videoAudioSettings": "both", - "videoRoomUrl": "", - "attendeeRestrictionType": "open", - "productDetailDefaultPageId": "bea211b5099241719830df8026624f7f", - "quickviewPageId": "182d3f7f988044adbba449b70c8bc472", - "productListingDefaultPageId": "33e88c7994fa4cf79a1265e5105b93b2", - "allowUserActionsForGuide": true, - "broadcastMode": false, - "extensions": [] - }, - "stateForClients": { - "videoClientToken": null, - "hoveredElementId": null, - "extensions": [] - }, - "stateForMe": { - "attendeeName": " admin", - "guideCartPermissionsGranted": false, - "attendeeSubmittedAt": null, - "extensions": [] - }, - "apiAlias": "swag_guided_shopping_content_presentation_state_sales_channel_get_get_client_presentation_state_struct" + "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 + } } }, - "CreateInteractionRequestBody": { + "LineItemType": { + "type": "string", + "enum": [ + "product", + "credit", + "custom", + "promotion", + "discount", + "container", + "quantity" + ] + }, + "LineItem": { "type": "object", - "required": [ - "name" - ], "properties": { - "name": { - "$ref": "#/components/schemas/InteractionName" + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + }, + "cover": { + "$ref": "#/components/schemas/ProductMedia" + }, + "dataContextHash": { + "type": "string" + }, + "dataTimestamp": { + "type": "string" + }, + "deliveryInformation": { + "$ref": "#/components/schemas/CartDeliveryInformation" + }, + "description": { + "type": "string" + }, + "good": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "label": { + "type": "string" + }, + "modified": { + "type": "boolean" + }, + "modifiedByApp": { + "type": "boolean" }, "payload": { + "$ref": "#/components/schemas/ProductJsonApi" + }, + "price": { "type": "object", - "oneOf": [ - { - "$ref": "#/components/schemas/ProductPayload" + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] }, - { - "$ref": "#/components/schemas/PageViewedPayload" + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } }, - { - "$ref": "#/components/schemas/EmptyPayload" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] }, - { - "$ref": "#/components/schemas/DynamicPageOpenedPayload" + "quantity": { + "type": "number" }, - { - "$ref": "#/components/schemas/DynamicProductPageOpenedPayload" + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] }, - { - "$ref": "#/components/schemas/DynamicProductListingPageOpenedPayload" + "regulationPrice": { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + }, + "nullable": true }, - { - "$ref": "#/components/schemas/ToggleBroadcastModePayload" + "totalPrice": { + "type": "number" }, - { - "$ref": "#/components/schemas/GuideHoveredPayload" + "unitPrice": { + "type": "number" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } } - ], - "descripton": "depends on the name of the interaction which payload has to be sent" + }, + "required": [ + "apiAlias", + "totalPrice", + "quantity", + "unitPrice" + ] }, - "triggeredAt": { - "type": "string", - "description": "The time when the interaction was triggered", - "default": "now" + "priceDefinition": { + "$ref": "#/components/schemas/CartPriceQuantity" }, - "lifeTimeInSeconds": { - "type": "integer", - "description": "The time in seconds how long the interaction should be stored in the database", - "default": -1 - } - } - } - }, - "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." - } - ] + "quantity": { + "type": "number" + }, + "quantityInformation": { + "type": "object", + "properties": { + "maxPurchase": { + "type": "number" + }, + "minPurchase": { + "type": "number" + }, + "purchaseSteps": { + "type": "number" + } } }, - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "404", - "title": "Not Found", - "description": "Resource with given parameter was not found." - } + "referencedId": { + "type": "string" + }, + "removable": { + "type": "boolean" + }, + "stackable": { + "type": "boolean" + }, + "states": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "is-physical", + "is-download" ] } + }, + "type": { + "$ref": "#/components/schemas/LineItemType" + }, + "uniqueIdentifier": { + "type": "string" } - } + }, + "required": [ + "id", + "type" + ] }, - "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." - } - ] + "CartDelivery": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } } }, - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "403", - "title": "Forbidden", - "description": "This operation is restricted to logged in users." - } - ] + "location": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "state": { + "$ref": "#/components/schemas/CountryState" + } } + }, + "positions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDeliveryPosition" + } + }, + "shippingCosts": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" } } }, - "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." - } - ] - } + "AggregationMetrics": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "401", - "title": "Unauthorized", - "description": "Authorization information is missing or invalid." - } - ] - } + "type": { + "type": "string", + "enum": [ + "avg", + "count", + "max", + "min", + "stats", + "sum" + ] + }, + "field": { + "type": "string" } - } + }, + "required": [ + "name", + "type", + "field" + ] }, - "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." + "OrderRouteResponse": { + "type": "object", + "properties": { + "orders": { + "allOf": [ + { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" } - ] - } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] }, - "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." - } - ] + "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" + ] }, - "204": { - "description": "No Content" - } - }, - "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": { - "/guided-shopping/product-listing": { - "post": { - "tags": [ - "Product" - ], - "summary": "Fetch a product listing by criteria", - "description": "Fetches a product listing for a given criteria. It also provides filters, sortings and property aggregations, analogous to the /product-listing endpoint.", - "operationId": "guidedShoppingProductListing", - "parameters": [], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ], - "anyOf": [ - { + "ProductListingResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EntitySearchResult" + }, + { + "type": "object", + "properties": { + "currentFilters": { + "type": "object", + "description": "Contains the state of the filters. These can be used to create listing filters.", + "properties": { + "navigationId": { + "type": "string" + }, + "manufacturer": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "price": { + "type": "object", "properties": { - "interaction": { - "type": "boolean", - "default": false, - "description": "Load interaction (like & dislike) to product of attendee. It will be added into product extensions named interaction" + "min": { + "type": "integer", + "default": 0 + }, + "max": { + "type": "integer", + "default": 0 } + }, + "required": [ + "min", + "max" + ] + }, + "rating": { + "type": "integer", + "nullable": true + }, + "shipping-free": { + "type": "boolean", + "default": false + }, + "properties": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } + }, + "search": { + "type": "string" } + }, + "required": [ + "manufacturer", + "navigationId", + "price", + "properties", + "rating", + "shipping-free" ] - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { + }, + "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", - "allOf": [ - { + "properties": { + "label": { + "type": "string" + }, + "translated": { + "type": "object", "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } + "label": { + "type": "string" } }, - "type": "object" + "required": [ + "label" + ] }, - { - "$ref": "#/components/schemas/EntitySearchResult" + "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" + ] } - } - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] + }, + "required": [ + "elements", + "availableSortings", + "currentFilters", + "apiAlias" + ] } ] - } - }, - "/guided-shopping/all-product-ids": { - "post": { - "tags": [ - "Product" + }, + "CustomerAddressBody": { + "description": "Added since version: 6.0.0.0", + "required": [ + "countryId", + "firstName", + "lastName", + "city", + "street" ], - "summary": "Fetch product ids by criteria", - "description": "Fetches product ids for a given criteria.", - "operationId": "guidedShoppingLoadAllProductIds", - "parameters": [], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } - } + "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" } }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "total": { - "type": "integer" - }, - "ids": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - }, - "example": { - "total": 2, - "ids": [ - "d6206100ce464bc8b3fe0802f42c01b4", - "52c3a72743e04769b793b71c566cc12b" - ] - } - } - } - } + "type": "object" + }, + "AccountNewsletterRecipient": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": [ + "undefined", + "notSet", + "direct", + "optIn", + "optOut" + ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "account_newsletter_recipient" + ] } }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } + "required": [ + "status", + "apiAlias" ] - } - }, - "/guided-shopping/appointment/presentation": { - "get": { - "tags": [ - "Presentation" - ], - "summary": "Fetch presentation structure and flat navigation", - "description": "Resolves the presentation structure and navigation by using the attendeeContext information. There will be NO Slot-Data inside call store-api.guided-shopping.presentation-data for that", - "operationId": "getPresentationStructure", - "parameters": [], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PresentationStructure" + }, + "CrossSellingElement": { + "type": "object", + "properties": { + "crossSelling": { + "$ref": "#/components/schemas/ProductCrossSelling" + }, + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "streamId": { + "type": "string", + "format": "uuid" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cross_selling_element" + ] + } + }, + "required": [ + "crossSelling", + "products", + "total", + "apiAlias" + ] + }, + "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": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "$ref": "#/components/schemas/CountryState", + "nullable": true + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" + } + }, + "required": [ + "customerId", + "createdAt", + "updatedAt", + "country", + "salutation" + ] + }, + "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" + ] + }, + "EntitySearchResult": { + "type": "object", + "properties": { + "entity": { + "type": "string" + }, + "total": { + "type": "integer", + "description": "The total number of found entities" + }, + "aggregations": { + "type": "array", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", + "items": { + "type": "object" + } + }, + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." + }, + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." + } + } + }, + "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" + } + } + } + } + }, + "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" + } + }, + "deliveries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDelivery" + } + }, + "transactions": { + "description": "A list of all payment transactions associated with the current cart.", + "type": "array", + "items": { + "type": "object", + "properties": { + "paymentMethodId": { + "type": "string" + }, + "amount": { + "$ref": "#/components/schemas/CalculatedPrice" + } + } + } + }, + "modified": { + "type": "boolean" + }, + "customerComment": { + "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 + } + } + }, + "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" + ] + }, + "CartListPrice": { + "type": "object", + "description": "", + "properties": { + "discount": { + "type": "number" + }, + "percentage": { + "type": "number" + }, + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_list_price" + ] + } + }, + "required": [ + "apiAlias" + ] + }, + "CrossSellingElementCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrossSellingElement" + } + }, + "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" + ] + } + }, + "responses": { + "404": { + "description": "Not Found", + "content": { + "application/vnd.api+json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "404", + "title": "Not Found", + "description": "Resource with given parameter was not found." + } + ] + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "404", + "title": "Not Found", + "description": "Resource with given parameter was not found." + } + ] + } + } + } + }, + "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." + } + ] + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "403", + "title": "Forbidden", + "description": "This operation is restricted to logged in users." + } + ] + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/vnd.api+json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "401", + "title": "Unauthorized", + "description": "Authorization information is missing or invalid." + } + ] + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "401", + "title": "Unauthorized", + "description": "Authorization information is missing or invalid." } - } + ] } } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/guided-shopping/appointment/presentation/{presentationCmsPageId}/slide/{sectionId}": { - "get": { - "tags": [ - "Presentation" - ], - "summary": "Fetch resolved data for specific slide", - "description": "Gives the resolved slot-data for the given slide index (slot-config)", - "operationId": "getSlideData", - "parameters": [ - { - "name": "presentationCmsPageId", - "in": "path", - "description": "Presentation CMS page id for which the data is requested", - "required": true, + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/vnd.api+json": { "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "400", + "title": "Bad Request", + "description": "Bad parameters for this endpoint. See documentation for the correct ones." + } + ] } }, - { - "name": "sectionId", - "in": "path", - "description": "CMS section id for which the data is requested", - "required": true, + "application/json": { "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "$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": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/PresentationSlideData" - } - } + } + }, + "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" } } }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/guided-shopping/appointment/presentation/state": { - "get": { - "tags": [ - "Presentation" - ], - "summary": "Get the current presentation state", - "description": "Returns the presentation state for all and the client", - "operationId": "getClientPresentationState", - "parameters": [], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ClientPresentationStateResponse" + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redirectUrl": { + "description": "Define the URL which browser will be redirected to", + "type": "string" } } } } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/guided-shopping/quickview/{productId}/{cmsPageLayoutId}": { - "get": { - "tags": [ - "Presentation" - ], - "summary": "Fetch a cms page for quickview with product data", - "description": "Takes a product identifier and returns the preconfigured quickview CMS layout (defined in SwagGuidedShopping.config.quickviewPageId ) hydrated with the product specific data", - "operationId": "resolveQuickviewPage", - "parameters": [ - { - "name": "productId", - "in": "path", - "description": "The product id", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "cmsPageLayoutId", - "in": "path", - "description": "The cms page id using as product quick view", - "required": true, + } + }, + "OpenApi3": { + "description": "Returns information about the store API.", + "content": { + "application/json": { "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { + "properties": { + "openapi": { + "type": "string" + }, + "info": { "type": "object", "properties": { - "cmsPage": { - "$ref": "#/components/schemas/CmsPage" + "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" + } + } }, - "product": { - "$ref": "#/components/schemas/Product" + "license": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "identifier": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "name" + ] }, - "configurator": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PropertyGroup" + "version": { + "type": "string" + } + }, + "required": [ + "title", + "version" + ] + }, + "jsonSchemaDialect": { + "type": "string" + }, + "webhooks": { + "type": "object" + }, + "servers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" } + }, + "required": [ + "url" + ] + } + }, + "components": { + "type": "object", + "properties": { + "schemas": { + "type": "object" + }, + "responses": { + "type": "object" + }, + "parameters": { + "type": "object" + }, + "examples": { + "type": "object" + }, + "requestBodies": { + "type": "object" + }, + "headers": { + "type": "object" + }, + "securitySchemes": { + "type": "object" + }, + "links": { + "type": "object" + }, + "callbacks": { + "type": "object" + }, + "pathItems": { + "type": "object" } } + }, + "security": { + "type": "array", + "items": { + "type": "object" + } + }, + "paths": { + "type": "object" + }, + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "externalDocs": { + "type": "object", + "properties": { + "description": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "url" + ] + } + }, + "required": [ + "name" + ] + } + }, + "externalDocs": { + "type": "object", + "properties": { + "description": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "url" + ] } - } - } - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/guided-shopping/appointment/{presentationPath}/join-as-client": { - "post": { - "tags": [ - "Appointment" - ], - "summary": "Join a meeting as a attendee", - "description": "Returns the client join appointment response.", - "operationId": "joinAppointmentAsClient", - "parameters": [ - { - "name": "presentationPath", - "in": "path", - "description": "Presentation path", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/JoinAppointmentResponse" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/guided-shopping/appointment/collection/last-seen": { - "get": { - "tags": [ - "Appointment" - ], - "summary": "Get the last seen products for the current attendee", - "description": "Returns the the last seen products for the requesting client", - "operationId": "getLastSeenProducts", - "parameters": [], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AttendeeProductCollectionLastSeenResponse" - } - } + }, + "type": "object", + "required": [ + "openapi", + "info" + ] } } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] + } } }, - "/guided-shopping/appointment/collection/{alias}/{productId}": { - "post": { - "tags": [ - "Appointment" - ], - "summary": "Add a product to the attendee product list", - "description": "Add a product with the alias to the product list of the attendee", - "operationId": "attendeeProductCollectionAddProduct", - "parameters": [ - { - "name": "alias", - "in": "path", - "description": "The alias of collection you want to add", - "required": true, - "schema": { - "type": "string", - "enum": [ - "liked", - "disliked" - ] - } - }, - { - "name": "productId", - "in": "path", - "description": "The product id you want to add", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], - "responses": { - "204": { - "description": "", - "content": [] - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] + "parameters": { + "contentType": { + "name": "Content-Type", + "in": "header", + "description": "Content type of the request", + "required": true, + "schema": { + "type": "string", + "default": "application/json" + } }, - "delete": { - "tags": [ - "Appointment" - ], - "summary": "Remove a product with the alias from the for the attendee product collection", - "description": "Removes the product with the matching alias from of the attendee product collection", - "operationId": "attendeeProductCollectionRemoveProduct", - "parameters": [ - { - "name": "alias", - "in": "path", - "description": "The alias of collection you want to remove", - "required": true, - "schema": { - "type": "string", - "enum": [ - "liked", - "disliked" - ] - } - }, - { - "name": "productId", - "in": "path", - "description": "The product id you want to remove", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], - "responses": { - "204": { - "description": "", - "content": [] - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] + "accept": { + "name": "Accept", + "in": "header", + "description": "Accepted response content types", + "required": true, + "schema": { + "type": "string", + "default": "application/json" + } } }, - "/guided-shopping/appointment/collection/{alias}": { - "get": { - "tags": [ - "Appointment" - ], - "summary": "Get the product ids for the attendee in product collection with the matching alias", - "description": "Returns the product ids for the requesting attendee and matching alias", - "operationId": "getAttendeeProductCollection", - "parameters": [ - { - "name": "alias", - "in": "path", - "description": "The alias of collection you want to get", - "required": true, - "schema": { - "type": "string", - "enum": [ - "liked", - "disliked" - ] - } - } - ], - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AttendeeProductCollectionResponse" - } - } - } - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] + "securitySchemes": { + "ApiKey": { + "type": "apiKey", + "description": "Identifies the sales channel you want to access the API through", + "name": "sw-access-key", + "in": "header" + }, + "ContextToken": { + "type": "apiKey", + "description": "Identifies an anonymous or identified user session", + "name": "sw-context-token", + "in": "header" } - }, - "/guided-shopping/appointment/{appointmentId}/download-ics": { + } + }, + "security": [ + { + "ApiKey": [] + } + ], + "paths": { + "/pwa/page": { "post": { "tags": [ - "Appointment" - ], - "summary": "Get the ics file to import to your calendar", - "description": "Returns the calendar file", - "operationId": "getCalendarFile", - "parameters": [ - { - "name": "appointmentId", - "in": "path", - "description": "The appointment id you want to get the calendar file", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } + "Store API", + "Shopware PWA" ], + "summary": "Resolves a page by its relative `path`. Additional information, like *breadcrumb*, an associated *product* or *category* and the type of resource is fetched along with it.", + "description": "Resolve a page for a given resource and resource identification or path\nFirst, a PageLoaderContext object is assembled, which includes information about the resource, request and context.\nThen, the page is loaded through the page loader only given the page loader context.", + "operationId": "pwaResolvePage", "requestBody": { "required": true, "content": { "application/json": { "schema": { - "required": [ - "token" - ], + "type": "object", "properties": { - "token": { - "description": "The token will be attached to the invitation response link in the invitation mail", + "path": { + "description": "Relative path to the page that should be resolved", "type": "string" } - }, - "type": "object" + } } } } }, "responses": { "200": { - "description": "", + "description": "The resolved page including additional data.", "content": { - "text/calendar": { - "example": "BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:-//GUIDED SHOPPING//Calendar//EN\nCALSCALE:GREGORIAN\nMETHOD:REQUEST\nBEGIN:VTIMEZONE\nTZID:UTC\nBEGIN:STANDARD\nDTSTART:20221016T102853Z\nTZOFFSETFROM:+0000\nTZOFFSETTO:+0000\nEND:STANDARD\nEND:VTIMEZONE\nBEGIN:VEVENT\nUID:95f79a4ecfae4794ae2b65b018330f88@shopware.com\nDTSTAMP:20230713T102853Z\nSUMMARY:test send invitation\nDESCRIPTION:Hello\nLOCATION:https://localhost.test/presentation/95f79a4ecfae47\n 94ae2b65b018330f88\nSTATUS:CANCELLED\nTRANSP:TRANSPARENT\nORGANIZER;CN=Phung Nguyen:MAILTO:p.nguyen@localhost.com\nATTENDEE;CN=p.test;RSVP=TRUE;PARTSTAT=NEEDS-ACTION:MAILTO:p.test@test.\n com\nDTSTART:20230713T121000Z\nDTEND:20230713T123000Z\nEND:VEVENT\nEND:VCALENDAR" - } - } - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/guided-shopping/appointment/{appointmentId}/attendee/respond-invitation": { - "patch": { - "tags": [ - "Appointment" - ], - "summary": "Respond the appointment invitation", - "description": "Returns the appointment invitation status", - "operationId": "attendeeRespondInvitation", - "parameters": [ - { - "name": "appointmentId", - "in": "path", - "description": "The appointment id you respond to", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "token" - ], - "properties": { - "token": { - "description": "The token will be attached to the invitation response link in the invitation mail", - "type": "string" - }, - "invitationStatus": { - "description": "The status you respond to", - "type": "string", - "enum": [ - "accepted", - "maybe", - "declined" - ] - } - }, - "type": "object" + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "resourceIdentifier": { + "type": "string", + "description": "Identifier of the page that was fetched", + "pattern": "^[0-9a-f]{32}$" + }, + "canonicalPathInfo": { + "description": "Hydrated CMS layout associated with the loaded page. Value is `null`, when no layout is assigned", + "$ref": "#/components/schemas/CmsPage" + }, + "breadcrumb": { + "type": "object", + "description": "Contains information about the category path to the loaded page.\nEach element has the category identifier as its key and contains a `path` as well as a `name`. Elements are ordered by descending hierarchy in the category tree.", + "example": { + "2bef17ac2bb54c63a2403bdca434d0df": { + "name": "Shoes, Baby & Health", + "path": "/Shoes-Baby-Health/" + }, + "5ce716877e33420cbe3794f92939de70": { + "name": "Electronics", + "path": "/Shoes-Baby-Health/Electronics/" + } + } + } + } + } + ], + "oneOf": [ + { + "type": "object", + "description": "A product result contains product information and product variant/configuration information. It corresponds with a `resourceType` of `frontend.detail.page", + "properties": { + "resourceType": { + "type": "string", + "description": "Type of page that was fetched. Indicates whether it is a product page or a category page.", + "enum": [ + "frontend.detail.page" + ] + }, + "product": { + "description": "The product associated with the loaded pag.", + "$ref": "#/components/schemas/Product" + }, + "configuration": { + "description": "List of property groups with their corresponding options and information on how to display them.", + "$ref": "#/components/schemas/PropertyGroup" + } + } + }, + { + "type": "object", + "description": "A category result contains category information. It corresponds with a `resourceType` of `frontend.navigation.page`", + "properties": { + "resourceType": { + "type": "string", + "description": "Type of page that was fetched. Indicates whether it is a product page or a category page.", + "enum": [ + "frontend.navigation.page" + ] + }, + "category": { + "description": "The category associated with the loaded page.", + "$ref": "#/components/schemas/Category" + } + } + }, + { + "type": "object", + "description": "A landing page result contains no specific fields.", + "properties": { + "resourceType": { + "type": "string", + "description": "Type of page that was fetched. Indicates whether it is a product page or a category page.", + "enum": [ + "frontend.landing.page" + ] + } + } + } + ] + } } } - } - }, - "responses": { - "200": { - "description": "", + }, + "404": { + "description": "The resource could not be resolved or no path is provided..", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AttendeeRespondInvitationResponse" + "$ref": "#/components/responses/404" } } } } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/guided-shopping/appointment/attendee": { - "patch": { - "tags": [ - "Appointment" - ], - "summary": "Update attendee information", - "description": "Update attendee information", - "operationId": "updateAttendee", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/UpdateAttendeeRequestBody" - } - } - } - }, - "responses": { - "204": { - "description": "" - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/guided-shopping/interaction": { - "post": { - "tags": [ - "Appointment" - ], - "summary": "Add a interaction to log", - "description": "Create a interaction log entry in a specific appointment", - "operationId": "addInteraction", - "parameters": [], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CreateInteractionRequestBody" - } - } - } - }, - "responses": { - "200": { - "description": "" - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] + } } } }, - "tags": [] + "tags": [ + { + "name": "Experimental", + "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" + } + } + ] } From 8ba2984422955f3326178783e3dbf3d91b6236e2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 17 Oct 2024 11:25:09 +0200 Subject: [PATCH 17/35] [create-pull-request] automated change (#300) Co-authored-by: shopwareBot --- SwagGuidedShopping-storeapi.json | 3612 +++++++++++++++--------------- 1 file changed, 1753 insertions(+), 1859 deletions(-) diff --git a/SwagGuidedShopping-storeapi.json b/SwagGuidedShopping-storeapi.json index 24f6fb1..c46d84e 100644 --- a/SwagGuidedShopping-storeapi.json +++ b/SwagGuidedShopping-storeapi.json @@ -7,7 +7,7 @@ "name": "MIT", "url": "https://github.com/shopware/shopware/blob/trunk/LICENSE" }, - "version": "6.6.6.1" + "version": "6.6.7.0" }, "servers": [ { @@ -368,9 +368,6 @@ }, "AclRole": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -392,7 +389,6 @@ "App": { "description": "Added since version: 6.3.1.0", "required": [ - "createdAt", "label" ], "properties": { @@ -419,7 +415,6 @@ "AppActionButton": { "description": "Added since version: 6.3.1.0", "required": [ - "createdAt", "label" ], "properties": { @@ -448,8 +443,7 @@ "required": [ "value", "appId", - "localeId", - "createdAt" + "localeId" ], "properties": { "id": { @@ -483,7 +477,6 @@ "AppCmsBlock": { "description": "Added since version: 6.4.2.0", "required": [ - "createdAt", "label" ], "properties": { @@ -510,7 +503,6 @@ "AppFlowAction": { "description": "Added since version: 6.4.10.0", "required": [ - "createdAt", "label" ], "properties": { @@ -536,9 +528,6 @@ }, "AppFlowEvent": { "description": "Added since version: 6.5.2.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -559,9 +548,6 @@ }, "AppPaymentMethod": { "description": "Added since version: 6.4.1.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -583,7 +569,6 @@ "AppScriptCondition": { "description": "Added since version: 6.4.10.3", "required": [ - "createdAt", "name" ], "properties": { @@ -609,9 +594,6 @@ }, "AppShippingMethod": { "description": "Added since version: 6.5.7.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -632,9 +614,6 @@ }, "AppTemplate": { "description": "Added since version: 6.3.1.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -662,10 +641,6 @@ { "required": [ "id", - "displayNestedProducts", - "type", - "productAssignmentType", - "createdAt", "name" ], "properties": { @@ -998,10 +973,6 @@ "childCount", "translated", "id", - "displayNestedProducts", - "type", - "productAssignmentType", - "createdAt", "name" ], "properties": { @@ -1190,8 +1161,7 @@ "slots", "position", "type", - "sectionId", - "createdAt" + "sectionId" ], "properties": { "id": { @@ -1299,8 +1269,7 @@ "apiAlias", "sections", "id", - "type", - "createdAt" + "type" ], "properties": { "id": { @@ -1382,8 +1351,7 @@ "blocks", "position", "type", - "pageId", - "createdAt" + "pageId" ], "properties": { "id": { @@ -1481,8 +1449,7 @@ "id", "type", "slot", - "blockId", - "createdAt" + "blockId" ], "properties": { "id": { @@ -1551,8 +1518,6 @@ { "required": [ "id", - "isEu", - "createdAt", "name", "addressFormat" ], @@ -1717,8 +1682,6 @@ "description": "Added since version: 6.0.0.0", "required": [ "id", - "isEu", - "createdAt", "name", "addressFormat" ], @@ -1858,7 +1821,6 @@ "id", "countryId", "shortCode", - "createdAt", "name" ], "properties": { @@ -1910,7 +1872,6 @@ "id", "countryId", "shortCode", - "createdAt", "name" ], "properties": { @@ -1968,7 +1929,6 @@ "isoCode", "itemRounding", "totalRounding", - "createdAt", "shortName", "name" ], @@ -2077,7 +2037,6 @@ "isoCode", "itemRounding", "totalRounding", - "createdAt", "shortName", "name" ], @@ -2177,9 +2136,6 @@ }, "CurrencyCountryRounding": { "description": "Added since version: 6.4.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -2200,9 +2156,6 @@ }, "CustomEntity": { "description": "Added since version: 6.4.9.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -2223,9 +2176,6 @@ }, "CustomField": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -2246,9 +2196,6 @@ }, "CustomFieldSet": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -2269,9 +2216,6 @@ }, "CustomFieldSetRelation": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -2306,9 +2250,7 @@ "firstName", "lastName", "email", - "accountType", - "defaultPaymentMethodId", - "createdAt" + "defaultPaymentMethodId" ], "properties": { "id": { @@ -2517,8 +2459,7 @@ "firstName", "lastName", "city", - "street", - "createdAt" + "street" ], "properties": { "id": { @@ -2604,7 +2545,6 @@ "required": [ "translated", "id", - "createdAt", "name" ], "properties": { @@ -2668,9 +2608,6 @@ }, "CustomerRecovery": { "description": "Added since version: 6.1.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -2718,8 +2655,7 @@ "description": "Added since version: 6.3.4.0", "required": [ "id", - "customerId", - "createdAt" + "customerId" ], "properties": { "id": { @@ -2750,8 +2686,7 @@ "description": "Added since version: 6.3.4.0", "required": [ "id", - "productId", - "createdAt" + "productId" ], "properties": { "id": { @@ -2786,8 +2721,7 @@ "name", "min", "max", - "unit", - "createdAt" + "unit" ], "properties": { "id": { @@ -2835,8 +2769,7 @@ "fileType", "orderId", "config", - "deepLinkCode", - "createdAt" + "deepLinkCode" ], "properties": { "id": { @@ -2932,9 +2865,7 @@ "required": [ "id", "documentTypeId", - "name", - "global", - "createdAt" + "name" ], "properties": { "id": { @@ -2990,8 +2921,7 @@ "description": "Added since version: 6.0.0.0", "required": [ "id", - "documentBaseConfigId", - "createdAt" + "documentBaseConfigId" ], "properties": { "id": { @@ -3028,7 +2958,6 @@ "required": [ "id", "technicalName", - "createdAt", "name" ], "properties": { @@ -3063,9 +2992,6 @@ }, "Flow": { "description": "Added since version: 6.4.6.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -3086,9 +3012,6 @@ }, "FlowSequence": { "description": "Added since version: 6.4.6.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -3109,9 +3032,6 @@ }, "FlowTemplate": { "description": "Added since version: 6.4.18.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -3132,9 +3052,6 @@ }, "ImportExportFile": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -3155,9 +3072,6 @@ }, "ImportExportLog": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -3178,9 +3092,6 @@ }, "ImportExportProfile": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -3204,9 +3115,6 @@ }, "Integration": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -3234,7 +3142,6 @@ { "required": [ "id", - "createdAt", "name", "url" ], @@ -3367,7 +3274,6 @@ "required": [ "apiAlias", "id", - "createdAt", "name", "url" ], @@ -3453,8 +3359,7 @@ "required": [ "id", "localeId", - "name", - "createdAt" + "name" ], "properties": { "id": { @@ -3622,8 +3527,7 @@ "required": [ "id", "localeId", - "name", - "createdAt" + "name" ], "properties": { "id": { @@ -3681,7 +3585,6 @@ "required": [ "id", "code", - "createdAt", "name", "territory" ], @@ -3720,9 +3623,6 @@ }, "LogEntry": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -3744,7 +3644,6 @@ "MailHeaderFooter": { "description": "Added since version: 6.0.0.0", "required": [ - "createdAt", "name" ], "properties": { @@ -3792,7 +3691,6 @@ "MailTemplate": { "description": "Added since version: 6.0.0.0", "required": [ - "createdAt", "subject", "contentHtml", "contentPlain" @@ -3882,7 +3780,6 @@ "required": [ "id", "technicalName", - "createdAt", "name" ], "properties": { @@ -3926,8 +3823,7 @@ "id", "productId", "categoryId", - "salesChannelId", - "createdAt" + "salesChannelId" ], "properties": { "id": { @@ -3975,8 +3871,7 @@ "id", "productId", "categoryId", - "salesChannelId", - "createdAt" + "salesChannelId" ], "properties": { "id": { @@ -4026,8 +3921,7 @@ "path", "private", "url", - "id", - "createdAt" + "id" ], "properties": { "id": { @@ -4116,9 +4010,6 @@ }, "MediaDefaultFolder": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -4139,9 +4030,6 @@ }, "MediaFolder": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -4162,9 +4050,6 @@ }, "MediaFolderConfiguration": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -4218,8 +4103,7 @@ "id", "mediaId", "width", - "height", - "createdAt" + "height" ], "properties": { "id": { @@ -4268,8 +4152,7 @@ "required": [ "id", "width", - "height", - "createdAt" + "height" ], "properties": { "id": { @@ -4307,9 +4190,6 @@ "$ref": "#/components/schemas/resource" }, { - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -4332,9 +4212,6 @@ }, "NewsletterRecipient": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -4355,9 +4232,6 @@ }, "Notification": { "description": "Added since version: 6.4.7.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -4379,7 +4253,6 @@ "NumberRange": { "description": "Added since version: 6.0.0.0", "required": [ - "createdAt", "name" ], "properties": { @@ -4405,9 +4278,6 @@ }, "NumberRangeSalesChannel": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -4428,9 +4298,6 @@ }, "NumberRangeState": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -4452,7 +4319,6 @@ "NumberRangeType": { "description": "Added since version: 6.0.0.0", "required": [ - "createdAt", "typeName" ], "properties": { @@ -4488,8 +4354,7 @@ "languageId", "salesChannelId", "orderDateTime", - "currencyFactor", - "createdAt" + "currencyFactor" ], "properties": { "id": { @@ -4751,8 +4616,7 @@ "firstName", "lastName", "street", - "city", - "createdAt" + "city" ], "properties": { "id": { @@ -4838,8 +4702,7 @@ "id", "email", "firstName", - "lastName", - "createdAt" + "lastName" ], "properties": { "id": { @@ -4905,10 +4768,8 @@ "shippingOrderAddressId", "shippingMethodId", "stateId", - "trackingCodes", "shippingDateEarliest", - "shippingDateLatest", - "createdAt" + "shippingDateLatest" ], "properties": { "id": { @@ -5050,8 +4911,7 @@ "required": [ "id", "orderDeliveryId", - "orderLineItemId", - "createdAt" + "orderLineItemId" ], "properties": { "id": { @@ -5172,10 +5032,8 @@ "identifier", "quantity", "label", - "position", "states", - "children", - "createdAt" + "children" ], "properties": { "id": { @@ -5425,8 +5283,7 @@ "orderLineItemId", "mediaId", "position", - "accessGranted", - "createdAt" + "accessGranted" ], "properties": { "id": { @@ -5517,8 +5374,7 @@ "orderId", "paymentMethodId", "amount", - "stateId", - "createdAt" + "stateId" ], "properties": { "id": { @@ -5639,8 +5495,7 @@ "id", "orderTransactionId", "stateId", - "amount", - "createdAt" + "amount" ], "properties": { "id": { @@ -5757,8 +5612,7 @@ "id", "captureId", "stateId", - "amount", - "createdAt" + "amount" ], "properties": { "id": { @@ -5878,8 +5732,7 @@ "id", "refundId", "orderLineItemId", - "amount", - "createdAt" + "amount" ], "properties": { "id": { @@ -6004,7 +5857,6 @@ { "required": [ "id", - "createdAt", "name" ], "properties": { @@ -6127,7 +5979,6 @@ "description": "Added since version: 6.0.0.0", "required": [ "id", - "createdAt", "name" ], "properties": { @@ -6216,7 +6067,6 @@ "Plugin": { "description": "Added since version: 6.0.0.0", "required": [ - "createdAt", "label" ], "properties": { @@ -6252,7 +6102,6 @@ "taxId", "productNumber", "stock", - "createdAt", "name" ], "properties": { @@ -7246,7 +7095,6 @@ "taxId", "productNumber", "stock", - "createdAt", "name" ], "properties": { @@ -7729,8 +7577,7 @@ "required": [ "id", "productId", - "optionId", - "createdAt" + "optionId" ], "properties": { "id": { @@ -7787,10 +7634,7 @@ "description": "Added since version: 6.1.0.0", "required": [ "id", - "name", - "position", - "type", - "createdAt" + "name" ], "properties": { "id": { @@ -7838,9 +7682,6 @@ }, "ProductCrossSellingAssignedProducts": { "description": "Added since version: 6.2.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -7864,8 +7705,7 @@ "required": [ "id", "productId", - "mediaId", - "createdAt" + "mediaId" ], "properties": { "id": { @@ -7916,9 +7756,6 @@ }, "ProductExport": { "description": "Added since version: 6.1.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -7940,7 +7777,6 @@ "ProductFeatureSet": { "description": "Added since version: 6.3.0.0", "required": [ - "createdAt", "name" ], "properties": { @@ -7989,7 +7825,6 @@ "description": "Added since version: 6.0.0.0", "required": [ "id", - "createdAt", "name" ], "properties": { @@ -8041,8 +7876,7 @@ "required": [ "id", "productId", - "mediaId", - "createdAt" + "mediaId" ], "properties": { "id": { @@ -8093,9 +7927,6 @@ }, "ProductPrice": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -8123,8 +7954,7 @@ "salesChannelId", "languageId", "title", - "content", - "createdAt" + "content" ], "properties": { "id": { @@ -8181,9 +8011,6 @@ }, "ProductSearchConfig": { "description": "Added since version: 6.3.5.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -8204,9 +8031,6 @@ }, "ProductSearchConfigField": { "description": "Added since version: 6.3.5.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -8227,9 +8051,6 @@ }, "ProductSearchKeyword": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -8253,7 +8074,6 @@ "required": [ "key", "priority", - "createdAt", "label" ], "properties": { @@ -8291,7 +8111,6 @@ "description": "Added since version: 6.0.0.0", "required": [ "id", - "createdAt", "name" ], "properties": { @@ -8326,9 +8145,6 @@ }, "ProductStreamFilter": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -8349,9 +8165,6 @@ }, "ProductVisibility": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -8373,7 +8186,6 @@ "Promotion": { "description": "Added since version: 6.0.0.0", "required": [ - "createdAt", "name" ], "properties": { @@ -8402,9 +8214,6 @@ }, "PromotionDiscount": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -8425,9 +8234,6 @@ }, "PromotionDiscountPrices": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -8448,9 +8254,6 @@ }, "PromotionIndividualCode": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -8471,9 +8274,6 @@ }, "PromotionSalesChannel": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -8494,9 +8294,6 @@ }, "PromotionSetgroup": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -8519,9 +8316,6 @@ "description": "Added since version: 6.0.0.0", "required": [ "id", - "displayType", - "sortingType", - "createdAt", "name" ], "properties": { @@ -8583,7 +8377,6 @@ "option", "id", "groupId", - "createdAt", "name" ], "properties": { @@ -8640,8 +8433,7 @@ "Rule": { "description": "Added since version: 6.0.0.0", "required": [ - "name", - "createdAt" + "name" ], "properties": { "id": { @@ -8672,9 +8464,6 @@ }, "RuleCondition": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -8704,7 +8493,6 @@ "shippingMethodId", "countryId", "navigationCategoryId", - "createdAt", "name", "homeEnabled" ], @@ -8848,9 +8636,6 @@ }, "SalesChannelAnalytics": { "description": "Added since version: 6.2.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -8877,8 +8662,7 @@ "salesChannelId", "languageId", "currencyId", - "snippetSetId", - "createdAt" + "snippetSetId" ], "properties": { "id": { @@ -8935,7 +8719,6 @@ "SalesChannelType": { "description": "Added since version: 6.0.0.0", "required": [ - "createdAt", "name" ], "properties": { @@ -8969,7 +8752,6 @@ "required": [ "id", "salutationKey", - "createdAt", "displayName", "letterName" ], @@ -9013,7 +8795,6 @@ "required": [ "id", "salutationKey", - "createdAt", "displayName", "letterName" ], @@ -9052,9 +8833,6 @@ }, "ScheduledTask": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -9075,9 +8853,6 @@ }, "Script": { "description": "Added since version: 6.4.7.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -9109,8 +8884,7 @@ "foreignKey", "routeName", "pathInfo", - "seoPathInfo", - "createdAt" + "seoPathInfo" ], "properties": { "id": { @@ -9181,8 +8955,7 @@ "foreignKey", "routeName", "pathInfo", - "seoPathInfo", - "createdAt" + "seoPathInfo" ], "properties": { "id": { @@ -9246,13 +9019,11 @@ "readOnly": true } }, - "type": "object" + "type": "object", + "title": "SeoUrlEntity" }, "SeoUrlTemplate": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -9291,8 +9062,6 @@ "required": [ "id", "deliveryTimeId", - "taxType", - "createdAt", "name" ], "properties": { @@ -9539,8 +9308,6 @@ "required": [ "id", "deliveryTimeId", - "taxType", - "createdAt", "name" ], "properties": { @@ -9625,8 +9392,7 @@ "description": "Added since version: 6.0.0.0", "required": [ "id", - "shippingMethodId", - "createdAt" + "shippingMethodId" ], "properties": { "id": { @@ -9658,7 +9424,10 @@ "format": "float" }, "currencyPrice": { - "type": "object" + "type": "array", + "items": { + "$ref": "#/components/schemas/Price" + } }, "customFields": { "type": "object" @@ -9681,8 +9450,7 @@ "required": [ "setId", "translationKey", - "value", - "createdAt" + "value" ], "properties": { "id": { @@ -9719,8 +9487,7 @@ "description": "Added since version: 6.0.0.0", "required": [ "name", - "iso", - "createdAt" + "iso" ], "properties": { "id": { @@ -9758,7 +9525,6 @@ "StateMachine": { "description": "Added since version: 6.0.0.0", "required": [ - "createdAt", "name" ], "properties": { @@ -9796,9 +9562,6 @@ }, "StateMachineHistory": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -9827,7 +9590,6 @@ "description": "Added since version: 6.0.0.0", "required": [ "technicalName", - "createdAt", "name" ], "properties": { @@ -9862,9 +9624,6 @@ }, "StateMachineTransition": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -9888,8 +9647,7 @@ "required": [ "id", "configurationKey", - "configurationValue", - "createdAt" + "configurationValue" ], "properties": { "id": { @@ -9931,8 +9689,7 @@ "description": "Added since version: 6.0.0.0", "required": [ "id", - "name", - "createdAt" + "name" ], "properties": { "id": { @@ -9960,9 +9717,7 @@ "required": [ "id", "taxRate", - "name", - "position", - "createdAt" + "name" ], "properties": { "id": { @@ -10002,7 +9757,6 @@ "required": [ "id", "priority", - "createdAt", "name" ], "properties": { @@ -10048,9 +9802,6 @@ }, "TaxRule": { "description": "Added since version: 6.1.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -10072,7 +9823,6 @@ "TaxRuleType": { "description": "Added since version: 6.1.0.0", "required": [ - "createdAt", "typeName" ], "properties": { @@ -10102,8 +9852,7 @@ "id", "name", "author", - "active", - "createdAt" + "active" ], "properties": { "id": { @@ -10174,7 +9923,6 @@ "description": "Added since version: 6.0.0.0", "required": [ "id", - "createdAt", "shortCode", "name" ], @@ -10210,9 +9958,6 @@ }, "User": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -10233,9 +9978,6 @@ }, "UserAccessKey": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -10256,9 +9998,6 @@ }, "UserConfig": { "description": "Added since version: 6.3.5.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -10279,9 +10018,6 @@ }, "UserRecovery": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -10302,9 +10038,6 @@ }, "Webhook": { "description": "Added since version: 6.3.1.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -10325,9 +10058,6 @@ }, "WebhookEventLog": { "description": "Added since version: 6.4.1.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -10561,33 +10291,219 @@ "ranges" ] }, - "WishlistLoadRouteResponse": { + "AccountNewsletterRecipient": { "type": "object", "properties": { - "wishlist": { - "type": "object", - "properties": { - "customerId": { - "type": "string" - }, - "salesChannelId": { - "type": "string" - } - } + "status": { + "type": "string", + "enum": [ + "undefined", + "notSet", + "direct", + "optIn", + "optOut" + ] }, - "products": { - "$ref": "#/components/schemas/ProductListingResult" + "apiAlias": { + "type": "string", + "enum": [ + "account_newsletter_recipient" + ] } - } + }, + "required": [ + "status", + "apiAlias" + ] }, - "SalesChannelContext": { - "type": "object", + "CustomerAddressBody": { + "description": "Added since version: 6.0.0.0", + "required": [ + "countryId", + "firstName", + "lastName", + "city", + "street" + ], "properties": { - "token": { - "description": "Context the user session", + "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" }, - "currentCustomerGroup": { + "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" + }, + "EntitySearchResult": { + "type": "object", + "properties": { + "entity": { + "type": "string" + }, + "total": { + "type": "integer", + "description": "The total number of found entities" + }, + "aggregations": { + "type": "array", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", + "items": { + "type": "object" + } + }, + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." + }, + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." + } + } + }, + "Sitemap": { + "type": "object", + "properties": { + "filename": { + "type": "string" + }, + "created": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "filename", + "created" + ] + }, + "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 + } + } + }, + "CartDelivery": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } + }, + "location": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "state": { + "$ref": "#/components/schemas/CountryState" + } + } + }, + "positions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDeliveryPosition" + } + }, + "shippingCosts": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + } + } + }, + "SalesChannelContext": { + "type": "object", + "properties": { + "token": { + "description": "Context the user session", + "type": "string" + }, + "currentCustomerGroup": { "type": "object", "description": "Customer group of the current user", "properties": { @@ -10765,497 +10681,387 @@ } } }, - "Sitemap": { - "type": "object", - "properties": { - "filename": { - "type": "string" - }, - "created": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "filename", - "created" + "NavigationRouteResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + } + }, + "LineItemType": { + "type": "string", + "enum": [ + "product", + "credit", + "custom", + "promotion", + "discount", + "container", + "quantity" ] }, - "CartDeliveryPosition": { + "LineItem": { "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" - } + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" } }, - "identifier": { + "cover": { + "$ref": "#/components/schemas/ProductMedia" + }, + "dataContextHash": { "type": "string" }, - "lineItem": { - "$ref": "#/components/schemas/LineItem" + "dataTimestamp": { + "type": "string" }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" - } - } - }, - "CartItems": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - } - } - }, - "Criteria": { - "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", - "properties": { - "page": { - "description": "Search result page", - "type": "integer" + "deliveryInformation": { + "$ref": "#/components/schemas/CartDeliveryInformation" }, - "term": { - "description": "Search term", + "description": { "type": "string" }, - "limit": { - "description": "Number of items per result page", - "type": "integer" + "good": { + "type": "boolean" }, - "filter": { - "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } + "id": { + "type": "string" }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" - } + "label": { + "type": "string" }, - "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" - } + "modified": { + "type": "boolean" }, - "associations": { - "type": "array", - "description": "Associations to include. For more information, see [Search Queries > Associations](https://shopware.stoplight.io/docs/store-api/cf710bf73d0cd-search-queries#associations)", - "items": { - "$ref": "#/components/schemas/Association" - } + "modifiedByApp": { + "type": "boolean" }, - "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" + "payload": { + "$ref": "#/components/schemas/ProductJsonApi" + }, + "price": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] + }, + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] + }, + "quantity": { + "type": "number" + }, + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } }, - { - "$ref": "#/components/schemas/RangeFilter" + "nullable": true + }, + "totalPrice": { + "type": "number" + }, + "unitPrice": { + "type": "number" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } } - ] - } + } + }, + "required": [ + "apiAlias", + "totalPrice", + "quantity", + "unitPrice" + ] }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" - } + "priceDefinition": { + "$ref": "#/components/schemas/CartPriceQuantity" }, - "aggregations": { - "$ref": "#/components/schemas/Aggregations" + "quantity": { + "type": "number" }, - "fields": { - "type": "array", - "description": "Fields which should be returned in the search result.", - "items": { - "type": "string", - "description": "Name of a field" + "quantityInformation": { + "type": "object", + "properties": { + "maxPurchase": { + "type": "number" + }, + "minPurchase": { + "type": "number" + }, + "purchaseSteps": { + "type": "number" + } } }, - "grouping": { + "referencedId": { + "type": "string" + }, + "removable": { + "type": "boolean" + }, + "stackable": { + "type": "boolean" + }, + "states": { "type": "array", - "description": "Perform groupings over certain fields", "items": { "type": "string", - "description": "Name of a field" + "enum": [ + "is-physical", + "is-download" + ] } }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" + "type": { + "$ref": "#/components/schemas/LineItemType" }, - "includes": { - "$ref": "#/components/schemas/Include" - } - } - }, - "Association": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Criteria" - } - }, - "Include": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { + "uniqueIdentifier": { "type": "string" } - } + }, + "required": [ + "id", + "type" + ] }, - "Aggregations": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "title": "AggregationEntity", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationFilter", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationTerms", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationHistogram", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationRange", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationRange" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - } - ] - } - }, - "SubAggregations": { + "CartDeliveryInformation": { "type": "object", "properties": { - "aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/AggregationRange" - } + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_information" ] - } - } - }, - "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" + "freeDelivery": { + "type": "boolean" + }, + "deliveryTime": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - { - "$ref": "#/components/schemas/EqualsFilter" + "min": { + "type": "integer" }, - { - "$ref": "#/components/schemas/MultiNotFilter" + "max": { + "type": "integer" }, - { - "$ref": "#/components/schemas/RangeFilter" + "unit": { + "type": "string" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_time" + ] } - ] - } - }, - "additionalProperties": true - }, - "Sort": { - "type": "object", - "properties": { - "field": { - "type": "string" + } }, - "order": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + "height": { + "type": "integer" }, - "naturalSorting": { - "type": "boolean" + "length": { + "type": "integer" }, - "type": { - "type": "string" + "restockTime": { + "type": "integer" + }, + "stock": { + "type": "integer" + }, + "weight": { + "type": "integer" + }, + "width": { + "type": "integer" } }, "required": [ - "field", - "order" + "apiAlias" ] }, - "Filters": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "SimpleFilter": { + "AggregationMetrics": { "type": "object", "properties": { + "name": { + "type": "string" + }, "type": { "type": "string", "enum": [ - "contains", - "equalsAny", - "prefix", - "suffix" + "avg", + "count", + "max", + "min", + "stats", + "sum" ] }, "field": { "type": "string" - }, - "value": { - "type": "string" } }, "required": [ + "name", "type", - "field", - "value" + "field" ] }, - "EqualsFilter": { + "Price": { "type": "object", + "description": "Price object", "properties": { - "type": { + "currencyId": { "type": "string", - "enum": [ - "equals" - ] + "pattern": "^[0-9a-f]{32}$" }, - "field": { - "type": "string" + "gross": { + "description": "", + "type": "number" }, - "value": { - "oneOf": [ - { - "type": "string" + "net": { + "description": "", + "type": "number" + }, + "linked": { + "description": "", + "type": "boolean" + }, + "listPrice": { + "description": "", + "type": "object", + "properties": { + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - { + "gross": { + "description": "", "type": "number" }, - { + "net": { + "description": "", + "type": "number" + }, + "linked": { + "description": "", "type": "boolean" + } + }, + "required": [ + "gross", + "net" + ] + }, + "regulationPrice": { + "description": "", + "type": "object", + "properties": { + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - { - "type": "null" + "gross": { + "description": "", + "type": "number" + }, + "net": { + "description": "", + "type": "number" + }, + "linked": { + "description": "", + "type": "boolean" } + }, + "required": [ + "gross", + "net" ] } }, "required": [ - "type", - "field", - "value" + "currencyId", + "gross", + "net" ] }, - "MultiNotFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "multi", - "not" - ] - }, - "operator": { - "type": "string", - "enum": [ - "AND", - "and", - "OR", - "or" - ] - }, - "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" - ] - }, - "NavigationRouteResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - }, - "SuccessResponse": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - } - } - }, "ProductListingCriteria": { "allOf": [ { @@ -11346,259 +11152,652 @@ } ] }, - "ProductDetailResponse": { + "Cart": { "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "product": { - "$ref": "#/components/schemas/Product" + "name": { + "description": "Name of the cart - for example `guest-cart`", + "type": "string" }, - "configurator": { + "token": { + "description": "Context token identifying the cart and the user session", + "type": "string" + }, + "price": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "lineItems": { + "description": "All items within the cart", "type": "array", - "description": "List of property groups with their corresponding options and information on how to display them.", "items": { - "$ref": "#/components/schemas/PropertyGroup" + "$ref": "#/components/schemas/LineItem" } - } - }, - "required": [ - "product" - ] - }, - "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" + "errors": { + "type": "array", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "items": { + "$ref": "#/components/schemas/CartError" + } }, - "totalPrice": { - "type": "number" + "deliveries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDelivery" + } }, - "calculatedTaxes": { + "transactions": { + "description": "A list of all payment transactions associated with the current cart.", "type": "array", "items": { "type": "object", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" + "paymentMethodId": { + "type": "string" }, - "price": { - "type": "number" + "amount": { + "$ref": "#/components/schemas/CalculatedPrice" } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] + } } }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] + "modified": { + "type": "boolean" }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] + "customerComment": { + "type": "string", + "description": "A comment that can be added to the cart.", + "nullable": true }, - "positionPrice": { + "affiliateCode": { + "type": "string", + "description": "An affiliate tracking code", + "nullable": true + }, + "campaignCode": { + "type": "string", + "description": "A campaign tracking code", + "nullable": true + } + } + }, + "CartListPrice": { + "type": "object", + "description": "", + "properties": { + "discount": { "type": "number" }, - "netPrice": { + "percentage": { "type": "number" }, - "regulationPrice": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_list_price" + ] + } + }, + "required": [ + "apiAlias" + ] + }, + "FindProductVariantRouteResponse": { + "type": "object", + "properties": { + "foundCombination": { "type": "object", "properties": { - "price": { - "type": "number" - }, - "apiAlias": { + "variantId": { "type": "string", - "enum": [ - "cart_regulation_price" - ] + "pattern": "^[0-9a-f]{32}$" + }, + "options": { + "type": "array", + "items": { + "type": "string" + } } - }, - "nullable": true - }, - "hasRange": { - "type": "boolean" + } + } + } + }, + "Breadcrumb": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - "variantId": { + "categoryId": { "type": "string", - "format": "^[0-9a-f]{32}$", - "nullable": true + "pattern": "^[0-9a-f]{32}$" }, - "apiAlias": { + "type": { "type": "string", "enum": [ - "calculated_price" + "page", + "link", + "folder" ] }, - "taxRules": { + "translated": { + "type": "object", + "additionalProperties": true, + "properties": { + "customFields": { + "type": "object" + }, + "slotConfig": { + "type": "object" + }, + "linkType": { + "type": "string", + "enum": [ + "external", + "category", + "product", + "landing_page" + ] + }, + "internalLink": { + "type": "string" + }, + "externalLink": { + "type": "string" + }, + "linkNewTab": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "metaTitle": { + "type": "string" + }, + "metaDescription": { + "type": "string" + }, + "keywords": { + "type": "string" + } + } + }, + "path": { + "type": "string" + }, + "seoUrls": { "type": "array", - "description": "Currently active tax rules and/or rates", "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } + "$ref": "#/components/schemas/SeoUrl" } + }, + "apiAlias": { + "type": "string", + "enum": [ + "breadcrumb" + ] } }, "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "referencePrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitPrice", - "positionPrice", - "netPrice", - "taxRules" - ] - }, - "NavigationType": { - "type": "string", - "enum": [ - "main-navigation", - "footer-navigation", - "service-navigation" + "name", + "categoryId", + "type", + "translated", + "path", + "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": { + "type": "integer", + "nullable": true }, - "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" + }, + "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" + ] + } }, - "currencyId": { - "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" + ] + } + }, + "required": [ + "elements", + "availableSortings", + "currentFilters", + "apiAlias" + ] + } + ] + }, + "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": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "$ref": "#/components/schemas/CountryState", + "nullable": true + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" + } + }, + "required": [ + "customerId", + "createdAt", + "updatedAt", + "country", + "salutation" + ] + }, + "SuccessResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + } + } + }, + "CartPriceReference": { + "type": "object", + "properties": { + "purchaseUnit": { + "type": "number" + }, + "referenceUnit": { + "type": "number" + }, + "unitName": { + "type": "string" + }, + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_reference" + ] + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "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" + ] + }, + "CartDeliveryPosition": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } + }, + "identifier": { + "type": "string" + }, + "lineItem": { + "$ref": "#/components/schemas/LineItem" + }, + "price": { + "$ref": "#/components/schemas/CalculatedPrice" + } + } + }, + "NavigationType": { + "type": "string", + "enum": [ + "main-navigation", + "footer-navigation", + "service-navigation" + ] + }, + "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" + } + } + } + } + }, + "CrossSellingElementCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrossSellingElement" + } + }, + "OrderRouteResponse": { + "type": "object", + "properties": { + "orders": { + "allOf": [ + { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" + } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + }, + "paymentChangeable": { + "type": "object", + "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", + "additionalProperties": { + "type": "boolean" + } + } + }, + "required": [ + "orders" + ] + }, + "ShippingMethodPageRouteResponse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "deliveryTimeId": { + "type": "string" + }, + "deliveryTime": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "min": { + "type": "integer", + "format": "int32" + }, + "max": { + "type": "integer", + "format": "int32" + }, + "unit": { + "type": "string" + } + } + }, + "translations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + } + } + } + }, + "orderDeliveries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "orderId": { + "type": "string" + }, + "shippingOrderAddressId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "shippingDateEarliest": { + "type": "string", + "format": "date-time" + }, + "shippingDateLatest": { + "type": "string", + "format": "date-time" + }, + "stateId": { + "type": "string" + } + } + } + }, + "salesChannelDefaultAssignments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" }, "paymentMethodId": { "type": "string" @@ -11775,1070 +11974,765 @@ "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" - } - } - } - } - } - } - }, - "FindProductVariantRouteResponse": { - "type": "object", - "properties": { - "foundCombination": { - "type": "object", - "properties": { - "variantId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "options": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "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 - } - } - }, - "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": { - "type": "string" - }, - "dataTimestamp": { - "type": "string" - }, - "deliveryInformation": { - "$ref": "#/components/schemas/CartDeliveryInformation" - }, - "description": { - "type": "string" - }, - "good": { - "type": "boolean" - }, - "id": { - "type": "string" - }, - "label": { - "type": "string" - }, - "modified": { - "type": "boolean" - }, - "modifiedByApp": { - "type": "boolean" - }, - "payload": { - "$ref": "#/components/schemas/ProductJsonApi" - }, - "price": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "calculated_price" - ] - }, - "calculatedTaxes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] - }, - "quantity": { - "type": "number" - }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] - }, - "regulationPrice": { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] + "calculationRuleId": { + "type": "string" } + } + } + }, + "mediaId": { + "type": "string" + }, + "media": { + "type": "object", + "properties": { + "userId": { + "type": "string" }, - "nullable": true - }, - "totalPrice": { - "type": "number" - }, - "unitPrice": { - "type": "number" - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } + "mimeType": { + "type": "string" + }, + "fileExtension": { + "type": "string" + }, + "fileSize": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string" + }, + "metaDataRaw": { + "type": "string" + }, + "mediaTypeRaw": { + "type": "string" + }, + "uploadedAt": { + "type": "string", + "format": "date-time" + }, + "alt": { + "type": "string" + }, + "url": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "mediaFolderId": { + "type": "string" + }, + "private": { + "type": "boolean" + }, + "thumbnailsRo": { + "type": "string" } } }, - "required": [ - "apiAlias", - "totalPrice", - "quantity", - "unitPrice" - ] - }, - "priceDefinition": { - "$ref": "#/components/schemas/CartPriceQuantity" - }, - "quantity": { - "type": "number" - }, - "quantityInformation": { - "type": "object", - "properties": { - "maxPurchase": { - "type": "number" - }, - "minPurchase": { - "type": "number" - }, - "purchaseSteps": { - "type": "number" + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } } } - }, - "referencedId": { - "type": "string" - }, - "removable": { - "type": "boolean" - }, - "stackable": { - "type": "boolean" - }, - "states": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "is-physical", - "is-download" - ] - } - }, - "type": { - "$ref": "#/components/schemas/LineItemType" - }, - "uniqueIdentifier": { - "type": "string" } - }, - "required": [ - "id", - "type" - ] + } }, - "CartDelivery": { + "CalculatedPrice": { "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" - } - } + "unitPrice": { + "type": "number" }, - "location": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "state": { - "$ref": "#/components/schemas/CountryState" - } - } + "quantity": { + "type": "number" }, - "positions": { + "rawTotal": { + "type": "number" + }, + "totalPrice": { + "type": "number" + }, + "calculatedTaxes": { "type": "array", "items": { - "$ref": "#/components/schemas/CartDeliveryPosition" + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] } }, - "shippingCosts": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "AggregationMetrics": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "avg", - "count", - "max", - "min", - "stats", - "sum" - ] - }, - "field": { - "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "OrderRouteResponse": { - "type": "object", - "properties": { - "orders": { - "allOf": [ + "referencePrice": { + "oneOf": [ { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order" - } + "$ref": "#/components/schemas/CartPriceReference" }, { - "$ref": "#/components/schemas/EntitySearchResult" + "type": "null" } ] }, - "paymentChangeable": { - "type": "object", - "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", - "additionalProperties": { - "type": "boolean" - } - } - }, - "required": [ - "orders" - ] - }, - "ProductListingResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EntitySearchResult" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] }, - { + "positionPrice": { + "type": "number" + }, + "netPrice": { + "type": "number" + }, + "regulationPrice": { "type": "object", "properties": { - "currentFilters": { - "type": "object", - "description": "Contains the state of the filters. These can be used to create listing filters.", - "properties": { - "navigationId": { - "type": "string" - }, - "manufacturer": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "price": { - "type": "object", - "properties": { - "min": { - "type": "integer", - "default": 0 - }, - "max": { - "type": "integer", - "default": 0 - } - }, - "required": [ - "min", - "max" - ] - }, - "rating": { - "type": "integer", - "nullable": true - }, - "shipping-free": { - "type": "boolean", - "default": false - }, - "properties": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "search": { - "type": "string" - } - }, - "required": [ - "manufacturer", - "navigationId", - "price", - "properties", - "rating", - "shipping-free" - ] - }, - "availableSortings": { - "type": "array", - "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", - "items": { - "type": "object", - "properties": { - "label": { - "type": "string" - }, - "translated": { - "type": "object", - "properties": { - "label": { - "type": "string" - } - }, - "required": [ - "label" - ] - }, - "key": { - "type": "string" - }, - "priority": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_sorting" - ] - } - }, - "required": [ - "label", - "translated", - "key", - "priority", - "apiAlias" - ] - } - }, - "sorting": { - "type": "string" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - }, - "entity": { - "type": "string", - "enum": [ - "product" - ] + "price": { + "type": "number" }, "apiAlias": { "type": "string", "enum": [ - "product_listing" + "cart_regulation_price" ] } }, - "required": [ - "elements", - "availableSortings", - "currentFilters", - "apiAlias" + "nullable": true + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "type": "string", + "format": "^[0-9a-f]{32}$", + "nullable": true + }, + "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" ] }, - "CustomerAddressBody": { - "description": "Added since version: 6.0.0.0", - "required": [ - "countryId", - "firstName", - "lastName", - "city", - "street" - ], + "Criteria": { + "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "countryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "page": { + "description": "Search result page", + "type": "integer" }, - "countryStateId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "term": { + "description": "Search term", + "type": "string" }, - "salutationId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "limit": { + "description": "Number of items per result page", + "type": "integer" }, - "firstName": { - "type": "string" + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } }, - "lastName": { - "type": "string" + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } }, - "zipcode": { - "type": "string" + "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" + } }, - "city": { - "type": "string" + "associations": { + "type": "array", + "description": "Associations to include. For more information, see [Search Queries > Associations](https://shopware.stoplight.io/docs/store-api/cf710bf73d0cd-search-queries#associations)", + "items": { + "$ref": "#/components/schemas/Association" + } }, - "company": { - "type": "string" + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } }, - "street": { - "type": "string" + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + } }, - "department": { - "type": "string" + "aggregations": { + "$ref": "#/components/schemas/Aggregations" }, - "title": { - "type": "string" + "fields": { + "type": "array", + "description": "Fields which should be returned in the search result.", + "items": { + "type": "string", + "description": "Name of a field" + } }, - "phoneNumber": { - "type": "string" + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } }, - "additionalAddressLine1": { - "type": "string" + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" }, - "additionalAddressLine2": { + "includes": { + "$ref": "#/components/schemas/Include" + } + } + }, + "Association": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Criteria" + } + }, + "Include": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { "type": "string" - }, - "customFields": { - "type": "object" - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "$ref": "#/components/schemas/CountryState" - }, - "salutation": { - "$ref": "#/components/schemas/Salutation" } - }, - "type": "object" + } }, - "AccountNewsletterRecipient": { + "Aggregations": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" + }, + { + "title": "AggregationEntity", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationEntity" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationFilter", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationFilter" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationTerms", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationRange", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationRange" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + } + ] + } + }, + "SubAggregations": { "type": "object", "properties": { - "status": { - "type": "string", - "enum": [ - "undefined", - "notSet", - "direct", - "optIn", - "optOut" - ] - }, - "apiAlias": { - "type": "string", - "enum": [ - "account_newsletter_recipient" + "aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" + }, + { + "$ref": "#/components/schemas/AggregationEntity" + }, + { + "$ref": "#/components/schemas/AggregationFilter" + }, + { + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/AggregationRange" + } ] } - }, - "required": [ - "status", - "apiAlias" + } + }, + "TotalCountMode": { + "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", + "type": "string", + "default": "none", + "enum": [ + "none", + "exact", + "next-pages" ] }, - "CrossSellingElement": { + "Query": { "type": "object", "properties": { - "crossSelling": { - "$ref": "#/components/schemas/ProductCrossSelling" - }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - }, - "total": { - "type": "integer", - "format": "int32" - }, - "streamId": { - "type": "string", - "format": "uuid" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cross_selling_element" + "score": { + "type": "number" + }, + "query": { + "oneOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } ] } }, - "required": [ - "crossSelling", - "products", - "total", - "apiAlias" - ] + "additionalProperties": true }, - "CustomerAddressRead": { + "Sort": { "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" + "field": { + "type": "string" }, - "updatedAt": { + "order": { "type": "string", - "format": "date-time", - "nullable": true - }, - "country": { - "$ref": "#/components/schemas/Country" + "enum": [ + "ASC", + "DESC" + ] }, - "countryState": { - "$ref": "#/components/schemas/CountryState", - "nullable": true + "naturalSorting": { + "type": "boolean" }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "type": { + "type": "string" } }, "required": [ - "customerId", - "createdAt", - "updatedAt", - "country", - "salutation" + "field", + "order" ] }, - "CartPriceQuantity": { + "Filters": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "SimpleFilter": { "type": "object", "properties": { - "apiAlias": { + "type": { "type": "string", "enum": [ - "cart_price_quantity" + "contains", + "equalsAny", + "prefix", + "suffix" ] }, - "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" - } - } - } + "field": { + "type": "string" }, - "type": { + "value": { "type": "string" } }, "required": [ - "apiAlias" + "type", + "field", + "value" ] }, - "EntitySearchResult": { + "EqualsFilter": { "type": "object", "properties": { - "entity": { - "type": "string" - }, - "total": { - "type": "integer", - "description": "The total number of found entities" - }, - "aggregations": { - "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", - "items": { - "type": "object" - } + "type": { + "type": "string", + "enum": [ + "equals" + ] }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." + "field": { + "type": "string" }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." - } - } - }, - "CartError": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "items": { - "type": "object", - "properties": { - "key": { + "value": { + "oneOf": [ + { "type": "string" }, - "level": { - "type": "number", - "enum": [ - 0, - 10, - 20 - ], - "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" + { + "type": "number" }, - "message": { - "type": "string" + { + "type": "boolean" }, - "messageKey": { - "type": "string" + { + "type": "null" } - } + ] } - } - }, - "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" - } - }, - "deliveries": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDelivery" - } - }, - "transactions": { - "description": "A list of all payment transactions associated with the current cart.", - "type": "array", - "items": { - "type": "object", - "properties": { - "paymentMethodId": { - "type": "string" - }, - "amount": { - "$ref": "#/components/schemas/CalculatedPrice" - } - } - } - }, - "modified": { - "type": "boolean" - }, - "customerComment": { + }, + "required": [ + "type", + "field", + "value" + ] + }, + "MultiNotFilter": { + "type": "object", + "properties": { + "type": { "type": "string", - "description": "A comment that can be added to the cart.", - "nullable": true + "enum": [ + "multi", + "not" + ] }, - "affiliateCode": { + "operator": { "type": "string", - "description": "An affiliate tracking code", - "nullable": true + "enum": [ + "AND", + "and", + "OR", + "or" + ] }, - "campaignCode": { - "type": "string", - "description": "A campaign tracking code", - "nullable": true + "queries": { + "$ref": "#/components/schemas/Filters" } - } + }, + "required": [ + "type", + "operator", + "queries" + ] }, - "CartPriceReference": { + "RangeFilter": { "type": "object", "properties": { - "purchaseUnit": { - "type": "number" - }, - "referenceUnit": { - "type": "number" + "type": { + "type": "string", + "enum": [ + "range" + ] }, - "unitName": { + "field": { "type": "string" }, - "price": { - "type": "number" - }, + "parameters": { + "type": "object", + "properties": { + "gte": { + "type": "number" + }, + "gt": { + "type": "number" + }, + "lte": { + "type": "number" + }, + "lt": { + "type": "number" + } + } + } + }, + "required": [ + "type", + "field", + "parameters" + ] + }, + "CartPriceQuantity": { + "type": "object", + "properties": { "apiAlias": { "type": "string", "enum": [ - "cart_price_reference" + "cart_price_quantity" ] }, + "isCalculated": { + "type": "boolean" + }, "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] + "$ref": "#/components/schemas/CartListPrice" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" }, "regulationPrice": { - "type": "object", "properties": { "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] + "type": "number", + "format": "float" } }, - "nullable": true + "type": "object" }, - "hasRange": { - "type": "boolean" + "taxRules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } }, - "variantId": { - "type": "string", - "format": "^[0-9a-f]{32}$", - "nullable": true + "type": { + "type": "string" } }, "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" + "apiAlias" ] }, - "CartListPrice": { + "ProductDetailResponse": { "type": "object", - "description": "", + "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "discount": { - "type": "number" - }, - "percentage": { - "type": "number" - }, - "price": { - "type": "number" + "product": { + "$ref": "#/components/schemas/Product" }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_list_price" - ] + "configurator": { + "type": "array", + "description": "List of property groups with their corresponding options and information on how to display them.", + "items": { + "$ref": "#/components/schemas/PropertyGroup" + } } }, "required": [ - "apiAlias" + "product" ] }, - "CrossSellingElementCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CrossSellingElement" + "CartItems": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + } } }, - "CartDeliveryInformation": { + "WishlistLoadRouteResponse": { "type": "object", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_information" - ] - }, - "freeDelivery": { - "type": "boolean" - }, - "deliveryTime": { + "wishlist": { "type": "object", "properties": { - "name": { + "customerId": { "type": "string" }, - "min": { - "type": "integer" - }, - "max": { - "type": "integer" - }, - "unit": { + "salesChannelId": { "type": "string" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_time" - ] } } }, - "height": { - "type": "integer" - }, - "length": { - "type": "integer" + "products": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + }, + "CrossSellingElement": { + "type": "object", + "properties": { + "crossSelling": { + "$ref": "#/components/schemas/ProductCrossSelling" }, - "restockTime": { - "type": "integer" + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } }, - "stock": { - "type": "integer" + "total": { + "type": "integer", + "format": "int32" }, - "weight": { - "type": "integer" + "streamId": { + "type": "string", + "format": "uuid" }, - "width": { - "type": "integer" + "apiAlias": { + "type": "string", + "enum": [ + "cross_selling_element" + ] } }, "required": [ + "crossSelling", + "products", + "total", "apiAlias" ] } From 63a3a873cb060ea9203abba4ea72457d823e7461 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 17 Oct 2024 11:25:19 +0200 Subject: [PATCH 18/35] [create-pull-request] automated change (#299) Co-authored-by: shopwareBot --- storeapi.json | 8929 +++++++++++++++++++++++++------------------------ 1 file changed, 4483 insertions(+), 4446 deletions(-) diff --git a/storeapi.json b/storeapi.json index 57229ef..2fe6587 100644 --- a/storeapi.json +++ b/storeapi.json @@ -7,7 +7,7 @@ "name": "MIT", "url": "https://github.com/shopware/shopware/blob/trunk/LICENSE" }, - "version": "6.6.6.1" + "version": "6.6.7.0" }, "servers": [ { @@ -368,9 +368,6 @@ }, "AclRole": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -393,7 +390,6 @@ "App": { "description": "Added since version: 6.3.1.0", "required": [ - "createdAt", "label" ], "properties": { @@ -422,7 +418,6 @@ "AppActionButton": { "description": "Added since version: 6.3.1.0", "required": [ - "createdAt", "label" ], "properties": { @@ -453,8 +448,7 @@ "required": [ "value", "appId", - "localeId", - "createdAt" + "localeId" ], "properties": { "id": { @@ -492,7 +486,6 @@ "AppCmsBlock": { "description": "Added since version: 6.4.2.0", "required": [ - "createdAt", "label" ], "properties": { @@ -521,7 +514,6 @@ "AppFlowAction": { "description": "Added since version: 6.4.10.0", "required": [ - "createdAt", "label" ], "properties": { @@ -549,9 +541,6 @@ }, "AppFlowEvent": { "description": "Added since version: 6.5.2.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -573,9 +562,6 @@ }, "AppPaymentMethod": { "description": "Added since version: 6.4.1.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -598,7 +584,6 @@ "AppScriptCondition": { "description": "Added since version: 6.4.10.3", "required": [ - "createdAt", "name" ], "properties": { @@ -626,9 +611,6 @@ }, "AppShippingMethod": { "description": "Added since version: 6.5.7.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -649,9 +631,6 @@ }, "AppTemplate": { "description": "Added since version: 6.3.1.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -680,10 +659,6 @@ { "required": [ "id", - "displayNestedProducts", - "type", - "productAssignmentType", - "createdAt", "name" ], "properties": { @@ -1016,10 +991,6 @@ "childCount", "translated", "id", - "displayNestedProducts", - "type", - "productAssignmentType", - "createdAt", "name" ], "properties": { @@ -1236,8 +1207,7 @@ "slots", "position", "type", - "sectionId", - "createdAt" + "sectionId" ], "properties": { "id": { @@ -1361,8 +1331,7 @@ "apiAlias", "sections", "id", - "type", - "createdAt" + "type" ], "properties": { "id": { @@ -1454,8 +1423,7 @@ "blocks", "position", "type", - "pageId", - "createdAt" + "pageId" ], "properties": { "id": { @@ -1569,8 +1537,7 @@ "id", "type", "slot", - "blockId", - "createdAt" + "blockId" ], "properties": { "id": { @@ -1653,8 +1620,6 @@ { "required": [ "id", - "isEu", - "createdAt", "name", "addressFormat" ], @@ -1819,8 +1784,6 @@ "description": "Added since version: 6.0.0.0", "required": [ "id", - "isEu", - "createdAt", "name", "addressFormat" ], @@ -1992,7 +1955,6 @@ "id", "countryId", "shortCode", - "createdAt", "name" ], "properties": { @@ -2044,7 +2006,6 @@ "id", "countryId", "shortCode", - "createdAt", "name" ], "properties": { @@ -2110,7 +2071,6 @@ "isoCode", "itemRounding", "totalRounding", - "createdAt", "shortName", "name" ], @@ -2219,7 +2179,6 @@ "isoCode", "itemRounding", "totalRounding", - "createdAt", "shortName", "name" ], @@ -2335,9 +2294,6 @@ }, "CurrencyCountryRounding": { "description": "Added since version: 6.4.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -2359,9 +2315,6 @@ }, "CustomEntity": { "description": "Added since version: 6.4.9.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -2383,9 +2336,6 @@ }, "CustomField": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -2407,9 +2357,6 @@ }, "CustomFieldSet": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -2431,9 +2378,6 @@ }, "CustomFieldSetRelation": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -2469,9 +2413,7 @@ "firstName", "lastName", "email", - "accountType", - "defaultPaymentMethodId", - "createdAt" + "defaultPaymentMethodId" ], "properties": { "id": { @@ -2721,8 +2663,7 @@ "firstName", "lastName", "city", - "street", - "createdAt" + "street" ], "properties": { "id": { @@ -2825,7 +2766,6 @@ "required": [ "translated", "id", - "createdAt", "name" ], "properties": { @@ -2899,9 +2839,6 @@ }, "CustomerRecovery": { "description": "Added since version: 6.1.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -2953,8 +2890,7 @@ "description": "Added since version: 6.3.4.0", "required": [ "id", - "customerId", - "createdAt" + "customerId" ], "properties": { "id": { @@ -2988,8 +2924,7 @@ "description": "Added since version: 6.3.4.0", "required": [ "id", - "productId", - "createdAt" + "productId" ], "properties": { "id": { @@ -3027,8 +2962,7 @@ "name", "min", "max", - "unit", - "createdAt" + "unit" ], "properties": { "id": { @@ -3083,8 +3017,7 @@ "fileType", "orderId", "config", - "deepLinkCode", - "createdAt" + "deepLinkCode" ], "properties": { "id": { @@ -3192,9 +3125,7 @@ "required": [ "id", "documentTypeId", - "name", - "global", - "createdAt" + "name" ], "properties": { "id": { @@ -3261,8 +3192,7 @@ "description": "Added since version: 6.0.0.0", "required": [ "id", - "documentBaseConfigId", - "createdAt" + "documentBaseConfigId" ], "properties": { "id": { @@ -3303,7 +3233,6 @@ "required": [ "id", "technicalName", - "createdAt", "name" ], "properties": { @@ -3343,9 +3272,6 @@ }, "Flow": { "description": "Added since version: 6.4.6.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -3367,9 +3293,6 @@ }, "FlowSequence": { "description": "Added since version: 6.4.6.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -3391,9 +3314,6 @@ }, "FlowTemplate": { "description": "Added since version: 6.4.18.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -3415,9 +3335,6 @@ }, "ImportExportFile": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -3439,9 +3356,6 @@ }, "ImportExportLog": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -3463,9 +3377,6 @@ }, "ImportExportProfile": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -3493,9 +3404,6 @@ }, "Integration": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -3523,7 +3431,6 @@ { "required": [ "id", - "createdAt", "name", "url" ], @@ -3656,7 +3563,6 @@ "required": [ "apiAlias", "id", - "createdAt", "name", "url" ], @@ -3754,8 +3660,7 @@ "required": [ "id", "localeId", - "name", - "createdAt" + "name" ], "properties": { "id": { @@ -3923,8 +3828,7 @@ "required": [ "id", "localeId", - "name", - "createdAt" + "name" ], "properties": { "id": { @@ -3988,7 +3892,6 @@ "required": [ "id", "code", - "createdAt", "name", "territory" ], @@ -4033,9 +3936,6 @@ }, "LogEntry": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -4058,7 +3958,6 @@ "MailHeaderFooter": { "description": "Added since version: 6.0.0.0", "required": [ - "createdAt", "name" ], "properties": { @@ -4115,7 +4014,6 @@ "MailTemplate": { "description": "Added since version: 6.0.0.0", "required": [ - "createdAt", "subject", "contentHtml", "contentPlain" @@ -4217,7 +4115,6 @@ "required": [ "id", "technicalName", - "createdAt", "name" ], "properties": { @@ -4266,8 +4163,7 @@ "id", "productId", "categoryId", - "salesChannelId", - "createdAt" + "salesChannelId" ], "properties": { "id": { @@ -4315,8 +4211,7 @@ "id", "productId", "categoryId", - "salesChannelId", - "createdAt" + "salesChannelId" ], "properties": { "id": { @@ -4372,8 +4267,7 @@ "path", "private", "url", - "id", - "createdAt" + "id" ], "properties": { "id": { @@ -4477,9 +4371,6 @@ }, "MediaDefaultFolder": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -4501,9 +4392,6 @@ }, "MediaFolder": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -4525,9 +4413,6 @@ }, "MediaFolderConfiguration": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -4585,8 +4470,7 @@ "id", "mediaId", "width", - "height", - "createdAt" + "height" ], "properties": { "id": { @@ -4640,8 +4524,7 @@ "required": [ "id", "width", - "height", - "createdAt" + "height" ], "properties": { "id": { @@ -4683,9 +4566,6 @@ "$ref": "#/components/schemas/resource" }, { - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -4708,9 +4588,6 @@ }, "NewsletterRecipient": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -4732,9 +4609,6 @@ }, "Notification": { "description": "Added since version: 6.4.7.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -4757,7 +4631,6 @@ "NumberRange": { "description": "Added since version: 6.0.0.0", "required": [ - "createdAt", "name" ], "properties": { @@ -4785,9 +4658,6 @@ }, "NumberRangeSalesChannel": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -4809,9 +4679,6 @@ }, "NumberRangeState": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -4834,7 +4701,6 @@ "NumberRangeType": { "description": "Added since version: 6.0.0.0", "required": [ - "createdAt", "typeName" ], "properties": { @@ -4872,8 +4738,7 @@ "languageId", "salesChannelId", "orderDateTime", - "currencyFactor", - "createdAt" + "currencyFactor" ], "properties": { "id": { @@ -5175,8 +5040,7 @@ "firstName", "lastName", "street", - "city", - "createdAt" + "city" ], "properties": { "id": { @@ -5279,8 +5143,7 @@ "id", "email", "firstName", - "lastName", - "createdAt" + "lastName" ], "properties": { "id": { @@ -5357,10 +5220,8 @@ "shippingOrderAddressId", "shippingMethodId", "stateId", - "trackingCodes", "shippingDateEarliest", - "shippingDateLatest", - "createdAt" + "shippingDateLatest" ], "properties": { "id": { @@ -5524,8 +5385,7 @@ "required": [ "id", "orderDeliveryId", - "orderLineItemId", - "createdAt" + "orderLineItemId" ], "properties": { "id": { @@ -5666,10 +5526,8 @@ "identifier", "quantity", "label", - "position", "states", - "children", - "createdAt" + "children" ], "properties": { "id": { @@ -5945,8 +5803,7 @@ "orderLineItemId", "mediaId", "position", - "accessGranted", - "createdAt" + "accessGranted" ], "properties": { "id": { @@ -6049,8 +5906,7 @@ "orderId", "paymentMethodId", "amount", - "stateId", - "createdAt" + "stateId" ], "properties": { "id": { @@ -6214,8 +6070,7 @@ "id", "orderTransactionId", "stateId", - "amount", - "createdAt" + "amount" ], "properties": { "id": { @@ -6375,8 +6230,7 @@ "id", "captureId", "stateId", - "amount", - "createdAt" + "amount" ], "properties": { "id": { @@ -6540,8 +6394,7 @@ "id", "refundId", "orderLineItemId", - "amount", - "createdAt" + "amount" ], "properties": { "id": { @@ -6712,7 +6565,6 @@ { "required": [ "id", - "createdAt", "name" ], "properties": { @@ -6835,7 +6687,6 @@ "description": "Added since version: 6.0.0.0", "required": [ "id", - "createdAt", "name" ], "properties": { @@ -6934,7 +6785,6 @@ "Plugin": { "description": "Added since version: 6.0.0.0", "required": [ - "createdAt", "label" ], "properties": { @@ -6972,7 +6822,6 @@ "taxId", "productNumber", "stock", - "createdAt", "name" ], "properties": { @@ -7966,7 +7815,6 @@ "taxId", "productNumber", "stock", - "createdAt", "name" ], "properties": { @@ -8513,8 +8361,7 @@ "required": [ "id", "productId", - "optionId", - "createdAt" + "optionId" ], "properties": { "id": { @@ -8579,10 +8426,7 @@ "description": "Added since version: 6.1.0.0", "required": [ "id", - "name", - "position", - "type", - "createdAt" + "name" ], "properties": { "id": { @@ -8639,9 +8483,6 @@ }, "ProductCrossSellingAssignedProducts": { "description": "Added since version: 6.2.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -8666,8 +8507,7 @@ "required": [ "id", "productId", - "mediaId", - "createdAt" + "mediaId" ], "properties": { "id": { @@ -8725,9 +8565,6 @@ }, "ProductExport": { "description": "Added since version: 6.1.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -8750,7 +8587,6 @@ "ProductFeatureSet": { "description": "Added since version: 6.3.0.0", "required": [ - "createdAt", "name" ], "properties": { @@ -8804,7 +8640,6 @@ "description": "Added since version: 6.0.0.0", "required": [ "id", - "createdAt", "name" ], "properties": { @@ -8864,8 +8699,7 @@ "required": [ "id", "productId", - "mediaId", - "createdAt" + "mediaId" ], "properties": { "id": { @@ -8923,9 +8757,6 @@ }, "ProductPrice": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -8954,8 +8785,7 @@ "salesChannelId", "languageId", "title", - "content", - "createdAt" + "content" ], "properties": { "id": { @@ -9023,9 +8853,6 @@ }, "ProductSearchConfig": { "description": "Added since version: 6.3.5.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -9047,9 +8874,6 @@ }, "ProductSearchConfigField": { "description": "Added since version: 6.3.5.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -9071,9 +8895,6 @@ }, "ProductSearchKeyword": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -9098,7 +8919,6 @@ "required": [ "key", "priority", - "createdAt", "label" ], "properties": { @@ -9141,7 +8961,6 @@ "description": "Added since version: 6.0.0.0", "required": [ "id", - "createdAt", "name" ], "properties": { @@ -9181,9 +9000,6 @@ }, "ProductStreamFilter": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -9205,9 +9021,6 @@ }, "ProductVisibility": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -9230,7 +9043,6 @@ "Promotion": { "description": "Added since version: 6.0.0.0", "required": [ - "createdAt", "name" ], "properties": { @@ -9262,9 +9074,6 @@ }, "PromotionDiscount": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -9286,9 +9095,6 @@ }, "PromotionDiscountPrices": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -9310,9 +9116,6 @@ }, "PromotionIndividualCode": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -9334,9 +9137,6 @@ }, "PromotionSalesChannel": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -9358,9 +9158,6 @@ }, "PromotionSetgroup": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -9384,9 +9181,6 @@ "description": "Added since version: 6.0.0.0", "required": [ "id", - "displayType", - "sortingType", - "createdAt", "name" ], "properties": { @@ -9458,7 +9252,6 @@ "option", "id", "groupId", - "createdAt", "name" ], "properties": { @@ -9523,8 +9316,7 @@ "Rule": { "description": "Added since version: 6.0.0.0", "required": [ - "name", - "createdAt" + "name" ], "properties": { "id": { @@ -9562,9 +9354,6 @@ }, "RuleCondition": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -9595,7 +9384,6 @@ "shippingMethodId", "countryId", "navigationCategoryId", - "createdAt", "name", "homeEnabled" ], @@ -9763,9 +9551,6 @@ }, "SalesChannelAnalytics": { "description": "Added since version: 6.2.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -9793,8 +9578,7 @@ "salesChannelId", "languageId", "currencyId", - "snippetSetId", - "createdAt" + "snippetSetId" ], "properties": { "id": { @@ -9859,7 +9643,6 @@ "SalesChannelType": { "description": "Added since version: 6.0.0.0", "required": [ - "createdAt", "name" ], "properties": { @@ -9895,7 +9678,6 @@ "required": [ "id", "salutationKey", - "createdAt", "displayName", "letterName" ], @@ -9939,7 +9721,6 @@ "required": [ "id", "salutationKey", - "createdAt", "displayName", "letterName" ], @@ -9984,9 +9765,6 @@ }, "ScheduledTask": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -10008,9 +9786,6 @@ }, "Script": { "description": "Added since version: 6.4.7.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -10043,8 +9818,7 @@ "foreignKey", "routeName", "pathInfo", - "seoPathInfo", - "createdAt" + "seoPathInfo" ], "properties": { "id": { @@ -10115,8 +9889,7 @@ "foreignKey", "routeName", "pathInfo", - "seoPathInfo", - "createdAt" + "seoPathInfo" ], "properties": { "id": { @@ -10191,13 +9964,11 @@ "readOnly": true } }, - "type": "object" + "type": "object", + "title": "SeoUrlEntity" }, "SeoUrlTemplate": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -10240,8 +10011,6 @@ "required": [ "id", "deliveryTimeId", - "taxType", - "createdAt", "name" ], "properties": { @@ -10488,8 +10257,6 @@ "required": [ "id", "deliveryTimeId", - "taxType", - "createdAt", "name" ], "properties": { @@ -10585,8 +10352,7 @@ "description": "Added since version: 6.0.0.0", "required": [ "id", - "shippingMethodId", - "createdAt" + "shippingMethodId" ], "properties": { "id": { @@ -10625,7 +10391,10 @@ "description": "Ending range of quantity of an item." }, "currencyPrice": { - "type": "object", + "type": "array", + "items": { + "$ref": "#/components/schemas/Price" + }, "description": "Contains currency-based price." }, "customFields": { @@ -10650,8 +10419,7 @@ "required": [ "setId", "translationKey", - "value", - "createdAt" + "value" ], "properties": { "id": { @@ -10693,8 +10461,7 @@ "description": "Added since version: 6.0.0.0", "required": [ "name", - "iso", - "createdAt" + "iso" ], "properties": { "id": { @@ -10736,7 +10503,6 @@ "StateMachine": { "description": "Added since version: 6.0.0.0", "required": [ - "createdAt", "name" ], "properties": { @@ -10776,9 +10542,6 @@ }, "StateMachineHistory": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -10808,7 +10571,6 @@ "description": "Added since version: 6.0.0.0", "required": [ "technicalName", - "createdAt", "name" ], "properties": { @@ -10848,9 +10610,6 @@ }, "StateMachineTransition": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -10875,8 +10634,7 @@ "required": [ "id", "configurationKey", - "configurationValue", - "createdAt" + "configurationValue" ], "properties": { "id": { @@ -10922,8 +10680,7 @@ "description": "Added since version: 6.0.0.0", "required": [ "id", - "name", - "createdAt" + "name" ], "properties": { "id": { @@ -10952,9 +10709,7 @@ "required": [ "id", "taxRate", - "name", - "position", - "createdAt" + "name" ], "properties": { "id": { @@ -10998,7 +10753,6 @@ "required": [ "id", "priority", - "createdAt", "name" ], "properties": { @@ -11052,9 +10806,6 @@ }, "TaxRule": { "description": "Added since version: 6.1.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -11077,7 +10828,6 @@ "TaxRuleType": { "description": "Added since version: 6.1.0.0", "required": [ - "createdAt", "typeName" ], "properties": { @@ -11109,8 +10859,7 @@ "id", "name", "author", - "active", - "createdAt" + "active" ], "properties": { "id": { @@ -11197,7 +10946,6 @@ "description": "Added since version: 6.0.0.0", "required": [ "id", - "createdAt", "shortCode", "name" ], @@ -11238,9 +10986,6 @@ }, "User": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -11262,9 +11007,6 @@ }, "UserAccessKey": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -11286,9 +11028,6 @@ }, "UserConfig": { "description": "Added since version: 6.3.5.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -11310,9 +11049,6 @@ }, "UserRecovery": { "description": "Added since version: 6.0.0.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -11334,9 +11070,6 @@ }, "Webhook": { "description": "Added since version: 6.3.1.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -11358,9 +11091,6 @@ }, "WebhookEventLog": { "description": "Added since version: 6.4.1.0", - "required": [ - "createdAt" - ], "properties": { "id": { "type": "string", @@ -11380,6 +11110,27 @@ }, "type": "object" }, + "BreadcrumbCollection": { + "type": "object", + "properties": { + "breadcrumbs": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Breadcrumb" + } + }, + "apiAlias": { + "type": "string", + "enum": [ + "breadcrumb_collection" + ] + } + }, + "required": [ + "breadcrumbs", + "apiAlias" + ] + }, "AggregationEntity": { "title": "AggregationEntity", "type": "object", @@ -11595,36 +11346,221 @@ "ranges" ] }, - "WishlistLoadRouteResponse": { + "AccountNewsletterRecipient": { "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." - } - } + "status": { + "type": "string", + "enum": [ + "undefined", + "notSet", + "direct", + "optIn", + "optOut" + ] }, - "products": { - "$ref": "#/components/schemas/ProductListingResult" + "apiAlias": { + "type": "string", + "enum": [ + "account_newsletter_recipient" + ] } - } + }, + "required": [ + "status", + "apiAlias" + ] }, - "SalesChannelContext": { - "type": "object", - "properties": { - "token": { - "description": "Context the user session", - "type": "string" - }, - "currentCustomerGroup": { - "type": "object", + "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" + }, + "EntitySearchResult": { + "type": "object", + "properties": { + "entity": { + "type": "string" + }, + "total": { + "type": "integer", + "description": "The total number of found entities" + }, + "aggregations": { + "type": "array", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", + "items": { + "type": "object" + } + }, + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." + }, + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." + } + } + }, + "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" + ] + }, + "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 + } + } + }, + "CartDelivery": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } + }, + "location": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "state": { + "$ref": "#/components/schemas/CountryState" + } + } + }, + "positions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDeliveryPosition" + } + }, + "shippingCosts": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + } + } + }, + "SalesChannelContext": { + "type": "object", + "properties": { + "token": { + "description": "Context the user session", + "type": "string" + }, + "currentCustomerGroup": { + "type": "object", "description": "Customer group of the current user", "properties": { "name": { @@ -12019,544 +11955,402 @@ } } }, - "Sitemap": { - "type": "object", + "NavigationRouteResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + }, "properties": { - "filename": { - "type": "string", - "description": "Name of the file which holds a list of all URL's." - }, - "created": { - "type": "string", - "format": "date-time" + "id": { + "description": "Unique identity of navigation route response." } - }, - "required": [ - "filename", - "created" + } + }, + "LineItemType": { + "type": "string", + "enum": [ + "product", + "credit", + "custom", + "promotion", + "discount", + "container", + "quantity" ] }, - "CartDeliveryPosition": { + "LineItem": { "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" - } + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" } }, - "identifier": { + "cover": { + "$ref": "#/components/schemas/ProductMedia" + }, + "dataContextHash": { "type": "string" }, - "lineItem": { - "$ref": "#/components/schemas/LineItem" + "dataTimestamp": { + "type": "string" }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" - } - } - }, - "CartItems": { - "type": "object", - "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." - } - } - } - } - }, - "Criteria": { - "type": "object", - "description": "Criteria to query entities.", - "properties": { - "page": { - "description": "Search result page", - "type": "integer" + "deliveryInformation": { + "$ref": "#/components/schemas/CartDeliveryInformation" }, - "term": { - "description": "Search term", - "type": "string" + "description": { + "type": "string", + "description": "Description of line items in an order." }, - "limit": { - "description": "Number of items per result page", - "type": "integer" + "good": { + "type": "boolean", + "description": "When set to true, it indicates the line item is physical else it is virtual." }, - "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" + "id": { + "type": "string", + "description": "Unique identity of line item." + }, + "label": { + "type": "string", + "description": "It is a typical product name given to the line item." + }, + "modified": { + "type": "boolean", + "description": "When boolean value is `true`, line items are said to be modified." + }, + "modifiedByApp": { + "type": "boolean" + }, + "payload": { + "$ref": "#/components/schemas/ProductJsonApi" + }, + "price": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] + }, + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] + }, + "quantity": { + "type": "number" + }, + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } }, - { - "$ref": "#/components/schemas/RangeFilter" + "nullable": true + }, + "totalPrice": { + "type": "number" + }, + "unitPrice": { + "type": "number" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } } - ] + } }, + "required": [ + "apiAlias", + "totalPrice", + "quantity", + "unitPrice" + ] + }, + "priceDefinition": { + "$ref": "#/components/schemas/CartPriceQuantity" + }, + "quantity": { + "type": "number", + "description": "Number of items of product." + }, + "quantityInformation": { + "type": "object", "properties": { - "type": { - "description": "To filter the results and aggregations with filter types like ==, >=, etc." + "maxPurchase": { + "type": "number" }, - "field": { - "description": "To filter the results and aggregations by field like an property identifier." + "minPurchase": { + "type": "number" }, - "value": { - "description": "To filter the results and aggregations by value." + "purchaseSteps": { + "type": "number" } } }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" - } + "referencedId": { + "type": "string", + "description": "Unique identity of type of entity." }, - "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" - } + "removable": { + "type": "boolean", + "description": "Allows the line item to be removable from the cart when set to true." }, - "associations": { - "type": "array", - "description": "Associations to include. For more information, see [Search Queries > Associations](https://shopware.stoplight.io/docs/store-api/cf710bf73d0cd-search-queries#associations)", - "items": { - "$ref": "#/components/schemas/Association" - } + "stackable": { + "type": "boolean", + "description": "Allows to change the quantity of the line item when set to true." }, - "post-filter": { + "states": { "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" - } + "type": "string", + "enum": [ + "is-physical", + "is-download" ] - }, - "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": { - "$ref": "#/components/schemas/Aggregations" - }, - "fields": { - "type": "array", - "description": "Fields which should be returned in the search result.", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" + "type": { + "$ref": "#/components/schemas/LineItemType", + "description": "Type refers to the entity type of an item whether it is product or promotion for instance." }, - "includes": { - "$ref": "#/components/schemas/Include" - } - } - }, - "Association": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Criteria" - } - }, - "Include": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { + "uniqueIdentifier": { "type": "string" } - } - }, - "Aggregations": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "title": "AggregationEntity", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationFilter", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationTerms", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationHistogram", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationRange", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationRange" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - } - ] - } - }, - "SubAggregations": { - "type": "object", - "properties": { - "aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/AggregationRange" - } - ] - } - } - }, - "TotalCountMode": { - "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", - "type": "string", - "default": "none", - "enum": [ - "none", - "exact", - "next-pages" + }, + "required": [ + "id", + "type" ] }, - "Query": { + "CartDeliveryInformation": { "type": "object", "properties": { - "score": { - "type": "number" + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_information" + ] }, - "query": { - "oneOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" + "freeDelivery": { + "type": "boolean" + }, + "deliveryTime": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - { - "$ref": "#/components/schemas/EqualsFilter" + "min": { + "type": "integer" }, - { - "$ref": "#/components/schemas/MultiNotFilter" + "max": { + "type": "integer" }, - { - "$ref": "#/components/schemas/RangeFilter" + "unit": { + "type": "string" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_time" + ] } - ] + } + }, + "height": { + "type": "integer" + }, + "length": { + "type": "integer" + }, + "restockTime": { + "type": "integer" + }, + "stock": { + "type": "integer" + }, + "weight": { + "type": "integer" + }, + "width": { + "type": "integer" } }, - "additionalProperties": true + "required": [ + "apiAlias" + ] }, - "Sort": { + "AggregationMetrics": { "type": "object", "properties": { - "field": { + "name": { "type": "string" }, - "order": { + "type": { "type": "string", "enum": [ - "ASC", - "DESC" + "avg", + "count", + "max", + "min", + "stats", + "sum" ] }, - "naturalSorting": { - "type": "boolean" - }, - "type": { + "field": { "type": "string" } }, "required": [ - "field", - "order" + "name", + "type", + "field" ] }, - "Filters": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "SimpleFilter": { + "Price": { "type": "object", + "description": "Price object", "properties": { - "type": { + "currencyId": { "type": "string", - "enum": [ - "contains", - "equalsAny", - "prefix", - "suffix" - ] + "pattern": "^[0-9a-f]{32}$" }, - "field": { - "type": "string" + "gross": { + "description": "", + "type": "number" }, - "value": { - "type": "string" - } - }, - "required": [ - "type", - "field", - "value" - ] - }, - "EqualsFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "equals" - ] + "net": { + "description": "", + "type": "number" }, - "field": { - "type": "string" + "linked": { + "description": "", + "type": "boolean" }, - "value": { - "oneOf": [ - { - "type": "string" + "listPrice": { + "description": "", + "type": "object", + "properties": { + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - { + "gross": { + "description": "", "type": "number" }, - { - "type": "boolean" + "net": { + "description": "", + "type": "number" }, - { - "type": "null" + "linked": { + "description": "", + "type": "boolean" } - ] - } - }, - "required": [ - "type", - "field", - "value" - ] - }, - "MultiNotFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "multi", - "not" - ] - }, - "operator": { - "type": "string", - "enum": [ - "AND", - "and", - "OR", - "or" - ] - }, - "queries": { - "$ref": "#/components/schemas/Filters" - } - }, - "required": [ - "type", - "operator", - "queries" - ] - }, - "RangeFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "range" + }, + "required": [ + "gross", + "net" ] }, - "field": { - "type": "string" - }, - "parameters": { + "regulationPrice": { + "description": "", "type": "object", "properties": { - "gte": { - "type": "number" + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "gt": { + "gross": { + "description": "", "type": "number" }, - "lte": { + "net": { + "description": "", "type": "number" }, - "lt": { - "type": "number" + "linked": { + "description": "", + "type": "boolean" } - } + }, + "required": [ + "gross", + "net" + ] } }, "required": [ - "type", - "field", - "parameters" + "currencyId", + "gross", + "net" ] }, - "NavigationRouteResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - }, - "properties": { - "id": { - "description": "Unique identity of navigation route response." - } - } - }, - "SuccessResponse": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - } - } - }, "ProductListingCriteria": { "allOf": [ { @@ -12688,1151 +12482,556 @@ } } }, - "ProductDetailResponse": { + "Cart": { "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "product": { - "$ref": "#/components/schemas/Product" + "name": { + "description": "Name of the cart - for example `guest-cart`", + "type": "string" }, - "configurator": { + "token": { + "description": "Context token identifying the cart and the user session", + "type": "string" + }, + "price": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "lineItems": { + "description": "All items within the cart", "type": "array", - "description": "List of property groups with their corresponding options and information on how to display them.", "items": { - "$ref": "#/components/schemas/PropertyGroup" + "$ref": "#/components/schemas/LineItem" } }, - "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" - ] - }, - "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" + "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." + } + } }, - "totalPrice": { - "type": "number" + "deliveries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDelivery" + } }, - "calculatedTaxes": { + "transactions": { + "description": "A list of all payment transactions associated with the current cart.", "type": "array", "items": { "type": "object", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" + "paymentMethodId": { + "type": "string" }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" + "amount": { + "$ref": "#/components/schemas/CalculatedPrice" } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] + } + }, + "properties": { + "paymentMethodId": { + "description": "Unique identity of payment method." + } } }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] + "modified": { + "type": "boolean", + "description": "It signifies any changes to cart." }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] + "customerComment": { + "type": "string", + "description": "A comment that can be added to the cart.", + "nullable": true }, - "positionPrice": { + "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." + } + } + }, + "CartListPrice": { + "type": "object", + "description": "", + "properties": { + "discount": { "type": "number" }, - "netPrice": { + "percentage": { "type": "number" }, - "regulationPrice": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_list_price" + ] + } + }, + "required": [ + "apiAlias" + ] + }, + "FindProductVariantRouteResponse": { + "type": "object", + "properties": { + "foundCombination": { "type": "object", "properties": { - "price": { - "type": "number" - }, - "apiAlias": { + "variantId": { "type": "string", - "enum": [ - "cart_regulation_price" - ] + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of a variant." + }, + "options": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Available product variant options. For example, for variant `Size`, option would be `XS`, `S`, `M`, `L`, `XL`." } - }, - "nullable": true - }, - "hasRange": { - "type": "boolean" + } + } + } + }, + "Breadcrumb": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - "variantId": { + "categoryId": { "type": "string", - "format": "^[0-9a-f]{32}$", - "nullable": true + "pattern": "^[0-9a-f]{32}$" }, - "apiAlias": { + "type": { "type": "string", "enum": [ - "calculated_price" + "page", + "link", + "folder" ] }, - "taxRules": { + "translated": { + "type": "object", + "additionalProperties": true, + "properties": { + "customFields": { + "type": "object" + }, + "slotConfig": { + "type": "object" + }, + "linkType": { + "type": "string", + "enum": [ + "external", + "category", + "product", + "landing_page" + ] + }, + "internalLink": { + "type": "string" + }, + "externalLink": { + "type": "string" + }, + "linkNewTab": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "metaTitle": { + "type": "string" + }, + "metaDescription": { + "type": "string" + }, + "keywords": { + "type": "string" + } + } + }, + "path": { + "type": "string" + }, + "seoUrls": { "type": "array", - "description": "Currently active tax rules and/or rates", "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } + "$ref": "#/components/schemas/SeoUrl" } + }, + "apiAlias": { + "type": "string", + "enum": [ + "breadcrumb" + ] } }, "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "referencePrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitPrice", - "positionPrice", - "netPrice", - "taxRules" - ] - }, - "NavigationType": { - "type": "string", - "enum": [ - "main-navigation", - "footer-navigation", - "service-navigation" + "name", + "categoryId", + "type", + "translated", + "path", + "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": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - } - } - } - }, - "orderDeliveries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "orderId": { - "type": "string" - }, - "shippingOrderAddressId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "shippingDateEarliest": { - "type": "string", - "format": "date-time" - }, - "shippingDateLatest": { - "type": "string", - "format": "date-time" - }, - "stateId": { - "type": "string" - } - } - } - }, - "salesChannelDefaultAssignments": { - "type": "array", - "items": { + "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": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { + "navigationId": { "type": "string" }, - "countryId": { - "type": "string" + "manufacturer": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } }, - "navigationCategoryId": { - "type": "string" + "price": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "default": 0 + }, + "max": { + "type": "integer", + "default": 0 + } + }, + "required": [ + "min", + "max" + ] }, - "navigationCategoryDepth": { + "rating": { "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" + "nullable": true }, - "customerGroupId": { - "type": "string" + "shipping-free": { + "type": "boolean", + "default": false }, - "hreflangActive": { - "type": "boolean" + "properties": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } }, - "hreflangDefaultDomainId": { + "search": { "type": "string" } + }, + "required": [ + "manufacturer", + "navigationId", + "price", + "properties", + "rating", + "shipping-free" + ] + }, + "availableSortings": { + "type": "array", + "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", + "items": { + "type": "object", + "properties": { + "label": { + "type": "string" + }, + "translated": { + "type": "object", + "properties": { + "label": { + "type": "string" + } + }, + "required": [ + "label" + ] + }, + "key": { + "type": "string" + }, + "priority": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_sorting" + ] + } + }, + "required": [ + "label", + "translated", + "key", + "priority", + "apiAlias" + ] + } + }, + "sorting": { + "type": "string" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" } + }, + "entity": { + "type": "string", + "enum": [ + "product" + ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_listing" + ] } }, - "salesChannels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" - }, - "hreflangDefaultDomainId": { - "type": "string" - } - } - } - }, - "availabilityRule": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "priority": { - "type": "integer", - "format": "int32" - }, - "invalid": { - "type": "boolean" - } - } - }, - "availabilityRuleId": { - "type": "string" - }, - "prices": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "ruleId": { - "type": "string" - }, - "calculation": { - "type": "integer", - "format": "int32" - }, - "quantityStart": { - "type": "number", - "format": "float" - }, - "quantityEnd": { - "type": "number", - "format": "float" - }, - "price": { - "type": "number", - "format": "float" - }, - "calculationRuleId": { - "type": "string" - } - } - } - }, - "mediaId": { - "type": "string" - }, - "media": { - "type": "object", - "properties": { - "userId": { - "type": "string" - }, - "mimeType": { - "type": "string" - }, - "fileExtension": { - "type": "string" - }, - "fileSize": { - "type": "integer", - "format": "int32" - }, - "title": { - "type": "string" - }, - "metaDataRaw": { - "type": "string" - }, - "mediaTypeRaw": { - "type": "string" - }, - "uploadedAt": { - "type": "string", - "format": "date-time" - }, - "alt": { - "type": "string" - }, - "url": { - "type": "string" - }, - "fileName": { - "type": "string" - }, - "mediaFolderId": { - "type": "string" - }, - "private": { - "type": "boolean" - }, - "thumbnailsRo": { - "type": "string" - } - } - }, - "tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - } - } - } - } + "required": [ + "elements", + "availableSortings", + "currentFilters", + "apiAlias" + ] } - }, + ] + }, + "CustomerAddressRead": { + "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." - }, - "description": { - "description": "The order of the tabs of your defined shipping methods in the storefront by entering numerical values like 1,2,3, etc." - }, - "deliveryTimeId": { - "description": "Unique identity of the delivery time." - }, - "deliveryTime": { - "properties": { - "name": { - "description": "Name given to delivery time." - }, - "min": { - "description": "Minimum delivery time taken." - }, - "max": { - "description": "Maximum delivery time taken." - }, - "unit": { - "description": "Unit in which the delivery time is defined. For example, days or hours." - } - } - }, - "translations": { - "properties": { - "shippingMethodId": { - "description": "Unique identity of shipping method." - }, - "name": { - "description": "Name of the shipping method." - }, - "description": { - "description": "A short description of the shipping method." - } - } - }, - "orderDeliveries": { - "properties": { - "orderId": { - "description": "Unique identity of order." - }, - "shippingOrderAddressId": { - "description": "Unique identity of shipping order address." - }, - "shippingMethodId": { - "description": "Unique identity of shipping method." - }, - "shippingDateEarliest": { - "description": "Date and time of earliest delivery of products." - }, - "shippingDateLatest": { - "description": "Date and time of latest delivery of products." - }, - "stateId": { - "description": "Unique identity of state." - } - } - }, - "salesChannelDefaultAssignments": { - "properties": { - "stateId": { - "description": "Unique identity of state." - }, - "languageId": { - "description": "Unique identity of language." - }, - "currencyId": { - "description": "Unique identity of currency." - }, - "paymentMethodId": { - "description": "Unique identity of payment method." - }, - "shippingMethodId": { - "description": "Unique identity of shipping method." - }, - "countryId": { - "description": "Unique identity of country." - }, - "navigationCategoryId": { - "description": "Unique identity of navigation category." - }, - "navigationCategoryDepth": { - "description": "It determines the number of levels of subcategories in the storefront category menu." - }, - "footerCategoryId": { - "description": "Unique identity of footer category." - }, - "serviceCategoryId": { - "description": "Unique identity of service category." - }, - "name": { - "description": "Name of the sales channel." - }, - "shortName": { - "description": "A short name for sales channel." - }, - "accessKey": { - "description": "Access key to store api." - }, - "active": { - "description": "When boolean value is `true`, the shipping methods are available for selection in the sales channel's storefront." - }, - "maintenance": { - "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." - }, - "maintenanceIpWhitelist": { - "description": "Array of IP address allowed to access the sales channel." - }, - "mailHeaderFooterId": { - "description": "Unique identity of mail header and footer." - }, - "customerGroupId": { - "description": "Unique identity of customer group." - }, - "hreflangActive": { - "description": "When boolean value is `true`, the sales channel pages are available in different languages." - }, - "hreflangDefaultDomainId": { - "description": "Unique identity of hreflangDefaultDomain." - } - } - }, - "salesChannels": { - "properties": { - "stateId": { - "description": "Unique identity of state." - }, - "languageId": { - "description": "Unique identity of language." - }, - "currencyId": { - "description": "Unique identity of currency." - }, - "paymentMethodId": { - "description": "Unique identity of payment method." - }, - "shippingMethodId": { - "description": "Unique identity of shipping method." - }, - "countryId": { - "description": "Unique identity of country." - }, - "navigationCategoryId": { - "description": "Unique identity of navigation category." - }, - "navigationCategoryDepth": { - "description": "It determines the number of levels of subcategories in the storefront category menu." - }, - "footerCategoryId": { - "description": "Unique identity of footer category." - }, - "serviceCategoryId": { - "description": "Unique identity of service category." - }, - "name": { - "description": "Name of the sales channel." - }, - "shortName": { - "description": "A short name for sales channel." - }, - "accessKey": { - "description": "Access key to store api." - }, - "active": { - "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." - }, - "maintenance": { - "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." - }, - "maintenanceIpWhitelist": { - "description": "Array of IP address allowed to access the sales channel." - }, - "mailHeaderFooterId": { - "description": "Unique identity of mail header and footer." - }, - "customerGroupId": { - "description": "Unique identity of customer group." - }, - "hreflangActive": { - "description": "When boolean value is `true``, the sales channel pages are available in different languages." - }, - "hreflangDefaultDomainId": { - "description": "Unique identity of hreflangDefaultDomain." - } - } + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true }, - "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." - } - } + "customerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true }, - "availabilityRuleId": { - "description": "Unique identity of availability rule." + "createdAt": { + "type": "string", + "format": "date-time" }, - "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." - } - } + "updatedAt": { + "type": "string", + "format": "date-time", + "nullable": true }, - "mediaId": { - "description": "Unique identity of media." + "country": { + "$ref": "#/components/schemas/Country" }, - "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." - } - } + "countryState": { + "$ref": "#/components/schemas/CountryState", + "nullable": true }, - "tags": { - "properties": { - "name": { - "description": "Name of the tag." - } - } - } - } - }, - "FindProductVariantRouteResponse": { - "type": "object", - "properties": { - "foundCombination": { - "type": "object", - "properties": { - "variantId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of a variant." - }, - "options": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Available product variant options. For example, for variant `Size`, option would be `XS`, `S`, `M`, `L`, `XL`." - } - } + "salutation": { + "$ref": "#/components/schemas/Salutation" } - } + }, + "required": [ + "customerId", + "createdAt", + "updatedAt", + "country", + "salutation" + ] }, - "ProductListingFlags": { + "SuccessResponse": { "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 + "success": { + "type": "boolean" } } }, - "LineItemType": { - "type": "string", - "enum": [ - "product", - "credit", - "custom", - "promotion", - "discount", - "container", - "quantity" - ] - }, - "LineItem": { + "CartPriceReference": { "type": "object", "properties": { - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - }, - "cover": { - "$ref": "#/components/schemas/ProductMedia" + "purchaseUnit": { + "type": "number" }, - "dataContextHash": { - "type": "string" + "referenceUnit": { + "type": "number" }, - "dataTimestamp": { + "unitName": { "type": "string" }, - "deliveryInformation": { - "$ref": "#/components/schemas/CartDeliveryInformation" - }, - "description": { - "type": "string", - "description": "Description of line items in an order." - }, - "good": { - "type": "boolean", - "description": "When set to true, it indicates the line item is physical else it is virtual." - }, - "id": { - "type": "string", - "description": "Unique identity of line item." + "price": { + "type": "number" }, - "label": { + "apiAlias": { "type": "string", - "description": "It is a typical product name given to the line item." - }, - "modified": { - "type": "boolean", - "description": "When boolean value is `true`, line items are said to be modified." - }, - "modifiedByApp": { - "type": "boolean" + "enum": [ + "cart_price_reference" + ] }, - "payload": { - "$ref": "#/components/schemas/ProductJsonApi" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] }, - "price": { + "regulationPrice": { "type": "object", "properties": { + "price": { + "type": "number" + }, "apiAlias": { "type": "string", "enum": [ - "calculated_price" - ] - }, - "calculatedTaxes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] - }, - "quantity": { - "type": "number" - }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } + "cart_regulation_price" ] - }, - "regulationPrice": { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - }, - "nullable": true - }, - "totalPrice": { - "type": "number" - }, - "unitPrice": { - "type": "number" - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } } }, - "required": [ - "apiAlias", - "totalPrice", - "quantity", - "unitPrice" - ] - }, - "priceDefinition": { - "$ref": "#/components/schemas/CartPriceQuantity" + "nullable": true }, - "quantity": { - "type": "number", - "description": "Number of items of product." + "hasRange": { + "type": "boolean" }, - "quantityInformation": { + "variantId": { + "type": "string", + "format": "^[0-9a-f]{32}$", + "nullable": true + } + }, + "required": [ + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" + ] + }, + "CartDeliveryPosition": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { "type": "object", "properties": { - "maxPurchase": { - "type": "number" - }, - "minPurchase": { - "type": "number" + "earliest": { + "type": "string", + "format": "date-time" }, - "purchaseSteps": { - "type": "number" + "latest": { + "type": "string", + "format": "date-time" } } }, - "referencedId": { - "type": "string", - "description": "Unique identity of type of entity." - }, - "removable": { - "type": "boolean", - "description": "Allows the line item to be removable from the cart when set to true." - }, - "stackable": { - "type": "boolean", - "description": "Allows to change the quantity of the line item when set to true." - }, - "states": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "is-physical", - "is-download" - ] - } + "identifier": { + "type": "string" }, - "type": { - "$ref": "#/components/schemas/LineItemType", - "description": "Type refers to the entity type of an item whether it is product or promotion for instance." + "lineItem": { + "$ref": "#/components/schemas/LineItem" }, - "uniqueIdentifier": { - "type": "string" - } - }, - "required": [ - "id", - "type" + "price": { + "$ref": "#/components/schemas/CalculatedPrice" + } + } + }, + "NavigationType": { + "type": "string", + "enum": [ + "main-navigation", + "footer-navigation", + "service-navigation" ] }, - "CartDelivery": { + "CartError": { "type": "object", "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "deliveryDate": { + "items": { "type": "object", "properties": { - "earliest": { - "type": "string", - "format": "date-time" + "key": { + "type": "string" }, - "latest": { - "type": "string", - "format": "date-time" - } - } - }, - "location": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", + "level": { + "type": "number", "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" + 0, + 10, + 20 + ], + "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" + "message": { + "type": "string" }, - "state": { - "$ref": "#/components/schemas/CountryState" + "messageKey": { + "type": "string" } } - }, - "positions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDeliveryPosition" - } - }, - "shippingCosts": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" } } }, - "AggregationMetrics": { - "type": "object", + "CrossSellingElementCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrossSellingElement" + }, "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "avg", - "count", - "max", - "min", - "stats", - "sum" - ] - }, - "field": { - "type": "string" + "total": { + "description": "Number of cross selling elements found." } - }, - "required": [ - "name", - "type", - "field" - ] + } }, "OrderRouteResponse": { "type": "object", @@ -13848,684 +13047,1400 @@ { "$ref": "#/components/schemas/EntitySearchResult" } - ] - }, - "paymentChangeable": { - "type": "object", - "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", - "additionalProperties": { - "type": "boolean" - } - } - }, - "required": [ - "orders" - ] - }, - "ProductListingResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EntitySearchResult" - }, - { - "type": "object", - "properties": { - "currentFilters": { + ] + }, + "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" + ] + }, + "ShippingMethodPageRouteResponse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "deliveryTimeId": { + "type": "string" + }, + "deliveryTime": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "min": { + "type": "integer", + "format": "int32" + }, + "max": { + "type": "integer", + "format": "int32" + }, + "unit": { + "type": "string" + } + } + }, + "translations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + } + } + } + }, + "orderDeliveries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "orderId": { + "type": "string" + }, + "shippingOrderAddressId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "shippingDateEarliest": { + "type": "string", + "format": "date-time" + }, + "shippingDateLatest": { + "type": "string", + "format": "date-time" + }, + "stateId": { + "type": "string" + } + } + } + }, + "salesChannelDefaultAssignments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } + } + }, + "salesChannels": { + "type": "array", + "items": { "type": "object", - "description": "Contains the state of the filters. These can be used to create listing filters.", "properties": { - "navigationId": { + "typeId": { "type": "string" }, - "manufacturer": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "languageId": { + "type": "string" }, - "price": { - "type": "object", - "properties": { - "min": { - "type": "integer", - "default": 0 - }, - "max": { - "type": "integer", - "default": 0 - } - }, - "required": [ - "min", - "max" - ] + "currencyId": { + "type": "string" }, - "rating": { + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { "type": "integer", - "nullable": true + "format": "int32" }, - "shipping-free": { - "type": "boolean", - "default": false + "footerCategoryId": { + "type": "string" }, - "properties": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "serviceCategoryId": { + "type": "string" }, - "search": { + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { "type": "string" } + } + } + }, + "availabilityRule": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - "required": [ - "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" - ] - } + "description": { + "type": "string" + }, + "priority": { + "type": "integer", + "format": "int32" + }, + "invalid": { + "type": "boolean" + } + } + }, + "availabilityRuleId": { + "type": "string" + }, + "prices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" }, - "required": [ - "label", - "translated", - "key", - "priority", - "apiAlias" - ] + "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" + } } - }, - "sorting": { - "type": "string" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" + } + }, + "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" } - }, - "entity": { - "type": "string", - "enum": [ - "product" - ] - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_listing" - ] } }, - "required": [ - "elements", - "availableSortings", - "currentFilters", - "apiAlias" - ] + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + } + } } - ] - }, - "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" + "name": { + "description": "Name of the shipping method." }, - "lastName": { - "type": "string" + "active": { + "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." }, - "zipcode": { - "type": "string" + "description": { + "description": "The order of the tabs of your defined shipping methods in the storefront by entering numerical values like 1,2,3, etc." }, - "city": { - "type": "string" + "deliveryTimeId": { + "description": "Unique identity of the delivery time." }, - "company": { - "type": "string" + "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." + } + } }, - "street": { - "type": "string" + "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." + } + } }, - "department": { - "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." + } + } }, - "title": { - "type": "string" + "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." + } + } }, - "phoneNumber": { - "type": "string" + "salesChannels": { + "properties": { + "stateId": { + "description": "Unique identity of state." + }, + "languageId": { + "description": "Unique identity of language." + }, + "currencyId": { + "description": "Unique identity of currency." + }, + "paymentMethodId": { + "description": "Unique identity of payment method." + }, + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "countryId": { + "description": "Unique identity of country." + }, + "navigationCategoryId": { + "description": "Unique identity of navigation category." + }, + "navigationCategoryDepth": { + "description": "It determines the number of levels of subcategories in the storefront category menu." + }, + "footerCategoryId": { + "description": "Unique identity of footer category." + }, + "serviceCategoryId": { + "description": "Unique identity of service category." + }, + "name": { + "description": "Name of the sales channel." + }, + "shortName": { + "description": "A short name for sales channel." + }, + "accessKey": { + "description": "Access key to store api." + }, + "active": { + "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." + }, + "maintenance": { + "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." + }, + "maintenanceIpWhitelist": { + "description": "Array of IP address allowed to access the sales channel." + }, + "mailHeaderFooterId": { + "description": "Unique identity of mail header and footer." + }, + "customerGroupId": { + "description": "Unique identity of customer group." + }, + "hreflangActive": { + "description": "When boolean value is `true``, the sales channel pages are available in different languages." + }, + "hreflangDefaultDomainId": { + "description": "Unique identity of hreflangDefaultDomain." + } + } }, - "additionalAddressLine1": { - "type": "string" + "availabilityRule": { + "properties": { + "name": { + "description": "Unique name for the rule." + }, + "description": { + "description": "A short description about the rule." + }, + "priority": { + "description": "A numerical value to prioritize one of the rules from the list." + }, + "invalid": { + "description": "When the boolean value is `true`, the rule is no more available for usage." + } + } }, - "additionalAddressLine2": { - "type": "string" + "availabilityRuleId": { + "description": "Unique identity of availability rule." }, - "customFields": { - "type": "object" + "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." + } + } }, - "country": { - "$ref": "#/components/schemas/Country" + "mediaId": { + "description": "Unique identity of media." }, - "countryState": { - "$ref": "#/components/schemas/CountryState" + "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." + } + } }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "tags": { + "properties": { + "name": { + "description": "Name of the tag." + } + } } - }, - "type": "object" + } }, - "AccountNewsletterRecipient": { + "CalculatedPrice": { "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "status": { - "type": "string", - "enum": [ - "undefined", - "notSet", - "direct", - "optIn", - "optOut" - ] + "unitPrice": { + "type": "number" }, - "apiAlias": { - "type": "string", - "enum": [ - "account_newsletter_recipient" - ] - } - }, - "required": [ - "status", - "apiAlias" - ] - }, - "CrossSellingElement": { - "type": "object", - "properties": { - "crossSelling": { - "$ref": "#/components/schemas/ProductCrossSelling" + "quantity": { + "type": "number" }, - "products": { + "rawTotal": { + "type": "number" + }, + "totalPrice": { + "type": "number" + }, + "calculatedTaxes": { "type": "array", "items": { - "$ref": "#/components/schemas/Product" + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] } }, - "total": { - "type": "integer", - "format": "int32" - }, - "streamId": { - "type": "string", - "format": "uuid" + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] }, - "apiAlias": { - "type": "string", - "enum": [ - "cross_selling_element" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } ] - } - }, - "required": [ - "crossSelling", - "products", - "total", - "apiAlias" - ] - }, - "CustomerAddressRead": { - "type": "object", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true }, - "customerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true + "positionPrice": { + "type": "number" }, - "createdAt": { - "type": "string", - "format": "date-time" + "netPrice": { + "type": "number" }, - "updatedAt": { - "type": "string", - "format": "date-time", + "regulationPrice": { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + }, "nullable": true }, - "country": { - "$ref": "#/components/schemas/Country" + "hasRange": { + "type": "boolean" }, - "countryState": { - "$ref": "#/components/schemas/CountryState", + "variantId": { + "type": "string", + "format": "^[0-9a-f]{32}$", "nullable": true }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "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": [ - "customerId", - "createdAt", - "updatedAt", - "country", - "salutation" + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "referencePrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitPrice", + "positionPrice", + "netPrice", + "taxRules" ] }, - "CartPriceQuantity": { + "Criteria": { "type": "object", + "description": "Criteria to query entities.", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_quantity" - ] + "page": { + "description": "Search result page", + "type": "integer" }, - "isCalculated": { - "type": "boolean" + "term": { + "description": "Search term", + "type": "string" }, - "listPrice": { - "$ref": "#/components/schemas/CartListPrice" + "limit": { + "description": "Number of items per result page", + "type": "integer" }, - "price": { - "type": "number" + "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." + } + } }, - "quantity": { - "type": "number" + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } }, - "regulationPrice": { + "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" + } + }, + "associations": { + "type": "array", + "description": "Associations to include. For more information, see [Search Queries > Associations](https://shopware.stoplight.io/docs/store-api/cf710bf73d0cd-search-queries#associations)", + "items": { + "$ref": "#/components/schemas/Association" + } + }, + "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": { - "price": { - "type": "number", - "format": "float" + "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": { + "$ref": "#/components/schemas/Aggregations" + }, + "fields": { + "type": "array", + "description": "Fields which should be returned in the search result.", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Include" + } + } + }, + "Association": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Criteria" + } + }, + "Include": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "Aggregations": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" + }, + { + "title": "AggregationEntity", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationEntity" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationFilter", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationFilter" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationTerms", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] }, - "type": "object" - }, - "taxRules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" + { + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" }, - "name": { - "type": "string" + { + "$ref": "#/components/schemas/SubAggregations" } - } + ] + }, + { + "title": "AggregationRange", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationRange" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] } - }, - "type": { - "type": "string" - } - }, - "required": [ - "apiAlias" - ] + ] + } }, - "EntitySearchResult": { + "SubAggregations": { "type": "object", "properties": { - "entity": { - "type": "string" - }, - "total": { - "type": "integer", - "description": "The total number of found entities" - }, - "aggregations": { - "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", - "items": { - "type": "object" - } - }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." - }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." + "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" + } + ] } } }, - "CartError": { + "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", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "items": { - "type": "object", - "properties": { - "key": { - "type": "string" + "score": { + "type": "number" + }, + "query": { + "oneOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "level": { - "type": "number", - "enum": [ - 0, - 10, - 20 - ], - "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" + { + "$ref": "#/components/schemas/EqualsFilter" }, - "message": { - "type": "string" + { + "$ref": "#/components/schemas/MultiNotFilter" }, - "messageKey": { - "type": "string" + { + "$ref": "#/components/schemas/RangeFilter" } - } + ] } - } + }, + "additionalProperties": true }, - "Cart": { + "Sort": { "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", + "field": { "type": "string" }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" + "order": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] }, - "lineItems": { - "description": "All items within the cart", - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } + "naturalSorting": { + "type": "boolean" }, - "errors": { - "type": "array", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "items": { - "$ref": "#/components/schemas/CartError" + "type": { + "type": "string" + } + }, + "required": [ + "field", + "order" + ] + }, + "Filters": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "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" - } - } + { + "$ref": "#/components/schemas/EqualsFilter" }, - "properties": { - "paymentMethodId": { - "description": "Unique identity of payment method." - } + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } - }, - "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": { + ] + } + }, + "SimpleFilter": { + "type": "object", + "properties": { + "type": { "type": "string", - "description": "An affiliate tracking code", - "nullable": true + "enum": [ + "contains", + "equalsAny", + "prefix", + "suffix" + ] }, - "campaignCode": { - "type": "string", - "description": "A campaign tracking code", - "nullable": true + "field": { + "type": "string" }, - "id": { - "description": "Unique identity of cart." + "value": { + "type": "string" } - } + }, + "required": [ + "type", + "field", + "value" + ] }, - "CartPriceReference": { + "EqualsFilter": { "type": "object", "properties": { - "purchaseUnit": { - "type": "number" - }, - "referenceUnit": { - "type": "number" - }, - "unitName": { - "type": "string" - }, - "price": { - "type": "number" - }, - "apiAlias": { + "type": { "type": "string", "enum": [ - "cart_price_reference" + "equals" ] }, - "listPrice": { + "field": { + "type": "string" + }, + "value": { "oneOf": [ { - "$ref": "#/components/schemas/CartListPrice" + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" }, { "type": "null" } ] + } + }, + "required": [ + "type", + "field", + "value" + ] + }, + "MultiNotFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "multi", + "not" + ] }, - "regulationPrice": { + "operator": { + "type": "string", + "enum": [ + "AND", + "and", + "OR", + "or" + ] + }, + "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": { - "price": { + "gte": { "type": "number" }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] + "gt": { + "type": "number" + }, + "lte": { + "type": "number" + }, + "lt": { + "type": "number" } - }, - "nullable": true - }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "type": "string", - "format": "^[0-9a-f]{32}$", - "nullable": true + } } }, "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" + "type", + "field", + "parameters" ] }, - "CartListPrice": { + "CartPriceQuantity": { "type": "object", - "description": "", "properties": { - "discount": { - "type": "number" + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_quantity" + ] }, - "percentage": { - "type": "number" + "isCalculated": { + "type": "boolean" + }, + "listPrice": { + "$ref": "#/components/schemas/CartListPrice" }, "price": { "type": "number" }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_list_price" - ] + "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" ] }, - "CrossSellingElementCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CrossSellingElement" - }, + "ProductDetailResponse": { + "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "total": { - "description": "Number of cross selling elements found." + "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" + ] }, - "CartDeliveryInformation": { + "CartItems": { "type": "object", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_information" - ] - }, - "freeDelivery": { - "type": "boolean" - }, - "deliveryTime": { - "type": "object", + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + }, "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer" - }, - "max": { - "type": "integer" + "id": { + "description": "Unique identity of cart item." }, - "unit": { - "type": "string" + "modified": { + "description": "When boolean value is `true`, the cart is said to be modified." + } + } + } + } + }, + "WishlistLoadRouteResponse": { + "type": "object", + "properties": { + "wishlist": { + "type": "object", + "properties": { + "customerId": { + "type": "string", + "description": "Unique identity of the customer." }, - "apiAlias": { + "salesChannelId": { "type": "string", - "enum": [ - "cart_delivery_time" - ] + "description": "Unique identity of the sales channel." } } }, - "height": { - "type": "integer" - }, - "length": { - "type": "integer" + "products": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + }, + "CrossSellingElement": { + "type": "object", + "properties": { + "crossSelling": { + "$ref": "#/components/schemas/ProductCrossSelling" }, - "restockTime": { - "type": "integer" + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } }, - "stock": { - "type": "integer" + "total": { + "type": "integer", + "format": "int32" }, - "weight": { - "type": "integer" + "streamId": { + "type": "string", + "format": "uuid" }, - "width": { - "type": "integer" + "apiAlias": { + "type": "string", + "enum": [ + "cross_selling_element" + ] } }, "required": [ + "crossSelling", + "products", + "total", "apiAlias" ] }, @@ -15444,20 +15359,27 @@ } ], "paths": { - "/script/{hook}": { + "/product-export/{accessKey}/{fileName}": { "get": { "tags": [ - "API", - "Script", - "App" + "Product" ], - "summary": "Access point for different api logics which are provided by apps over script hooks", - "operationId": "getScriptStoreApiRoute", + "summary": "Export product export", + "operationId": "readProductExport", "parameters": [ { - "name": "hook", + "name": "accessKey", "in": "path", - "description": "Dynamic hook which used to build the hook name", + "description": "Access Key", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "fileName", + "in": "path", + "description": "File Name", "required": true, "schema": { "type": "string" @@ -15466,119 +15388,265 @@ ], "responses": { "200": { - "description": "Returns different structures of results based on the called script.", + "description": "" + } + }, + "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" + } + } + } + }, + "/customer/wishlist/add/{productId}": { + "post": { + "tags": [ + "Wishlist" + ], + "summary": "Add a product to a wishlist", + "description": "Adds a product to a customers wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "addProductOnWishlist", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Identifier of the product to be added.", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "responses": { + "200": { + "description": "Returns a success response.", "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": true, - "nullable": true + "$ref": "#/components/schemas/SuccessResponse" } - }, - "application/vnd.api+json": { + } + } + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/customer/wishlist": { + "post": { + "tags": [ + "Wishlist", + "Endpoints supporting Criteria " + ], + "summary": "Fetch a wishlist", + "description": "Fetch a customer's wishlist. Products on the wishlist can be filtered using a criteria object.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "readCustomerWishlist", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { "schema": { - "type": "object", - "additionalProperties": true, - "nullable": true + "$ref": "#/components/schemas/WishlistLoadRouteResponse" + } + } + } + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/customer/wishlist/merge": { + "post": { + "tags": [ + "Wishlist" + ], + "summary": "Create a wishlist for a customer", + "description": "Create a new wishlist for a logged in customer or extend the existing wishlist given a set of products.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * A customer can only have a single wishlist.\n * The wishlist feature has to be activated.", + "operationId": "mergeProductOnWishlist", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "productIds": { + "description": "List product id", + "type": "array", + "items": { + "description": "product id", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Returns a success response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" } } } - }, - "204": { - "description": "No data by default" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] - }, - "post": { + } + }, + "/customer/wishlist/delete/{productId}": { + "delete": { "tags": [ - "API", - "Script", - "App" + "Wishlist" ], - "summary": "Access point for different api logics which are provided by apps over script hooks", - "operationId": "postScriptStoreApiRoute", + "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": "hook", + "name": "productId", "in": "path", - "description": "Dynamic hook which used to build the hook name", + "description": "The identifier of the product to be removed from the wishlist.", "required": true, "schema": { - "type": "string" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } ], "responses": { "200": { - "description": "Returns different structures of results based on the called script.", + "description": "Returns a success response indicating a successful removal.", "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": true, - "nullable": true + "$ref": "#/components/schemas/SuccessResponse" } - }, - "application/vnd.api+json": { + } + } + }, + "404": { + "description": "The removal of the product failed. Probably because the product could not be found on the wishlist.", + "content": { + "application/json": { "schema": { - "type": "object", - "additionalProperties": true, - "nullable": true + "$ref": "#/components/schemas/failure" } } } - }, - "204": { - "description": "No data by default" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/product-listing/{categoryId}": { + "/search": { "post": { "tags": [ "Product" ], - "summary": "Fetch a product listing by category", - "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.", - "operationId": "readProductListing", + "summary": "Search for products", + "description": "Performs a search for products which can be used to display a product listing.", + "operationId": "searchPage", "parameters": [ { - "name": "categoryId", - "in": "path", - "description": "Identifier of a category.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "sw-include-seo-urls", + "name": "sw-language-id", "in": "header", - "description": "Determines if the response must contain a SeoUrl entity for a product entity", + "description": "Instructs Shopware to return the response in the given language.", "required": false, "schema": { - "type": "boolean" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, { - "name": "sw-language-id", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", "in": "header", - "description": "Instructs Shopware to return the response in the given language.", + "name": "sw-include-seo-urls", "required": false, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "boolean" } } ], @@ -15587,6 +15655,18 @@ "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" }, @@ -15617,56 +15697,25 @@ ] } }, - "/customer/wishlist/add/{productId}": { + "/cms/{id}": { "post": { "tags": [ - "Wishlist" + "Content" ], - "summary": "Add a product to a wishlist", - "description": "Adds a product to a customers wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "addProductOnWishlist", + "summary": "Fetch 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": "productId", + "name": "id", "in": "path", - "description": "Identifier of the product to be added.", + "description": "Identifier of the CMS page to be resolved", "required": true, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } - } - ], - "responses": { - "200": { - "description": "Returns a success response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/customer/wishlist": { - "post": { - "tags": [ - "Wishlist", - "Endpoints supporting Criteria " - ], - "summary": "Fetch a wishlist", - "description": "Fetch a customer's wishlist. Products on the wishlist can be filtered using a criteria object.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "readCustomerWishlist", - "parameters": [ + }, { "name": "sw-language-id", "in": "header", @@ -15679,13 +15728,21 @@ } ], "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" } ] } @@ -15694,60 +15751,62 @@ }, "responses": { "200": { - "description": "", + "description": "The loaded cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WishlistLoadRouteResponse" + "$ref": "#/components/schemas/CmsPage" } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/customer/wishlist/merge": { + "/product/{productId}/cross-selling": { "post": { "tags": [ - "Wishlist" + "Product" ], - "summary": "Create a wishlist for a customer", - "description": "Create a new wishlist for a logged in customer or extend the existing wishlist given a set of products.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * A customer can only have a single wishlist.\n * The wishlist feature has to be activated.", - "operationId": "mergeProductOnWishlist", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "properties": { - "productIds": { - "description": "List product id", - "type": "array", - "items": { - "description": "product id", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - }, - "type": "object" - } + "summary": "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}$" } } - }, + ], "responses": { "200": { - "description": "Returns a success response.", + "description": "Found cross sellings", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/CrossSellingElementCollection" } } } @@ -15755,49 +15814,71 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/customer/wishlist/delete/{productId}": { - "delete": { + "/product/{productId}": { + "post": { "tags": [ - "Wishlist" + "Product" ], - "summary": "Remove a product from a wishlist", - "description": "Removes a product from a customer's wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "deleteProductOnWishlist", + "summary": "Fetch 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": "The identifier of the product to be removed from the wishlist.", + "description": "Product ID", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string", + "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" } } ], - "responses": { - "200": { - "description": "Returns a success response indicating a successful removal.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] } } - }, - "404": { - "description": "The removal of the product failed. Probably because the product could not be found on the wishlist.", + } + }, + "responses": { + "200": { + "description": "Product information along with variant groups and options", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/failure" + "$ref": "#/components/schemas/ProductDetailResponse" } } } @@ -15805,21 +15886,20 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/salutation": { + "/product": { "post": { "tags": [ - "System & Context", + "Product", "Endpoints supporting Criteria " ], - "summary": "Fetch salutations", - "description": "Fetches salutations with a criteria obj.", - "operationId": "readSalutation", + "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", @@ -15848,7 +15928,7 @@ }, "responses": { "200": { - "description": "Entity search result containing salutations.", + "description": "Entity search result containing products", "content": { "application/json": { "schema": { @@ -15858,7 +15938,7 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Salutation" + "$ref": "#/components/schemas/Product" } } }, @@ -15880,64 +15960,20 @@ ] } }, - "/_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" - } - } - } - } - } - } - } - } - } - } - } - }, - "/landing-page/{landingPageId}": { + "/product/{productId}/reviews": { "post": { "tags": [ - "Content", + "Product", "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", + "summary": "Fetch product reviews", + "description": "Perform a filtered search for product reviews.", + "operationId": "readProductReviews", "parameters": [ { - "name": "landingPageId", + "name": "productId", "in": "path", - "description": "Identifier of the landing page.", + "description": "Identifier of the product.", "required": true, "schema": { "type": "string" @@ -15955,28 +15991,13 @@ } ], "requestBody": { + "required": false, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Criteria" - }, - { - "allOf": [ - { - "properties": { - "slots": { - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/ProductListingCriteria" - } - ] } ] } @@ -15985,17 +16006,29 @@ }, "responses": { "200": { - "description": "The loaded landing page with cms page", + "description": "Entity search result containing product reviews", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LandingPage" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductReview" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } - }, - "404": { - "$ref": "#/components/responses/404" } }, "security": [ @@ -16005,30 +16038,68 @@ ] } }, - "/app-system/{name}/generate-token": { + "/product/{productId}/review": { "post": { "tags": [ - "App system" + "Product" ], - "summary": "Generate JWT token for app system backend", - "description": "Generate JWT token for authenticated communication with the app server", - "operationId": "generateJWTAppSystemAppServer", + "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", - "name": "name", + "description": "Identifier of the product which is reviewed.", "required": true, - "description": "Name of the app", "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": { + "required": [ + "title", + "content", + "points" + ], + "properties": { + "name": { + "description": "The name of the review author. If not set, the first name of the customer is chosen.", + "type": "string" + }, + "email": { + "description": "The email address of the review author. If not set, the email of the customer is chosen.", + "type": "string" + }, + "title": { + "description": "The title of the review.", + "type": "string" + }, + "content": { + "description": "The content of review.", + "type": "string" + }, + "points": { + "description": "The review rating for the product.", + "type": "number", + "format": "double" + } + }, "type": "object" } } @@ -16036,44 +16107,35 @@ }, "responses": { "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "token": { - "type": "string" - }, - "expires": { - "type": "string", - "format": "date-time" - }, - "shopId": { - "type": "string" - } - } - } - } - } + "description": "Success response indicating the review was saved successfully." } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/checkout/cart": { - "get": { + "/product/{productId}/find-variant": { + "post": { "tags": [ - "Cart" + "Product" ], - "summary": "Fetch or create a cart", - "description": "Used to fetch the current cart or for creating a new one.", - "operationId": "readCart", + "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", @@ -16085,38 +16147,38 @@ } } ], - "responses": { - "200": { - "description": "Cart", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Cart" - } + "requestBody": { + "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" + } + }, + "type": "object" } } } }, - "security": [ - { - "ApiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Cart" - ], - "summary": "Delete a cart", - "description": "This route deletes the cart of the customer.", - "operationId": "deleteCart", "responses": { - "204": { - "description": "Successfully deleted the cart", + "200": { + "description": "Returns an FoundCombination struct containing the ids matching the search.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/FindProductVariantRouteResponse" } } } @@ -16129,42 +16191,37 @@ ] } }, - "/checkout/cart/line-item": { + "/account/newsletter-recipient": { "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, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } + "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": { - "$ref": "#/components/schemas/CartItems" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] } } } }, "responses": { "200": { - "description": "The updated cart.", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "$ref": "#/components/schemas/AccountNewsletterRecipient" } } } @@ -16172,50 +16229,76 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] - }, - "delete": { + } + }, + "/account/change-profile": { + "post": { "tags": [ - "Cart" + "Profile" ], - "summary": "Remove items from the cart", - "description": "DEPRECATED: use removeLineItem instead. This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", - "operationId": "removeLineItemDeprecated", - "deprecated": true, - "parameters": [ - { - "name": "ids", - "in": "query", - "description": "A list of product identifiers.", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "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": { + "required": [ + "salutationId", + "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" + }, + "company": { + "description": "Company of the customer. Only required when `accountType` is `business`.", + "type": "string" + }, + "birthdayDay": { + "description": "Birthday day", + "type": "integer" + }, + "birthdayMonth": { + "description": "Birthday month", + "type": "integer" + }, + "birthdayYear": { + "description": "Birthday year", + "type": "integer" + } + }, + "type": "object" } } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } } - ], + }, "responses": { "200": { - "description": "The updated cart.", + "description": "Returns a success response indicating a successful update", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -16223,45 +16306,56 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] - }, - "patch": { + } + }, + "/account/change-email": { + "post": { "tags": [ - "Cart" - ], - "summary": "Update items in the cart", - "description": "This route updates items in the cart. A typical example is updating the quantity of an item.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#updating-items-in-the-cart)", - "operationId": "updateLineItem", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } + "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": { - "$ref": "#/components/schemas/CartItems" + "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": "The updated cart.", + "description": "Returns a success response indicating a successful update", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -16269,48 +16363,32 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/checkout/cart/line-item/delete": { + "/account/change-language": { "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, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } + "Profile" ], + "summary": "Change the customer's language.", + "description": "Changes the language of the logged in customer", + "operationId": "changeLanguage", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "ids" + "languageId" ], "properties": { - "ids": { - "description": "A list of product identifiers.", - "type": "array", - "minItems": 1, - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "language": { + "description": "New languageId", + "type": "string" } }, "type": "object" @@ -16320,11 +16398,11 @@ }, "responses": { "200": { - "description": "The updated cart.", + "description": "Returns a success response indicating a successful update", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -16332,47 +16410,41 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/checkout/order": { + "/account/change-password": { "post": { "tags": [ - "Order" - ], - "summary": "Create an order from a cart", - "description": "Creates a new order from the current cart and deletes the cart.\n\nIf you are using the [prepared payment flow](https://developer.shopware.com/docs/concepts/commerce/checkout-concept/payments#2.1-prepare-payment-optional), this endpoint also receives additional transaction details. The exact name of the parameters depends on the implementation of the corresponding *payment handler*.", - "operationId": "createOrder", - "parameters": [ - { - "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": { - "description": "Contains additional metadata which is stored together with the order. It can also contain payment transaction details.", + "required": true, "content": { "application/json": { "schema": { + "required": [ + "password", + "newPassword", + "newPasswordConfirm" + ], "properties": { - "customerComment": { - "description": "Adds a comment from the customer to the order.", + "password": { + "description": "Current password of the customer", "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`.", + "newPassword": { + "description": "New Password for the customer", "type": "string" }, - "campaignCode": { - "description": "The campaign code is used to track which action the customer came from. An example could be `Summer-Deals`", + "newPasswordConfirm": { + "description": "Confirmation of the new password", "type": "string" } }, @@ -16383,11 +16455,11 @@ }, "responses": { "200": { - "description": "Order", + "description": "Returns a success response indicating a successful update.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Order" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -16401,151 +16473,32 @@ ] } }, - "/checkout/gateway": { - "get": { - "tags": [ - "Gateway" - ], - "summary": "Call the checkout gateway", - "description": "Call the checkout gateway, which is used to manipulate certain aspects of the checkout process (e.g. available payment methods).", - "operationId": "checkoutGateway", - "responses": { - "200": { - "description": "Checkout gateway response", - "content": { - "application/json": { - "schema": { - "properties": { - "paymentMethods": { - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PaymentMethod" - } - } - }, - "type": "object" - }, - "shippingMethods": { - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "type": "object" - }, - "errors": { - "type": "array", - "items": { - "properties": { - "code": { - "description": "Error code", - "type": "string" - }, - "detail": { - "description": "Error detail", - "type": "string" - }, - "blocking": { - "description": "If the error is blocking", - "type": "boolean" - } - } - } - } - } - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/language": { + "/account/change-payment-method/{paymentMethodId}": { "post": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Profile" ], - "summary": "Fetch languages", - "description": "Perform a filtered search for languages.", - "operationId": "readLanguages", + "summary": "Change the customer's default payment method", + "description": "Changes a customer's default (preselected) payment method.", + "operationId": "changePaymentMethod", "parameters": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "name": "paymentMethodId", + "in": "path", + "description": "Identifier of the desired default payment method", + "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } } ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } - } - } - }, "responses": { "200": { - "description": "Entity search result containing languages.", + "description": "Returns a success response indicating a successful update.", "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" } } } @@ -16553,77 +16506,68 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/payment-method": { + "/account/customer-recovery-is-expired": { "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}$" - } - } + "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": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - }, - { - "properties": { - "onlyAvailable": { - "description": "List only available", - "type": "boolean" - } - }, - "type": "object" + "required": [ + "hash" + ], + "properties": { + "hash": { + "description": "Parameter from the link in the confirmation mail sent in Step 1", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { + "description": "Returns a CustomerRecoveryIsExpiredResponse that indicates if the hash is expired or not.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "data": { "type": "array", "items": { - "$ref": "#/components/schemas/PaymentMethod" + "type": "object", + "properties": { + "isExpired": { + "type": "boolean" + } + }, + "required": [ + "isExpired" + ] } + }, + "apiAlias": { + "enum": [ + "array_struct" + ], + "type": "string" } - }, - "type": "object" + } } } } @@ -16636,44 +16580,15 @@ ] } }, - "/document/download/{documentId}/{deepLinkCode}": { + "/account/customer": { "post": { "tags": [ - "Document", + "Profile", "Endpoints supporting Criteria " ], - "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", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], + "summary": "Get information about current customer", + "description": "Returns information about the current customer.", + "operationId": "readCustomer", "requestBody": { "required": false, "content": { @@ -16690,11 +16605,11 @@ }, "responses": { "200": { - "description": "Returns the document information and blob to download.", + "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/Document" + "$ref": "#/components/schemas/Customer" } } } @@ -16706,103 +16621,84 @@ "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": [] + } + ] } }, - "/seo-url": { - "post": { + "/account/address/{addressId}": { + "delete": { "tags": [ - "Sitemap & Routes", - "Endpoints supporting Criteria " + "Address" ], - "summary": "Fetch SEO routes", - "description": "Perform a filtered search for seo urls.", - "operationId": "readSeoUrl", + "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": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "name": "addressId", + "in": "path", + "description": "ID of the address to be deleted.", + "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } } ], - "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" - } - } - }, - "type": "object", - "required": [ - "elements" - ] - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } + "204": { + "description": "No Content response, when the address has been deleted" }, - "404": { - "$ref": "#/components/responses/404" + "400": { + "description": "Response containing a list of errors, most likely due to the address being in use" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] - } - }, - "/account/newsletter-recipient": { - "post": { + }, + "patch": { "tags": [ - "Profile", - "Newsletter", - "Endpoints supporting Criteria" + "Address" + ], + "summary": "Modify an address of a customer", + "description": "Modifies an existing address of a customer.", + "operationId": "updateCustomerAddress", + "parameters": [ + { + "name": "addressId", + "in": "path", + "description": "Address ID", + "required": true, + "schema": { + "type": "string" + } + } ], - "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" - } - ] + "$ref": "#/components/schemas/CustomerAddressBody" } } } @@ -16813,7 +16709,14 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AccountNewsletterRecipient" + "allOf": [ + { + "$ref": "#/components/schemas/CustomerAddress" + }, + { + "$ref": "#/components/schemas/CustomerAddressRead" + } + ] } } } @@ -16827,70 +16730,39 @@ ] } }, - "/account/change-profile": { + "/account/list-address": { "post": { "tags": [ - "Profile" + "Address", + "Endpoints supporting Criteria " ], - "summary": "Change the customer's information", - "description": "Make changes to a customer's account, like changing their name, salutation or title.", - "operationId": "changeProfile", + "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": true, + "required": false, "content": { "application/json": { - "schema": { - "required": [ - "salutationId", - "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" - }, - "company": { - "description": "Company of the customer. Only required when `accountType` is `business`.", - "type": "string" - }, - "birthdayDay": { - "description": "Birthday day", - "type": "integer" - }, - "birthdayMonth": { - "description": "Birthday month", - "type": "integer" - }, - "birthdayYear": { - "description": "Birthday year", - "type": "integer" + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Returns a success response indicating a successful update", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomerAddress" + } } } } @@ -16904,35 +16776,30 @@ ] } }, - "/account/change-email": { + "/account/login": { "post": { "tags": [ - "Profile" + "Login & Registration" ], - "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", + "summary": "Log in a customer", + "description": "Logs in customers given their credentials.", + "operationId": "loginCustomer", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "email", - "emailConfirmation", + "username", "password" ], "properties": { - "email": { - "description": "New email address. Has to be unique amongst all customers", - "type": "string" - }, - "emailConfirmation": { - "description": "Confirmation of the new email address.", + "username": { + "description": "Email", "type": "string" }, "password": { - "description": "Customer's current password", + "description": "Password", "type": "string" } }, @@ -16943,11 +16810,14 @@ }, "responses": { "200": { - "description": "Returns a success response indicating a successful update", + "$ref": "#/components/responses/ContextTokenResponse" + }, + "401": { + "description": "If credentials are incorrect an error is returned", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/failure" } } } @@ -16955,31 +16825,40 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/change-language": { + "/account/login/imitate-customer": { "post": { "tags": [ - "Profile" + "Login & Registration" ], - "summary": "Change the customer's language.", - "description": "Changes the language of the logged in customer", - "operationId": "changeLanguage", + "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": [ - "languageId" + "token", + "customerId", + "userId" ], "properties": { - "language": { - "description": "New languageId", + "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" } }, @@ -16990,16 +16869,42 @@ }, "responses": { "200": { - "description": "Returns a success response indicating a successful update", + "$ref": "#/components/responses/ContextTokenResponse" + }, + "400": { + "description": "If the token is incorrect an error is returned", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/failure" } } } } }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/account/logout": { + "post": { + "tags": [ + "Login & Registration" + ], + "summary": "Log out a customer", + "description": "Logs out a customer.", + "operationId": "logoutCustomer", + "responses": { + "200": { + "$ref": "#/components/responses/ContextTokenResponse" + }, + "403": { + "$ref": "#/components/responses/403" + } + }, "security": [ { "ApiKey": [], @@ -17008,35 +16913,30 @@ ] } }, - "/account/change-password": { + "/account/register-confirm": { "post": { "tags": [ - "Profile" + "Login & Registration" ], - "summary": "Change the customer's password", - "description": "Changes a customer's password using their current password as a validation.", - "operationId": "changePassword", + "summary": "Confirm a customer registration", + "description": "Confirms a customer registration when double opt-in is activated.\n\nLearn more about double opt-in registration in our guide \"Register a customer\".", + "operationId": "registerConfirm", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "password", - "newPassword", - "newPasswordConfirm" + "hash", + "em" ], "properties": { - "password": { - "description": "Current password of the customer", - "type": "string" - }, - "newPassword": { - "description": "New Password for the customer", + "hash": { + "description": "Hash from the email received", "type": "string" }, - "newPasswordConfirm": { - "description": "Confirmation of the new password", + "em": { + "description": "Email hash from the email received", "type": "string" } }, @@ -17047,50 +16947,127 @@ }, "responses": { "200": { - "description": "Returns a success response indicating a successful update.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } + "description": "Returns the logged in customer. The customer is automatically logged in with the `sw-context-token` header provided, which can be reused for subsequent requests." + }, + "404": { + "description": "No hash provided" + }, + "412": { + "description": "The customer has already been confirmed" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/change-payment-method/{paymentMethodId}": { + "/account/register": { "post": { "tags": [ - "Profile" + "Login & Registration" ], - "summary": "Change the customer's default payment method", - "description": "Changes a customer's default (preselected) payment method.", - "operationId": "changePaymentMethod", - "parameters": [ - { - "name": "paymentMethodId", - "in": "path", - "description": "Identifier of the desired default payment method", - "required": true, - "schema": { - "type": "string" + "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" + }, + "accountType": { + "description": "Account type of the customer which can be either `private` or `business`.", + "type": "string", + "default": "private" + }, + "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" + ], + "type": "object" + } } } - ], + }, "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" } } } @@ -17098,32 +17075,41 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/customer-recovery-is-expired": { + "/account/recovery-password-confirm": { "post": { "tags": [ "Profile" ], - "summary": "Checks if the customer recovery entry for a given hash is expired.", - "description": "This can be used to validate a provided hash has a valid and not expired customer recovery hash.", - "operationId": "getCustomerRecoveryIsExpired", + "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" + "hash", + "newPassword", + "newPasswordConfirm" ], "properties": { "hash": { "description": "Parameter from the link in the confirmation mail sent in Step 1", "type": "string" + }, + "newPassword": { + "description": "New password for the customer", + "type": "string" + }, + "newPasswordConfirm": { + "description": "Confirmation of the new password", + "type": "string" } }, "type": "object" @@ -17133,33 +17119,11 @@ }, "responses": { "200": { - "description": "Returns a CustomerRecoveryIsExpiredResponse that indicates if the hash is expired or not.", + "description": "Returns a success response indicating a successful update.", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "isExpired": { - "type": "boolean" - } - }, - "required": [ - "isExpired" - ] - } - }, - "apiAlias": { - "enum": [ - "array_struct" - ], - "type": "string" - } - } + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -17172,36 +17136,45 @@ ] } }, - "/account/customer": { + "/account/recovery-password": { "post": { "tags": [ - "Profile", - "Endpoints supporting Criteria " + "Profile" ], - "summary": "Get information about current customer", - "description": "Returns information about the current customer.", - "operationId": "readCustomer", + "summary": "Send a password recovery mail", + "description": "This operation is Step 1 of the password reset flow. Make sure to implement Step 2 \"Reset password with recovery credentials\" in order to allow for the complete flow in your application. Sends a recovery mail containing a link with credentials that allows a customer to reset their password.", + "operationId": "sendRecoveryMail", "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "email", + "storefrontUrl" + ], + "properties": { + "email": { + "description": "E-Mail address to identify the customer", + "type": "string" + }, + "storefrontUrl": { + "description": "URL of the storefront to use for the generated reset link. It has to be a domain that is configured in the sales channel domain settings.", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "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": "If email corresponds to an existing customer, a mail will be sent out to that customer containing a link assembled using the following schema:\n\nReturns a success indicating a successful initialisation of the reset flow.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Customer" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -17209,44 +17182,24 @@ }, "security": [ { - "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": [] + "ApiKey": [] } ] } }, - "/account/address/{addressId}": { - "delete": { + "/account/address/default-shipping/{addressId}": { + "patch": { "tags": [ "Address" ], - "summary": "Delete an address of a customer", - "description": "Delete an address of customer.\n\n Only addresses which are not set as default addresses for shipping or billing can be deleted. You can check the current default addresses of your customer using the profile information endpoint and change them using the default address endpoint.\n\n **A customer must have at least one address (which can be used for shipping and billing).**\n\n An automatic fallback is not applied.", - "operationId": "deleteCustomerAddress", + "summary": "Change a customer's default shipping address", + "description": "Updates the default (preselected) shipping addresses of a customer.", + "operationId": "defaultShippingAddress", "parameters": [ { "name": "addressId", "in": "path", - "description": "ID of the address to be deleted.", + "description": "Address ID", "required": true, "schema": { "type": "string" @@ -17254,11 +17207,8 @@ } ], "responses": { - "204": { - "description": "No Content response, when the address has been deleted" - }, - "400": { - "description": "Response containing a list of errors, most likely due to the address being in use" + "200": { + "description": "" } }, "security": [ @@ -17267,14 +17217,16 @@ "ContextToken": [] } ] - }, + } + }, + "/account/address/default-billing/{addressId}": { "patch": { "tags": [ "Address" ], - "summary": "Modify an address of a customer", - "description": "Modifies an existing address of a customer.", - "operationId": "updateCustomerAddress", + "summary": "Change a customer's default billing address", + "description": "Updates the default (preselected) billing addresses of a customer.", + "operationId": "defaultBillingAddress", "parameters": [ { "name": "addressId", @@ -17286,11 +17238,32 @@ } } ], + "responses": { + "200": { + "description": "" + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/account/address": { + "post": { + "tags": [ + "Address" + ], + "summary": "Create a new address for a customer", + "description": "Creates a new address for a customer.", + "operationId": "createCustomerAddress", "requestBody": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerAddressBody" + "$ref": "#/components/schemas/CustomerAddress" } } } @@ -17322,15 +17295,27 @@ ] } }, - "/account/list-address": { + "/currency": { "post": { "tags": [ - "Address", + "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch addresses of a customer", - "description": "Lists all addresses of the current customer and allows filtering them based on a criteria.", - "operationId": "listAddress", + "summary": "Fetch currencies", + "description": "Perform a filtered search for currencies.", + "operationId": "readCurrency", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], "requestBody": { "required": false, "content": { @@ -17347,14 +17332,26 @@ }, "responses": { "200": { - "description": "", + "description": "Entity search result containing currencies.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CustomerAddress" - } + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Currency" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -17362,116 +17359,83 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/login": { + "/landing-page/{landingPageId}": { "post": { "tags": [ - "Login & Registration" + "Content", + "Endpoints supporting Criteria " ], - "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" - } - } + "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" } - } - }, - "security": [ + }, { - "ApiKey": [] + "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/login/imitate-customer": { - "post": { - "tags": [ - "Login & Registration" ], - "summary": "Imitate the log in as a customer", - "description": "Imitate the log in as a customer given a generated token.", - "operationId": "imitateCustomerLogin", "requestBody": { - "required": true, "content": { "application/json": { "schema": { - "required": [ - "token", - "customerId", - "userId" - ], - "properties": { - "token": { - "description": "Generated customer impersonation token", - "type": "string" - }, - "customerId": { - "description": "ID of the customer", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" }, - "userId": { - "description": "ID of the user who generated the token", - "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": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "400": { - "description": "If the token is incorrect an error is returned", + "description": "The loaded landing page with cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/failure" + "$ref": "#/components/schemas/LandingPage" } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -17481,71 +17445,66 @@ ] } }, - "/account/logout": { + "/salutation": { "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 salutations", + "description": "Fetches salutations with a criteria obj.", + "operationId": "readSalutation", + "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 salutations.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Salutation" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } } }, "security": [ @@ -17555,111 +17514,72 @@ ] } }, - "/account/register": { + "/payment-method": { "post": { "tags": [ - "Login & Registration" + "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}$" + } + } ], - "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" - }, - "accountType": { - "description": "Account type of the customer which can be either `private` or `business`.", - "type": "string", - "default": "private" - }, - "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" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" }, - "campaignCode": { - "description": "Field can be used to store a campaign tracking code", - "type": "string" + { + "properties": { + "onlyAvailable": { + "description": "List only available", + "type": "boolean" + } + }, + "type": "object" } - }, - "required": [ - "email", - "password", - "salutationId", - "firstName", - "lastName", - "acceptedDataProtection", - "storefrontUrl", - "billingAddress" - ], - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Success", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Customer" + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentMethod" + } + } + }, + "type": "object" } } } @@ -17672,50 +17592,59 @@ ] } }, - "/account/recovery-password-confirm": { + "/search-suggest": { "post": { "tags": [ - "Profile" + "Product" + ], + "summary": "Search for products (suggest)", + "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", + "operationId": "searchSuggest", + "parameters": [ + { + "name": "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": [ + { + "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" }, - "newPasswordConfirm": { - "description": "Confirmation of the new password", - "type": "string" + { + "$ref": "#/components/schemas/ProductListingFlags" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Returns a success response indicating a successful update.", + "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/SuccessResponse" + "$ref": "#/components/schemas/ProductListingResult" } } } @@ -17728,45 +17657,53 @@ ] } }, - "/account/recovery-password": { + "/order/state/cancel": { "post": { "tags": [ - "Profile" + "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}$" + } + } ], - "summary": "Send a password recovery mail", - "description": "This operation is Step 1 of the password reset flow. Make sure to implement Step 2 \"Reset password with recovery credentials\" in order to allow for the complete flow in your application. Sends a recovery mail containing a link with credentials that allows a customer to reset their password.", - "operationId": "sendRecoveryMail", "requestBody": { "required": true, "content": { "application/json": { "schema": { - "required": [ - "email", - "storefrontUrl" - ], "properties": { - "email": { - "description": "E-Mail address to identify the customer", - "type": "string" - }, - "storefrontUrl": { - "description": "URL of the storefront to use for the generated reset link. It has to be a domain that is configured in the sales channel domain settings.", - "type": "string" + "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": "If email corresponds to an existing customer, a mail will be sent out to that customer containing a link assembled using the following schema:\n\nReturns a success indicating a successful initialisation of the reset flow.", + "description": "Returns 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/SuccessResponse" + "$ref": "#/components/schemas/StateMachineState" } } } @@ -17774,33 +17711,66 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/account/address/default-shipping/{addressId}": { - "patch": { + "/order": { + "post": { "tags": [ - "Address" + "Order", + "Endpoints supporting Criteria " ], - "summary": "Change a customer's default shipping address", - "description": "Updates the default (preselected) shipping addresses of a customer.", - "operationId": "defaultShippingAddress", + "summary": "Fetch a list of orders", + "description": "List orders of a customer.", + "operationId": "readOrder", "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": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + }, + { + "properties": { + "checkPromotion": { + "description": "Check if the payment method of the order is still changeable.", + "type": "boolean" + } + }, + "type": "object" + } + ] + } + } + } + }, "responses": { "200": { - "description": "" + "description": "An array of orders and an indicator if the payment of the order can be changed.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrderRouteResponse" + } + } + } } }, "security": [ @@ -17811,69 +17781,59 @@ ] } }, - "/account/address/default-billing/{addressId}": { - "patch": { + "/order/payment": { + "post": { "tags": [ - "Address" + "Order" ], - "summary": "Change a customer's default billing address", - "description": "Updates the default (preselected) billing addresses of a customer.", - "operationId": "defaultBillingAddress", + "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": "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}$" } } ], - "responses": { - "200": { - "description": "" - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/account/address": { - "post": { - "tags": [ - "Address" - ], - "summary": "Create a new address for a customer", - "description": "Creates a new address for a customer.", - "operationId": "createCustomerAddress", "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerAddress" + "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": "", + "description": "Successfully updated the payment method of the order.", "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/CustomerAddress" - }, - { - "$ref": "#/components/schemas/CustomerAddressRead" - } - ] + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -17887,19 +17847,27 @@ ] } }, - "/cms/{id}": { - "post": { + "/order/download/{orderId}/{downloadId}": { + "get": { "tags": [ - "Content" + "Order" ], - "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": "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": "id", + "name": "orderId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "downloadId", "in": "path", - "description": "Identifier of the CMS page to be resolved", "required": true, "schema": { "type": "string", @@ -17917,59 +17885,46 @@ } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "slots": { - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/ProductListingCriteria" - } - ] - } - } - } - }, "responses": { "200": { - "description": "The loaded cms page", + "description": "An arbitrary binary file.", "content": { - "application/json": { + "application/octet-stream": { "schema": { - "$ref": "#/components/schemas/CmsPage" + "type": "string", + "format": "binary" } } } - }, - "404": { - "$ref": "#/components/responses/404" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/contact-form": { + "/navigation/{activeId}/{rootId}": { "post": { "tags": [ - "Content" + "Category", + "Endpoints supporting Criteria " ], - "summary": "Submit a contact form message", - "description": "Used for submitting contact forms. Be aware that there can be more required fields, depending on the system settings.", - "operationId": "sendContactMail", + "summary": "Fetch 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", @@ -17979,6 +17934,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": { @@ -17986,69 +17975,42 @@ "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" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" }, - "entityName": { - "description": "Entity name for slot config", - "type": "string" + { + "properties": { + "depth": { + "description": "Determines the depth of fetched navigation levels.", + "type": "integer", + "format": "int32" + }, + "buildTree": { + "description": "Return the categories as a tree or as a flat list.", + "type": "array", + "items": { + "type": "object" + } + } + }, + "type": "object" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Message sent successful." + "description": "All available navigations", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/NavigationRouteResponse" + } + } + } } }, "security": [ @@ -18058,63 +18020,36 @@ ] } }, - "/category": { - "post": { + "/sitemap": { + "get": { "tags": [ - "Category", - "Endpoints supporting Criteria " + "Sitemap & Routes" ], - "summary": "Fetch a list of categories", - "description": "Perform a filtered search for categories.", - "operationId": "readCategoryList", + "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}$" - } - } - ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } - }, + ], "responses": { "200": { - "description": "Entity search result containing categories.", + "description": "Returns a list of available sitemaps.", "content": { "application/json": { "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - } - } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "type": "array", + "items": { + "$ref": "#/components/schemas/Sitemap" + } } } } @@ -18127,23 +18062,23 @@ ] } }, - "/category/{navigationId}": { - "post": { + "/sitemap/{filePath}": { + "get": { "tags": [ - "Category", - "Endpoints supporting Criteria " + "Sitemap & Routes" ], - "summary": "Fetch a single category", - "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.", - "operationId": "readCategory", + "summary": "Download sitemap file", + "description": "Downloads the sitemap file from the configured sitemap storage.", + "operationId": "getSitemapFile", "parameters": [ { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, + "name": "filePath", + "in": "path", + "description": "The path to the sitemap file", + "required": true, "schema": { - "type": "boolean" + "type": "string", + "pattern": ".*\\.(xml|gz)$" } }, { @@ -18155,49 +18090,22 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } - }, - { - "name": "navigationId", - "in": "path", - "description": "Identifier of the category to be fetched", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "slots", - "in": "query", - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", - "schema": { - "type": "string" - } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - }, - { - "$ref": "#/components/schemas/ProductListingCriteria" - } - ] - } - } - } - }, "responses": { "200": { - "description": "The loaded category with cms page", + "description": "Returns the blob to download.", "content": { - "application/json": { + "application/xml": { "schema": { - "$ref": "#/components/schemas/Category" + "type": "string", + "format": "binary" + } + }, + "application/gzip": { + "schema": { + "type": "string", + "format": "binary" } } } @@ -18210,23 +18118,31 @@ ] } }, - "/country-state/{countryId}": { + "/product-listing/{categoryId}": { "post": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Product" ], - "summary": "Fetch the states of a country", - "description": "Perform a filtered search the states for a country", - "operationId": "readCountryState", + "summary": "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": "countryId", + "name": "categoryId", "in": "path", + "description": "Identifier of a category.", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" + } + }, + { + "name": "sw-include-seo-urls", + "in": "header", + "description": "Determines if the response must contain a SeoUrl entity for a product entity", + "required": false, + "schema": { + "type": "boolean" } }, { @@ -18241,13 +18157,15 @@ } ], "requestBody": { - "required": false, "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/Criteria" + "$ref": "#/components/schemas/ProductListingCriteria" + }, + { + "$ref": "#/components/schemas/ProductListingFlags" } ] } @@ -18256,26 +18174,11 @@ }, "responses": { "200": { - "description": "Entity search result containing countries.", + "description": "Returns a product listing containing all products and additional fields to display a listing.", "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CountryState" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/ProductListingResult" } } } @@ -18288,15 +18191,15 @@ ] } }, - "/country": { + "/seo-url": { "post": { "tags": [ - "System & Context", + "Sitemap & Routes", "Endpoints supporting Criteria " ], - "summary": "Fetch countries", - "description": "Perform a filtered search for countries", - "operationId": "readCountry", + "summary": "Fetch SEO routes", + "description": "Perform a filtered search for seo urls.", + "operationId": "readSeoUrl", "parameters": [ { "name": "sw-language-id", @@ -18325,7 +18228,7 @@ }, "responses": { "200": { - "description": "Entity search result containing countries.", + "description": "Entity search result containing seo urls.", "content": { "application/json": { "schema": { @@ -18335,11 +18238,14 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Country" + "$ref": "#/components/schemas/SeoUrl" } } }, - "type": "object" + "type": "object", + "required": [ + "elements" + ] }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -18348,6 +18254,9 @@ } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -18357,108 +18266,140 @@ ] } }, - "/search": { + "/handle-payment": { "post": { "tags": [ - "Product" - ], - "summary": "Search for products", - "description": "Performs a search for products which can be used to display a product listing.", - "operationId": "searchPage", - "parameters": [ - { - "name": "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" - } - } + "Payment & Shipping" ], + "summary": "Initiate a payment for an order", + "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order.", + "operationId": "handlePaymentMethod", "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "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" + "required": [ + "orderId" + ], + "properties": { + "orderId": { + "description": "Identifier of an order", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - { - "$ref": "#/components/schemas/ProductListingCriteria" + "finishUrl": { + "description": "URL to which the client should be redirected after successful payment", + "type": "string" }, - { - "$ref": "#/components/schemas/ProductListingFlags" + "errorUrl": { + "description": "URL to which the client should be redirected after erroneous payment", + "type": "string" } - ] + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Redirect to external payment provider", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redirectUrl": { + "type": "string" + } + }, + "required": [ + "redirectUrl" + ] + } } } } }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/_info/routes": { + "get": { + "summary": "Get API routes", + "operationId": "getRoutes", "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", + "description": "Successful operation", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "type": "object", + "required": [ + "endpoints" + ], + "properties": { + "endpoints": { + "type": "array", + "items": { + "type": "object", + "required": [ + "methods", + "path" + ], + "properties": { + "methods": { + "type": "array", + "items": { + "type": "string" + } + }, + "path": { + "type": "string" + } + } + } + } + } } } } } - }, - "security": [ - { - "ApiKey": [] - } - ] + } } }, - "/shipping-method": { + "/country-state/{countryId}": { "post": { "tags": [ - "Payment & Shipping", + "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch shipping methods", - "description": "Perform a filtered search for shipping methods.", - "operationId": "readShippingMethod", + "summary": "Fetch the states of a country", + "description": "Perform a filtered search the states for a country", + "operationId": "readCountryState", "parameters": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "name": "countryId", + "in": "path", + "required": true, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } }, { - "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.", + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, "schema": { - "type": "boolean" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } ], @@ -18478,25 +18419,17 @@ }, "responses": { "200": { - "description": "", + "description": "Entity search result containing countries.", "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" + "$ref": "#/components/schemas/CountryState" } } }, @@ -18518,14 +18451,15 @@ ] } }, - "/search-suggest": { + "/language": { "post": { "tags": [ - "Product" + "System & Context", + "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 languages", + "description": "Perform a filtered search for languages.", + "operationId": "readLanguages", "parameters": [ { "name": "sw-language-id", @@ -18539,25 +18473,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" } ] } @@ -18566,11 +18488,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 languages.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + } + } + }, + "required": [ + "elements" + ], + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -18583,14 +18523,15 @@ ] } }, - "/sitemap": { - "get": { + "/country": { + "post": { "tags": [ - "Sitemap & Routes" + "System & Context", + "Endpoints supporting Criteria " ], - "summary": "Fetch sitemaps", - "description": "Fetches a list of compressed sitemap files, which are often used by search engines.", - "operationId": "readSitemap", + "summary": "Fetch countries", + "description": "Perform a filtered search for countries", + "operationId": "readCountry", "parameters": [ { "name": "sw-language-id", @@ -18603,106 +18544,45 @@ } } ], - "responses": { - "200": { - "description": "Returns a list of available sitemaps.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Sitemap" + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - } + ] } } } }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/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}$" - } - }, - { - "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 the customer group including registration settings.", + "description": "Entity search result containing countries.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerGroup" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/product-export/{accessKey}/{fileName}": { - "get": { - "tags": [ - "Product" - ], - "summary": "Export product export", - "operationId": "readProductExport", - "parameters": [ - { - "name": "accessKey", - "in": "path", - "description": "Access Key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "fileName", - "in": "path", - "description": "File Name", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Country" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } } }, "security": [ @@ -18712,24 +18592,15 @@ ] } }, - "/product/{productId}/cross-selling": { - "post": { + "/checkout/cart": { + "get": { "tags": [ - "Product" + "Cart" ], - "summary": "Fetch cross-selling groups of a product", - "description": "This route is used to load the cross sellings for a product. A product has several cross selling definitions in which several products are linked. The route returns the cross sellings together with the linked products", - "operationId": "readProductCrossSellings", + "summary": "Fetch or create a cart", + "description": "Used to fetch the current cart or for creating a new one.", + "operationId": "readCart", "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Product ID", - "required": true, - "schema": { - "type": "string" - } - }, { "name": "sw-language-id", "in": "header", @@ -18743,11 +18614,36 @@ ], "responses": { "200": { - "description": "Found cross sellings", + "description": "Cart", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CrossSellingElementCollection" + "$ref": "#/components/schemas/Cart" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + }, + "delete": { + "tags": [ + "Cart" + ], + "summary": "Delete a cart", + "description": "This route deletes the cart of the customer.", + "operationId": "deleteCart", + "responses": { + "204": { + "description": "Successfully deleted the cart", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -18760,25 +18656,15 @@ ] } }, - "/product/{productId}": { + "/checkout/cart/line-item": { "post": { "tags": [ - "Product" + "Cart" ], - "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", + "summary": "Add items to the cart", + "description": "This route adds items to the cart. An item can be a product or promotion for example. They are referenced by the `referencedId`-parameter.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#adding-new-items-to-the-cart)", + "operationId": "addLineItem", "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Product ID", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$'" - } - }, { "name": "sw-language-id", "in": "header", @@ -18788,38 +18674,24 @@ "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" - } - ] + "$ref": "#/components/schemas/CartItems" } } } }, "responses": { "200": { - "description": "Product information along with variant groups and options", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductDetailResponse" + "$ref": "#/components/schemas/Cart" } } } @@ -18830,18 +18702,29 @@ "ApiKey": [] } ] - } - }, - "/product": { - "post": { + }, + "delete": { "tags": [ - "Product", - "Endpoints supporting Criteria " + "Cart" ], - "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", + "summary": "Remove items from the cart", + "description": "DEPRECATED: use removeLineItem instead. This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", + "operationId": "removeLineItemDeprecated", + "deprecated": true, "parameters": [ + { + "name": "ids", + "in": "query", + "description": "A list of product identifiers.", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + }, { "name": "sw-language-id", "in": "header", @@ -18853,42 +18736,13 @@ } } ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } - } - } - }, "responses": { "200": { - "description": "Entity search result containing products", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/Cart" } } } @@ -18899,27 +18753,15 @@ "ApiKey": [] } ] - } - }, - "/product/{productId}/reviews": { - "post": { + }, + "patch": { "tags": [ - "Product", - "Endpoints supporting Criteria " + "Cart" ], - "summary": "Fetch product reviews", - "description": "Perform a filtered search for product reviews.", - "operationId": "readProductReviews", + "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": "productId", - "in": "path", - "description": "Identifier of the product.", - "required": true, - "schema": { - "type": "string" - } - }, { "name": "sw-language-id", "in": "header", @@ -18932,41 +18774,21 @@ } ], "requestBody": { - "required": false, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] + "$ref": "#/components/schemas/CartItems" } } } }, "responses": { "200": { - "description": "Entity search result containing product reviews", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductReview" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/Cart" } } } @@ -18979,25 +18801,15 @@ ] } }, - "/product/{productId}/review": { + "/checkout/cart/line-item/delete": { "post": { "tags": [ - "Product" + "Cart" ], - "summary": "Save a product review", - "description": "Saves a review for a product. Reviews have to be activated in the settings.", - "operationId": "saveProductReview", + "summary": "Remove items from the cart", + "description": "This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", + "operationId": "removeLineItem", "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Identifier of the product which is reviewed.", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, { "name": "sw-language-id", "in": "header", @@ -19010,35 +18822,22 @@ } ], "requestBody": { + "required": true, "content": { "application/json": { "schema": { "required": [ - "title", - "content", - "points" + "ids" ], "properties": { - "name": { - "description": "The name of the review author. If not set, the first name of the customer is chosen.", - "type": "string" - }, - "email": { - "description": "The email address of the review author. If not set, the email of the customer is chosen.", - "type": "string" - }, - "title": { - "description": "The title of the review.", - "type": "string" - }, - "content": { - "description": "The content of review.", - "type": "string" - }, - "points": { - "description": "The review rating for the product.", - "type": "number", - "format": "double" + "ids": { + "description": "A list of product identifiers.", + "type": "array", + "minItems": 1, + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } }, "type": "object" @@ -19048,35 +18847,32 @@ }, "responses": { "200": { - "description": "Success response indicating the review was saved successfully." + "description": "The updated cart.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Cart" + } + } + } } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/product/{productId}/find-variant": { + "/checkout/order": { "post": { "tags": [ - "Product" + "Order" ], - "summary": "Search for a matching variant by product options.", - "description": "Performs a search for product variants and returns the best matching variant.", - "operationId": "searchProductVariantIds", + "summary": "Create an order from a cart", + "description": "Creates a new order from the current cart and deletes the cart.\n\nIf you are using the [prepared payment flow](https://developer.shopware.com/docs/concepts/commerce/checkout-concept/payments#2.1-prepare-payment-optional), this endpoint also receives additional transaction details. The exact name of the parameters depends on the implementation of the corresponding *payment handler*.", + "operationId": "createOrder", "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Product ID", - "required": true, - "schema": { - "type": "string" - } - }, { "name": "sw-language-id", "in": "header", @@ -19089,22 +18885,21 @@ } ], "requestBody": { + "description": "Contains additional metadata which is stored together with the order. It can also contain payment transaction details.", "content": { "application/json": { "schema": { - "required": [ - "options" - ], "properties": { - "options": { - "description": "The options parameter for the variant to find.", - "type": "array", - "items": { - "type": "string" - } + "customerComment": { + "description": "Adds a comment from the customer to the order.", + "type": "string" }, - "switchedGroup": { - "description": "The id of the option group that has been switched.", + "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" } }, @@ -19115,11 +18910,11 @@ }, "responses": { "200": { - "description": "Returns an FoundCombination struct containing the ids matching the search.", + "description": "Order", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/FindProductVariantRouteResponse" + "$ref": "#/components/schemas/Order" } } } @@ -19127,62 +18922,133 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/handle-payment": { - "post": { + "/checkout/gateway": { + "get": { "tags": [ - "Payment & Shipping" + "Gateway" ], - "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" + "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" + } + } + } + } } - }, - "type": "object" + } } } } }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/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}$" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], "responses": { "200": { - "description": "Redirect to external payment provider", + "description": "Returns the customer group including registration settings.", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "type": "string" - } - }, - "required": [ - "redirectUrl" - ] + "$ref": "#/components/schemas/CustomerGroup" } } } @@ -19250,95 +19116,52 @@ ] } }, - "/navigation/{activeId}/{rootId}": { + "/document/download/{documentId}/{deepLinkCode}": { "post": { "tags": [ - "Category", + "Document", "Endpoints supporting Criteria " ], - "summary": "Fetch a navigation menu", - "description": "This endpoint returns categories that can be used as a page navigation. You can either return them as a tree or as a flat list. You can also control the depth of the tree.\n\n Instead of passing uuids, you can also use one of the following aliases for the activeId and rootId parameters to get the respective navigations of your sales channel.\n\n * main-navigation\n * service-navigation\n * footer-navigation", - "operationId": "readNavigation", + "summary": "Download generated document", + "description": "Returns blob file of a generated document to download.", + "operationId": "download", "parameters": [ { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "name": "documentId", + "in": "path", + "required": true, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } }, { - "name": "activeId", - "in": "path", - "description": "Identifier of the active category in the navigation tree (if not used, just set to the same as rootId).", + "name": "deepLinkCode", "required": true, + "in": "path", "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}$" } } ], "requestBody": { - "required": true, + "required": false, "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" } ] } @@ -19347,11 +19170,11 @@ }, "responses": { "200": { - "description": "All available navigations", + "description": "Returns the document information and blob to download.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NavigationRouteResponse" + "$ref": "#/components/schemas/Document" } } } @@ -19359,7 +19182,8 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } @@ -19534,14 +19358,15 @@ ] } }, - "/order/state/cancel": { + "/category": { "post": { "tags": [ - "Order" + "Category", + "Endpoints supporting Criteria " ], - "summary": "Cancel an order", - "description": "Cancels an order. The order state will be set to 'cancelled'.", - "operationId": "cancelOrder", + "summary": "Fetch a list of categories", + "description": "Perform a filtered search for categories.", + "operationId": "readCategoryList", "parameters": [ { "name": "sw-language-id", @@ -19555,20 +19380,14 @@ } ], "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "properties": { - "orderId": { - "description": "The identifier of the order to be canceled.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object", - "required": [ - "orderId" ] } } @@ -19576,11 +19395,26 @@ }, "responses": { "200": { - "description": "Returns the state of the state machine\n\n example: More information about the state machine can be found in the corresponding guide: [Using the state machine](https://developer.shopware.com/docs/guides/plugins/plugins/checkout/order/using-the-state-machine)", + "description": "Entity search result containing categories.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/StateMachineState" + "allOf": [ + { + "type": "object", + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + } + } + } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -19588,22 +19422,30 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/order": { + "/category/{navigationId}": { "post": { "tags": [ - "Order", + "Category", "Endpoints supporting Criteria " ], - "summary": "Fetch a list of orders", - "description": "List orders of a customer.", - "operationId": "readOrder", + "summary": "Fetch a single category", + "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.", + "operationId": "readCategory", "parameters": [ + { + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, + "schema": { + "type": "boolean" + } + }, { "name": "sw-language-id", "in": "header", @@ -19613,10 +19455,27 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "name": "navigationId", + "in": "path", + "description": "Identifier of the category to be fetched", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "slots", + "in": "query", + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", + "schema": { + "type": "string" + } } ], "requestBody": { - "required": true, "content": { "application/json": { "schema": { @@ -19625,13 +19484,7 @@ "$ref": "#/components/schemas/Criteria" }, { - "properties": { - "checkPromotion": { - "description": "Check if the payment method of the order is still changeable.", - "type": "boolean" - } - }, - "type": "object" + "$ref": "#/components/schemas/ProductListingCriteria" } ] } @@ -19640,11 +19493,11 @@ }, "responses": { "200": { - "description": "An array of orders and an indicator if the payment of the order can be changed.", + "description": "The loaded category with cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OrderRouteResponse" + "$ref": "#/components/schemas/Category" } } } @@ -19652,133 +19505,107 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/order/payment": { - "post": { + "/script/{hook}": { + "get": { "tags": [ - "Order" + "API", + "Script", + "App" ], - "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": "Access point for different api logics which are provided by apps over script hooks", + "operationId": "getScriptStoreApiRoute", "parameters": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "name": "hook", + "in": "path", + "description": "Dynamic hook which used to build the hook name", + "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } } ], - "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 different structures of results based on the called script.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "type": "object", + "additionalProperties": true, + "nullable": true + } + }, + "application/vnd.api+json": { + "schema": { + "type": "object", + "additionalProperties": true, + "nullable": true } } } + }, + "204": { + "description": "No data by default" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] - } - }, - "/order/download/{orderId}/{downloadId}": { - "get": { + }, + "post": { "tags": [ - "Order" + "API", + "Script", + "App" ], - "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": "Access point for different api logics which are provided by apps over script hooks", + "operationId": "postScriptStoreApiRoute", "parameters": [ { - "name": "orderId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "downloadId", + "name": "hook", "in": "path", + "description": "Dynamic hook which used to build the hook name", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } } ], "responses": { "200": { - "description": "An arbitrary binary file.", + "description": "Returns different structures of results based on the called script.", "content": { - "application/octet-stream": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "nullable": true + } + }, + "application/vnd.api+json": { "schema": { - "type": "string", - "format": "binary" + "type": "object", + "additionalProperties": true, + "nullable": true } } } + }, + "204": { + "description": "No data by default" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } @@ -19880,44 +19707,172 @@ ] } }, - "/_info/openapi3.json": { - "get": { + "/contact-form": { + "post": { "tags": [ - "System Info & Health Check" + "Content" ], - "summary": "Get OpenAPI Specification", - "description": "Get information about the store API in OpenAPI format.", - "operationId": "api-info", + "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": "type", - "in": "query", - "description": "Type of the api", + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, "schema": { "type": "string", - "enum": [ - "jsonapi", - "json" - ] + "pattern": "^[0-9a-f]{32}$" } } ], + "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": { - "$ref": "#/components/responses/OpenApi3" + "description": "Message sent successful." } - } + }, + "security": [ + { + "ApiKey": [] + } + ] } }, - "/currency": { + "/app-system/{name}/generate-token": { "post": { "tags": [ - "System & Context", + "App system" + ], + "summary": "Generate JWT token for app system backend", + "description": "Generate JWT token for authenticated communication with the app server", + "operationId": "generateJWTAppSystemAppServer", + "parameters": [ + { + "in": "path", + "name": "name", + "required": true, + "description": "Name of the app", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "token": { + "type": "string" + }, + "expires": { + "type": "string", + "format": "date-time" + }, + "shopId": { + "type": "string" + } + } + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/shipping-method": { + "post": { + "tags": [ + "Payment & Shipping", "Endpoints supporting Criteria " ], - "summary": "Fetch currencies", - "description": "Perform a filtered search for currencies.", - "operationId": "readCurrency", + "summary": "Fetch shipping methods", + "description": "Perform a filtered search for shipping methods.", + "operationId": "readShippingMethod", "parameters": [ { "name": "sw-language-id", @@ -19928,6 +19883,14 @@ "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": { @@ -19946,17 +19909,25 @@ }, "responses": { "200": { - "description": "Entity search result containing currencies.", + "description": "", "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/Currency" + "$ref": "#/components/schemas/ShippingMethod" } } }, @@ -19977,6 +19948,72 @@ } ] } + }, + "/breadcrumb/{id}": { + "get": { + "tags": [ + "Experimental", + "Breadcrumb" + ], + "summary": "Fetch a breadcrumb", + "description": "Perform search to get category or product breadcrumb. \n\nExperimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", + "operationId": "readBreadcrumb", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "UUID for product or category", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "type", + "in": "query", + "description": "Type: category or product (optional - default: product)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "product", + "category" + ] + } + }, + { + "name": "referrerCategoryId", + "in": "query", + "description": "UUID for referrer category only used for product breadcrumb", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "responses": { + "200": { + "description": "Search result containing SeoUrl\\'s to be used as breadcrumb.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BreadcrumbCollection" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } } }, "tags": [ From 5e64869497ceea1d1966421ca3b1299e761d61c1 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 14 Nov 2024 08:20:07 +0100 Subject: [PATCH 19/35] [create-pull-request] automated change (#303) Co-authored-by: shopwareBot --- SwagGuidedShopping-storeapi.json | 3136 +++++++++++++++--------------- 1 file changed, 1566 insertions(+), 1570 deletions(-) diff --git a/SwagGuidedShopping-storeapi.json b/SwagGuidedShopping-storeapi.json index c46d84e..76f5e9c 100644 --- a/SwagGuidedShopping-storeapi.json +++ b/SwagGuidedShopping-storeapi.json @@ -7,7 +7,7 @@ "name": "MIT", "url": "https://github.com/shopware/shopware/blob/trunk/LICENSE" }, - "version": "6.6.7.0" + "version": "6.6.8.2" }, "servers": [ { @@ -10076,131 +10076,179 @@ }, "type": "object" }, - "AggregationEntity": { - "title": "AggregationEntity", + "Breadcrumb": { "type": "object", "properties": { "name": { - "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" }, + "categoryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "type": { - "description": "The type of aggregation", "type": "string", "enum": [ - "entity" + "page", + "link", + "folder" ] }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "translated": { + "type": "object", + "additionalProperties": true, + "properties": { + "customFields": { + "type": "object" + }, + "slotConfig": { + "type": "object" + }, + "linkType": { + "type": "string", + "enum": [ + "external", + "category", + "product", + "landing_page" + ] + }, + "internalLink": { + "type": "string" + }, + "externalLink": { + "type": "string" + }, + "linkNewTab": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "metaTitle": { + "type": "string" + }, + "metaDescription": { + "type": "string" + }, + "keywords": { + "type": "string" + } + } }, - "definition": { - "description": "The entity definition e.g \"product_manufacturer\".", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field", - "definition" - ] - }, - "AggregationFilter": { - "title": "AggregationFilter", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", + "path": { "type": "string" }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "filter" - ] - }, - "filter": { + "seoUrls": { "type": "array", "items": { - "$ref": "#/components/schemas/Filters" + "$ref": "#/components/schemas/SeoUrl" } + }, + "apiAlias": { + "type": "string", + "enum": [ + "breadcrumb" + ] } }, "required": [ "name", + "categoryId", "type", - "filter" + "translated", + "path", + "apiAlias" ] }, - "AggregationTerms": { - "title": "AggregationTerms", - "type": "object", + "CustomerAddressBody": { + "description": "Added since version: 6.0.0.0", + "required": [ + "countryId", + "firstName", + "lastName", + "city", + "street" + ], "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" + "countryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "type": { - "description": "The type of aggregation", + "countryStateId": { "type": "string", - "enum": [ - "terms" - ] + "pattern": "^[0-9a-f]{32}$" }, - "field": { - "description": "The field you want to aggregate over.", + "salutationId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "firstName": { "type": "string" }, - "limit": { - "description": "The number of terms to return", - "type": "number" + "lastName": { + "type": "string" }, - "sort": { - "type": "array", - "description": "Sorting the aggregation result.", - "items": { - "$ref": "#/components/schemas/Sort" - } + "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" } }, - "required": [ - "name", - "type", - "field" - ] + "type": "object" }, - "AggregationHistogram": { - "title": "AggregationHistogram", + "AggregationMetrics": { "type": "object", "properties": { "name": { - "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" }, "type": { - "description": "The type of aggregation", "type": "string", "enum": [ - "histogram" + "avg", + "count", + "max", + "min", + "stats", + "sum" ] }, "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" } }, @@ -10210,240 +10258,163 @@ "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)", + "FindProductVariantRouteResponse": { "type": "object", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", + "foundCombination": { + "type": "object", + "properties": { + "variantId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "options": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } + }, + "CartPriceQuantity": { + "type": "object", + "properties": { + "apiAlias": { "type": "string", "enum": [ - "range" + "cart_price_quantity" ] }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "isCalculated": { + "type": "boolean" }, - "ranges": { - "description": "The ranges of the aggregation", - "type": "array", - "items": { - "type": "object", - "anyOf": [ - { - "type": "object", - "title": "From and to", - "properties": { - "from": { - "type": "number", - "description": "The lower bound of the range" - }, - "to": { - "type": "number", - "description": "The upper bound of the range" - } - }, - "required": [ - "from", - "to" - ] - }, - { - "type": "object", - "title": "From only", - "properties": { - "from": { - "type": "string", - "description": "The lower bound of the range" - } - }, - "required": [ - "from" - ] - }, - { - "type": "object", - "title": "To only", - "properties": { - "to": { - "type": "string", - "description": "The upper bound of the range" - } - }, - "required": [ - "to" - ] - } - ] - } - } - }, - "required": [ - "name", - "type", - "field", - "ranges" - ] - }, - "AccountNewsletterRecipient": { - "type": "object", - "properties": { - "status": { - "type": "string", - "enum": [ - "undefined", - "notSet", - "direct", - "optIn", - "optOut" - ] - }, - "apiAlias": { - "type": "string", - "enum": [ - "account_newsletter_recipient" - ] - } - }, - "required": [ - "status", - "apiAlias" - ] - }, - "CustomerAddressBody": { - "description": "Added since version: 6.0.0.0", - "required": [ - "countryId", - "firstName", - "lastName", - "city", - "street" - ], - "properties": { - "countryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryStateId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "salutationId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "zipcode": { - "type": "string" - }, - "city": { - "type": "string" - }, - "company": { - "type": "string" - }, - "street": { - "type": "string" - }, - "department": { - "type": "string" - }, - "title": { - "type": "string" - }, - "phoneNumber": { - "type": "string" + "listPrice": { + "$ref": "#/components/schemas/CartListPrice" }, - "additionalAddressLine1": { - "type": "string" + "price": { + "type": "number" }, - "additionalAddressLine2": { - "type": "string" + "quantity": { + "type": "number" }, - "customFields": { + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + } + }, "type": "object" }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "$ref": "#/components/schemas/CountryState" - }, - "salutation": { - "$ref": "#/components/schemas/Salutation" - } - }, - "type": "object" - }, - "EntitySearchResult": { - "type": "object", - "properties": { - "entity": { - "type": "string" - }, - "total": { - "type": "integer", - "description": "The total number of found entities" - }, - "aggregations": { + "taxRules": { "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", "items": { - "type": "object" + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } } }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." - }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." - } - } - }, - "Sitemap": { - "type": "object", - "properties": { - "filename": { + "type": { "type": "string" - }, - "created": { - "type": "string", - "format": "date-time" } }, "required": [ - "filename", - "created" + "apiAlias" ] }, - "ProductListingFlags": { + "NavigationRouteResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + } + }, + "Price": { "type": "object", - "description": "Additional flags for product listings", + "description": "Price object", "properties": { - "no-aggregations": { - "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", + "currencyId": { "type": "string", - "nullable": true + "pattern": "^[0-9a-f]{32}$" }, - "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 + "gross": { + "description": "", + "type": "number" + }, + "net": { + "description": "", + "type": "number" + }, + "linked": { + "description": "", + "type": "boolean" + }, + "listPrice": { + "description": "", + "type": "object", + "properties": { + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "gross": { + "description": "", + "type": "number" + }, + "net": { + "description": "", + "type": "number" + }, + "linked": { + "description": "", + "type": "boolean" + } + }, + "required": [ + "gross", + "net" + ] + }, + "regulationPrice": { + "description": "", + "type": "object", + "properties": { + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "gross": { + "description": "", + "type": "number" + }, + "net": { + "description": "", + "type": "number" + }, + "linked": { + "description": "", + "type": "boolean" + } + }, + "required": [ + "gross", + "net" + ] } - } + }, + "required": [ + "currencyId", + "gross", + "net" + ] }, "CartDelivery": { "type": "object", @@ -10496,1068 +10467,673 @@ } } }, - "SalesChannelContext": { + "ProductDetailResponse": { "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "token": { - "description": "Context the user session", - "type": "string" - }, - "currentCustomerGroup": { - "type": "object", - "description": "Customer group of the current user", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } - } + "product": { + "$ref": "#/components/schemas/Product" }, - "fallbackCustomerGroup": { - "description": "Fallback group if the default customer group is not applicable", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } + "configurator": { + "type": "array", + "description": "List of property groups with their corresponding options and information on how to display them.", + "items": { + "$ref": "#/components/schemas/PropertyGroup" } + } + }, + "required": [ + "product" + ] + }, + "CartPriceReference": { + "type": "object", + "properties": { + "purchaseUnit": { + "type": "number" }, - "currency": { - "$ref": "#/components/schemas/Currency" + "referenceUnit": { + "type": "number" }, - "salesChannel": { - "description": "Information about the current sales channel", - "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" - }, - "analyticsId": { - "type": "string" - } - } + "unitName": { + "type": "string" }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } + "price": { + "type": "number" }, - "customer": { - "$ref": "#/components/schemas/Customer" + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_reference" + ] }, - "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethod" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] }, - "shippingLocation": { + "regulationPrice": { "type": "object", "properties": { + "price": { + "type": "number" + }, "apiAlias": { "type": "string", "enum": [ - "cart_delivery_shipping_location" + "cart_regulation_price" ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" } - } + }, + "nullable": true }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" + "hasRange": { + "type": "boolean" }, - "context": { - "description": "Core context with general configuration values and state", - "type": "object", - "properties": { - "versionId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "currencyFactor": { - "type": "integer" - }, - "currencyPrecision": { - "type": "integer", - "format": "int32" - }, - "languageIdChain": { - "type": "array", - "items": { - "type": "string" - } - }, - "scope": { - "type": "string" - }, - "source": { - "type": "string" - }, - "taxState": { - "type": "string" - }, - "useCache": { - "type": "boolean" - } - } + "variantId": { + "type": "string", + "format": "^[0-9a-f]{32}$", + "nullable": true } - } - }, - "NavigationRouteResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - }, - "LineItemType": { - "type": "string", - "enum": [ - "product", - "credit", - "custom", - "promotion", - "discount", - "container", - "quantity" + }, + "required": [ + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" ] }, - "LineItem": { + "Cart": { "type": "object", "properties": { - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - }, - "cover": { - "$ref": "#/components/schemas/ProductMedia" - }, - "dataContextHash": { + "name": { + "description": "Name of the cart - for example `guest-cart`", "type": "string" }, - "dataTimestamp": { + "token": { + "description": "Context token identifying the cart and the user session", "type": "string" }, - "deliveryInformation": { - "$ref": "#/components/schemas/CartDeliveryInformation" + "price": { + "$ref": "#/components/schemas/CalculatedPrice" }, - "description": { - "type": "string" + "lineItems": { + "description": "All items within the cart", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } }, - "good": { - "type": "boolean" + "errors": { + "type": "array", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "items": { + "$ref": "#/components/schemas/CartError" + } }, - "id": { - "type": "string" + "deliveries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDelivery" + } }, - "label": { - "type": "string" + "transactions": { + "description": "A list of all payment transactions associated with the current cart.", + "type": "array", + "items": { + "type": "object", + "properties": { + "paymentMethodId": { + "type": "string" + }, + "amount": { + "$ref": "#/components/schemas/CalculatedPrice" + } + } + } }, "modified": { "type": "boolean" }, - "modifiedByApp": { - "type": "boolean" + "customerComment": { + "type": "string", + "description": "A comment that can be added to the cart.", + "nullable": true }, - "payload": { - "$ref": "#/components/schemas/ProductJsonApi" + "affiliateCode": { + "type": "string", + "description": "An affiliate tracking code", + "nullable": true }, - "price": { + "campaignCode": { + "type": "string", + "description": "A campaign tracking code", + "nullable": true + } + } + }, + "CartError": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "items": { "type": "object", "properties": { - "apiAlias": { - "type": "string", + "key": { + "type": "string" + }, + "level": { + "type": "number", "enum": [ - "calculated_price" - ] + 0, + 10, + 20 + ], + "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" }, - "calculatedTaxes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "apiAlias": { + "message": { + "type": "string" + }, + "messageKey": { + "type": "string" + } + } + } + } + }, + "ProductListingResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EntitySearchResult" + }, + { + "type": "object", + "properties": { + "currentFilters": { + "type": "object", + "description": "Contains the state of the filters. These can be used to create listing filters.", + "properties": { + "navigationId": { + "type": "string" + }, + "manufacturer": { + "type": "array", + "items": { "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" + "pattern": "^[0-9a-f]{32}$" } }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" + "price": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "default": 0 + }, + "max": { + "type": "integer", + "default": 0 + } + }, + "required": [ + "min", + "max" + ] }, - { - "type": "null" - } - ] - }, - "quantity": { - "type": "number" - }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" + "rating": { + "type": "integer", + "nullable": true }, - { - "type": "null" - } - ] - }, - "regulationPrice": { - "type": "object", - "properties": { - "price": { - "type": "number" + "shipping-free": { + "type": "boolean", + "default": false }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] + "properties": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "search": { + "type": "string" } }, - "nullable": true - }, - "totalPrice": { - "type": "number" - }, - "unitPrice": { - "type": "number" + "required": [ + "manufacturer", + "navigationId", + "price", + "properties", + "rating", + "shipping-free" + ] }, - "taxRules": { + "availableSortings": { "type": "array", - "description": "Currently active tax rules and/or rates", + "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", "items": { "type": "object", "properties": { - "taxRate": { - "type": "number", - "format": "float" + "label": { + "type": "string" + }, + "translated": { + "type": "object", + "properties": { + "label": { + "type": "string" + } + }, + "required": [ + "label" + ] }, - "name": { + "key": { "type": "string" + }, + "priority": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_sorting" + ] } - } + }, + "required": [ + "label", + "translated", + "key", + "priority", + "apiAlias" + ] } - } - }, - "required": [ - "apiAlias", - "totalPrice", - "quantity", - "unitPrice" - ] - }, - "priceDefinition": { - "$ref": "#/components/schemas/CartPriceQuantity" - }, - "quantity": { - "type": "number" - }, - "quantityInformation": { - "type": "object", - "properties": { - "maxPurchase": { - "type": "number" - }, - "minPurchase": { - "type": "number" }, - "purchaseSteps": { - "type": "number" - } - } - }, - "referencedId": { - "type": "string" - }, - "removable": { - "type": "boolean" - }, - "stackable": { - "type": "boolean" - }, - "states": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "is-physical", - "is-download" - ] - } - }, - "type": { - "$ref": "#/components/schemas/LineItemType" - }, - "uniqueIdentifier": { - "type": "string" - } - }, - "required": [ - "id", - "type" - ] - }, - "CartDeliveryInformation": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_information" - ] - }, - "freeDelivery": { - "type": "boolean" - }, - "deliveryTime": { - "type": "object", - "properties": { - "name": { + "sorting": { "type": "string" }, - "min": { - "type": "integer" - }, - "max": { - "type": "integer" + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } }, - "unit": { - "type": "string" + "entity": { + "type": "string", + "enum": [ + "product" + ] }, "apiAlias": { "type": "string", "enum": [ - "cart_delivery_time" + "product_listing" ] } - } - }, - "height": { - "type": "integer" - }, - "length": { - "type": "integer" - }, - "restockTime": { - "type": "integer" - }, - "stock": { - "type": "integer" - }, - "weight": { - "type": "integer" - }, - "width": { - "type": "integer" - } - }, - "required": [ - "apiAlias" - ] - }, - "AggregationMetrics": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "avg", - "count", - "max", - "min", - "stats", - "sum" + }, + "required": [ + "elements", + "availableSortings", + "currentFilters", + "apiAlias" ] - }, - "field": { - "type": "string" } - }, - "required": [ - "name", - "type", - "field" ] }, - "Price": { + "SalesChannelContext": { "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" + "token": { + "description": "Context the user session", + "type": "string" }, - "listPrice": { - "description": "", + "currentCustomerGroup": { "type": "object", + "description": "Customer group of the current user", "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "", - "type": "number" - }, - "net": { - "description": "", - "type": "number" + "name": { + "type": "string" }, - "linked": { - "description": "", + "displayGross": { "type": "boolean" } - }, - "required": [ - "gross", - "net" - ] + } }, - "regulationPrice": { - "description": "", + "fallbackCustomerGroup": { + "description": "Fallback group if the default customer group is not applicable", "type": "object", "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "", - "type": "number" - }, - "net": { - "description": "", - "type": "number" + "name": { + "type": "string" }, - "linked": { - "description": "", - "type": "boolean" - } - }, - "required": [ - "gross", - "net" - ] - } - }, - "required": [ - "currencyId", - "gross", - "net" - ] - }, - "ProductListingCriteria": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "displayGross": { + "type": "boolean" + } + } }, - { + "currency": { + "$ref": "#/components/schemas/Currency" + }, + "salesChannel": { + "description": "Information about the current sales channel", "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.", + "typeId": { "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 + "languageId": { + "type": "string" }, - "p": { - "description": "Search result page", - "type": "integer", - "default": 1 + "currencyId": { + "type": "string" }, - "manufacturer": { - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "paymentMethodId": { "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 + "shippingMethodId": { + "type": "string" }, - "max-price": { - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { "type": "integer", - "minimum": 0, - "default": 0 + "format": "int32" }, - "rating": { - "description": "Filter products with a minimum average rating.", - "type": "integer" + "footerCategoryId": { + "type": "string" }, - "shipping-free": { - "description": "Filters products that are marked as shipping-free.", - "type": "boolean", - "default": false + "serviceCategoryId": { + "type": "string" }, - "properties": { - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "name": { "type": "string" }, - "manufacturer-filter": { - "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", - "type": "boolean", - "default": true + "shortName": { + "type": "string" }, - "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 + "accessKey": { + "type": "string" }, - "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 + "active": { + "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 + "maintenance": { + "type": "boolean" }, - "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 + "maintenanceIpWhitelist": { + "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.", + "mailHeaderFooterId": { "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 + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + }, + "analyticsId": { + "type": "string" } } - } - ] - }, - "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" - } - }, - "deliveries": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDelivery" - } }, - "transactions": { - "description": "A list of all payment transactions associated with the current cart.", + "taxRules": { "type": "array", + "description": "Currently active tax rules and/or rates", "items": { "type": "object", "properties": { - "paymentMethodId": { - "type": "string" + "taxRate": { + "type": "number", + "format": "float" }, - "amount": { - "$ref": "#/components/schemas/CalculatedPrice" - } - } - } - }, - "modified": { - "type": "boolean" - }, - "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 - } - } - }, - "CartListPrice": { - "type": "object", - "description": "", - "properties": { - "discount": { - "type": "number" - }, - "percentage": { - "type": "number" - }, - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_list_price" - ] - } - }, - "required": [ - "apiAlias" - ] - }, - "FindProductVariantRouteResponse": { - "type": "object", - "properties": { - "foundCombination": { - "type": "object", - "properties": { - "variantId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "options": { - "type": "array", - "items": { + "name": { "type": "string" } } } - } - } - }, - "Breadcrumb": { - "type": "object", - "properties": { - "name": { - "type": "string" }, - "categoryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "customer": { + "$ref": "#/components/schemas/Customer" }, - "type": { - "type": "string", - "enum": [ - "page", - "link", - "folder" - ] + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod" }, - "translated": { + "shippingLocation": { "type": "object", - "additionalProperties": true, "properties": { - "customFields": { - "type": "object" - }, - "slotConfig": { - "type": "object" - }, - "linkType": { + "apiAlias": { "type": "string", "enum": [ - "external", - "category", - "product", - "landing_page" + "cart_delivery_shipping_location" ] }, - "internalLink": { + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + } + } + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + }, + "context": { + "description": "Core context with general configuration values and state", + "type": "object", + "properties": { + "versionId": { "type": "string" }, - "externalLink": { + "currencyId": { "type": "string" }, - "linkNewTab": { - "type": "boolean" + "currencyFactor": { + "type": "integer" }, - "description": { - "type": "string" + "currencyPrecision": { + "type": "integer", + "format": "int32" }, - "metaTitle": { + "languageIdChain": { + "type": "array", + "items": { + "type": "string" + } + }, + "scope": { "type": "string" }, - "metaDescription": { + "source": { "type": "string" }, - "keywords": { + "taxState": { "type": "string" + }, + "useCache": { + "type": "boolean" } } + } + } + }, + "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 }, - "path": { - "type": "string" - }, - "seoUrls": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } - }, - "apiAlias": { + "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", - "enum": [ - "breadcrumb" - ] + "nullable": true } - }, - "required": [ - "name", - "categoryId", - "type", - "translated", - "path", - "apiAlias" - ] + } }, - "ProductListingResult": { + "ProductListingCriteria": { "allOf": [ { - "$ref": "#/components/schemas/EntitySearchResult" + "$ref": "#/components/schemas/Criteria" }, { "type": "object", + "description": "Additional search parameters for product listings", "properties": { - "currentFilters": { - "type": "object", - "description": "Contains the state of the filters. These can be used to create listing filters.", - "properties": { - "navigationId": { - "type": "string" - }, - "manufacturer": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "price": { - "type": "object", - "properties": { - "min": { - "type": "integer", - "default": 0 - }, - "max": { - "type": "integer", - "default": 0 - } - }, - "required": [ - "min", - "max" - ] - }, - "rating": { - "type": "integer", - "nullable": true - }, - "shipping-free": { - "type": "boolean", - "default": false - }, - "properties": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "search": { - "type": "string" - } - }, - "required": [ - "manufacturer", - "navigationId", - "price", - "properties", - "rating", - "shipping-free" - ] + "order": { + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "type": "string" }, - "availableSortings": { - "type": "array", - "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", - "items": { - "type": "object", - "properties": { - "label": { - "type": "string" - }, - "translated": { - "type": "object", - "properties": { - "label": { - "type": "string" - } - }, - "required": [ - "label" - ] - }, - "key": { - "type": "string" - }, - "priority": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_sorting" - ] - } - }, - "required": [ - "label", - "translated", - "key", - "priority", - "apiAlias" - ] - } + "limit": { + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "type": "integer", + "minimum": 0 }, - "sorting": { + "p": { + "description": "Search result page", + "type": "integer", + "default": 1 + }, + "manufacturer": { + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", "type": "string" }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } + "min-price": { + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 }, - "entity": { - "type": "string", - "enum": [ - "product" - ] + "max-price": { + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "rating": { + "description": "Filter products with a minimum average rating.", + "type": "integer" + }, + "shipping-free": { + "description": "Filters products that are marked as shipping-free.", + "type": "boolean", + "default": false + }, + "properties": { + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "type": "string" + }, + "manufacturer-filter": { + "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "price-filter": { + "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "rating-filter": { + "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "shipping-free-filter": { + "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-filter": { + "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", + "type": "boolean", + "default": true }, - "apiAlias": { + "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.", "type": "string", - "enum": [ - "product_listing" - ] + "nullable": true } - }, - "required": [ - "elements", - "availableSortings", - "currentFilters", - "apiAlias" - ] - } - ] - }, - "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": { - "type": "string", - "format": "date-time", - "nullable": true - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "$ref": "#/components/schemas/CountryState", - "nullable": true - }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + } } - }, - "required": [ - "customerId", - "createdAt", - "updatedAt", - "country", - "salutation" ] }, - "SuccessResponse": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - } - } - }, - "CartPriceReference": { + "CalculatedPrice": { "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "purchaseUnit": { + "unitPrice": { "type": "number" }, - "referenceUnit": { + "quantity": { "type": "number" }, - "unitName": { - "type": "string" + "rawTotal": { + "type": "number" }, - "price": { + "totalPrice": { "type": "number" }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_reference" + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } + }, + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } ] }, "listPrice": { @@ -11570,6 +11146,12 @@ } ] }, + "positionPrice": { + "type": "number" + }, + "netPrice": { + "type": "number" + }, "regulationPrice": { "type": "object", "properties": { @@ -11592,6 +11174,28 @@ "type": "string", "format": "^[0-9a-f]{32}$", "nullable": true + }, + "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": [ @@ -11599,110 +11203,50 @@ "hasRange", "regulationPrice", "listPrice", + "referencePrice", "calculatedTaxes", "totalPrice", "quantity", - "unitName" + "unitPrice", + "positionPrice", + "netPrice", + "taxRules" ] }, - "CartDeliveryPosition": { + "CartListPrice": { "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "description": "", "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" - } - } - }, - "identifier": { - "type": "string" + "discount": { + "type": "number" }, - "lineItem": { - "$ref": "#/components/schemas/LineItem" + "percentage": { + "type": "number" }, "price": { - "$ref": "#/components/schemas/CalculatedPrice" + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_list_price" + ] } - } - }, - "NavigationType": { - "type": "string", - "enum": [ - "main-navigation", - "footer-navigation", - "service-navigation" + }, + "required": [ + "apiAlias" ] }, - "CartError": { + "CartItems": { "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" - } - } - } - } - }, - "CrossSellingElementCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CrossSellingElement" - } - }, - "OrderRouteResponse": { - "type": "object", - "properties": { - "orders": { - "allOf": [ - { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order" - } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - }, - "paymentChangeable": { - "type": "object", - "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", - "additionalProperties": { - "type": "boolean" + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" } } - }, - "required": [ - "orders" - ] + } }, "ShippingMethodPageRouteResponse": { "type": "array", @@ -12044,139 +11588,461 @@ } } } - } + } + }, + "NavigationType": { + "type": "string", + "enum": [ + "main-navigation", + "footer-navigation", + "service-navigation" + ] + }, + "CrossSellingElement": { + "type": "object", + "properties": { + "crossSelling": { + "$ref": "#/components/schemas/ProductCrossSelling" + }, + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "streamId": { + "type": "string", + "format": "uuid" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cross_selling_element" + ] + } + }, + "required": [ + "crossSelling", + "products", + "total", + "apiAlias" + ] + }, + "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": { + "type": "string" + }, + "dataTimestamp": { + "type": "string" + }, + "deliveryInformation": { + "$ref": "#/components/schemas/CartDeliveryInformation" + }, + "description": { + "type": "string" + }, + "good": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "label": { + "type": "string" + }, + "modified": { + "type": "boolean" + }, + "modifiedByApp": { + "type": "boolean" + }, + "payload": { + "$ref": "#/components/schemas/ProductJsonApi" + }, + "price": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] + }, + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] + }, + "quantity": { + "type": "number" + }, + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + }, + "nullable": true + }, + "totalPrice": { + "type": "number" + }, + "unitPrice": { + "type": "number" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } + } + }, + "required": [ + "apiAlias", + "totalPrice", + "quantity", + "unitPrice" + ] + }, + "priceDefinition": { + "$ref": "#/components/schemas/CartPriceQuantity" + }, + "quantity": { + "type": "number" + }, + "quantityInformation": { + "type": "object", + "properties": { + "maxPurchase": { + "type": "number" + }, + "minPurchase": { + "type": "number" + }, + "purchaseSteps": { + "type": "number" + } + } + }, + "referencedId": { + "type": "string" + }, + "removable": { + "type": "boolean" + }, + "stackable": { + "type": "boolean" + }, + "states": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "is-physical", + "is-download" + ] + } + }, + "type": { + "$ref": "#/components/schemas/LineItemType" + }, + "uniqueIdentifier": { + "type": "string" + } + }, + "required": [ + "id", + "type" + ] }, - "CalculatedPrice": { + "AccountNewsletterRecipient": { "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "unitPrice": { - "type": "number" - }, - "quantity": { - "type": "number" + "status": { + "type": "string", + "enum": [ + "undefined", + "notSet", + "direct", + "optIn", + "optOut" + ] }, - "rawTotal": { - "type": "number" + "apiAlias": { + "type": "string", + "enum": [ + "account_newsletter_recipient" + ] + } + }, + "required": [ + "status", + "apiAlias" + ] + }, + "EntitySearchResult": { + "type": "object", + "properties": { + "entity": { + "type": "string" }, - "totalPrice": { - "type": "number" + "total": { + "type": "integer", + "description": "The total number of found entities" }, - "calculatedTaxes": { + "aggregations": { "type": "array", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] + "type": "object" } }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." + }, + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." + } + } + }, + "CartDeliveryInformation": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_information" + ] + }, + "freeDelivery": { + "type": "boolean" + }, + "deliveryTime": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - { - "type": "null" + "min": { + "type": "integer" + }, + "max": { + "type": "integer" + }, + "unit": { + "type": "string" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_time" + ] } - ] + } }, - "listPrice": { - "oneOf": [ + "height": { + "type": "integer" + }, + "length": { + "type": "integer" + }, + "restockTime": { + "type": "integer" + }, + "stock": { + "type": "integer" + }, + "weight": { + "type": "integer" + }, + "width": { + "type": "integer" + } + }, + "required": [ + "apiAlias" + ] + }, + "OrderRouteResponse": { + "type": "object", + "properties": { + "orders": { + "allOf": [ { - "$ref": "#/components/schemas/CartListPrice" + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" + } }, { - "type": "null" + "$ref": "#/components/schemas/EntitySearchResult" } ] }, - "positionPrice": { - "type": "number" - }, - "netPrice": { - "type": "number" + "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" + ] + }, + "Sitemap": { + "type": "object", + "properties": { + "filename": { + "type": "string" }, - "regulationPrice": { + "created": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "filename", + "created" + ] + }, + "CartDeliveryPosition": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { "type": "object", "properties": { - "price": { - "type": "number" + "earliest": { + "type": "string", + "format": "date-time" }, - "apiAlias": { + "latest": { "type": "string", - "enum": [ - "cart_regulation_price" - ] + "format": "date-time" } - }, - "nullable": true - }, - "hasRange": { - "type": "boolean" + } }, - "variantId": { - "type": "string", - "format": "^[0-9a-f]{32}$", - "nullable": true + "identifier": { + "type": "string" }, - "apiAlias": { - "type": "string", - "enum": [ - "calculated_price" - ] + "lineItem": { + "$ref": "#/components/schemas/LineItem" }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } + "price": { + "$ref": "#/components/schemas/CalculatedPrice" + } + } + }, + "WishlistLoadRouteResponse": { + "type": "object", + "properties": { + "wishlist": { + "type": "object", + "properties": { + "customerId": { + "type": "string" + }, + "salesChannelId": { + "type": "string" } } + }, + "products": { + "$ref": "#/components/schemas/ProductListingResult" } - }, - "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "referencePrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitPrice", - "positionPrice", - "netPrice", - "taxRules" - ] + } }, "Criteria": { "type": "object", @@ -12229,11 +12095,7 @@ } }, "associations": { - "type": "array", - "description": "Associations to include. For more information, see [Search Queries > Associations](https://shopware.stoplight.io/docs/store-api/cf710bf73d0cd-search-queries#associations)", - "items": { - "$ref": "#/components/schemas/Association" - } + "$ref": "#/components/schemas/Associations" }, "post-filter": { "type": "array", @@ -12263,7 +12125,10 @@ } }, "aggregations": { - "$ref": "#/components/schemas/Aggregations" + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } }, "fields": { "type": "array", @@ -12285,17 +12150,17 @@ "$ref": "#/components/schemas/TotalCountMode" }, "includes": { - "$ref": "#/components/schemas/Include" + "$ref": "#/components/schemas/Includes" } } }, - "Association": { + "Associations": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/Criteria" } }, - "Include": { + "Includes": { "type": "object", "additionalProperties": { "type": "array", @@ -12304,70 +12169,67 @@ } } }, - "Aggregations": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "title": "AggregationEntity", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationFilter", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationTerms", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationHistogram", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationRange", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationRange" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - } - ] - } + "Aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" + }, + { + "title": "AggregationEntity", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationEntity" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationFilter", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationFilter" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationTerms", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationRange", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationRange" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + } + ] }, "SubAggregations": { "type": "object", @@ -12548,10 +12410,10 @@ "operator": { "type": "string", "enum": [ - "AND", "and", - "OR", - "or" + "or", + "nor", + "nand" ] }, "queries": { @@ -12600,141 +12462,275 @@ "parameters" ] }, - "CartPriceQuantity": { + "AggregationEntity": { + "title": "AggregationEntity", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "entity" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "definition": { + "description": "The entity definition e.g \"product_manufacturer\".", + "type": "string" + } + }, + "required": [ + "name", + "type", + "field", + "definition" + ] + }, + "AggregationFilter": { + "title": "AggregationFilter", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "filter" + ] + }, + "filter": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Filters" + } + } + }, + "required": [ + "name", + "type", + "filter" + ] + }, + "AggregationTerms": { + "title": "AggregationTerms", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "terms" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "limit": { + "description": "The number of terms to return", + "type": "number" + }, + "sort": { + "type": "array", + "description": "Sorting the aggregation result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "AggregationHistogram": { + "title": "AggregationHistogram", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "histogram" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "interval": { + "description": "The interval of the histogram", + "type": "number" + }, + "format": { + "description": "The format of the histogram", + "type": "string" + }, + "timeZone": { + "description": "The timezone of the histogram", + "type": "string" + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "AggregationRange": { + "title": "AggregationRange", + "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", "type": "object", "properties": { - "apiAlias": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", "type": "string", "enum": [ - "cart_price_quantity" + "range" ] }, - "isCalculated": { - "type": "boolean" - }, - "listPrice": { - "$ref": "#/components/schemas/CartListPrice" - }, - "price": { - "type": "number" - }, - "quantity": { - "type": "number" - }, - "regulationPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - } - }, - "type": "object" + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "taxRules": { + "ranges": { + "description": "The ranges of the aggregation", "type": "array", "items": { "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" + "anyOf": [ + { + "type": "object", + "title": "From and to", + "properties": { + "from": { + "type": "number", + "description": "The lower bound of the range" + }, + "to": { + "type": "number", + "description": "The upper bound of the range" + } + }, + "required": [ + "from", + "to" + ] }, - "name": { - "type": "string" + { + "type": "object", + "title": "From only", + "properties": { + "from": { + "type": "string", + "description": "The lower bound of the range" + } + }, + "required": [ + "from" + ] + }, + { + "type": "object", + "title": "To only", + "properties": { + "to": { + "type": "string", + "description": "The upper bound of the range" + } + }, + "required": [ + "to" + ] } - } + ] } - }, - "type": { - "type": "string" } }, "required": [ - "apiAlias" + "name", + "type", + "field", + "ranges" ] }, - "ProductDetailResponse": { + "CustomerAddressRead": { "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "product": { - "$ref": "#/components/schemas/Product" + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true }, - "configurator": { - "type": "array", - "description": "List of property groups with their corresponding options and information on how to display them.", - "items": { - "$ref": "#/components/schemas/PropertyGroup" - } + "customerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "$ref": "#/components/schemas/CountryState", + "nullable": true + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, "required": [ - "product" + "customerId", + "createdAt", + "updatedAt", + "country", + "salutation" ] }, - "CartItems": { + "SuccessResponse": { "type": "object", "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } + "success": { + "type": "boolean" } } }, - "WishlistLoadRouteResponse": { - "type": "object", - "properties": { - "wishlist": { - "type": "object", - "properties": { - "customerId": { - "type": "string" - }, - "salesChannelId": { - "type": "string" - } - } - }, - "products": { - "$ref": "#/components/schemas/ProductListingResult" - } + "CrossSellingElementCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrossSellingElement" } - }, - "CrossSellingElement": { - "type": "object", - "properties": { - "crossSelling": { - "$ref": "#/components/schemas/ProductCrossSelling" - }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - }, - "total": { - "type": "integer", - "format": "int32" - }, - "streamId": { - "type": "string", - "format": "uuid" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cross_selling_element" - ] - } - }, - "required": [ - "crossSelling", - "products", - "total", - "apiAlias" - ] } }, "responses": { @@ -12873,30 +12869,6 @@ "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" - } - } - }, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "description": "Define the URL which browser will be redirected to", - "type": "string" - } - } - } - } - } - }, "OpenApi3": { "description": "Returns information about the store API.", "content": { @@ -13085,6 +13057,30 @@ } } } + }, + "ContextTokenResponse": { + "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", + "headers": { + "sw-context-token": { + "description": "Contains sw-context-token value", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redirectUrl": { + "description": "Define the URL which browser will be redirected to", + "type": "string" + } + } + } + } + } } }, "parameters": { From 22388c48e940f5119e6fcd98a63559a518fa665d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 14 Nov 2024 08:20:37 +0100 Subject: [PATCH 20/35] [create-pull-request] automated change (#304) Co-authored-by: shopwareBot --- storeapi.json | 8290 ++++++++++++++++++++++++------------------------- 1 file changed, 4143 insertions(+), 4147 deletions(-) diff --git a/storeapi.json b/storeapi.json index 2fe6587..d12802f 100644 --- a/storeapi.json +++ b/storeapi.json @@ -7,7 +7,7 @@ "name": "MIT", "url": "https://github.com/shopware/shopware/blob/trunk/LICENSE" }, - "version": "6.6.7.0" + "version": "6.6.8.2" }, "servers": [ { @@ -11131,131 +11131,179 @@ "apiAlias" ] }, - "AggregationEntity": { - "title": "AggregationEntity", + "Breadcrumb": { "type": "object", "properties": { "name": { - "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" }, + "categoryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "type": { - "description": "The type of aggregation", "type": "string", "enum": [ - "entity" + "page", + "link", + "folder" ] }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "translated": { + "type": "object", + "additionalProperties": true, + "properties": { + "customFields": { + "type": "object" + }, + "slotConfig": { + "type": "object" + }, + "linkType": { + "type": "string", + "enum": [ + "external", + "category", + "product", + "landing_page" + ] + }, + "internalLink": { + "type": "string" + }, + "externalLink": { + "type": "string" + }, + "linkNewTab": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "metaTitle": { + "type": "string" + }, + "metaDescription": { + "type": "string" + }, + "keywords": { + "type": "string" + } + } }, - "definition": { - "description": "The entity definition e.g \"product_manufacturer\".", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field", - "definition" - ] - }, - "AggregationFilter": { - "title": "AggregationFilter", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", + "path": { "type": "string" }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "filter" - ] - }, - "filter": { + "seoUrls": { "type": "array", "items": { - "$ref": "#/components/schemas/Filters" + "$ref": "#/components/schemas/SeoUrl" } + }, + "apiAlias": { + "type": "string", + "enum": [ + "breadcrumb" + ] } }, "required": [ "name", + "categoryId", "type", - "filter" + "translated", + "path", + "apiAlias" ] }, - "AggregationTerms": { - "title": "AggregationTerms", - "type": "object", + "CustomerAddressBody": { + "description": "Added since version: 6.0.0.0", + "required": [ + "countryId", + "firstName", + "lastName", + "city", + "street" + ], "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" + "countryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "type": { - "description": "The type of aggregation", + "countryStateId": { "type": "string", - "enum": [ - "terms" - ] + "pattern": "^[0-9a-f]{32}$" }, - "field": { - "description": "The field you want to aggregate over.", + "salutationId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "firstName": { "type": "string" }, - "limit": { - "description": "The number of terms to return", - "type": "number" + "lastName": { + "type": "string" }, - "sort": { - "type": "array", - "description": "Sorting the aggregation result.", - "items": { - "$ref": "#/components/schemas/Sort" - } + "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" } }, - "required": [ - "name", - "type", - "field" - ] + "type": "object" }, - "AggregationHistogram": { - "title": "AggregationHistogram", + "AggregationMetrics": { "type": "object", "properties": { "name": { - "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" }, "type": { - "description": "The type of aggregation", "type": "string", "enum": [ - "histogram" + "avg", + "count", + "max", + "min", + "stats", + "sum" ] }, "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" } }, @@ -11265,292 +11313,585 @@ "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)", + "FindProductVariantRouteResponse": { "type": "object", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", + "foundCombination": { + "type": "object", + "properties": { + "variantId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of a variant." + }, + "options": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Available product variant options. For example, for variant `Size`, option would be `XS`, `S`, `M`, `L`, `XL`." + } + } + } + } + }, + "CartPriceQuantity": { + "type": "object", + "properties": { + "apiAlias": { "type": "string", "enum": [ - "range" + "cart_price_quantity" ] }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "isCalculated": { + "type": "boolean" }, - "ranges": { - "description": "The ranges of the aggregation", - "type": "array", - "items": { - "type": "object", - "anyOf": [ - { - "type": "object", - "title": "From and to", - "properties": { - "from": { - "type": "number", - "description": "The lower bound of the range" - }, - "to": { - "type": "number", - "description": "The upper bound of the range" - } - }, - "required": [ - "from", - "to" - ] - }, - { - "type": "object", - "title": "From only", - "properties": { - "from": { - "type": "string", - "description": "The lower bound of the range" - } - }, - "required": [ - "from" - ] + "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" }, - { - "type": "object", - "title": "To only", - "properties": { - "to": { - "type": "string", - "description": "The upper bound of the range" - } - }, - "required": [ - "to" - ] + "name": { + "type": "string" } - ] + } } + }, + "type": { + "type": "string" } }, "required": [ - "name", - "type", - "field", - "ranges" + "apiAlias" ] }, - "AccountNewsletterRecipient": { + "NavigationRouteResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + }, + "properties": { + "id": { + "description": "Unique identity of navigation route response." + } + } + }, + "Price": { "type": "object", + "description": "Price object", "properties": { - "status": { + "currencyId": { "type": "string", - "enum": [ - "undefined", - "notSet", - "direct", - "optIn", - "optOut" + "pattern": "^[0-9a-f]{32}$" + }, + "gross": { + "description": "", + "type": "number" + }, + "net": { + "description": "", + "type": "number" + }, + "linked": { + "description": "", + "type": "boolean" + }, + "listPrice": { + "description": "", + "type": "object", + "properties": { + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "gross": { + "description": "", + "type": "number" + }, + "net": { + "description": "", + "type": "number" + }, + "linked": { + "description": "", + "type": "boolean" + } + }, + "required": [ + "gross", + "net" ] }, - "apiAlias": { - "type": "string", - "enum": [ - "account_newsletter_recipient" + "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": [ - "status", - "apiAlias" + "currencyId", + "gross", + "net" ] }, - "CustomerAddressBody": { - "description": "Added since version: 6.0.0.0", - "required": [ - "countryId", - "firstName", - "lastName", - "city", - "street" - ], + "CartDelivery": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "countryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } }, - "countryStateId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "location": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "state": { + "$ref": "#/components/schemas/CountryState" + } + } }, - "salutationId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "positions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDeliveryPosition" + } }, - "firstName": { - "type": "string" + "shippingCosts": { + "$ref": "#/components/schemas/CalculatedPrice" }, - "lastName": { - "type": "string" + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + } + } + }, + "ProductDetailResponse": { + "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", + "properties": { + "product": { + "$ref": "#/components/schemas/Product" }, - "zipcode": { - "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" + } }, - "city": { - "type": "string" + "id": { + "description": "Unique identity of product detail response." }, - "company": { - "type": "string" + "available": { + "description": "When boolean value is true, the product is available for purchase." }, - "street": { - "type": "string" + "isCloseout": { + "description": "Boolean value to check if the product is still buyable when stock value is 0." }, - "department": { - "type": "string" + "displayGroup": { + "description": "Internal field." }, - "title": { - "type": "string" + "manufacturerNumber": { + "description": "Unique number of the product manufacturer." }, - "phoneNumber": { - "type": "string" + "stock": { + "description": "Quantity of product available." }, - "additionalAddressLine1": { - "type": "string" + "sortedProperties": { + "description": "Properties of the product that are sorted" + } + }, + "required": [ + "product" + ] + }, + "CartPriceReference": { + "type": "object", + "properties": { + "purchaseUnit": { + "type": "number" }, - "additionalAddressLine2": { + "referenceUnit": { + "type": "number" + }, + "unitName": { "type": "string" }, - "customFields": { - "type": "object" + "price": { + "type": "number" }, - "country": { - "$ref": "#/components/schemas/Country" + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_reference" + ] }, - "countryState": { - "$ref": "#/components/schemas/CountryState" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "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 } }, - "type": "object" + "required": [ + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" + ] }, - "EntitySearchResult": { + "Cart": { "type": "object", "properties": { - "entity": { + "name": { + "description": "Name of the cart - for example `guest-cart`", "type": "string" }, - "total": { - "type": "integer", - "description": "The total number of found entities" + "token": { + "description": "Context token identifying the cart and the user session", + "type": "string" }, - "aggregations": { + "price": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "lineItems": { + "description": "All items within the cart", "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", "items": { - "type": "object" + "$ref": "#/components/schemas/LineItem" } }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." + "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." + } + } }, - "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." + "deliveries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDelivery" + } }, - "created": { + "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", - "format": "date-time" - } - }, - "required": [ - "filename", - "created" - ] - }, - "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.", + "description": "A comment that can be added to the cart.", + "nullable": true + }, + "affiliateCode": { "type": "string", + "description": "An affiliate tracking code", "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.", + "campaignCode": { "type": "string", + "description": "A campaign tracking code", "nullable": true + }, + "id": { + "description": "Unique identity of cart." } } }, - "CartDelivery": { + "CartError": { "type": "object", "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "deliveryDate": { + "items": { "type": "object", "properties": { - "earliest": { - "type": "string", - "format": "date-time" + "key": { + "type": "string" }, - "latest": { - "type": "string", - "format": "date-time" - } - } - }, - "location": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", + "level": { + "type": "number", "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" + 0, + 10, + 20 + ], + "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" + "message": { + "type": "string" }, - "state": { - "$ref": "#/components/schemas/CountryState" + "messageKey": { + "type": "string" } } + } + } + }, + "ProductListingResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EntitySearchResult" }, - "positions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDeliveryPosition" - } - }, - "shippingCosts": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" + { + "type": "object", + "properties": { + "currentFilters": { + "type": "object", + "description": "Contains the state of the filters. These can be used to create listing filters.", + "properties": { + "navigationId": { + "type": "string" + }, + "manufacturer": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "price": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "default": 0 + }, + "max": { + "type": "integer", + "default": 0 + } + }, + "required": [ + "min", + "max" + ] + }, + "rating": { + "type": "integer", + "nullable": true + }, + "shipping-free": { + "type": "boolean", + "default": false + }, + "properties": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "search": { + "type": "string" + } + }, + "required": [ + "manufacturer", + "navigationId", + "price", + "properties", + "rating", + "shipping-free" + ] + }, + "availableSortings": { + "type": "array", + "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", + "items": { + "type": "object", + "properties": { + "label": { + "type": "string" + }, + "translated": { + "type": "object", + "properties": { + "label": { + "type": "string" + } + }, + "required": [ + "label" + ] + }, + "key": { + "type": "string" + }, + "priority": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_sorting" + ] + } + }, + "required": [ + "label", + "translated", + "key", + "priority", + "apiAlias" + ] + } + }, + "sorting": { + "type": "string" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "entity": { + "type": "string", + "enum": [ + "product" + ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_listing" + ] + } + }, + "required": [ + "elements", + "availableSortings", + "currentFilters", + "apiAlias" + ] } - } + ] }, "SalesChannelContext": { "type": "object", @@ -11955,1111 +12296,327 @@ } } }, - "NavigationRouteResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - }, - "properties": { - "id": { - "description": "Unique identity of navigation route response." - } - } - }, - "LineItemType": { - "type": "string", - "enum": [ - "product", - "credit", - "custom", - "promotion", - "discount", - "container", - "quantity" - ] - }, - "LineItem": { + "ProductListingFlags": { "type": "object", + "description": "Additional flags for product listings", "properties": { - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - }, - "cover": { - "$ref": "#/components/schemas/ProductMedia" - }, - "dataContextHash": { - "type": "string" - }, - "dataTimestamp": { - "type": "string" - }, - "deliveryInformation": { - "$ref": "#/components/schemas/CartDeliveryInformation" - }, - "description": { - "type": "string", - "description": "Description of line items in an order." - }, - "good": { - "type": "boolean", - "description": "When set to true, it indicates the line item is physical else it is virtual." - }, - "id": { + "no-aggregations": { + "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", "type": "string", - "description": "Unique identity of line item." + "nullable": true }, - "label": { + "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", - "description": "It is a typical product name given to the line item." - }, - "modified": { - "type": "boolean", - "description": "When boolean value is `true`, line items are said to be modified." - }, - "modifiedByApp": { - "type": "boolean" - }, - "payload": { - "$ref": "#/components/schemas/ProductJsonApi" + "nullable": true + } + } + }, + "ProductListingCriteria": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" }, - "price": { + { "type": "object", + "description": "Additional search parameters for product listings", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "calculated_price" - ] + "order": { + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "type": "string" }, - "calculatedTaxes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } + "limit": { + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "type": "integer", + "minimum": 0 }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] + "p": { + "description": "Search result page", + "type": "integer", + "default": 1 }, - "quantity": { - "type": "number" + "manufacturer": { + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "type": "string" }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] + "min-price": { + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 }, - "regulationPrice": { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - }, - "nullable": true + "max-price": { + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 }, - "totalPrice": { - "type": "number" + "rating": { + "description": "Filter products with a minimum average rating.", + "type": "integer" }, - "unitPrice": { - "type": "number" + "shipping-free": { + "description": "Filters products that are marked as shipping-free.", + "type": "boolean", + "default": false }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } + "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.", + "type": "string", + "nullable": true } - }, - "required": [ - "apiAlias", - "totalPrice", - "quantity", - "unitPrice" - ] - }, - "priceDefinition": { - "$ref": "#/components/schemas/CartPriceQuantity" + } + } + ], + "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." + } + } }, - "quantity": { - "type": "number", - "description": "Number of items of product." + "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." + } + } }, - "quantityInformation": { - "type": "object", + "post-filter": { "properties": { - "maxPurchase": { - "type": "number" + "type": { + "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." }, - "minPurchase": { - "type": "number" + "field": { + "description": "To filter only the results but not the aggregations by field like an property identifier." }, - "purchaseSteps": { - "type": "number" + "value": { + "description": "To filter only the results but not the aggregations by value." } } + } + } + }, + "CalculatedPrice": { + "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", + "properties": { + "unitPrice": { + "type": "number" }, - "referencedId": { - "type": "string", - "description": "Unique identity of type of entity." + "quantity": { + "type": "number" }, - "removable": { - "type": "boolean", - "description": "Allows the line item to be removable from the cart when set to true." + "rawTotal": { + "type": "number" }, - "stackable": { - "type": "boolean", - "description": "Allows to change the quantity of the line item when set to true." + "totalPrice": { + "type": "number" }, - "states": { + "calculatedTaxes": { "type": "array", "items": { - "type": "string", - "enum": [ - "is-physical", - "is-download" + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" ] } }, - "type": { - "$ref": "#/components/schemas/LineItemType", - "description": "Type refers to the entity type of an item whether it is product or promotion for instance." + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] }, - "uniqueIdentifier": { - "type": "string" - } - }, - "required": [ - "id", - "type" - ] - }, - "CartDeliveryInformation": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_information" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } ] }, - "freeDelivery": { - "type": "boolean" + "positionPrice": { + "type": "number" }, - "deliveryTime": { + "netPrice": { + "type": "number" + }, + "regulationPrice": { "type": "object", "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer" - }, - "max": { - "type": "integer" - }, - "unit": { - "type": "string" + "price": { + "type": "number" }, "apiAlias": { "type": "string", "enum": [ - "cart_delivery_time" + "cart_regulation_price" ] } - } - }, - "height": { - "type": "integer" - }, - "length": { - "type": "integer" + }, + "nullable": true }, - "restockTime": { - "type": "integer" + "hasRange": { + "type": "boolean" }, - "stock": { - "type": "integer" + "variantId": { + "type": "string", + "format": "^[0-9a-f]{32}$", + "nullable": true }, - "weight": { - "type": "integer" + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] }, - "width": { - "type": "integer" + "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" + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "referencePrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitPrice", + "positionPrice", + "netPrice", + "taxRules" ] }, - "AggregationMetrics": { + "CartListPrice": { "type": "object", + "description": "", "properties": { - "name": { - "type": "string" + "discount": { + "type": "number" }, - "type": { + "percentage": { + "type": "number" + }, + "price": { + "type": "number" + }, + "apiAlias": { "type": "string", "enum": [ - "avg", - "count", - "max", - "min", - "stats", - "sum" + "cart_list_price" ] - }, - "field": { - "type": "string" } }, "required": [ - "name", - "type", - "field" + "apiAlias" ] }, - "Price": { + "CartItems": { "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" - } + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" }, - "required": [ - "gross", - "net" - ] - }, - "regulationPrice": { - "description": "", - "type": "object", "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "", - "type": "number" - }, - "net": { - "description": "", - "type": "number" + "id": { + "description": "Unique identity of cart item." }, - "linked": { - "description": "", - "type": "boolean" + "modified": { + "description": "When boolean value is `true`, the cart is said to be modified." } - }, - "required": [ - "gross", - "net" - ] + } } - }, - "required": [ - "currencyId", - "gross", - "net" - ] - }, - "ProductListingCriteria": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - }, - { - "type": "object", - "description": "Additional search parameters for product listings", - "properties": { - "order": { - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "type": "string" - }, - "limit": { - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "type": "integer", - "minimum": 0 - }, - "p": { - "description": "Search result page", - "type": "integer", - "default": 1 - }, - "manufacturer": { - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", - "type": "string" - }, - "min-price": { - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 - }, - "max-price": { - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 - }, - "rating": { - "description": "Filter products with a minimum average rating.", - "type": "integer" - }, - "shipping-free": { - "description": "Filters products that are marked as shipping-free.", - "type": "boolean", - "default": false - }, - "properties": { - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", - "type": "string" - }, - "manufacturer-filter": { - "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "price-filter": { - "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "rating-filter": { - "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "shipping-free-filter": { - "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "property-filter": { - "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "property-whitelist": { - "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", - "type": "string" - }, - "reduce-aggregations": { - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", - "type": "string", - "nullable": true - } - } - } - ], - "properties": { - "filter": { - "properties": { - "type": { - "description": "To filter the results and aggregations with filter types like ==, >=, etc." - }, - "field": { - "description": "To filter the results and aggregations by field like an property identifier." - }, - "value": { - "description": "To filter the results and aggregations by value." - } - } - }, - "sort": { - "properties": { - "field": { - "description": "Sort the search results by field like an property identifier." - }, - "order": { - "description": "Sort the search results of orders by ascending or descending." - }, - "naturalSorting": { - "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." - } - } - }, - "post-filter": { - "properties": { - "type": { - "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." - }, - "field": { - "description": "To filter only the results but not the aggregations by field like an property identifier." - }, - "value": { - "description": "To filter only the results but not the aggregations by value." - } - } - } - } - }, - "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." - } - } - }, - "CartListPrice": { - "type": "object", - "description": "", - "properties": { - "discount": { - "type": "number" - }, - "percentage": { - "type": "number" - }, - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_list_price" - ] - } - }, - "required": [ - "apiAlias" - ] - }, - "FindProductVariantRouteResponse": { - "type": "object", - "properties": { - "foundCombination": { - "type": "object", - "properties": { - "variantId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of a variant." - }, - "options": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Available product variant options. For example, for variant `Size`, option would be `XS`, `S`, `M`, `L`, `XL`." - } - } - } - } - }, - "Breadcrumb": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "categoryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "type": { - "type": "string", - "enum": [ - "page", - "link", - "folder" - ] - }, - "translated": { - "type": "object", - "additionalProperties": true, - "properties": { - "customFields": { - "type": "object" - }, - "slotConfig": { - "type": "object" - }, - "linkType": { - "type": "string", - "enum": [ - "external", - "category", - "product", - "landing_page" - ] - }, - "internalLink": { - "type": "string" - }, - "externalLink": { - "type": "string" - }, - "linkNewTab": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "metaTitle": { - "type": "string" - }, - "metaDescription": { - "type": "string" - }, - "keywords": { - "type": "string" - } - } - }, - "path": { - "type": "string" - }, - "seoUrls": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } - }, - "apiAlias": { - "type": "string", - "enum": [ - "breadcrumb" - ] - } - }, - "required": [ - "name", - "categoryId", - "type", - "translated", - "path", - "apiAlias" - ] - }, - "ProductListingResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EntitySearchResult" - }, - { - "type": "object", - "properties": { - "currentFilters": { - "type": "object", - "description": "Contains the state of the filters. These can be used to create listing filters.", - "properties": { - "navigationId": { - "type": "string" - }, - "manufacturer": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "price": { - "type": "object", - "properties": { - "min": { - "type": "integer", - "default": 0 - }, - "max": { - "type": "integer", - "default": 0 - } - }, - "required": [ - "min", - "max" - ] - }, - "rating": { - "type": "integer", - "nullable": true - }, - "shipping-free": { - "type": "boolean", - "default": false - }, - "properties": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "search": { - "type": "string" - } - }, - "required": [ - "manufacturer", - "navigationId", - "price", - "properties", - "rating", - "shipping-free" - ] - }, - "availableSortings": { - "type": "array", - "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", - "items": { - "type": "object", - "properties": { - "label": { - "type": "string" - }, - "translated": { - "type": "object", - "properties": { - "label": { - "type": "string" - } - }, - "required": [ - "label" - ] - }, - "key": { - "type": "string" - }, - "priority": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_sorting" - ] - } - }, - "required": [ - "label", - "translated", - "key", - "priority", - "apiAlias" - ] - } - }, - "sorting": { - "type": "string" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - }, - "entity": { - "type": "string", - "enum": [ - "product" - ] - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_listing" - ] - } - }, - "required": [ - "elements", - "availableSortings", - "currentFilters", - "apiAlias" - ] - } - ] - }, - "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": { - "type": "string", - "format": "date-time", - "nullable": true - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "$ref": "#/components/schemas/CountryState", - "nullable": true - }, - "salutation": { - "$ref": "#/components/schemas/Salutation" - } - }, - "required": [ - "customerId", - "createdAt", - "updatedAt", - "country", - "salutation" - ] - }, - "SuccessResponse": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - } - } - }, - "CartPriceReference": { - "type": "object", - "properties": { - "purchaseUnit": { - "type": "number" - }, - "referenceUnit": { - "type": "number" - }, - "unitName": { - "type": "string" - }, - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_reference" - ] - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "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" - ] - }, - "CartDeliveryPosition": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" - } - } - }, - "identifier": { - "type": "string" - }, - "lineItem": { - "$ref": "#/components/schemas/LineItem" - }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" - } - } - }, - "NavigationType": { - "type": "string", - "enum": [ - "main-navigation", - "footer-navigation", - "service-navigation" - ] - }, - "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" - } - } - } - } - }, - "CrossSellingElementCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CrossSellingElement" - }, - "properties": { - "total": { - "description": "Number of cross selling elements found." - } - } - }, - "OrderRouteResponse": { - "type": "object", - "properties": { - "orders": { - "allOf": [ - { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order" - } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - }, - "paymentChangeable": { - "type": "object", - "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", - "additionalProperties": { - "type": "boolean" - } - } - }, - "required": [ - "orders" - ] + } }, "ShippingMethodPageRouteResponse": { "type": "array", @@ -13594,234 +13151,569 @@ } } }, - "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." - } - } + "availabilityRule": { + "properties": { + "name": { + "description": "Unique name for the rule." + }, + "description": { + "description": "A short description about the rule." + }, + "priority": { + "description": "A numerical value to prioritize one of the rules from the list." + }, + "invalid": { + "description": "When the boolean value is `true`, the rule is no more available for usage." + } + } + }, + "availabilityRuleId": { + "description": "Unique identity of availability rule." + }, + "prices": { + "properties": { + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "currencyId": { + "description": "Unique identity of currency." + }, + "ruleId": { + "description": "Unique identity of rule." + }, + "calculation": { + "description": "Shipping price calculated based on quantity, price, weight or volume of items." + }, + "quantityStart": { + "description": "Starting range of quantity of an item." + }, + "quantityEnd": { + "description": "Ending range of quantity of an item." + }, + "price": { + "description": "Shipping method price after applied rules." + }, + "calculationRuleId": { + "description": "Unique identity of calculation rule." + } + } + }, + "mediaId": { + "description": "Unique identity of media." + }, + "media": { + "properties": { + "userId": { + "description": "Unique identity of user." + }, + "mimeType": { + "description": "A string sent along with a file indicating the type of the file. For example: image/jpeg." + }, + "fileExtension": { + "description": "Type of file indication. For example: jpeg, png." + }, + "fileSize": { + "description": "Size of the file media file uploaded." + }, + "title": { + "description": "Title name give to the media." + }, + "metaDataRaw": { + "description": "Details of the media file uploaded." + }, + "alt": { + "description": "Alternate text for media." + }, + "url": { + "description": "Runtime field, cannot be used as part of the criteria." + }, + "fileName": { + "description": "Name of the media file uploaded." + }, + "mediaFolderId": { + "description": "Unique identity of media folder." + }, + "private": { + "description": "Boolean value is `true` to keep the media display private." + } + } + }, + "tags": { + "properties": { + "name": { + "description": "Name of the tag." + } + } + } + } + }, + "NavigationType": { + "type": "string", + "enum": [ + "main-navigation", + "footer-navigation", + "service-navigation" + ] + }, + "CrossSellingElement": { + "type": "object", + "properties": { + "crossSelling": { + "$ref": "#/components/schemas/ProductCrossSelling" + }, + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "streamId": { + "type": "string", + "format": "uuid" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cross_selling_element" + ] + } + }, + "required": [ + "crossSelling", + "products", + "total", + "apiAlias" + ] + }, + "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" }, - "availabilityRuleId": { - "description": "Unique identity of availability rule." + "dataContextHash": { + "type": "string" }, - "prices": { + "dataTimestamp": { + "type": "string" + }, + "deliveryInformation": { + "$ref": "#/components/schemas/CartDeliveryInformation" + }, + "description": { + "type": "string", + "description": "Description of line items in an order." + }, + "good": { + "type": "boolean", + "description": "When set to true, it indicates the line item is physical else it is virtual." + }, + "id": { + "type": "string", + "description": "Unique identity of line item." + }, + "label": { + "type": "string", + "description": "It is a typical product name given to the line item." + }, + "modified": { + "type": "boolean", + "description": "When boolean value is `true`, line items are said to be modified." + }, + "modifiedByApp": { + "type": "boolean" + }, + "payload": { + "$ref": "#/components/schemas/ProductJsonApi" + }, + "price": { + "type": "object", "properties": { - "shippingMethodId": { - "description": "Unique identity of shipping method." + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] }, - "currencyId": { - "description": "Unique identity of currency." + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } }, - "ruleId": { - "description": "Unique identity of rule." + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] }, - "calculation": { - "description": "Shipping price calculated based on quantity, price, weight or volume of items." + "quantity": { + "type": "number" }, - "quantityStart": { - "description": "Starting range of quantity of an item." + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] }, - "quantityEnd": { - "description": "Ending range of quantity of an item." + "regulationPrice": { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + }, + "nullable": true }, - "price": { - "description": "Shipping method price after applied rules." + "totalPrice": { + "type": "number" }, - "calculationRuleId": { - "description": "Unique identity of calculation rule." + "unitPrice": { + "type": "number" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } } - } + }, + "required": [ + "apiAlias", + "totalPrice", + "quantity", + "unitPrice" + ] }, - "mediaId": { - "description": "Unique identity of media." + "priceDefinition": { + "$ref": "#/components/schemas/CartPriceQuantity" }, - "media": { + "quantity": { + "type": "number", + "description": "Number of items of product." + }, + "quantityInformation": { + "type": "object", "properties": { - "userId": { - "description": "Unique identity of user." - }, - "mimeType": { - "description": "A string sent along with a file indicating the type of the file. For example: image/jpeg." - }, - "fileExtension": { - "description": "Type of file indication. For example: jpeg, png." - }, - "fileSize": { - "description": "Size of the file media file uploaded." - }, - "title": { - "description": "Title name give to the media." - }, - "metaDataRaw": { - "description": "Details of the media file uploaded." - }, - "alt": { - "description": "Alternate text for media." - }, - "url": { - "description": "Runtime field, cannot be used as part of the criteria." - }, - "fileName": { - "description": "Name of the media file uploaded." + "maxPurchase": { + "type": "number" }, - "mediaFolderId": { - "description": "Unique identity of media folder." + "minPurchase": { + "type": "number" }, - "private": { - "description": "Boolean value is `true` to keep the media display private." + "purchaseSteps": { + "type": "number" } } }, - "tags": { - "properties": { - "name": { - "description": "Name of the tag." - } - } + "referencedId": { + "type": "string", + "description": "Unique identity of type of entity." + }, + "removable": { + "type": "boolean", + "description": "Allows the line item to be removable from the cart when set to true." + }, + "stackable": { + "type": "boolean", + "description": "Allows to change the quantity of the line item when set to true." + }, + "states": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "is-physical", + "is-download" + ] + } + }, + "type": { + "$ref": "#/components/schemas/LineItemType", + "description": "Type refers to the entity type of an item whether it is product or promotion for instance." + }, + "uniqueIdentifier": { + "type": "string" + } + }, + "required": [ + "id", + "type" + ] + }, + "AccountNewsletterRecipient": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": [ + "undefined", + "notSet", + "direct", + "optIn", + "optOut" + ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "account_newsletter_recipient" + ] } - } + }, + "required": [ + "status", + "apiAlias" + ] }, - "CalculatedPrice": { + "EntitySearchResult": { "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" + "entity": { + "type": "string" }, - "totalPrice": { - "type": "number" + "total": { + "type": "integer", + "description": "The total number of found entities" }, - "calculatedTaxes": { + "aggregations": { "type": "array", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] + "type": "object" } }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." + } + } + }, + "CartDeliveryInformation": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_information" ] }, - "positionPrice": { - "type": "number" - }, - "netPrice": { - "type": "number" + "freeDelivery": { + "type": "boolean" }, - "regulationPrice": { + "deliveryTime": { "type": "object", "properties": { - "price": { - "type": "number" + "name": { + "type": "string" + }, + "min": { + "type": "integer" + }, + "max": { + "type": "integer" + }, + "unit": { + "type": "string" }, "apiAlias": { "type": "string", "enum": [ - "cart_regulation_price" + "cart_delivery_time" ] } - }, - "nullable": true + } }, - "hasRange": { - "type": "boolean" + "height": { + "type": "integer" }, - "variantId": { - "type": "string", - "format": "^[0-9a-f]{32}$", - "nullable": true + "length": { + "type": "integer" }, - "apiAlias": { - "type": "string", - "enum": [ - "calculated_price" - ] + "restockTime": { + "type": "integer" }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" + "stock": { + "type": "integer" + }, + "weight": { + "type": "integer" + }, + "width": { + "type": "integer" + } + }, + "required": [ + "apiAlias" + ] + }, + "OrderRouteResponse": { + "type": "object", + "properties": { + "orders": { + "allOf": [ + { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" } + ] + }, + "paymentChangeable": { + "type": "object", + "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", + "additionalProperties": { + "type": "boolean" } } }, "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "referencePrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitPrice", - "positionPrice", - "netPrice", - "taxRules" + "orders" + ] + }, + "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" ] }, + "CartDeliveryPosition": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } + }, + "identifier": { + "type": "string" + }, + "lineItem": { + "$ref": "#/components/schemas/LineItem" + }, + "price": { + "$ref": "#/components/schemas/CalculatedPrice" + } + } + }, + "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" + } + } + }, "Criteria": { "type": "object", "description": "Criteria to query entities.", @@ -13884,11 +13776,7 @@ } }, "associations": { - "type": "array", - "description": "Associations to include. For more information, see [Search Queries > Associations](https://shopware.stoplight.io/docs/store-api/cf710bf73d0cd-search-queries#associations)", - "items": { - "$ref": "#/components/schemas/Association" - } + "$ref": "#/components/schemas/Associations" }, "post-filter": { "type": "array", @@ -13940,7 +13828,10 @@ } }, "aggregations": { - "$ref": "#/components/schemas/Aggregations" + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } }, "fields": { "type": "array", @@ -13962,17 +13853,17 @@ "$ref": "#/components/schemas/TotalCountMode" }, "includes": { - "$ref": "#/components/schemas/Include" + "$ref": "#/components/schemas/Includes" } } }, - "Association": { + "Associations": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/Criteria" } }, - "Include": { + "Includes": { "type": "object", "additionalProperties": { "type": "array", @@ -13981,70 +13872,67 @@ } } }, - "Aggregations": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "title": "AggregationEntity", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationFilter", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationTerms", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationHistogram", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationRange", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationRange" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - } - ] - } + "Aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" + }, + { + "title": "AggregationEntity", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationEntity" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationFilter", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationFilter" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationTerms", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationRange", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationRange" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + } + ] }, "SubAggregations": { "type": "object", @@ -14225,10 +14113,10 @@ "operator": { "type": "string", "enum": [ - "AND", "and", - "OR", - "or" + "or", + "nor", + "nand" ] }, "queries": { @@ -14277,172 +14165,280 @@ "parameters" ] }, - "CartPriceQuantity": { + "AggregationEntity": { + "title": "AggregationEntity", "type": "object", "properties": { - "apiAlias": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "entity" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "definition": { + "description": "The entity definition e.g \"product_manufacturer\".", + "type": "string" + } + }, + "required": [ + "name", + "type", + "field", + "definition" + ] + }, + "AggregationFilter": { + "title": "AggregationFilter", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "filter" + ] + }, + "filter": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Filters" + } + } + }, + "required": [ + "name", + "type", + "filter" + ] + }, + "AggregationTerms": { + "title": "AggregationTerms", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "terms" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "limit": { + "description": "The number of terms to return", + "type": "number" + }, + "sort": { + "type": "array", + "description": "Sorting the aggregation result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "AggregationHistogram": { + "title": "AggregationHistogram", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "histogram" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "interval": { + "description": "The interval of the histogram", + "type": "number" + }, + "format": { + "description": "The format of the histogram", + "type": "string" + }, + "timeZone": { + "description": "The timezone of the histogram", + "type": "string" + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "AggregationRange": { + "title": "AggregationRange", + "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", "type": "string", "enum": [ - "cart_price_quantity" + "range" ] }, - "isCalculated": { - "type": "boolean" - }, - "listPrice": { - "$ref": "#/components/schemas/CartListPrice" - }, - "price": { - "type": "number" - }, - "quantity": { - "type": "number" - }, - "regulationPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - } - }, - "type": "object" + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "taxRules": { + "ranges": { + "description": "The ranges of the aggregation", "type": "array", "items": { "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" + "anyOf": [ + { + "type": "object", + "title": "From and to", + "properties": { + "from": { + "type": "number", + "description": "The lower bound of the range" + }, + "to": { + "type": "number", + "description": "The upper bound of the range" + } + }, + "required": [ + "from", + "to" + ] }, - "name": { - "type": "string" + { + "type": "object", + "title": "From only", + "properties": { + "from": { + "type": "string", + "description": "The lower bound of the range" + } + }, + "required": [ + "from" + ] + }, + { + "type": "object", + "title": "To only", + "properties": { + "to": { + "type": "string", + "description": "The upper bound of the range" + } + }, + "required": [ + "to" + ] } - } + ] } - }, - "type": { - "type": "string" } }, "required": [ - "apiAlias" + "name", + "type", + "field", + "ranges" ] }, - "ProductDetailResponse": { + "CustomerAddressRead": { "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "product": { - "$ref": "#/components/schemas/Product" - }, - "configurator": { - "type": "array", - "description": "List of property groups with their corresponding options and information on how to display them.", - "items": { - "$ref": "#/components/schemas/PropertyGroup" - } - }, "id": { - "description": "Unique identity of product detail response." + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true }, - "available": { - "description": "When boolean value is true, the product is available for purchase." + "customerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true }, - "isCloseout": { - "description": "Boolean value to check if the product is still buyable when stock value is 0." + "createdAt": { + "type": "string", + "format": "date-time" }, - "displayGroup": { - "description": "Internal field." + "updatedAt": { + "type": "string", + "format": "date-time", + "nullable": true }, - "manufacturerNumber": { - "description": "Unique number of the product manufacturer." + "country": { + "$ref": "#/components/schemas/Country" }, - "stock": { - "description": "Quantity of product available." + "countryState": { + "$ref": "#/components/schemas/CountryState", + "nullable": true }, - "sortedProperties": { - "description": "Properties of the product that are sorted" + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, "required": [ - "product" + "customerId", + "createdAt", + "updatedAt", + "country", + "salutation" ] }, - "CartItems": { - "type": "object", - "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." - } - } - } - } - }, - "WishlistLoadRouteResponse": { + "SuccessResponse": { "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" + "success": { + "type": "boolean" } } }, - "CrossSellingElement": { - "type": "object", + "CrossSellingElementCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrossSellingElement" + }, "properties": { - "crossSelling": { - "$ref": "#/components/schemas/ProductCrossSelling" - }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - }, "total": { - "type": "integer", - "format": "int32" - }, - "streamId": { - "type": "string", - "format": "uuid" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cross_selling_element" - ] + "description": "Number of cross selling elements found." } - }, - "required": [ - "crossSelling", - "products", - "total", - "apiAlias" - ] + } }, "AccountNewsletterRecipientResult": { "properties": { @@ -15084,48 +15080,24 @@ } }, "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "400", - "title": "Bad Request", - "description": "Bad parameters for this endpoint. See documentation for the correct ones." - } - ] - } - } - } - }, - "204": { - "description": "No Content" - }, - "ContextTokenResponse": { - "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", - "headers": { - "sw-context-token": { - "description": "Contains sw-context-token value", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "description": "Define the URL which browser will be redirected to", - "type": "string" + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "400", + "title": "Bad Request", + "description": "Bad parameters for this endpoint. See documentation for the correct ones." } - } + ] } } } }, + "204": { + "description": "No Content" + }, "OpenApi3": { "description": "Returns information about the store API.", "content": { @@ -15314,6 +15286,30 @@ } } } + }, + "ContextTokenResponse": { + "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", + "headers": { + "sw-context-token": { + "description": "Contains sw-context-token value", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redirectUrl": { + "description": "Define the URL which browser will be redirected to", + "type": "string" + } + } + } + } + } } }, "parameters": { @@ -15355,339 +15351,101 @@ }, "security": [ { - "ApiKey": [] - } - ], - "paths": { - "/product-export/{accessKey}/{fileName}": { - "get": { - "tags": [ - "Product" - ], - "summary": "Export product export", - "operationId": "readProductExport", - "parameters": [ - { - "name": "accessKey", - "in": "path", - "description": "Access Key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "fileName", - "in": "path", - "description": "File Name", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/_info/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" - } - } - } - }, - "/customer/wishlist/add/{productId}": { - "post": { - "tags": [ - "Wishlist" - ], - "summary": "Add a product to a wishlist", - "description": "Adds a product to a customers wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "addProductOnWishlist", - "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Identifier of the product to be added.", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], - "responses": { - "200": { - "description": "Returns a success response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/customer/wishlist": { - "post": { - "tags": [ - "Wishlist", - "Endpoints supporting Criteria " - ], - "summary": "Fetch a wishlist", - "description": "Fetch a customer's wishlist. Products on the wishlist can be filtered using a criteria object.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "readCustomerWishlist", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/WishlistLoadRouteResponse" - } - } - } - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/customer/wishlist/merge": { - "post": { - "tags": [ - "Wishlist" - ], - "summary": "Create a wishlist for a customer", - "description": "Create a new wishlist for a logged in customer or extend the existing wishlist given a set of products.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * A customer can only have a single wishlist.\n * The wishlist feature has to be activated.", - "operationId": "mergeProductOnWishlist", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "properties": { - "productIds": { - "description": "List product id", - "type": "array", - "items": { - "description": "product id", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Returns a success response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/customer/wishlist/delete/{productId}": { - "delete": { + "ApiKey": [] + } + ], + "paths": { + "/script/{hook}": { + "get": { "tags": [ - "Wishlist" + "API", + "Script", + "App" ], - "summary": "Remove a product from a wishlist", - "description": "Removes a product from a customer's wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "deleteProductOnWishlist", + "summary": "Access point for different api logics which are provided by apps over script hooks", + "operationId": "getScriptStoreApiRoute", "parameters": [ { - "name": "productId", + "name": "hook", "in": "path", - "description": "The identifier of the product to be removed from the wishlist.", + "description": "Dynamic hook which used to build the hook name", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } } ], "responses": { "200": { - "description": "Returns a success response indicating a successful removal.", + "description": "Returns different structures of results based on the called script.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "type": "object", + "additionalProperties": true, + "nullable": true } - } - } - }, - "404": { - "description": "The removal of the product failed. Probably because the product could not be found on the wishlist.", - "content": { - "application/json": { + }, + "application/vnd.api+json": { "schema": { - "$ref": "#/components/schemas/failure" + "type": "object", + "additionalProperties": true, + "nullable": true } } } + }, + "204": { + "description": "No data by default" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] - } - }, - "/search": { + }, "post": { "tags": [ - "Product" + "API", + "Script", + "App" ], - "summary": "Search for products", - "description": "Performs a search for products which can be used to display a product listing.", - "operationId": "searchPage", + "summary": "Access point for different api logics which are provided by apps over script hooks", + "operationId": "postScriptStoreApiRoute", "parameters": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "in": "header", - "name": "sw-include-seo-urls", - "required": false, + "name": "hook", + "in": "path", + "description": "Dynamic hook which used to build the hook name", + "required": true, "schema": { - "type": "boolean" + "type": "string" } } ], - "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" - } - ] - } - } - } - }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", + "description": "Returns different structures of results based on the called script.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "type": "object", + "additionalProperties": true, + "nullable": true + } + }, + "application/vnd.api+json": { + "schema": { + "type": "object", + "additionalProperties": true, + "nullable": true } } } + }, + "204": { + "description": "No data by default" } }, "security": [ @@ -15697,25 +15455,33 @@ ] } }, - "/cms/{id}": { + "/document/download/{documentId}/{deepLinkCode}": { "post": { "tags": [ - "Content" + "Document", + "Endpoints supporting Criteria " ], - "summary": "Fetch and resolve a CMS page", - "description": "Loads a content management page by its identifier and resolve the slot data. This could be media files, product listing and so on.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.", - "operationId": "readCms", + "summary": "Download generated document", + "description": "Returns blob file of a generated document to download.", + "operationId": "download", "parameters": [ { - "name": "id", + "name": "documentId", "in": "path", - "description": "Identifier of the CMS page to be resolved", "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", @@ -15728,21 +15494,13 @@ } ], "requestBody": { + "required": false, "content": { "application/json": { "schema": { "allOf": [ { - "properties": { - "slots": { - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/ProductListingCriteria" + "$ref": "#/components/schemas/Criteria" } ] } @@ -15751,62 +15509,55 @@ }, "responses": { "200": { - "description": "The loaded cms page", + "description": "Returns the document information and blob to download.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CmsPage" + "$ref": "#/components/schemas/Document" } } } - }, - "404": { - "$ref": "#/components/responses/404" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/product/{productId}/cross-selling": { + "/account/newsletter-recipient": { "post": { "tags": [ - "Product" + "Profile", + "Newsletter", + "Endpoints supporting Criteria" ], - "summary": "Fetch cross-selling groups of a product", - "description": "This route is used to load the cross sellings for a product. A product has several cross selling definitions in which several products are linked. The route returns the cross sellings together with the linked products", - "operationId": "readProductCrossSellings", - "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Product ID", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "summary": "Fetch newsletter recipients", + "description": "Perform a filtered search for newsletter recipients.", + "operationId": "readNewsletterRecipient", + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } } } - ], + }, "responses": { "200": { - "description": "Found cross sellings", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CrossSellingElementCollection" + "$ref": "#/components/schemas/AccountNewsletterRecipient" } } } @@ -15814,71 +15565,76 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/product/{productId}": { + "/account/change-profile": { "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" - } - } + "tags": [ + "Profile" ], + "summary": "Change the customer's information", + "description": "Make changes to a customer's account, like changing their name, salutation or title.", + "operationId": "changeProfile", "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "salutationId", + "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" + }, + "company": { + "description": "Company of the customer. Only required when `accountType` is `business`.", + "type": "string" + }, + "birthdayDay": { + "description": "Birthday day", + "type": "integer" + }, + "birthdayMonth": { + "description": "Birthday month", + "type": "integer" + }, + "birthdayYear": { + "description": "Birthday year", + "type": "integer" } - ] + }, + "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" } } } @@ -15886,68 +15642,56 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/product": { + "/account/change-email": { "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 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": "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" } } } @@ -15955,77 +15699,46 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/product/{productId}/reviews": { + "/account/change-language": { "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 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 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" } } } @@ -16033,71 +15746,42 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/product/{productId}/review": { + "/account/change-password": { "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": "Change the customer's password", + "description": "Changes a customer's password using their current password as a validation.", + "operationId": "changePassword", "requestBody": { + "required": true, "content": { "application/json": { "schema": { "required": [ - "title", - "content", - "points" + "password", + "newPassword", + "newPasswordConfirm" ], "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.", + "password": { + "description": "Current password of the customer", "type": "string" }, - "title": { - "description": "The title of the review.", + "newPassword": { + "description": "New Password for the customer", "type": "string" }, - "content": { - "description": "The content of review.", + "newPasswordConfirm": { + "description": "Confirmation of the new password", "type": "string" - }, - "points": { - "description": "The review rating for the product.", - "type": "number", - "format": "double" } }, "type": "object" @@ -16107,7 +15791,14 @@ }, "responses": { "200": { - "description": "Success response indicating the review was saved successfully." + "description": "Returns a success response indicating a successful update.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } } }, "security": [ @@ -16118,52 +15809,64 @@ ] } }, - "/product/{productId}/find-variant": { + "/account/change-payment-method/{paymentMethodId}": { "post": { "tags": [ - "Product" + "Profile" ], - "summary": "Search for a matching variant by product options.", - "description": "Performs a search for product variants and returns the best matching variant.", - "operationId": "searchProductVariantIds", + "summary": "Change the customer's default payment method", + "description": "Changes a customer's default (preselected) payment method.", + "operationId": "changePaymentMethod", "parameters": [ { - "name": "productId", + "name": "paymentMethodId", "in": "path", - "description": "Product ID", + "description": "Identifier of the desired default payment method", "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}$" + } + ], + "responses": { + "200": { + "description": "Returns a success response indicating a successful update.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } } } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/account/customer-recovery-is-expired": { + "post": { + "tags": [ + "Profile" ], + "summary": "Checks if the customer recovery entry for a given hash is expired.", + "description": "This can be used to validate a provided hash has a valid and not expired customer recovery hash.", + "operationId": "getCustomerRecoveryIsExpired", "requestBody": { + "required": true, "content": { "application/json": { "schema": { "required": [ - "options" + "hash" ], "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.", + "hash": { + "description": "Parameter from the link in the confirmation mail sent in Step 1", "type": "string" } }, @@ -16174,11 +15877,33 @@ }, "responses": { "200": { - "description": "Returns an FoundCombination struct containing the ids matching the search.", + "description": "Returns a CustomerRecoveryIsExpiredResponse that indicates if the hash is expired or not.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/FindProductVariantRouteResponse" + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "isExpired": { + "type": "boolean" + } + }, + "required": [ + "isExpired" + ] + } + }, + "apiAlias": { + "enum": [ + "array_struct" + ], + "type": "string" + } + } } } } @@ -16191,16 +15916,15 @@ ] } }, - "/account/newsletter-recipient": { + "/account/customer": { "post": { "tags": [ "Profile", - "Newsletter", - "Endpoints supporting Criteria" + "Endpoints supporting Criteria " ], - "summary": "Fetch newsletter recipients", - "description": "Perform a filtered search for newsletter recipients.", - "operationId": "readNewsletterRecipient", + "summary": "Get information about current customer", + "description": "Returns information about the current customer.", + "operationId": "readCustomer", "requestBody": { "required": false, "content": { @@ -16217,11 +15941,11 @@ }, "responses": { "200": { - "description": "", + "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/AccountNewsletterRecipient" + "$ref": "#/components/schemas/Customer" } } } @@ -16233,72 +15957,148 @@ "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": [] + } + ] } }, - "/account/change-profile": { - "post": { + "/account/address/{addressId}": { + "delete": { "tags": [ - "Profile" + "Address" + ], + "summary": "Delete an address of a customer", + "description": "Delete an address of customer.\n\n Only addresses which are not set as default addresses for shipping or billing can be deleted. You can check the current default addresses of your customer using the profile information endpoint and change them using the default address endpoint.\n\n **A customer must have at least one address (which can be used for shipping and billing).**\n\n An automatic fallback is not applied.", + "operationId": "deleteCustomerAddress", + "parameters": [ + { + "name": "addressId", + "in": "path", + "description": "ID of the address to be deleted.", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "204": { + "description": "No Content response, when the address has been deleted" + }, + "400": { + "description": "Response containing a list of errors, most likely due to the address being in use" + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + }, + "patch": { + "tags": [ + "Address" + ], + "summary": "Modify an address of a customer", + "description": "Modifies an existing address of a customer.", + "operationId": "updateCustomerAddress", + "parameters": [ + { + "name": "addressId", + "in": "path", + "description": "Address ID", + "required": true, + "schema": { + "type": "string" + } + } ], - "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": { - "required": [ - "salutationId", - "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" - }, - "company": { - "description": "Company of the customer. Only required when `accountType` is `business`.", - "type": "string" - }, - "birthdayDay": { - "description": "Birthday day", - "type": "integer" - }, - "birthdayMonth": { - "description": "Birthday month", - "type": "integer" - }, - "birthdayYear": { - "description": "Birthday year", - "type": "integer" + "$ref": "#/components/schemas/CustomerAddressBody" + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/CustomerAddress" + }, + { + "$ref": "#/components/schemas/CustomerAddressRead" + } + ] + } + } + } + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/account/list-address": { + "post": { + "tags": [ + "Address", + "Endpoints supporting Criteria " + ], + "summary": "Fetch addresses of a customer", + "description": "Lists all addresses of the current customer and allows filtering them based on a criteria.", + "operationId": "listAddress", + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Returns a success response indicating a successful update", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomerAddress" + } } } } @@ -16312,35 +16112,30 @@ ] } }, - "/account/change-email": { + "/account/login": { "post": { "tags": [ - "Profile" + "Login & Registration" ], - "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", + "summary": "Log in a customer", + "description": "Logs in customers given their credentials.", + "operationId": "loginCustomer", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "email", - "emailConfirmation", + "username", "password" ], "properties": { - "email": { - "description": "New email address. Has to be unique amongst all customers", - "type": "string" - }, - "emailConfirmation": { - "description": "Confirmation of the new email address.", + "username": { + "description": "Email", "type": "string" }, "password": { - "description": "Customer's current password", + "description": "Password", "type": "string" } }, @@ -16351,11 +16146,14 @@ }, "responses": { "200": { - "description": "Returns a success response indicating a successful update", + "$ref": "#/components/responses/ContextTokenResponse" + }, + "401": { + "description": "If credentials are incorrect an error is returned", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/failure" } } } @@ -16363,31 +16161,40 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/change-language": { + "/account/login/imitate-customer": { "post": { "tags": [ - "Profile" + "Login & Registration" ], - "summary": "Change the customer's language.", - "description": "Changes the language of the logged in customer", - "operationId": "changeLanguage", + "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": [ - "languageId" + "token", + "customerId", + "userId" ], "properties": { - "language": { - "description": "New languageId", + "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" } }, @@ -16398,16 +16205,42 @@ }, "responses": { "200": { - "description": "Returns a success response indicating a successful update", + "$ref": "#/components/responses/ContextTokenResponse" + }, + "400": { + "description": "If the token is incorrect an error is returned", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/failure" } } } } }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/account/logout": { + "post": { + "tags": [ + "Login & Registration" + ], + "summary": "Log out a customer", + "description": "Logs out a customer.", + "operationId": "logoutCustomer", + "responses": { + "200": { + "$ref": "#/components/responses/ContextTokenResponse" + }, + "403": { + "$ref": "#/components/responses/403" + } + }, "security": [ { "ApiKey": [], @@ -16416,35 +16249,30 @@ ] } }, - "/account/change-password": { + "/account/register-confirm": { "post": { "tags": [ - "Profile" + "Login & Registration" ], - "summary": "Change the customer's password", - "description": "Changes a customer's password using their current password as a validation.", - "operationId": "changePassword", + "summary": "Confirm a customer registration", + "description": "Confirms a customer registration when double opt-in is activated.\n\nLearn more about double opt-in registration in our guide \"Register a customer\".", + "operationId": "registerConfirm", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "password", - "newPassword", - "newPasswordConfirm" + "hash", + "em" ], "properties": { - "password": { - "description": "Current password of the customer", - "type": "string" - }, - "newPassword": { - "description": "New Password for the customer", + "hash": { + "description": "Hash from the email received", "type": "string" }, - "newPasswordConfirm": { - "description": "Confirmation of the new password", + "em": { + "description": "Email hash from the email received", "type": "string" } }, @@ -16455,50 +16283,127 @@ }, "responses": { "200": { - "description": "Returns a success response indicating a successful update.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } + "description": "Returns the logged in customer. The customer is automatically logged in with the `sw-context-token` header provided, which can be reused for subsequent requests." + }, + "404": { + "description": "No hash provided" + }, + "412": { + "description": "The customer has already been confirmed" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/change-payment-method/{paymentMethodId}": { + "/account/register": { "post": { "tags": [ - "Profile" + "Login & Registration" ], - "summary": "Change the customer's default payment method", - "description": "Changes a customer's default (preselected) payment method.", - "operationId": "changePaymentMethod", - "parameters": [ - { - "name": "paymentMethodId", - "in": "path", - "description": "Identifier of the desired default payment method", - "required": true, - "schema": { - "type": "string" + "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" + }, + "accountType": { + "description": "Account type of the customer which can be either `private` or `business`.", + "type": "string", + "default": "private" + }, + "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" + ], + "type": "object" + } } } - ], + }, "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" } } } @@ -16506,32 +16411,41 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/customer-recovery-is-expired": { + "/account/recovery-password-confirm": { "post": { "tags": [ "Profile" ], - "summary": "Checks if the customer recovery entry for a given hash is expired.", - "description": "This can be used to validate a provided hash has a valid and not expired customer recovery hash.", - "operationId": "getCustomerRecoveryIsExpired", + "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" + "hash", + "newPassword", + "newPasswordConfirm" ], "properties": { "hash": { "description": "Parameter from the link in the confirmation mail sent in Step 1", "type": "string" + }, + "newPassword": { + "description": "New password for the customer", + "type": "string" + }, + "newPasswordConfirm": { + "description": "Confirmation of the new password", + "type": "string" } }, "type": "object" @@ -16541,33 +16455,11 @@ }, "responses": { "200": { - "description": "Returns a CustomerRecoveryIsExpiredResponse that indicates if the hash is expired or not.", + "description": "Returns a success response indicating a successful update.", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "isExpired": { - "type": "boolean" - } - }, - "required": [ - "isExpired" - ] - } - }, - "apiAlias": { - "enum": [ - "array_struct" - ], - "type": "string" - } - } + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -16580,36 +16472,45 @@ ] } }, - "/account/customer": { + "/account/recovery-password": { "post": { "tags": [ - "Profile", - "Endpoints supporting Criteria " + "Profile" ], - "summary": "Get information about current customer", - "description": "Returns information about the current customer.", - "operationId": "readCustomer", + "summary": "Send a password recovery mail", + "description": "This operation is Step 1 of the password reset flow. Make sure to implement Step 2 \"Reset password with recovery credentials\" in order to allow for the complete flow in your application. Sends a recovery mail containing a link with credentials that allows a customer to reset their password.", + "operationId": "sendRecoveryMail", "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "email", + "storefrontUrl" + ], + "properties": { + "email": { + "description": "E-Mail address to identify the customer", + "type": "string" + }, + "storefrontUrl": { + "description": "URL of the storefront to use for the generated reset link. It has to be a domain that is configured in the sales channel domain settings.", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "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": "If email corresponds to an existing customer, a mail will be sent out to that customer containing a link assembled using the following schema:\n\nReturns a success indicating a successful initialisation of the reset flow.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Customer" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -16617,44 +16518,24 @@ }, "security": [ { - "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": [] + "ApiKey": [] } ] } }, - "/account/address/{addressId}": { - "delete": { + "/account/address/default-shipping/{addressId}": { + "patch": { "tags": [ "Address" ], - "summary": "Delete an address of a customer", - "description": "Delete an address of customer.\n\n Only addresses which are not set as default addresses for shipping or billing can be deleted. You can check the current default addresses of your customer using the profile information endpoint and change them using the default address endpoint.\n\n **A customer must have at least one address (which can be used for shipping and billing).**\n\n An automatic fallback is not applied.", - "operationId": "deleteCustomerAddress", + "summary": "Change a customer's default shipping address", + "description": "Updates the default (preselected) shipping addresses of a customer.", + "operationId": "defaultShippingAddress", "parameters": [ { "name": "addressId", "in": "path", - "description": "ID of the address to be deleted.", + "description": "Address ID", "required": true, "schema": { "type": "string" @@ -16662,11 +16543,8 @@ } ], "responses": { - "204": { - "description": "No Content response, when the address has been deleted" - }, - "400": { - "description": "Response containing a list of errors, most likely due to the address being in use" + "200": { + "description": "" } }, "security": [ @@ -16675,14 +16553,16 @@ "ContextToken": [] } ] - }, + } + }, + "/account/address/default-billing/{addressId}": { "patch": { "tags": [ "Address" ], - "summary": "Modify an address of a customer", - "description": "Modifies an existing address of a customer.", - "operationId": "updateCustomerAddress", + "summary": "Change a customer's default billing address", + "description": "Updates the default (preselected) billing addresses of a customer.", + "operationId": "defaultBillingAddress", "parameters": [ { "name": "addressId", @@ -16694,32 +16574,9 @@ } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomerAddressBody" - } - } - } - }, "responses": { "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/CustomerAddress" - }, - { - "$ref": "#/components/schemas/CustomerAddressRead" - } - ] - } - } - } + "description": "" } }, "security": [ @@ -16730,25 +16587,19 @@ ] } }, - "/account/list-address": { + "/account/address": { "post": { "tags": [ - "Address", - "Endpoints supporting Criteria " + "Address" ], - "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": "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/CustomerAddress" } } } @@ -16759,10 +16610,14 @@ "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CustomerAddress" - } + "allOf": [ + { + "$ref": "#/components/schemas/CustomerAddress" + }, + { + "$ref": "#/components/schemas/CustomerAddressRead" + } + ] } } } @@ -16776,48 +16631,53 @@ ] } }, - "/account/login": { + "/order/state/cancel": { "post": { "tags": [ - "Login & Registration" + "Order" + ], + "summary": "Cancel an order", + "description": "Cancels an order. The order state will be set to 'cancelled'.", + "operationId": "cancelOrder", + "parameters": [ + { + "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": "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" + "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": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "401": { - "description": "If credentials are incorrect an error is returned", + "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/failure" + "$ref": "#/components/schemas/StateMachineState" } } } @@ -16825,58 +16685,63 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/account/login/imitate-customer": { + "/order": { "post": { "tags": [ - "Login & Registration" + "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": "Imitate the log in as a customer", - "description": "Imitate the log in as a customer given a generated token.", - "operationId": "imitateCustomerLogin", "requestBody": { "required": true, "content": { "application/json": { "schema": { - "required": [ - "token", - "customerId", - "userId" - ], - "properties": { - "token": { - "description": "Generated customer impersonation token", - "type": "string" - }, - "customerId": { - "description": "ID of the customer", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" }, - "userId": { - "description": "ID of the user who generated the token", - "type": "string" + { + "properties": { + "checkPromotion": { + "description": "Check if the payment method of the order is still changeable.", + "type": "boolean" + } + }, + "type": "object" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "400": { - "description": "If the token is incorrect an error is returned", + "description": "An array of orders and an indicator if the payment of the order can be changed.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/failure" + "$ref": "#/components/schemas/OrderRouteResponse" } } } @@ -16884,60 +16749,51 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/account/logout": { + "/order/payment": { "post": { "tags": [ - "Login & Registration" + "Order" ], - "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": "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": [ { - "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, "content": { "application/json": { "schema": { "required": [ - "hash", - "em" + "paymentMethodId", + "orderId" ], "properties": { - "hash": { - "description": "Hash from the email received", - "type": "string" + "paymentMethodId": { + "description": "The identifier of the paymentMethod to be set", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "em": { - "description": "Email hash from the email received", - "type": "string" + "orderId": { + "description": "The identifier of the order.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, "type": "object" @@ -16947,127 +16803,70 @@ }, "responses": { "200": { - "description": "Returns the logged in customer. The customer is automatically logged in with the `sw-context-token` header provided, which can be reused for subsequent requests." - }, - "404": { - "description": "No hash provided" - }, - "412": { - "description": "The customer has already been confirmed" + "description": "Successfully updated the payment method of the order.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/account/register": { - "post": { + "/order/download/{orderId}/{downloadId}": { + "get": { "tags": [ - "Login & Registration" + "Order" ], - "summary": "Register a customer", - "description": "Registers a customer. Used both for normal customers and guest customers.See the Guide \"Register a customer\" for more information on customer registration.", - "operationId": "register", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "properties": { - "email": { - "description": "Email of the customer. Has to be unique, unless `guest` is `true`", - "type": "string" - }, - "password": { - "description": "Password for the customer. Required, unless `guest` is `true`", - "type": "string" - }, - "salutationId": { - "description": "Id of the salutation for the customer account. Fetch options using `salutation` endpoint.", - "type": "string" - }, - "firstName": { - "description": "Customer first name. Value will be reused for shipping and billing address if not provided explicitly.", - "type": "string" - }, - "lastName": { - "description": "Customer last name. Value will be reused for shipping and billing address if not provided explicitly.", - "type": "string" - }, - "acceptedDataProtection": { - "description": "Flag indicating accepted data protection", - "type": "boolean" - }, - "storefrontUrl": { - "description": "URL of the storefront for that registration. Used in confirmation emails. Has to be one of the configured domains of the sales channel.", - "type": "string" - }, - "billingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "shippingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "accountType": { - "description": "Account type of the customer which can be either `private` or `business`.", - "type": "string", - "default": "private" - }, - "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" - ], - "type": "object" - } + "summary": "Download a purchased file", + "description": "Download a file included in the given order and with the given id. Access must be granted.", + "operationId": "orderDownloadFile", + "parameters": [ + { + "name": "orderId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "downloadId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "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": "Success", + "description": "An arbitrary binary file.", "content": { - "application/json": { + "application/octet-stream": { "schema": { - "$ref": "#/components/schemas/Customer" + "type": "string", + "format": "binary" } } } @@ -17075,55 +16874,85 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/account/recovery-password-confirm": { + "/shipping-method": { "post": { "tags": [ - "Profile" + "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", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "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" + } + } ], - "summary": "Reset a password with recovery credentials", - "description": "This operation is Step 2 of the password reset flow. It is required to conduct Step 1 \"Send a password recovery mail\" in order to obtain the required credentials for this step.Resets a customer's password using credentials from a password recovery mail as a validation.", - "operationId": "recoveryPassword", "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "required": [ - "hash", - "newPassword", - "newPasswordConfirm" - ], - "properties": { - "hash": { - "description": "Parameter from the link in the confirmation mail sent in Step 1", - "type": "string" - }, - "newPassword": { - "description": "New password for the customer", - "type": "string" - }, - "newPasswordConfirm": { - "description": "Confirmation of the new password", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Returns a success response indicating a successful update.", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "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" + } + ] } } } @@ -17136,41 +16965,29 @@ ] } }, - "/account/recovery-password": { + "/customer/wishlist/add/{productId}": { "post": { "tags": [ - "Profile" + "Wishlist" ], - "summary": "Send a password recovery mail", - "description": "This operation is Step 1 of the password reset flow. Make sure to implement Step 2 \"Reset password with recovery credentials\" in order to allow for the complete flow in your application. Sends a recovery mail containing a link with credentials that allows a customer to reset their password.", - "operationId": "sendRecoveryMail", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "email", - "storefrontUrl" - ], - "properties": { - "email": { - "description": "E-Mail address to identify the customer", - "type": "string" - }, - "storefrontUrl": { - "description": "URL of the storefront to use for the generated reset link. It has to be a domain that is configured in the sales channel domain settings.", - "type": "string" - } - }, - "type": "object" - } + "summary": "Add a product to a wishlist", + "description": "Adds a product to a customers wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "addProductOnWishlist", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Identifier of the product to be added.", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } - }, + ], "responses": { "200": { - "description": "If email corresponds to an existing customer, a mail will be sent out to that customer containing a link assembled using the following schema:\n\nReturns a success indicating a successful initialisation of the reset flow.", + "description": "Returns a success response.", "content": { "application/json": { "schema": { @@ -17182,33 +16999,57 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/account/address/default-shipping/{addressId}": { - "patch": { + "/customer/wishlist": { + "post": { "tags": [ - "Address" + "Wishlist", + "Endpoints supporting Criteria " ], - "summary": "Change a customer's default shipping address", - "description": "Updates the default (preselected) shipping addresses of a customer.", - "operationId": "defaultShippingAddress", + "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": "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": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } + } + } + }, "responses": { "200": { - "description": "" + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WishlistLoadRouteResponse" + } + } + } } }, "security": [ @@ -17219,28 +17060,45 @@ ] } }, - "/account/address/default-billing/{addressId}": { - "patch": { + "/customer/wishlist/merge": { + "post": { "tags": [ - "Address" + "Wishlist" ], - "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" + "summary": "Create a wishlist for a customer", + "description": "Create a new wishlist for a logged in customer or extend the existing wishlist given a set of products.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * A customer can only have a single wishlist.\n * The wishlist feature has to be activated.", + "operationId": "mergeProductOnWishlist", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "productIds": { + "description": "List product id", + "type": "array", + "items": { + "description": "product id", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + }, + "type": "object" + } } } - ], + }, "responses": { "200": { - "description": "" + "description": "Returns a success response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } } }, "security": [ @@ -17251,37 +17109,43 @@ ] } }, - "/account/address": { - "post": { + "/customer/wishlist/delete/{productId}": { + "delete": { "tags": [ - "Address" + "Wishlist" ], - "summary": "Create a new address for a customer", - "description": "Creates a new address for a customer.", - "operationId": "createCustomerAddress", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomerAddress" - } + "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": "", + "description": "Returns a success response indicating a successful removal.", "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/CustomerAddress" - }, - { - "$ref": "#/components/schemas/CustomerAddressRead" - } - ] + "$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" } } } @@ -17295,15 +17159,15 @@ ] } }, - "/currency": { + "/seo-url": { "post": { "tags": [ - "System & Context", + "Sitemap & Routes", "Endpoints supporting Criteria " ], - "summary": "Fetch currencies", - "description": "Perform a filtered search for currencies.", - "operationId": "readCurrency", + "summary": "Fetch SEO routes", + "description": "Perform a filtered search for seo urls.", + "operationId": "readSeoUrl", "parameters": [ { "name": "sw-language-id", @@ -17332,7 +17196,7 @@ }, "responses": { "200": { - "description": "Entity search result containing currencies.", + "description": "Entity search result containing seo urls.", "content": { "application/json": { "schema": { @@ -17342,11 +17206,14 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Currency" + "$ref": "#/components/schemas/SeoUrl" } } }, - "type": "object" + "type": "object", + "required": [ + "elements" + ] }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -17355,6 +17222,9 @@ } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -17364,25 +17234,112 @@ ] } }, - "/landing-page/{landingPageId}": { - "post": { + "/context": { + "get": { "tags": [ - "Content", - "Endpoints supporting Criteria " + "System & Context" ], - "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": [ + "summary": "Fetch the current context", + "description": "Fetches the current context. This includes for example the `customerGroup`, `currency`, `taxRules` and many more.", + "operationId": "readContext", + "responses": { + "200": { + "description": "Returns the current context.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SalesChannelContext" + } + } + } + } + }, + "security": [ { - "name": "landingPageId", - "in": "path", - "description": "Identifier of the landing page.", - "required": true, - "schema": { - "type": "string" + "ApiKey": [] + } + ] + }, + "patch": { + "tags": [ + "System & Context" + ], + "summary": "Modify the current context", + "description": "Used for switching the context. A typical example would be changing the language or changing the currency.", + "operationId": "updateContext", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "currencyId": { + "description": "Currency", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "languageId": { + "description": "Language", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "billingAddressId": { + "description": "Billing Address", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingAddressId": { + "description": "Shipping Address", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "paymentMethodId": { + "description": "Payment Method", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingMethodId": { + "description": "Shipping Method", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryId": { + "description": "Country", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryStateId": { + "description": "Country State", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "type": "object" + } } - }, + } + }, + "responses": { + "200": { + "$ref": "#/components/responses/ContextTokenResponse" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/contact-form": { + "post": { + "tags": [ + "Content" + ], + "summary": "Submit a contact form message", + "description": "Used for submitting contact forms. Be aware that there can be more required fields, depending on the system settings.", + "operationId": "sendContactMail", + "parameters": [ { "name": "sw-language-id", "in": "header", @@ -17395,47 +17352,73 @@ } ], "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "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}$" }, - { - "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" - } - ] + "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": "The loaded landing page with cms page", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/LandingPage" - } - } - } - }, - "404": { - "$ref": "#/components/responses/404" + "description": "Message sent successful." } }, "security": [ @@ -17445,66 +17428,41 @@ ] } }, - "/salutation": { + "/newsletter/confirm": { "post": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " - ], - "summary": "Fetch salutations", - "description": "Fetches salutations with a criteria obj.", - "operationId": "readSalutation", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } + "Newsletter" ], + "summary": "Confirm a newsletter registration", + "description": "You have to use the hash from the link sent out via email to confirm the user registration.", + "operationId": "confirmNewsletter", "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "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": "Entity search result containing salutations.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Salutation" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } + "description": "The newsletter confirmation was successful." } }, "security": [ @@ -17514,75 +17472,84 @@ ] } }, - "/payment-method": { + "/newsletter/subscribe": { "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}$" - } - } + "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": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "email", + "option", + "storefrontUrl" + ], + "properties": { + "email": { + "description": "Email address that will receive the confirmation and the newsletter.", + "type": "string" }, - { - "properties": { - "onlyAvailable": { - "description": "List only available", - "type": "boolean" - } - }, - "type": "object" + "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" } } } }, "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" - } - } - } + "description": "Success" } }, "security": [ @@ -17592,62 +17559,36 @@ ] } }, - "/search-suggest": { + "/newsletter/unsubscribe": { "post": { "tags": [ - "Product" - ], - "summary": "Search for products (suggest)", - "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", - "operationId": "searchSuggest", - "parameters": [ - { - "name": "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}$" - } - } + "Newsletter" ], + "summary": "Remove a newsletter subscription", + "description": "Removes a newsletter recipient from the mailing lists.", + "operationId": "unsubscribeToNewsletter", "requestBody": { "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "required": [ - "search" - ], - "properties": { - "search": { - "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/ProductListingFlags" + "required": [ + "email" + ], + "properties": { + "email": { + "description": "Email address that should be removed from the mailing lists.", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProductListingResult" - } - } - } + "description": "Unsubscribing was successful." } }, "security": [ @@ -17657,14 +17598,15 @@ ] } }, - "/order/state/cancel": { + "/language": { "post": { "tags": [ - "Order" + "System & Context", + "Endpoints supporting Criteria " ], - "summary": "Cancel an order", - "description": "Cancels an order. The order state will be set to 'cancelled'.", - "operationId": "cancelOrder", + "summary": "Fetch languages", + "description": "Perform a filtered search for languages.", + "operationId": "readLanguages", "parameters": [ { "name": "sw-language-id", @@ -17678,20 +17620,14 @@ } ], "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "properties": { - "orderId": { - "description": "The identifier of the order to be canceled.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object", - "required": [ - "orderId" ] } } @@ -17699,11 +17635,29 @@ }, "responses": { "200": { - "description": "Returns the state of the state machine\n\n example: More information about the state machine can be found in the corresponding guide: [Using the state machine](https://developer.shopware.com/docs/guides/plugins/plugins/checkout/order/using-the-state-machine)", + "description": "Entity search result containing languages.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/StateMachineState" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + } + } + }, + "required": [ + "elements" + ], + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -17711,21 +17665,19 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/order": { + "/payment-method": { "post": { "tags": [ - "Order", + "Payment Method", "Endpoints supporting Criteria " ], - "summary": "Fetch a list of orders", - "description": "List orders of a customer.", - "operationId": "readOrder", + "summary": "Loads all available payment methods", + "operationId": "readPaymentMethod", "parameters": [ { "name": "sw-language-id", @@ -17749,8 +17701,8 @@ }, { "properties": { - "checkPromotion": { - "description": "Check if the payment method of the order is still changeable.", + "onlyAvailable": { + "description": "List only available", "type": "boolean" } }, @@ -17763,11 +17715,27 @@ }, "responses": { "200": { - "description": "An array of orders and an indicator if the payment of the order can be changed.", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OrderRouteResponse" + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentMethod" + } + } + }, + "type": "object" } } } @@ -17775,51 +17743,144 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/order/payment": { + "/app-system/{name}/generate-token": { "post": { "tags": [ - "Order" + "App system" ], - "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": "Generate JWT token for app system backend", + "description": "Generate JWT token for authenticated communication with the app server", + "operationId": "generateJWTAppSystemAppServer", "parameters": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "in": "path", + "name": "name", + "required": true, + "description": "Name of the app", "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" + } + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "token": { + "type": "string" + }, + "expires": { + "type": "string", + "format": "date-time" + }, + "shopId": { + "type": "string" + } + } + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/_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" + } + } + } + } + } + } + } } } + } + } + }, + "/handle-payment": { + "post": { + "tags": [ + "Payment & Shipping" ], + "summary": "Initiate a payment for an order", + "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order.", + "operationId": "handlePaymentMethod", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "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.", + "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" @@ -17829,11 +17890,19 @@ }, "responses": { "200": { - "description": "Successfully updated the payment method of the order.", + "description": "Redirect to external payment provider", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "type": "object", + "properties": { + "redirectUrl": { + "type": "string" + } + }, + "required": [ + "redirectUrl" + ] } } } @@ -17841,39 +17910,21 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/order/download/{orderId}/{downloadId}": { - "get": { - "tags": [ - "Order" - ], - "summary": "Download a purchased file", - "description": "Download a file included in the given order and with the given id. Access must be granted.", - "operationId": "orderDownloadFile", - "parameters": [ - { - "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}$" - } - }, + "/category": { + "post": { + "tags": [ + "Category", + "Endpoints supporting Criteria " + ], + "summary": "Fetch a list of categories", + "description": "Perform a filtered search for categories.", + "operationId": "readCategoryList", + "parameters": [ { "name": "sw-language-id", "in": "header", @@ -17885,14 +17936,42 @@ } } ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } + } + } + }, "responses": { "200": { - "description": "An arbitrary binary file.", + "description": "Entity search result containing categories.", "content": { - "application/octet-stream": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "allOf": [ + { + "type": "object", + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + } + } + } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -17900,21 +17979,20 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/navigation/{activeId}/{rootId}": { + "/category/{navigationId}": { "post": { "tags": [ "Category", "Endpoints supporting Criteria " ], - "summary": "Fetch a navigation menu", - "description": "This endpoint returns categories that can be used as a page navigation. You can either return them as a tree or as a flat list. You can also control the depth of the tree.\n\n Instead of passing uuids, you can also use one of the following aliases for the activeId and rootId parameters to get the respective navigations of your sales channel.\n\n * main-navigation\n * service-navigation\n * footer-navigation", - "operationId": "readNavigation", + "summary": "Fetch a single category", + "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.", + "operationId": "readCategory", "parameters": [ { "name": "sw-include-seo-urls", @@ -17936,42 +18014,25 @@ } }, { - "name": "activeId", + "name": "navigationId", "in": "path", - "description": "Identifier of the active category in the navigation tree (if not used, just set to the same as rootId).", + "description": "Identifier of the category to be fetched", "required": true, "schema": { - "oneOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "$ref": "#/components/schemas/NavigationType" - } - ] + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, { - "name": "rootId", - "in": "path", - "description": "Identifier of the root category for your desired navigation tree. You can use it to fetch sub-trees of your navigation tree.", - "required": true, + "name": "slots", + "in": "query", + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", "schema": { - "oneOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "$ref": "#/components/schemas/NavigationType" - } - ] + "type": "string" } } ], "requestBody": { - "required": true, "content": { "application/json": { "schema": { @@ -17980,21 +18041,7 @@ "$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" + "$ref": "#/components/schemas/ProductListingCriteria" } ] } @@ -18003,11 +18050,11 @@ }, "responses": { "200": { - "description": "All available navigations", + "description": "The loaded category with cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NavigationRouteResponse" + "$ref": "#/components/schemas/Category" } } } @@ -18020,65 +18067,31 @@ ] } }, - "/sitemap": { - "get": { + "/product-listing/{categoryId}": { + "post": { "tags": [ - "Sitemap & Routes" + "Product" ], - "summary": "Fetch sitemaps", - "description": "Fetches a list of compressed sitemap files, which are often used by search engines.", - "operationId": "readSitemap", + "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": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "name": "categoryId", + "in": "path", + "description": "Identifier of a category.", + "required": true, "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": "string" } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/sitemap/{filePath}": { - "get": { - "tags": [ - "Sitemap & Routes" - ], - "summary": "Download sitemap file", - "description": "Downloads the sitemap file from the configured sitemap storage.", - "operationId": "getSitemapFile", - "parameters": [ + }, { - "name": "filePath", - "in": "path", - "description": "The path to the sitemap file", - "required": true, + "name": "sw-include-seo-urls", + "in": "header", + "description": "Determines if the response must contain a SeoUrl entity for a product entity", + "required": false, "schema": { - "type": "string", - "pattern": ".*\\.(xml|gz)$" + "type": "boolean" } }, { @@ -18092,20 +18105,29 @@ } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/ProductListingCriteria" + }, + { + "$ref": "#/components/schemas/ProductListingFlags" + } + ] + } + } + } + }, "responses": { "200": { - "description": "Returns the blob to download.", + "description": "Returns a product listing containing all products and additional fields to display a listing.", "content": { - "application/xml": { - "schema": { - "type": "string", - "format": "binary" - } - }, - "application/gzip": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/ProductListingResult" } } } @@ -18118,31 +18140,23 @@ ] } }, - "/product-listing/{categoryId}": { + "/cms/{id}": { "post": { "tags": [ - "Product" + "Content" ], - "summary": "Fetch a product listing by category", - "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.", - "operationId": "readProductListing", + "summary": "Fetch and resolve a CMS page", + "description": "Loads a content management page by its identifier and resolve the slot data. This could be media files, product listing and so on.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.", + "operationId": "readCms", "parameters": [ { - "name": "categoryId", + "name": "id", "in": "path", - "description": "Identifier of a category.", + "description": "Identifier of the CMS page to be resolved", "required": true, "schema": { - "type": "string" - } - }, - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Determines if the response must contain a SeoUrl entity for a product entity", - "required": false, - "schema": { - "type": "boolean" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, { @@ -18162,10 +18176,16 @@ "schema": { "allOf": [ { - "$ref": "#/components/schemas/ProductListingCriteria" + "properties": { + "slots": { + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", + "type": "string" + } + }, + "type": "object" }, { - "$ref": "#/components/schemas/ProductListingFlags" + "$ref": "#/components/schemas/ProductListingCriteria" } ] } @@ -18174,14 +18194,17 @@ }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", + "description": "The loaded cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "$ref": "#/components/schemas/CmsPage" } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -18191,15 +18214,15 @@ ] } }, - "/seo-url": { + "/salutation": { "post": { "tags": [ - "Sitemap & Routes", + "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch SEO routes", - "description": "Perform a filtered search for seo urls.", - "operationId": "readSeoUrl", + "summary": "Fetch salutations", + "description": "Fetches salutations with a criteria obj.", + "operationId": "readSalutation", "parameters": [ { "name": "sw-language-id", @@ -18228,7 +18251,7 @@ }, "responses": { "200": { - "description": "Entity search result containing seo urls.", + "description": "Entity search result containing salutations.", "content": { "application/json": { "schema": { @@ -18238,14 +18261,11 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/SeoUrl" + "$ref": "#/components/schemas/Salutation" } } }, - "type": "object", - "required": [ - "elements" - ] + "type": "object" }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -18254,72 +18274,6 @@ } } } - }, - "404": { - "$ref": "#/components/responses/404" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/handle-payment": { - "post": { - "tags": [ - "Payment & Shipping" - ], - "summary": "Initiate a payment for an order", - "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order.", - "operationId": "handlePaymentMethod", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "orderId" - ], - "properties": { - "orderId": { - "description": "Identifier of an order", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "finishUrl": { - "description": "URL to which the client should be redirected after successful payment", - "type": "string" - }, - "errorUrl": { - "description": "URL to which the client should be redirected after erroneous payment", - "type": "string" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Redirect to external payment provider", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "type": "string" - } - }, - "required": [ - "redirectUrl" - ] - } - } - } } }, "security": [ @@ -18329,67 +18283,22 @@ ] } }, - "/_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" - } - } - } - } - } - } - } - } - } - } - } - }, - "/country-state/{countryId}": { + "/product/{productId}/cross-selling": { "post": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Product" ], - "summary": "Fetch the states of a country", - "description": "Perform a filtered search the states for a country", - "operationId": "readCountryState", + "summary": "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": "countryId", + "name": "productId", "in": "path", + "description": "Product ID", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } }, { @@ -18403,42 +18312,13 @@ } } ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } - } - } - }, "responses": { "200": { - "description": "Entity search result containing countries.", + "description": "Found cross sellings", "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CountryState" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/CrossSellingElementCollection" } } } @@ -18451,16 +18331,25 @@ ] } }, - "/language": { + "/product/{productId}": { "post": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Product" ], - "summary": "Fetch languages", - "description": "Perform a filtered search for languages.", - "operationId": "readLanguages", + "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", @@ -18470,6 +18359,15 @@ "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": { @@ -18488,29 +18386,11 @@ }, "responses": { "200": { - "description": "Entity search result containing languages.", + "description": "Product information along with variant groups and options", "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/ProductDetailResponse" } } } @@ -18523,15 +18403,15 @@ ] } }, - "/country": { + "/product": { "post": { "tags": [ - "System & Context", + "Product", "Endpoints supporting Criteria " ], - "summary": "Fetch countries", - "description": "Perform a filtered search for countries", - "operationId": "readCountry", + "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", @@ -18560,7 +18440,7 @@ }, "responses": { "200": { - "description": "Entity search result containing countries.", + "description": "Entity search result containing products", "content": { "application/json": { "schema": { @@ -18570,7 +18450,7 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Country" + "$ref": "#/components/schemas/Product" } } }, @@ -18592,15 +18472,25 @@ ] } }, - "/checkout/cart": { - "get": { + "/product/{productId}/reviews": { + "post": { "tags": [ - "Cart" + "Product", + "Endpoints supporting Criteria " ], - "summary": "Fetch or create a cart", - "description": "Used to fetch the current cart or for creating a new one.", - "operationId": "readCart", + "summary": "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", @@ -18612,38 +18502,42 @@ } } ], - "responses": { - "200": { - "description": "Cart", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Cart" - } + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] } } } }, - "security": [ - { - "ApiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Cart" - ], - "summary": "Delete a cart", - "description": "This route deletes the cart of the customer.", - "operationId": "deleteCart", "responses": { - "204": { - "description": "Successfully deleted the cart", + "200": { + "description": "Entity search result containing product reviews", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductReview" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -18656,15 +18550,25 @@ ] } }, - "/checkout/cart/line-item": { + "/product/{productId}/review": { "post": { "tags": [ - "Cart" + "Product" ], - "summary": "Add items to the cart", - "description": "This route adds items to the cart. An item can be a product or promotion for example. They are referenced by the `referencedId`-parameter.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#adding-new-items-to-the-cart)", - "operationId": "addLineItem", + "summary": "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", @@ -18680,49 +18584,68 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CartItems" + "required": [ + "title", + "content", + "points" + ], + "properties": { + "name": { + "description": "The name of the review author. If not set, the first name of the customer is chosen.", + "type": "string" + }, + "email": { + "description": "The email address of the review author. If not set, the email of the customer is chosen.", + "type": "string" + }, + "title": { + "description": "The title of the review.", + "type": "string" + }, + "content": { + "description": "The content of review.", + "type": "string" + }, + "points": { + "description": "The review rating for the product.", + "type": "number", + "format": "double" + } + }, + "type": "object" } } } }, "responses": { "200": { - "description": "The updated cart.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Cart" - } - } - } + "description": "Success response indicating the review was saved successfully." } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] - }, - "delete": { + } + }, + "/product/{productId}/find-variant": { + "post": { "tags": [ - "Cart" + "Product" ], - "summary": "Remove items from the cart", - "description": "DEPRECATED: use removeLineItem instead. This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", - "operationId": "removeLineItemDeprecated", - "deprecated": true, + "summary": "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": "ids", - "in": "query", - "description": "A list of product identifiers.", + "name": "productId", + "in": "path", + "description": "Product ID", "required": true, "schema": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "type": "string" } }, { @@ -18736,13 +18659,38 @@ } } ], + "requestBody": { + "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" + } + }, + "type": "object" + } + } + } + }, "responses": { "200": { - "description": "The updated cart.", + "description": "Returns an FoundCombination struct containing the ids matching the search.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "$ref": "#/components/schemas/FindProductVariantRouteResponse" } } } @@ -18753,14 +18701,16 @@ "ApiKey": [] } ] - }, - "patch": { + } + }, + "/sitemap": { + "get": { "tags": [ - "Cart" + "Sitemap & Routes" ], - "summary": "Update items in the cart", - "description": "This route updates items in the cart. A typical example is updating the quantity of an item.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#updating-items-in-the-cart)", - "operationId": "updateLineItem", + "summary": "Fetch sitemaps", + "description": "Fetches a list of compressed sitemap files, which are often used by search engines.", + "operationId": "readSitemap", "parameters": [ { "name": "sw-language-id", @@ -18773,22 +18723,16 @@ } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CartItems" - } - } - } - }, "responses": { "200": { - "description": "The updated cart.", + "description": "Returns a list of available sitemaps.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "type": "array", + "items": { + "$ref": "#/components/schemas/Sitemap" + } } } } @@ -18801,15 +18745,25 @@ ] } }, - "/checkout/cart/line-item/delete": { - "post": { + "/sitemap/{filePath}": { + "get": { "tags": [ - "Cart" + "Sitemap & Routes" ], - "summary": "Remove items from the cart", - "description": "This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", - "operationId": "removeLineItem", + "summary": "Download sitemap file", + "description": "Downloads the sitemap file from the configured sitemap storage.", + "operationId": "getSitemapFile", "parameters": [ + { + "name": "filePath", + "in": "path", + "description": "The path to the sitemap file", + "required": true, + "schema": { + "type": "string", + "pattern": ".*\\.(xml|gz)$" + } + }, { "name": "sw-language-id", "in": "header", @@ -18821,37 +18775,20 @@ } } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "ids" - ], - "properties": { - "ids": { - "description": "A list of product identifiers.", - "type": "array", - "minItems": 1, - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - }, - "type": "object" - } - } - } - }, "responses": { "200": { - "description": "The updated cart.", + "description": "Returns the blob to download.", "content": { - "application/json": { + "application/xml": { + "schema": { + "type": "string", + "format": "binary" + } + }, + "application/gzip": { "schema": { - "$ref": "#/components/schemas/Cart" + "type": "string", + "format": "binary" } } } @@ -18864,14 +18801,14 @@ ] } }, - "/checkout/order": { - "post": { + "/checkout/cart": { + "get": { "tags": [ - "Order" + "Cart" ], - "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 or create a cart", + "description": "Used to fetch the current cart or for creating a new one.", + "operationId": "readCart", "parameters": [ { "name": "sw-language-id", @@ -18884,37 +18821,13 @@ } } ], - "requestBody": { - "description": "Contains additional metadata which is stored together with the order. It can also contain payment transaction details.", - "content": { - "application/json": { - "schema": { - "properties": { - "customerComment": { - "description": "Adds a comment from the customer to the order.", - "type": "string" - }, - "affiliateCode": { - "description": "The affiliate code can be used to track which referrer the customer came through. An example could be `Price-comparison-company-XY`.", - "type": "string" - }, - "campaignCode": { - "description": "The campaign code is used to track which action the customer came from. An example could be `Summer-Deals`", - "type": "string" - } - }, - "type": "object" - } - } - } - }, "responses": { "200": { - "description": "Order", + "description": "Cart", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Order" + "$ref": "#/components/schemas/Cart" } } } @@ -18922,85 +18835,24 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] - } - }, - "/checkout/gateway": { - "get": { + }, + "delete": { "tags": [ - "Gateway" + "Cart" ], - "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", + "summary": "Delete a cart", + "description": "This route deletes the cart of the customer.", + "operationId": "deleteCart", "responses": { - "200": { - "description": "Checkout gateway response", + "204": { + "description": "Successfully deleted the cart", "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" - } - } - } - } - } + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -19013,24 +18865,15 @@ ] } }, - "/customer-group-registration/config/{customerGroupId}": { - "get": { + "/checkout/cart/line-item": { + "post": { "tags": [ - "Login & Registration" + "Cart" ], - "summary": "Fetch registration settings for customer group", - "operationId": "getCustomerGroupRegistrationInfo", + "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": "customerGroupId", - "in": "path", - "description": "Customer group id", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, { "name": "sw-language-id", "in": "header", @@ -19042,71 +18885,25 @@ } } ], - "responses": { - "200": { - "description": "Returns the customer group including registration settings.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomerGroup" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/media": { - "post": { - "tags": [ - "Content" - ], - "summary": "Fetch and resolve Media Entities", - "description": "Fetch one or multiple Media Entities with the corresponding Identifier.", - "operationId": "readMedia", "requestBody": { "content": { "application/json": { "schema": { - "properties": { - "ids": { - "description": "Identifier (UUID) of the media entity to be fetched.", - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - }, - "type": "object", - "required": [ - "ids" - ] + "$ref": "#/components/schemas/CartItems" } } } }, "responses": { "200": { - "description": "The loaded MediaCollection containing the requested Media Entities.", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Media" - } + "$ref": "#/components/schemas/Cart" } } } - }, - "404": { - "$ref": "#/components/responses/404" } }, "security": [ @@ -19114,35 +18911,66 @@ "ApiKey": [] } ] - } - }, - "/document/download/{documentId}/{deepLinkCode}": { - "post": { + }, + "delete": { "tags": [ - "Document", - "Endpoints supporting Criteria " + "Cart" ], - "summary": "Download generated document", - "description": "Returns blob file of a generated document to download.", - "operationId": "download", + "summary": "Remove items from the cart", + "description": "DEPRECATED: use removeLineItem instead. This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", + "operationId": "removeLineItemDeprecated", + "deprecated": true, "parameters": [ { - "name": "documentId", - "in": "path", + "name": "ids", + "in": "query", + "description": "A list of product identifiers.", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } }, { - "name": "deepLinkCode", - "required": true, - "in": "path", + "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": "The updated cart.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Cart" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + }, + "patch": { + "tags": [ + "Cart" + ], + "summary": "Update items in the cart", + "description": "This route updates items in the cart. A typical example is updating the quantity of an item.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#updating-items-in-the-cart)", + "operationId": "updateLineItem", + "parameters": [ { "name": "sw-language-id", "in": "header", @@ -19155,26 +18983,21 @@ } ], "requestBody": { - "required": false, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] + "$ref": "#/components/schemas/CartItems" } } } }, "responses": { "200": { - "description": "Returns the document information and blob to download.", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Document" + "$ref": "#/components/schemas/Cart" } } } @@ -19182,37 +19005,48 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/newsletter/confirm": { + "/checkout/cart/line-item/delete": { "post": { "tags": [ - "Newsletter" + "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, + "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" + "ids" ], "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" + "ids": { + "description": "A list of product identifiers.", + "type": "array", + "minItems": 1, + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } }, "type": "object" @@ -19222,7 +19056,14 @@ }, "responses": { "200": { - "description": "The newsletter confirmation was successful." + "description": "The updated cart.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Cart" + } + } + } } }, "security": [ @@ -19232,73 +19073,42 @@ ] } }, - "/newsletter/subscribe": { + "/checkout/order": { "post": { "tags": [ - "Newsletter" + "Order" + ], + "summary": "Create an order from a cart", + "description": "Creates a new order from the current cart and deletes the cart.\n\nIf you are using the [prepared payment flow](https://developer.shopware.com/docs/concepts/commerce/checkout-concept/payments#2.1-prepare-payment-optional), this endpoint also receives additional transaction details. The exact name of the parameters depends on the implementation of the corresponding *payment handler*.", + "operationId": "createOrder", + "parameters": [ + { + "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 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, + "description": "Contains additional metadata which is stored together with the order. It can also contain payment transaction details.", "content": { "application/json": { "schema": { - "required": [ - "email", - "option", - "storefrontUrl" - ], "properties": { - "email": { - "description": "Email address that will receive the confirmation and the newsletter.", - "type": "string" - }, - "option": { - "description": "Defines what should be done.", - "type": "string" - }, - "storefrontUrl": { - "description": "Url of the storefront of the shop. This will be used for generating the link to the /newsletter/confirm inside the confirm email.", - "type": "string" - }, - "salutationId": { - "description": "Identifier of the salutation.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "description": "First name", - "type": "string" - }, - "lastName": { - "description": "Last name", - "type": "string" - }, - "street": { - "description": "Street", - "type": "string" - }, - "city": { - "description": "City", - "type": "string" - }, - "zipCode": { - "description": "Zip code", + "customerComment": { + "description": "Adds a comment from the customer to the order.", "type": "string" }, - "tags": { - "description": "Zip code", + "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" }, - "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.", + "campaignCode": { + "description": "The campaign code is used to track which action the customer came from. An example could be `Summer-Deals`", "type": "string" } }, @@ -19309,7 +19119,100 @@ }, "responses": { "200": { - "description": "Success" + "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" + } + } + } + } + } + } + } + } } }, "security": [ @@ -19319,36 +19222,52 @@ ] } }, - "/newsletter/unsubscribe": { + "/media": { "post": { "tags": [ - "Newsletter" - ], - "summary": "Remove a newsletter subscription", - "description": "Removes a newsletter recipient from the mailing lists.", - "operationId": "unsubscribeToNewsletter", + "Content" + ], + "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": [ - "email" - ], "properties": { - "email": { - "description": "Email address that should be removed from the mailing lists.", - "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": { - "description": "Unsubscribing was successful." + "description": "The loaded MediaCollection containing the requested Media Entities.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Media" + } + } + } + } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -19358,15 +19277,15 @@ ] } }, - "/category": { + "/currency": { "post": { "tags": [ - "Category", + "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch a list of categories", - "description": "Perform a filtered search for categories.", - "operationId": "readCategoryList", + "summary": "Fetch currencies", + "description": "Perform a filtered search for currencies.", + "operationId": "readCurrency", "parameters": [ { "name": "sw-language-id", @@ -19395,21 +19314,21 @@ }, "responses": { "200": { - "description": "Entity search result containing categories.", + "description": "Entity search result containing currencies.", "content": { "application/json": { "schema": { "allOf": [ { - "type": "object", "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Category" + "$ref": "#/components/schemas/Currency" } } - } + }, + "type": "object" }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -19427,23 +19346,23 @@ ] } }, - "/category/{navigationId}": { + "/landing-page/{landingPageId}": { "post": { "tags": [ - "Category", + "Content", "Endpoints supporting Criteria " ], - "summary": "Fetch a single category", - "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.", - "operationId": "readCategory", + "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": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, + "name": "landingPageId", + "in": "path", + "description": "Identifier of the landing page.", + "required": true, "schema": { - "type": "boolean" + "type": "string" } }, { @@ -19455,24 +19374,6 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } - }, - { - "name": "navigationId", - "in": "path", - "description": "Identifier of the category to be fetched", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "slots", - "in": "query", - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", - "schema": { - "type": "string" - } } ], "requestBody": { @@ -19484,7 +19385,20 @@ "$ref": "#/components/schemas/Criteria" }, { - "$ref": "#/components/schemas/ProductListingCriteria" + "allOf": [ + { + "properties": { + "slots": { + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/ProductListingCriteria" + } + ] } ] } @@ -19493,14 +19407,17 @@ }, "responses": { "200": { - "description": "The loaded category with cms page", + "description": "The loaded landing page with cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Category" + "$ref": "#/components/schemas/LandingPage" } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -19510,48 +19427,45 @@ ] } }, - "/script/{hook}": { + "/customer-group-registration/config/{customerGroupId}": { "get": { "tags": [ - "API", - "Script", - "App" + "Login & Registration" ], - "summary": "Access point for different api logics which are provided by apps over script hooks", - "operationId": "getScriptStoreApiRoute", + "summary": "Fetch registration settings for customer group", + "operationId": "getCustomerGroupRegistrationInfo", "parameters": [ { - "name": "hook", + "name": "customerGroupId", "in": "path", - "description": "Dynamic hook which used to build the hook name", + "description": "Customer group 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}$" } } ], "responses": { "200": { - "description": "Returns different structures of results based on the called script.", + "description": "Returns the customer group including registration settings.", "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": true, - "nullable": true - } - }, - "application/vnd.api+json": { - "schema": { - "type": "object", - "additionalProperties": true, - "nullable": true + "$ref": "#/components/schemas/CustomerGroup" } } } - }, - "204": { - "description": "No data by default" } }, "security": [ @@ -19559,72 +19473,72 @@ "ApiKey": [] } ] - }, + } + }, + "/search": { "post": { "tags": [ - "API", - "Script", - "App" + "Product" ], - "summary": "Access point for different api logics which are provided by apps over script hooks", - "operationId": "postScriptStoreApiRoute", + "summary": "Search for products", + "description": "Performs a search for products which can be used to display a product listing.", + "operationId": "searchPage", "parameters": [ { - "name": "hook", - "in": "path", - "description": "Dynamic hook which used to build the hook name", - "required": true, + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, "schema": { - "type": "string" + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "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 different structures of results based on the called script.", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": true, - "nullable": true - } - }, - "application/vnd.api+json": { - "schema": { - "type": "object", - "additionalProperties": true, - "nullable": true - } + "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" + } + ] } } - }, - "204": { - "description": "No data by default" } }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/context": { - "get": { - "tags": [ - "System & Context" - ], - "summary": "Fetch the current context", - "description": "Fetches the current context. This includes for example the `customerGroup`, `currency`, `taxRules` and many more.", - "operationId": "readContext", "responses": { "200": { - "description": "Returns the current context.", + "description": "Returns a product listing containing all products and additional fields to display a listing.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SalesChannelContext" + "$ref": "#/components/schemas/ProductListingResult" } } } @@ -19635,69 +19549,77 @@ "ApiKey": [] } ] - }, - "patch": { + } + }, + "/country-state/{countryId}": { + "post": { "tags": [ - "System & Context" + "System & Context", + "Endpoints supporting Criteria " + ], + "summary": "Fetch the states of a country", + "description": "Perform a filtered search the states for a country", + "operationId": "readCountryState", + "parameters": [ + { + "name": "countryId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "sw-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": "Modify the current context", - "description": "Used for switching the context. A typical example would be changing the language or changing the currency.", - "operationId": "updateContext", "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "properties": { - "currencyId": { - "description": "Currency", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "languageId": { - "description": "Language", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "billingAddressId": { - "description": "Billing Address", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shippingAddressId": { - "description": "Shipping Address", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "paymentMethodId": { - "description": "Payment Method", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shippingMethodId": { - "description": "Shipping Method", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryId": { - "description": "Country", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryStateId": { - "description": "Country State", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" + "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" + } + ] + } + } + } } }, "security": [ @@ -19707,19 +19629,43 @@ ] } }, - "/contact-form": { - "post": { + "/breadcrumb/{id}": { + "get": { "tags": [ - "Content" + "Experimental", + "Breadcrumb" ], - "summary": "Submit a contact form message", - "description": "Used for submitting contact forms. Be aware that there can be more required fields, depending on the system settings.", - "operationId": "sendContactMail", + "summary": "Fetch a 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": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", + "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", @@ -19727,74 +19673,19 @@ } } ], - "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": "Search result containing SeoUrl\\'s to be used as breadcrumb.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BreadcrumbCollection" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" } }, "security": [ @@ -19804,22 +19695,53 @@ ] } }, - "/app-system/{name}/generate-token": { + "/_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" + } + } + } + }, + "/country": { "post": { "tags": [ - "App system" + "System & Context", + "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 countries", + "description": "Perform a filtered search for countries", + "operationId": "readCountry", "parameters": [ { - "in": "path", - "name": "name", - "required": true, - "description": "Name of the app", + "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}$" } } ], @@ -19828,30 +19750,37 @@ "content": { "application/json": { "schema": { - "type": "object" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] } } } }, "responses": { "200": { - "description": "", + "description": "Entity search result containing countries.", "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/Country" + } + } + }, + "type": "object" }, - "shopId": { - "type": "string" + { + "$ref": "#/components/schemas/EntitySearchResult" } - } + ] } } } @@ -19864,15 +19793,14 @@ ] } }, - "/shipping-method": { + "/search-suggest": { "post": { "tags": [ - "Payment & Shipping", - "Endpoints supporting Criteria " + "Product" ], - "summary": "Fetch shipping methods", - "description": "Perform a filtered search for shipping methods.", - "operationId": "readShippingMethod", + "summary": "Search for products (suggest)", + "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", + "operationId": "searchSuggest", "parameters": [ { "name": "sw-language-id", @@ -19883,24 +19811,28 @@ "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, + "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" } ] } @@ -19909,34 +19841,11 @@ }, "responses": { "200": { - "description": "", + "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/ProductListingResult" } } } @@ -19949,63 +19858,150 @@ ] } }, - "/breadcrumb/{id}": { + "/product-export/{accessKey}/{fileName}": { "get": { "tags": [ - "Experimental", - "Breadcrumb" + "Product" ], - "summary": "Fetch a breadcrumb", - "description": "Perform search to get category or product breadcrumb. \n\nExperimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", - "operationId": "readBreadcrumb", + "summary": "Export product export", + "operationId": "readProductExport", "parameters": [ { - "name": "id", + "name": "accessKey", "in": "path", - "description": "UUID for product or category", + "description": "Access Key", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } }, { - "name": "type", - "in": "query", - "description": "Type: category or product (optional - default: product)", + "name": "fileName", + "in": "path", + "description": "File Name", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/navigation/{activeId}/{rootId}": { + "post": { + "tags": [ + "Category", + "Endpoints supporting Criteria " + ], + "summary": "Fetch a navigation menu", + "description": "This endpoint returns categories that can be used as a page navigation. You can either return them as a tree or as a flat list. You can also control the depth of the tree.\n\n Instead of passing uuids, you can also use one of the following aliases for the activeId and rootId parameters to get the respective navigations of your sales channel.\n\n * main-navigation\n * service-navigation\n * footer-navigation", + "operationId": "readNavigation", + "parameters": [ + { + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", "required": false, "schema": { - "type": "string", - "enum": [ - "product", - "category" - ] + "type": "boolean" } }, { - "name": "referrerCategoryId", - "in": "query", - "description": "UUID for referrer category only used for product breadcrumb", + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", "required": false, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "name": "activeId", + "in": "path", + "description": "Identifier of the active category in the navigation tree (if not used, just set to the same as rootId).", + "required": true, + "schema": { + "oneOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "$ref": "#/components/schemas/NavigationType" + } + ] + } + }, + { + "name": "rootId", + "in": "path", + "description": "Identifier of the root category for your desired navigation tree. You can use it to fetch sub-trees of your navigation tree.", + "required": true, + "schema": { + "oneOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "$ref": "#/components/schemas/NavigationType" + } + ] + } } ], + "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" + } + ] + } + } + } + }, "responses": { "200": { - "description": "Search result containing SeoUrl\\'s to be used as breadcrumb.", + "description": "All available navigations", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BreadcrumbCollection" + "$ref": "#/components/schemas/NavigationRouteResponse" } } } - }, - "400": { - "$ref": "#/components/responses/400" } }, "security": [ From 3b79165f6ad1df38c5d096a8eff9c979c91780cb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 5 Dec 2024 15:20:44 +0100 Subject: [PATCH 21/35] [create-pull-request] automated change (#310) Co-authored-by: shopwareBot --- storeapi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/storeapi.json b/storeapi.json index d12802f..b6aa42f 100644 --- a/storeapi.json +++ b/storeapi.json @@ -7,7 +7,7 @@ "name": "MIT", "url": "https://github.com/shopware/shopware/blob/trunk/LICENSE" }, - "version": "6.6.8.2" + "version": "6.6.9.0" }, "servers": [ { From 099687fc2655ba6548c7135183202d0be51eb00b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 5 Dec 2024 15:20:55 +0100 Subject: [PATCH 22/35] [create-pull-request] automated change (#309) Co-authored-by: shopwareBot --- SwagGuidedShopping-storeapi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SwagGuidedShopping-storeapi.json b/SwagGuidedShopping-storeapi.json index 76f5e9c..213325c 100644 --- a/SwagGuidedShopping-storeapi.json +++ b/SwagGuidedShopping-storeapi.json @@ -7,7 +7,7 @@ "name": "MIT", "url": "https://github.com/shopware/shopware/blob/trunk/LICENSE" }, - "version": "6.6.8.2" + "version": "6.6.9.0" }, "servers": [ { From 1950ff86334ab1502ae2fc7e05906cc943f59f4d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 25 Feb 2025 10:45:12 +0100 Subject: [PATCH 23/35] [create-pull-request] automated change (#318) Co-authored-by: shopwareBot --- SwagGuidedShopping-storeapi.json | 3643 +++++++++++++++--------------- 1 file changed, 1838 insertions(+), 1805 deletions(-) diff --git a/SwagGuidedShopping-storeapi.json b/SwagGuidedShopping-storeapi.json index 213325c..7fe6eb8 100644 --- a/SwagGuidedShopping-storeapi.json +++ b/SwagGuidedShopping-storeapi.json @@ -7,7 +7,7 @@ "name": "MIT", "url": "https://github.com/shopware/shopware/blob/trunk/LICENSE" }, - "version": "6.6.9.0" + "version": "6.6.10.1" }, "servers": [ { @@ -2294,21 +2294,12 @@ "lastName": { "type": "string" }, - "company": { - "type": "string" - }, "email": { "type": "string" }, "title": { "type": "string" }, - "vatIds": { - "type": "array", - "items": { - "type": "string" - } - }, "affiliateCode": { "type": "string" }, @@ -2377,9 +2368,6 @@ }, "readOnly": true }, - "accountType": { - "type": "string" - }, "createdById": { "type": "string", "pattern": "^[0-9a-f]{32}$" @@ -2448,7 +2436,47 @@ ] } }, - "type": "object" + "type": "object", + "oneOf": [ + { + "required": [ + "accountType" + ], + "properties": { + "accountType": { + "type": "string", + "enum": [ + "private" + ] + } + } + }, + { + "required": [ + "accountType", + "vatIds", + "company" + ], + "properties": { + "accountType": { + "type": "string", + "enum": [ + "business" + ] + }, + "vatIds": { + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + }, + "company": { + "type": "string" + } + } + } + ] }, "CustomerAddress": { "description": "Added since version: 6.0.0.0", @@ -2766,10 +2794,10 @@ "required": [ "id", "documentTypeId", - "fileType", "orderId", "config", - "deepLinkCode" + "deepLinkCode", + "fileType" ], "properties": { "id": { @@ -2780,9 +2808,6 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "fileType": { - "type": "string" - }, "referencedDocumentId": { "type": "string", "pattern": "^[0-9a-f]{32}$" @@ -2795,6 +2820,10 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "documentA11yMediaFileId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "orderVersionId": { "type": "string", "pattern": "^[0-9a-f]{32}$" @@ -2829,6 +2858,9 @@ "customFields": { "type": "object" }, + "fileType": { + "type": "string" + }, "createdAt": { "type": "string", "format": "date-time", @@ -2856,6 +2888,9 @@ }, "documentMediaFile": { "$ref": "#/components/schemas/Media" + }, + "documentA11yMediaFile": { + "$ref": "#/components/schemas/Media" } }, "type": "object" @@ -3929,8 +3964,7 @@ "pattern": "^[0-9a-f]{32}$" }, "mimeType": { - "type": "string", - "readOnly": true + "type": "string" }, "fileExtension": { "type": "string", @@ -3942,8 +3976,7 @@ "readOnly": true }, "fileName": { - "type": "string", - "readOnly": true + "type": "string" }, "fileSize": { "type": "integer", @@ -10076,240 +10109,167 @@ }, "type": "object" }, - "Breadcrumb": { + "CartDeliveryInformation": { "type": "object", "properties": { - "name": { - "type": "string" - }, - "categoryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "type": { + "apiAlias": { "type": "string", "enum": [ - "page", - "link", - "folder" + "cart_delivery_information" ] }, - "translated": { + "freeDelivery": { + "type": "boolean" + }, + "deliveryTime": { "type": "object", - "additionalProperties": true, "properties": { - "customFields": { - "type": "object" - }, - "slotConfig": { - "type": "object" - }, - "linkType": { - "type": "string", - "enum": [ - "external", - "category", - "product", - "landing_page" - ] - }, - "internalLink": { - "type": "string" - }, - "externalLink": { + "name": { "type": "string" }, - "linkNewTab": { - "type": "boolean" - }, - "description": { - "type": "string" + "min": { + "type": "integer" }, - "metaTitle": { - "type": "string" + "max": { + "type": "integer" }, - "metaDescription": { + "unit": { "type": "string" }, - "keywords": { - "type": "string" + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_time" + ] } } }, - "path": { - "type": "string" + "height": { + "type": "integer" }, - "seoUrls": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } + "length": { + "type": "integer" }, - "apiAlias": { - "type": "string", - "enum": [ - "breadcrumb" - ] + "restockTime": { + "type": "integer" + }, + "stock": { + "type": "integer" + }, + "weight": { + "type": "integer" + }, + "width": { + "type": "integer" } }, "required": [ - "name", - "categoryId", - "type", - "translated", - "path", "apiAlias" ] }, - "CustomerAddressBody": { - "description": "Added since version: 6.0.0.0", - "required": [ - "countryId", - "firstName", - "lastName", - "city", - "street" - ], + "CalculatedPrice": { + "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" + "unitPrice": { + "type": "number" }, - "zipcode": { - "type": "string" + "quantity": { + "type": "number" }, - "city": { - "type": "string" + "rawTotal": { + "type": "number" }, - "company": { - "type": "string" + "totalPrice": { + "type": "number" }, - "street": { - "type": "string" + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } }, - "department": { - "type": "string" + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] }, - "title": { - "type": "string" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] }, - "phoneNumber": { - "type": "string" + "positionPrice": { + "type": "number" }, - "additionalAddressLine1": { - "type": "string" + "netPrice": { + "type": "number" }, - "additionalAddressLine2": { - "type": "string" - }, - "customFields": { - "type": "object" - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "$ref": "#/components/schemas/CountryState" - }, - "salutation": { - "$ref": "#/components/schemas/Salutation" - } - }, - "type": "object" - }, - "AggregationMetrics": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "avg", - "count", - "max", - "min", - "stats", - "sum" - ] - }, - "field": { - "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "FindProductVariantRouteResponse": { - "type": "object", - "properties": { - "foundCombination": { + "regulationPrice": { "type": "object", "properties": { - "variantId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "price": { + "type": "number" }, - "options": { - "type": "array", - "items": { - "type": "string" - } + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] } - } - } - } - }, - "CartPriceQuantity": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_quantity" - ] + }, + "nullable": true }, - "isCalculated": { + "hasRange": { "type": "boolean" }, - "listPrice": { - "$ref": "#/components/schemas/CartListPrice" - }, - "price": { - "type": "number" - }, - "quantity": { - "type": "number" + "variantId": { + "type": "string", + "format": "^[0-9a-f]{32}$", + "nullable": true }, - "regulationPrice": { - "properties": { - "price": { - "type": "number", - "format": "float" - } - }, - "type": "object" + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] }, "taxRules": { "type": "array", + "description": "Currently active tax rules and/or rates", "items": { "type": "object", "properties": { @@ -10322,13 +10282,21 @@ } } } - }, - "type": { - "type": "string" } }, "required": [ - "apiAlias" + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "referencePrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitPrice", + "positionPrice", + "netPrice", + "taxRules" ] }, "NavigationRouteResponse": { @@ -10337,880 +10305,733 @@ "$ref": "#/components/schemas/Category" } }, - "Price": { + "SalesChannelContext": { "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" + "token": { + "description": "Context the user session", + "type": "string" }, - "listPrice": { - "description": "", + "currentCustomerGroup": { "type": "object", + "description": "Customer group of the current user", "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "", - "type": "number" - }, - "net": { - "description": "", - "type": "number" + "name": { + "type": "string" }, - "linked": { - "description": "", + "displayGross": { "type": "boolean" } - }, - "required": [ - "gross", - "net" - ] + } }, - "regulationPrice": { - "description": "", + "fallbackCustomerGroup": { + "description": "Fallback group if the default customer group is not applicable", "type": "object", "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "", - "type": "number" - }, - "net": { - "description": "", - "type": "number" + "name": { + "type": "string" }, - "linked": { - "description": "", + "displayGross": { "type": "boolean" } - }, - "required": [ - "gross", - "net" - ] - } - }, - "required": [ - "currencyId", - "gross", - "net" - ] - }, - "CartDelivery": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" - } } }, - "location": { + "currency": { + "$ref": "#/components/schemas/Currency" + }, + "salesChannel": { + "description": "Information about the current sales channel", "type": "object", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] + "typeId": { + "type": "string" }, - "country": { - "$ref": "#/components/schemas/Country" + "languageId": { + "type": "string" }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" + "currencyId": { + "type": "string" }, - "state": { - "$ref": "#/components/schemas/CountryState" - } - } - }, - "positions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDeliveryPosition" - } - }, - "shippingCosts": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "ProductDetailResponse": { - "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", - "properties": { - "product": { - "$ref": "#/components/schemas/Product" + "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" + }, + "analyticsId": { + "type": "string" + } + } }, - "configurator": { + "taxRules": { "type": "array", - "description": "List of property groups with their corresponding options and information on how to display them.", + "description": "Currently active tax rules and/or rates", "items": { - "$ref": "#/components/schemas/PropertyGroup" + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } } - } - }, - "required": [ - "product" - ] - }, - "CartPriceReference": { - "type": "object", - "properties": { - "purchaseUnit": { - "type": "number" - }, - "referenceUnit": { - "type": "number" - }, - "unitName": { - "type": "string" - }, - "price": { - "type": "number" }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_reference" - ] + "customer": { + "$ref": "#/components/schemas/Customer" }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod" }, - "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" + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" }, - "variantId": { - "type": "string", - "format": "^[0-9a-f]{32}$", - "nullable": true + "context": { + "description": "Core context with general configuration values and state", + "type": "object", + "properties": { + "versionId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "currencyFactor": { + "type": "integer" + }, + "currencyPrecision": { + "type": "integer", + "format": "int32" + }, + "languageIdChain": { + "type": "array", + "items": { + "type": "string" + } + }, + "scope": { + "type": "string" + }, + "source": { + "type": "string" + }, + "taxState": { + "type": "string" + }, + "useCache": { + "type": "boolean" + } + } } - }, - "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" - ] + } }, - "Cart": { + "Criteria": { "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "name": { - "description": "Name of the cart - for example `guest-cart`", - "type": "string" + "page": { + "description": "Search result page", + "type": "integer" }, - "token": { - "description": "Context token identifying the cart and the user session", + "term": { + "description": "Search term", "type": "string" }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" + "limit": { + "description": "Number of items per result page", + "type": "integer" }, - "lineItems": { - "description": "All items within the cart", + "filter": { "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", "items": { - "$ref": "#/components/schemas/LineItem" + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] } }, - "errors": { + "ids": { "type": "array", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "description": "List of ids to search for", "items": { - "$ref": "#/components/schemas/CartError" + "type": "string" } }, - "deliveries": { + "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/CartDelivery" + "$ref": "#/components/schemas/Query" } }, - "transactions": { - "description": "A list of all payment transactions associated with the current cart.", + "associations": { + "$ref": "#/components/schemas/Associations" + }, + "post-filter": { "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", "items": { - "type": "object", - "properties": { - "paymentMethodId": { - "type": "string" + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "amount": { - "$ref": "#/components/schemas/CalculatedPrice" - } - } - } - }, - "modified": { - "type": "boolean" + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } }, - "customerComment": { - "type": "string", - "description": "A comment that can be added to the cart.", - "nullable": true + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + } }, - "affiliateCode": { - "type": "string", - "description": "An affiliate tracking code", - "nullable": true + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } }, - "campaignCode": { - "type": "string", - "description": "A campaign tracking code", - "nullable": true + "fields": { + "type": "array", + "description": "Fields which should be returned in the search result.", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" } } }, - "CartError": { + "Associations": { "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { + "additionalProperties": { + "$ref": "#/components/schemas/Criteria" + } + }, + "Includes": { + "type": "object", + "additionalProperties": { + "type": "array", "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" - } - } + "type": "string" } } }, - "ProductListingResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EntitySearchResult" - }, + "Aggregation": { + "anyOf": [ { - "type": "object", - "properties": { - "currentFilters": { - "type": "object", - "description": "Contains the state of the filters. These can be used to create listing filters.", - "properties": { - "navigationId": { - "type": "string" - }, - "manufacturer": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "price": { - "type": "object", - "properties": { - "min": { - "type": "integer", - "default": 0 - }, - "max": { - "type": "integer", - "default": 0 - } - }, - "required": [ - "min", - "max" - ] - }, - "rating": { - "type": "integer", - "nullable": true - }, - "shipping-free": { - "type": "boolean", - "default": false - }, - "properties": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "search": { - "type": "string" - } - }, - "required": [ - "manufacturer", - "navigationId", - "price", - "properties", - "rating", - "shipping-free" - ] - }, - "availableSortings": { - "type": "array", - "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", - "items": { - "type": "object", - "properties": { - "label": { - "type": "string" - }, - "translated": { - "type": "object", - "properties": { - "label": { - "type": "string" - } - }, - "required": [ - "label" - ] - }, - "key": { - "type": "string" - }, - "priority": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_sorting" - ] - } - }, - "required": [ - "label", - "translated", - "key", - "priority", - "apiAlias" - ] - } - }, - "sorting": { - "type": "string" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - }, - "entity": { - "type": "string", - "enum": [ - "product" - ] - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_listing" - ] - } - }, - "required": [ - "elements", - "availableSortings", - "currentFilters", - "apiAlias" - ] - } - ] - }, - "SalesChannelContext": { - "type": "object", - "properties": { - "token": { - "description": "Context the user session", - "type": "string" - }, - "currentCustomerGroup": { - "type": "object", - "description": "Customer group of the current user", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } - } - }, - "fallbackCustomerGroup": { - "description": "Fallback group if the default customer group is not applicable", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } - } - }, - "currency": { - "$ref": "#/components/schemas/Currency" - }, - "salesChannel": { - "description": "Information about the current sales channel", - "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" + "$ref": "#/components/schemas/AggregationMetrics" + }, + { + "title": "AggregationEntity", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationEntity" }, - "footerCategoryId": { - "type": "string" + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationFilter", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationFilter" }, - "serviceCategoryId": { - "type": "string" + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationTerms", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationTerms" }, - "name": { - "type": "string" + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" }, - "shortName": { - "type": "string" + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationRange", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationRange" }, - "accessKey": { - "type": "string" + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + } + ] + }, + "SubAggregations": { + "type": "object", + "properties": { + "aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" }, - "active": { - "type": "boolean" + { + "$ref": "#/components/schemas/AggregationEntity" }, - "maintenance": { - "type": "boolean" + { + "$ref": "#/components/schemas/AggregationFilter" }, - "maintenanceIpWhitelist": { - "type": "string" + { + "$ref": "#/components/schemas/AggregationTerms" }, - "mailHeaderFooterId": { - "type": "string" + { + "$ref": "#/components/schemas/AggregationHistogram" }, - "customerGroupId": { - "type": "string" + { + "$ref": "#/components/schemas/AggregationRange" + } + ] + } + } + }, + "TotalCountMode": { + "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", + "type": "string", + "default": "none", + "enum": [ + "none", + "exact", + "next-pages" + ] + }, + "Query": { + "type": "object", + "properties": { + "score": { + "type": "number" + }, + "query": { + "oneOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "hreflangActive": { - "type": "boolean" + { + "$ref": "#/components/schemas/EqualsFilter" }, - "hreflangDefaultDomainId": { - "type": "string" + { + "$ref": "#/components/schemas/MultiNotFilter" }, - "analyticsId": { - "type": "string" - } - } - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } + { + "$ref": "#/components/schemas/RangeFilter" } - } + ] + } + }, + "additionalProperties": true + }, + "Sort": { + "type": "object", + "properties": { + "field": { + "type": "string" }, - "customer": { - "$ref": "#/components/schemas/Customer" + "order": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] }, - "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethod" + "naturalSorting": { + "type": "boolean" }, - "shippingLocation": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" - } + "type": { + "type": "string" + } + }, + "required": [ + "field", + "order" + ] + }, + "Filters": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } + ] + } + }, + "SimpleFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "contains", + "equalsAny", + "prefix", + "suffix" + ] }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" + "field": { + "type": "string" }, - "context": { - "description": "Core context with general configuration values and state", - "type": "object", - "properties": { - "versionId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "currencyFactor": { - "type": "integer" - }, - "currencyPrecision": { - "type": "integer", - "format": "int32" - }, - "languageIdChain": { - "type": "array", - "items": { - "type": "string" - } - }, - "scope": { - "type": "string" - }, - "source": { + "value": { + "type": "string" + } + }, + "required": [ + "type", + "field", + "value" + ] + }, + "EqualsFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "equals" + ] + }, + "field": { + "type": "string" + }, + "value": { + "oneOf": [ + { "type": "string" }, - "taxState": { - "type": "string" + { + "type": "number" }, - "useCache": { + { "type": "boolean" + }, + { + "type": "null" } - } + ] } - } + }, + "required": [ + "type", + "field", + "value" + ] }, - "ProductListingFlags": { + "MultiNotFilter": { "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": { "type": "string", - "nullable": true + "enum": [ + "multi", + "not" + ] }, - "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.", + "operator": { "type": "string", - "nullable": true + "enum": [ + "and", + "or", + "nor", + "nand" + ] + }, + "queries": { + "$ref": "#/components/schemas/Filters" } - } + }, + "required": [ + "type", + "operator", + "queries" + ] }, - "ProductListingCriteria": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "RangeFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "range" + ] }, - { + "field": { + "type": "string" + }, + "parameters": { "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 + "gte": { + "type": "number" }, - "property-filter": { - "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", - "type": "boolean", - "default": true + "gt": { + "type": "number" }, - "property-whitelist": { - "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", - "type": "string" + "lte": { + "type": "number" }, - "reduce-aggregations": { - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", - "type": "string", - "nullable": true + "lt": { + "type": "number" } } } + }, + "required": [ + "type", + "field", + "parameters" ] }, - "CalculatedPrice": { + "Cart": { "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "unitPrice": { - "type": "number" + "name": { + "description": "Name of the cart - for example `guest-cart`", + "type": "string" }, - "quantity": { - "type": "number" + "token": { + "description": "Context token identifying the cart and the user session", + "type": "string" }, - "rawTotal": { - "type": "number" + "price": { + "$ref": "#/components/schemas/CalculatedPrice" }, - "totalPrice": { - "type": "number" + "lineItems": { + "description": "All items within the cart", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } }, - "calculatedTaxes": { + "errors": { + "type": "array", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "items": { + "$ref": "#/components/schemas/CartError" + } + }, + "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": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" + "paymentMethodId": { + "type": "string" }, - "price": { - "type": "number" + "amount": { + "$ref": "#/components/schemas/CalculatedPrice" } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } - }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" } - ] + } }, - "positionPrice": { - "type": "number" + "modified": { + "type": "boolean" }, - "netPrice": { - "type": "number" + "customerComment": { + "type": "string", + "description": "A comment that can be added to the cart.", + "nullable": true }, - "regulationPrice": { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - }, + "affiliateCode": { + "type": "string", + "description": "An affiliate tracking code", "nullable": true }, - "hasRange": { - "type": "boolean" + "campaignCode": { + "type": "string", + "description": "A campaign tracking code", + "nullable": true + } + } + }, + "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 }, - "variantId": { + "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", - "format": "^[0-9a-f]{32}$", "nullable": true + } + } + }, + "CustomerAddressRead": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true }, - "apiAlias": { + "customerId": { "type": "string", - "enum": [ - "calculated_price" - ] + "pattern": "^[0-9a-f]{32}$", + "readOnly": true }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } + "createdAt": { + "type": "string", + "format": "date-time" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "$ref": "#/components/schemas/CountryState", + "nullable": true + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "referencePrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitPrice", - "positionPrice", - "netPrice", - "taxRules" + "customerId", + "createdAt", + "updatedAt", + "country", + "salutation" ] }, "CartListPrice": { @@ -11237,17 +11058,6 @@ "apiAlias" ] }, - "CartItems": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - } - } - }, "ShippingMethodPageRouteResponse": { "type": "array", "items": { @@ -11590,257 +11400,304 @@ } } }, - "NavigationType": { - "type": "string", - "enum": [ - "main-navigation", - "footer-navigation", - "service-navigation" + "Price": { + "type": "object", + "description": "Price object", + "properties": { + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "gross": { + "description": "", + "type": "number" + }, + "net": { + "description": "", + "type": "number" + }, + "linked": { + "description": "", + "type": "boolean" + }, + "listPrice": { + "description": "", + "type": "object", + "properties": { + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "gross": { + "description": "", + "type": "number" + }, + "net": { + "description": "", + "type": "number" + }, + "linked": { + "description": "", + "type": "boolean" + } + }, + "required": [ + "gross", + "net" + ] + }, + "regulationPrice": { + "description": "", + "type": "object", + "properties": { + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "gross": { + "description": "", + "type": "number" + }, + "net": { + "description": "", + "type": "number" + }, + "linked": { + "description": "", + "type": "boolean" + } + }, + "required": [ + "gross", + "net" + ] + } + }, + "required": [ + "currencyId", + "gross", + "net" ] }, - "CrossSellingElement": { + "CrossSellingElementCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrossSellingElement" + } + }, + "AggregationEntity": { + "title": "AggregationEntity", "type": "object", "properties": { - "crossSelling": { - "$ref": "#/components/schemas/ProductCrossSelling" + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "entity" + ] }, - "total": { - "type": "integer", - "format": "int32" + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "streamId": { - "type": "string", - "format": "uuid" + "definition": { + "description": "The entity definition e.g \"product_manufacturer\".", + "type": "string" + } + }, + "required": [ + "name", + "type", + "field", + "definition" + ] + }, + "AggregationFilter": { + "title": "AggregationFilter", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "apiAlias": { + "type": { + "description": "The type of aggregation", "type": "string", "enum": [ - "cross_selling_element" + "filter" ] + }, + "filter": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Filters" + } } }, "required": [ - "crossSelling", - "products", - "total", - "apiAlias" - ] - }, - "LineItemType": { - "type": "string", - "enum": [ - "product", - "credit", - "custom", - "promotion", - "discount", - "container", - "quantity" + "name", + "type", + "filter" ] }, - "LineItem": { + "AggregationTerms": { + "title": "AggregationTerms", "type": "object", "properties": { - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "cover": { - "$ref": "#/components/schemas/ProductMedia" + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "terms" + ] }, - "dataContextHash": { + "field": { + "description": "The field you want to aggregate over.", "type": "string" }, - "dataTimestamp": { + "limit": { + "description": "The number of terms to return", + "type": "number" + }, + "sort": { + "type": "array", + "description": "Sorting the aggregation result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "AggregationHistogram": { + "title": "AggregationHistogram", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" }, - "deliveryInformation": { - "$ref": "#/components/schemas/CartDeliveryInformation" + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "histogram" + ] }, - "description": { + "field": { + "description": "The field you want to aggregate over.", "type": "string" }, - "good": { - "type": "boolean" + "interval": { + "description": "The interval of the histogram", + "type": "number" }, - "id": { + "format": { + "description": "The format of the histogram", "type": "string" }, - "label": { + "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" }, - "modified": { - "type": "boolean" - }, - "modifiedByApp": { - "type": "boolean" + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "range" + ] }, - "payload": { - "$ref": "#/components/schemas/ProductJsonApi" + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "price": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "calculated_price" - ] - }, - "calculatedTaxes": { - "type": "array", - "items": { + "ranges": { + "description": "The ranges of the aggregation", + "type": "array", + "items": { + "type": "object", + "anyOf": [ + { "type": "object", + "title": "From and to", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" + "from": { + "type": "number", + "description": "The lower bound of the range" }, - "price": { - "type": "number" + "to": { + "type": "number", + "description": "The upper bound of the range" } }, "required": [ - "apiAlias", - "tax", - "taxRate", - "price" + "from", + "to" ] - } - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] - }, - "quantity": { - "type": "number" - }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] - }, - "regulationPrice": { - "type": "object", - "properties": { - "price": { - "type": "number" + }, + { + "type": "object", + "title": "From only", + "properties": { + "from": { + "type": "string", + "description": "The lower bound of the range" + } }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } + "required": [ + "from" + ] }, - "nullable": true - }, - "totalPrice": { - "type": "number" - }, - "unitPrice": { - "type": "number" - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { + { "type": "object", + "title": "To only", "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" + "to": { + "type": "string", + "description": "The upper bound of the range" } - } + }, + "required": [ + "to" + ] } - } - }, - "required": [ - "apiAlias", - "totalPrice", - "quantity", - "unitPrice" - ] - }, - "priceDefinition": { - "$ref": "#/components/schemas/CartPriceQuantity" - }, - "quantity": { - "type": "number" - }, - "quantityInformation": { - "type": "object", - "properties": { - "maxPurchase": { - "type": "number" - }, - "minPurchase": { - "type": "number" - }, - "purchaseSteps": { - "type": "number" - } - } - }, - "referencedId": { - "type": "string" - }, - "removable": { - "type": "boolean" - }, - "stackable": { - "type": "boolean" - }, - "states": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "is-physical", - "is-download" ] } - }, - "type": { - "$ref": "#/components/schemas/LineItemType" - }, - "uniqueIdentifier": { - "type": "string" } }, "required": [ - "id", - "type" + "name", + "type", + "field", + "ranges" ] }, "AccountNewsletterRecipient": { @@ -11868,133 +11725,188 @@ "apiAlias" ] }, - "EntitySearchResult": { + "OrderRouteResponse": { "type": "object", "properties": { - "entity": { - "type": "string" - }, - "total": { - "type": "integer", - "description": "The total number of found entities" + "orders": { + "allOf": [ + { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" + } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] }, - "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" + "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" } - }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." - }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." } - } + }, + "required": [ + "orders" + ] }, - "CartDeliveryInformation": { + "CartPriceReference": { "type": "object", "properties": { + "purchaseUnit": { + "type": "number" + }, + "referenceUnit": { + "type": "number" + }, + "unitName": { + "type": "string" + }, + "price": { + "type": "number" + }, "apiAlias": { "type": "string", "enum": [ - "cart_delivery_information" + "cart_price_reference" ] }, - "freeDelivery": { - "type": "boolean" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] }, - "deliveryTime": { + "regulationPrice": { "type": "object", "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer" - }, - "max": { - "type": "integer" - }, - "unit": { - "type": "string" + "price": { + "type": "number" }, "apiAlias": { "type": "string", "enum": [ - "cart_delivery_time" + "cart_regulation_price" ] } - } - }, - "height": { - "type": "integer" - }, - "length": { - "type": "integer" - }, - "restockTime": { - "type": "integer" - }, - "stock": { - "type": "integer" + }, + "nullable": true }, - "weight": { - "type": "integer" + "hasRange": { + "type": "boolean" }, - "width": { - "type": "integer" + "variantId": { + "type": "string", + "format": "^[0-9a-f]{32}$", + "nullable": true } }, "required": [ - "apiAlias" + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" ] }, - "OrderRouteResponse": { - "type": "object", - "properties": { - "orders": { - "allOf": [ - { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order" - } + "ProductListingCriteria": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + }, + { + "type": "object", + "description": "Additional search parameters for product listings", + "properties": { + "order": { + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "type": "string" + }, + "limit": { + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "type": "integer", + "minimum": 0 + }, + "p": { + "description": "Search result page", + "type": "integer", + "default": 1 + }, + "manufacturer": { + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "type": "string" + }, + "min-price": { + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "max-price": { + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "rating": { + "description": "Filter products with a minimum average rating.", + "type": "integer" + }, + "shipping-free": { + "description": "Filters products that are marked as shipping-free.", + "type": "boolean", + "default": false + }, + "properties": { + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "type": "string" + }, + "manufacturer-filter": { + "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "price-filter": { + "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "rating-filter": { + "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", + "type": "boolean", + "default": true }, - { - "$ref": "#/components/schemas/EntitySearchResult" + "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.", + "type": "string", + "nullable": true } - ] - }, - "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" - ] - }, - "Sitemap": { - "type": "object", - "properties": { - "filename": { - "type": "string" - }, - "created": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "filename", - "created" ] }, "CartDeliveryPosition": { @@ -12019,718 +11931,839 @@ }, "lineItem": { "$ref": "#/components/schemas/LineItem" - }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" - } - } - }, - "WishlistLoadRouteResponse": { - "type": "object", - "properties": { - "wishlist": { - "type": "object", - "properties": { - "customerId": { - "type": "string" - }, - "salesChannelId": { - "type": "string" - } - } - }, - "products": { - "$ref": "#/components/schemas/ProductListingResult" - } - } - }, - "Criteria": { - "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", - "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "term": { - "description": "Search term", - "type": "string" - }, - "limit": { - "description": "Number of items per result page", - "type": "integer" - }, - "filter": { - "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" - } - }, - "query": { - "type": "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" - } - }, - "associations": { - "$ref": "#/components/schemas/Associations" - }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" - } - }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } - }, - "fields": { - "type": "array", - "description": "Fields which should be returned in the search result.", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" - }, - "includes": { - "$ref": "#/components/schemas/Includes" - } - } - }, - "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": [ - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationFilter", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationTerms", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationHistogram", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationRange", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationRange" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + }, + "price": { + "$ref": "#/components/schemas/CalculatedPrice" } - ] + } }, - "SubAggregations": { - "type": "object", - "properties": { - "aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" + "ProductListingResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EntitySearchResult" + }, + { + "type": "object", + "properties": { + "currentFilters": { + "type": "object", + "description": "Contains the state of the filters. These can be used to create listing filters.", + "properties": { + "navigationId": { + "type": "string" + }, + "manufacturer": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "price": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "default": 0 + }, + "max": { + "type": "integer", + "default": 0 + } + }, + "required": [ + "min", + "max" + ] + }, + "rating": { + "type": "integer", + "nullable": true + }, + "shipping-free": { + "type": "boolean", + "default": false + }, + "properties": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "search": { + "type": "string" + } + }, + "required": [ + "manufacturer", + "navigationId", + "price", + "properties", + "rating", + "shipping-free" + ] }, - { - "$ref": "#/components/schemas/AggregationEntity" + "availableSortings": { + "type": "array", + "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", + "items": { + "type": "object", + "properties": { + "label": { + "type": "string" + }, + "translated": { + "type": "object", + "properties": { + "label": { + "type": "string" + } + }, + "required": [ + "label" + ] + }, + "key": { + "type": "string" + }, + "priority": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_sorting" + ] + } + }, + "required": [ + "label", + "translated", + "key", + "priority", + "apiAlias" + ] + } }, - { - "$ref": "#/components/schemas/AggregationFilter" + "sorting": { + "type": "string" }, - { - "$ref": "#/components/schemas/AggregationTerms" + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } }, - { - "$ref": "#/components/schemas/AggregationHistogram" + "entity": { + "type": "string", + "enum": [ + "product" + ] }, - { - "$ref": "#/components/schemas/AggregationRange" + "apiAlias": { + "type": "string", + "enum": [ + "product_listing" + ] } + }, + "required": [ + "elements", + "availableSortings", + "currentFilters", + "apiAlias" ] } - } + ] }, - "TotalCountMode": { - "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", + "NavigationType": { "type": "string", - "default": "none", "enum": [ - "none", - "exact", - "next-pages" + "main-navigation", + "footer-navigation", + "service-navigation" ] }, - "Query": { - "type": "object", - "properties": { - "score": { - "type": "number" - }, - "query": { - "oneOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "additionalProperties": true - }, - "Sort": { + "Sitemap": { "type": "object", "properties": { - "field": { + "filename": { "type": "string" }, - "order": { + "created": { "type": "string", - "enum": [ - "ASC", - "DESC" - ] - }, - "naturalSorting": { - "type": "boolean" - }, - "type": { - "type": "string" + "format": "date-time" } }, "required": [ - "field", - "order" + "filename", + "created" ] }, - "Filters": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "SimpleFilter": { + "CartError": { "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" - ] - }, - "field": { - "type": "string" - }, - "value": { - "type": "string" + "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" + } + } } - }, - "required": [ - "type", - "field", - "value" - ] + } }, - "EqualsFilter": { + "Breadcrumb": { "type": "object", "properties": { + "name": { + "type": "string" + }, + "categoryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "type": { "type": "string", "enum": [ - "equals" + "page", + "link", + "folder" ] }, - "field": { - "type": "string" - }, - "value": { - "oneOf": [ - { + "translated": { + "type": "object", + "additionalProperties": true, + "properties": { + "customFields": { + "type": "object" + }, + "slotConfig": { + "type": "object" + }, + "linkType": { + "type": "string", + "enum": [ + "external", + "category", + "product", + "landing_page" + ] + }, + "internalLink": { "type": "string" }, - { - "type": "number" + "externalLink": { + "type": "string" }, - { + "linkNewTab": { "type": "boolean" }, - { - "type": "null" + "description": { + "type": "string" + }, + "metaTitle": { + "type": "string" + }, + "metaDescription": { + "type": "string" + }, + "keywords": { + "type": "string" } + } + }, + "path": { + "type": "string" + }, + "seoUrls": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" + } + }, + "apiAlias": { + "type": "string", + "enum": [ + "breadcrumb" ] } }, "required": [ + "name", + "categoryId", "type", - "field", - "value" + "translated", + "path", + "apiAlias" ] }, - "MultiNotFilter": { + "AggregationMetrics": { "type": "object", "properties": { - "type": { - "type": "string", - "enum": [ - "multi", - "not" - ] + "name": { + "type": "string" }, - "operator": { + "type": { "type": "string", "enum": [ - "and", - "or", - "nor", - "nand" + "avg", + "count", + "max", + "min", + "stats", + "sum" ] }, - "queries": { - "$ref": "#/components/schemas/Filters" + "field": { + "type": "string" } }, "required": [ + "name", "type", - "operator", - "queries" + "field" ] }, - "RangeFilter": { + "SuccessResponse": { "type": "object", "properties": { - "type": { - "type": "string", - "enum": [ - "range" - ] - }, - "field": { + "success": { + "type": "boolean" + } + } + }, + "EntitySearchResult": { + "type": "object", + "properties": { + "entity": { "type": "string" }, - "parameters": { + "total": { + "type": "integer", + "description": "The total number of found entities" + }, + "aggregations": { + "type": "array", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", + "items": { + "type": "object" + } + }, + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." + }, + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." + } + } + }, + "WishlistLoadRouteResponse": { + "type": "object", + "properties": { + "wishlist": { "type": "object", "properties": { - "gte": { - "type": "number" - }, - "gt": { - "type": "number" + "customerId": { + "type": "string" }, - "lte": { - "type": "number" + "salesChannelId": { + "type": "string" + } + } + }, + "products": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + }, + "FindProductVariantRouteResponse": { + "type": "object", + "properties": { + "foundCombination": { + "type": "object", + "properties": { + "variantId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "lt": { - "type": "number" + "options": { + "type": "array", + "items": { + "type": "string" + } } } } - }, - "required": [ - "type", - "field", - "parameters" - ] + } }, - "AggregationEntity": { - "title": "AggregationEntity", + "CartDelivery": { "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "entity" - ] + "location": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "state": { + "$ref": "#/components/schemas/CountryState" + } + } }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "positions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDeliveryPosition" + } }, - "definition": { - "description": "The entity definition e.g \"product_manufacturer\".", - "type": "string" + "shippingCosts": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" } - }, - "required": [ - "name", - "type", - "field", - "definition" - ] + } }, - "AggregationFilter": { - "title": "AggregationFilter", + "ProductDetailResponse": { "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", "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" - ] + "product": { + "$ref": "#/components/schemas/Product" }, - "filter": { + "configurator": { "type": "array", + "description": "List of property groups with their corresponding options and information on how to display them.", "items": { - "$ref": "#/components/schemas/Filters" + "$ref": "#/components/schemas/PropertyGroup" } } }, "required": [ - "name", - "type", - "filter" + "product" ] }, - "AggregationTerms": { - "title": "AggregationTerms", + "LineItemType": { + "type": "string", + "enum": [ + "product", + "credit", + "custom", + "promotion", + "discount", + "container", + "quantity" + ] + }, + "LineItem": { "type": "object", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + }, + "cover": { + "$ref": "#/components/schemas/ProductMedia" + }, + "dataContextHash": { "type": "string" }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "terms" - ] + "dataTimestamp": { + "type": "string" }, - "field": { - "description": "The field you want to aggregate over.", + "deliveryInformation": { + "$ref": "#/components/schemas/CartDeliveryInformation" + }, + "description": { "type": "string" }, - "limit": { - "description": "The number of terms to return", + "good": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "label": { + "type": "string" + }, + "modified": { + "type": "boolean" + }, + "modifiedByApp": { + "type": "boolean" + }, + "payload": { + "$ref": "#/components/schemas/ProductJsonApi" + }, + "price": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] + }, + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] + }, + "quantity": { + "type": "number" + }, + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + }, + "nullable": true + }, + "totalPrice": { + "type": "number" + }, + "unitPrice": { + "type": "number" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } + } + }, + "required": [ + "apiAlias", + "totalPrice", + "quantity", + "unitPrice" + ] + }, + "priceDefinition": { + "$ref": "#/components/schemas/CartPriceQuantity" + }, + "quantity": { "type": "number" }, - "sort": { + "quantityInformation": { + "type": "object", + "properties": { + "maxPurchase": { + "type": "number" + }, + "minPurchase": { + "type": "number" + }, + "purchaseSteps": { + "type": "number" + } + } + }, + "referencedId": { + "type": "string" + }, + "removable": { + "type": "boolean" + }, + "stackable": { + "type": "boolean" + }, + "states": { "type": "array", - "description": "Sorting the aggregation result.", "items": { - "$ref": "#/components/schemas/Sort" + "type": "string", + "enum": [ + "is-physical", + "is-download" + ] } + }, + "type": { + "$ref": "#/components/schemas/LineItemType" + }, + "uniqueIdentifier": { + "type": "string" } }, "required": [ - "name", - "type", - "field" + "id", + "type" ] }, - "AggregationHistogram": { - "title": "AggregationHistogram", - "type": "object", + "CustomerAddressBody": { + "description": "Added since version: 6.0.0.0", + "required": [ + "countryId", + "firstName", + "lastName", + "city", + "street" + ], "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" + "countryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "type": { - "description": "The type of aggregation", + "countryStateId": { "type": "string", - "enum": [ - "histogram" - ] + "pattern": "^[0-9a-f]{32}$" }, - "field": { - "description": "The field you want to aggregate over.", + "salutationId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "firstName": { "type": "string" }, - "interval": { - "description": "The interval of the histogram", - "type": "number" + "lastName": { + "type": "string" }, - "format": { - "description": "The format of the histogram", + "zipcode": { "type": "string" }, - "timeZone": { - "description": "The timezone of the histogram", + "city": { + "type": "string" + }, + "company": { + "type": "string" + }, + "street": { + "type": "string" + }, + "department": { + "type": "string" + }, + "title": { + "type": "string" + }, + "phoneNumber": { + "type": "string" + }, + "additionalAddressLine1": { + "type": "string" + }, + "additionalAddressLine2": { "type": "string" + }, + "customFields": { + "type": "object" + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "$ref": "#/components/schemas/CountryState" + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, - "required": [ - "name", - "type", - "field" - ] + "type": "object" }, - "AggregationRange": { - "title": "AggregationRange", - "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", + "CartPriceQuantity": { "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": [ - "range" + "cart_price_quantity" ] }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "isCalculated": { + "type": "boolean" }, - "ranges": { - "description": "The ranges of the aggregation", + "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", - "anyOf": [ - { - "type": "object", - "title": "From and to", - "properties": { - "from": { - "type": "number", - "description": "The lower bound of the range" - }, - "to": { - "type": "number", - "description": "The upper bound of the range" - } - }, - "required": [ - "from", - "to" - ] - }, - { - "type": "object", - "title": "From only", - "properties": { - "from": { - "type": "string", - "description": "The lower bound of the range" - } - }, - "required": [ - "from" - ] + "properties": { + "taxRate": { + "type": "number", + "format": "float" }, - { - "type": "object", - "title": "To only", - "properties": { - "to": { - "type": "string", - "description": "The upper bound of the range" - } - }, - "required": [ - "to" - ] + "name": { + "type": "string" } - ] + } } + }, + "type": { + "type": "string" } }, "required": [ - "name", - "type", - "field", - "ranges" + "apiAlias" ] }, - "CustomerAddressRead": { + "CrossSellingElement": { "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true + "crossSelling": { + "$ref": "#/components/schemas/ProductCrossSelling" }, - "customerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } }, - "createdAt": { - "type": "string", - "format": "date-time" + "total": { + "type": "integer", + "format": "int32" }, - "updatedAt": { + "streamId": { "type": "string", - "format": "date-time", - "nullable": true - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "$ref": "#/components/schemas/CountryState", - "nullable": true + "format": "uuid" }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "apiAlias": { + "type": "string", + "enum": [ + "cross_selling_element" + ] } }, "required": [ - "customerId", - "createdAt", - "updatedAt", - "country", - "salutation" + "crossSelling", + "products", + "total", + "apiAlias" ] }, - "SuccessResponse": { + "CartItems": { "type": "object", "properties": { - "success": { - "type": "boolean" + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } } } - }, - "CrossSellingElementCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CrossSellingElement" - } } }, "responses": { From 64bc752dbc52c6ea334dc7dc5924228e490e7666 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 25 Feb 2025 10:45:27 +0100 Subject: [PATCH 24/35] [create-pull-request] automated change (#317) Co-authored-by: shopwareBot --- storeapi.json | 8687 +++++++++++++++++++++++++------------------------ 1 file changed, 4399 insertions(+), 4288 deletions(-) diff --git a/storeapi.json b/storeapi.json index b6aa42f..190a523 100644 --- a/storeapi.json +++ b/storeapi.json @@ -7,7 +7,7 @@ "name": "MIT", "url": "https://github.com/shopware/shopware/blob/trunk/LICENSE" }, - "version": "6.6.9.0" + "version": "6.6.10.1" }, "servers": [ { @@ -2468,10 +2468,6 @@ "type": "string", "description": "Last name of the customer." }, - "company": { - "type": "string", - "description": "Company name of the customer." - }, "email": { "type": "string", "description": "Email ID of the customer." @@ -2480,13 +2476,6 @@ "type": "string", "description": "Titles or honorifics like Mr, Mrs, etc." }, - "vatIds": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Unique identity of VAT." - }, "affiliateCode": { "type": "string", "description": "An affiliate code is an identification option with which website operators can mark outgoing links." @@ -2572,10 +2561,6 @@ "readOnly": true, "description": "Unique identity tag names given to the line item." }, - "accountType": { - "type": "string", - "description": "Account type can be personal or business." - }, "createdById": { "type": "string", "pattern": "^[0-9a-f]{32}$" @@ -2644,6 +2629,15 @@ "customer" ] }, + "company": { + "description": "Company name of the customer." + }, + "vatIds": { + "description": "Unique identity of VAT." + }, + "accountType": { + "description": "Account type can be personal or business." + }, "extensions": { "properties": { "specificFeatures": { @@ -2652,7 +2646,47 @@ } } }, - "type": "object" + "type": "object", + "oneOf": [ + { + "required": [ + "accountType" + ], + "properties": { + "accountType": { + "type": "string", + "enum": [ + "private" + ] + } + } + }, + { + "required": [ + "accountType", + "vatIds", + "company" + ], + "properties": { + "accountType": { + "type": "string", + "enum": [ + "business" + ] + }, + "vatIds": { + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + }, + "company": { + "type": "string" + } + } + } + ] }, "CustomerAddress": { "description": "Added since version: 6.0.0.0", @@ -3014,10 +3048,10 @@ "required": [ "id", "documentTypeId", - "fileType", "orderId", "config", - "deepLinkCode" + "deepLinkCode", + "fileType" ], "properties": { "id": { @@ -3030,10 +3064,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}$", @@ -3049,6 +3079,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}$", @@ -3089,6 +3123,10 @@ "type": "object", "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, + "fileType": { + "type": "string", + "description": "Type of file like PDF." + }, "createdAt": { "type": "string", "format": "date-time", @@ -3116,6 +3154,9 @@ }, "documentMediaFile": { "$ref": "#/components/schemas/Media" + }, + "documentA11yMediaFile": { + "$ref": "#/components/schemas/Media" } }, "type": "object" @@ -4277,7 +4318,6 @@ }, "mimeType": { "type": "string", - "readOnly": true, "description": "A string sent along with a file indicating the type of the file. For example: image/jpeg." }, "fileExtension": { @@ -4293,7 +4333,6 @@ }, "fileName": { "type": "string", - "readOnly": true, "description": "Name of the media file uploaded." }, "fileSize": { @@ -11111,262 +11150,172 @@ "type": "object" }, "BreadcrumbCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Breadcrumb" + } + }, + "CartDeliveryInformation": { "type": "object", "properties": { - "breadcrumbs": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Breadcrumb" - } - }, "apiAlias": { "type": "string", "enum": [ - "breadcrumb_collection" + "cart_delivery_information" ] - } - }, - "required": [ - "breadcrumbs", - "apiAlias" - ] - }, - "Breadcrumb": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "categoryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" }, - "type": { - "type": "string", - "enum": [ - "page", - "link", - "folder" - ] + "freeDelivery": { + "type": "boolean" }, - "translated": { + "deliveryTime": { "type": "object", - "additionalProperties": true, "properties": { - "customFields": { - "type": "object" - }, - "slotConfig": { - "type": "object" - }, - "linkType": { - "type": "string", - "enum": [ - "external", - "category", - "product", - "landing_page" - ] - }, - "internalLink": { - "type": "string" - }, - "externalLink": { + "name": { "type": "string" }, - "linkNewTab": { - "type": "boolean" - }, - "description": { - "type": "string" + "min": { + "type": "integer" }, - "metaTitle": { - "type": "string" + "max": { + "type": "integer" }, - "metaDescription": { + "unit": { "type": "string" }, - "keywords": { - "type": "string" + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_time" + ] } } }, - "path": { - "type": "string" + "height": { + "type": "integer" }, - "seoUrls": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } + "length": { + "type": "integer" }, - "apiAlias": { - "type": "string", - "enum": [ - "breadcrumb" - ] + "restockTime": { + "type": "integer" + }, + "stock": { + "type": "integer" + }, + "weight": { + "type": "integer" + }, + "width": { + "type": "integer" } }, "required": [ - "name", - "categoryId", - "type", - "translated", - "path", "apiAlias" ] }, - "CustomerAddressBody": { - "description": "Added since version: 6.0.0.0", - "required": [ - "countryId", - "firstName", - "lastName", - "city", - "street" - ], + "CalculatedPrice": { + "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}$" + "unitPrice": { + "type": "number" }, - "salutationId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "quantity": { + "type": "number" }, - "firstName": { - "type": "string" + "rawTotal": { + "type": "number" }, - "lastName": { - "type": "string" + "totalPrice": { + "type": "number" }, - "zipcode": { - "type": "string" + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } }, - "city": { - "type": "string" + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] }, - "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" - }, - "AggregationMetrics": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "avg", - "count", - "max", - "min", - "stats", - "sum" - ] - }, - "field": { - "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "FindProductVariantRouteResponse": { - "type": "object", - "properties": { - "foundCombination": { - "type": "object", - "properties": { - "variantId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of a variant." + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" }, - "options": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Available product variant options. For example, for variant `Size`, option would be `XS`, `S`, `M`, `L`, `XL`." + { + "type": "null" } - } - } - } - }, - "CartPriceQuantity": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_quantity" ] }, - "isCalculated": { - "type": "boolean" - }, - "listPrice": { - "$ref": "#/components/schemas/CartListPrice" - }, - "price": { + "positionPrice": { "type": "number" }, - "quantity": { + "netPrice": { "type": "number" }, "regulationPrice": { + "type": "object", "properties": { "price": { - "type": "number", - "format": "float" + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] } }, - "type": "object" + "nullable": true + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "type": "string", + "format": "^[0-9a-f]{32}$", + "nullable": true + }, + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] }, "taxRules": { "type": "array", + "description": "Currently active tax rules and/or rates", "items": { "type": "object", "properties": { @@ -11379,13 +11328,21 @@ } } } - }, - "type": { - "type": "string" } }, "required": [ - "apiAlias" + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "referencePrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitPrice", + "positionPrice", + "netPrice", + "taxRules" ] }, "NavigationRouteResponse": { @@ -11399,538 +11356,44 @@ } } }, - "Price": { + "SalesChannelContext": { "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" + "token": { + "description": "Context the user session", + "type": "string" }, - "listPrice": { - "description": "", + "currentCustomerGroup": { "type": "object", + "description": "Customer group of the current user", "properties": { - "currencyId": { + "name": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "", - "type": "number" - }, - "net": { - "description": "", - "type": "number" + "description": "Name of customer group to which the customer belongs within the specific sales channel they are currently interacting with." }, - "linked": { - "description": "", - "type": "boolean" + "displayGross": { + "type": "boolean", + "description": "When `true`, product's gross price is displayed for that customer group who belongs to the specific sales channel they are currently interacting with." } - }, - "required": [ - "gross", - "net" - ] + } }, - "regulationPrice": { - "description": "", + "fallbackCustomerGroup": { + "description": "Fallback group if the default customer group is not applicable", "type": "object", "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "", - "type": "number" - }, - "net": { - "description": "", - "type": "number" + "name": { + "type": "string" }, - "linked": { - "description": "", + "displayGross": { "type": "boolean" } - }, - "required": [ - "gross", - "net" - ] - } - }, - "required": [ - "currencyId", - "gross", - "net" - ] - }, - "CartDelivery": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" - } } }, - "location": { - "type": "object", + "currency": { + "$ref": "#/components/schemas/Currency", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "state": { - "$ref": "#/components/schemas/CountryState" - } - } - }, - "positions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDeliveryPosition" - } - }, - "shippingCosts": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "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" - ] - }, - "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" - ] - }, - "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." - } - } - }, - "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" - } - } - } - } - }, - "ProductListingResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EntitySearchResult" - }, - { - "type": "object", - "properties": { - "currentFilters": { - "type": "object", - "description": "Contains the state of the filters. These can be used to create listing filters.", - "properties": { - "navigationId": { - "type": "string" - }, - "manufacturer": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "price": { - "type": "object", - "properties": { - "min": { - "type": "integer", - "default": 0 - }, - "max": { - "type": "integer", - "default": 0 - } - }, - "required": [ - "min", - "max" - ] - }, - "rating": { - "type": "integer", - "nullable": true - }, - "shipping-free": { - "type": "boolean", - "default": false - }, - "properties": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "search": { - "type": "string" - } - }, - "required": [ - "manufacturer", - "navigationId", - "price", - "properties", - "rating", - "shipping-free" - ] - }, - "availableSortings": { - "type": "array", - "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", - "items": { - "type": "object", - "properties": { - "label": { - "type": "string" - }, - "translated": { - "type": "object", - "properties": { - "label": { - "type": "string" - } - }, - "required": [ - "label" - ] - }, - "key": { - "type": "string" - }, - "priority": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_sorting" - ] - } - }, - "required": [ - "label", - "translated", - "key", - "priority", - "apiAlias" - ] - } - }, - "sorting": { - "type": "string" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - }, - "entity": { - "type": "string", - "enum": [ - "product" - ] - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_listing" - ] - } - }, - "required": [ - "elements", - "availableSortings", - "currentFilters", - "apiAlias" - ] - } - ] - }, - "SalesChannelContext": { - "type": "object", - "properties": { - "token": { - "description": "Context the user session", - "type": "string" - }, - "currentCustomerGroup": { - "type": "object", - "description": "Customer group of the current user", - "properties": { - "name": { - "type": "string", - "description": "Name of customer group to which the customer belongs within the specific sales channel they are currently interacting with." - }, - "displayGross": { - "type": "boolean", - "description": "When `true`, product's gross price is displayed for that customer group who belongs to the specific sales channel they are currently interacting with." - } - } - }, - "fallbackCustomerGroup": { - "description": "Fallback group if the default customer group is not applicable", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } - } - }, - "currency": { - "$ref": "#/components/schemas/Currency", - "properties": { - "isoCode": { - "description": "Standard international three digit code to represent currency in a given sales channel. For example, USD." + "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." @@ -12270,309 +11733,627 @@ "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" - } + "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." + } + } + } + } + }, + "Criteria": { + "type": "object", + "description": "Criteria to query entities.", + "properties": { + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", + "type": "string" + }, + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + }, + "properties": { + "type": { + "description": "To filter the results and aggregations with filter types like ==, >=, etc." + }, + "field": { + "description": "To filter the results and aggregations by field like an property identifier." + }, + "value": { + "description": "To filter the results and aggregations by value." + } + } + }, + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } + }, + "query": { + "type": "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" + } + }, + "associations": { + "$ref": "#/components/schemas/Associations" + }, + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + }, + "properties": { + "type": { + "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." + }, + "field": { + "description": "To filter only the results but not the aggregations by field like an property identifier." + }, + "value": { + "description": "To filter only the results but not the aggregations by value." + } + } + }, + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "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" + } + }, + "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": [ + { + "$ref": "#/components/schemas/AggregationEntity" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationFilter", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationFilter" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationTerms", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationRange", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationRange" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + } + ] + }, + "SubAggregations": { + "type": "object", + "properties": { + "aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" + }, + { + "$ref": "#/components/schemas/AggregationEntity" }, - "scope": { - "type": "string", - "description": "Scope defines if its related to system or user context." + { + "$ref": "#/components/schemas/AggregationFilter" }, - "source": { - "type": "string", - "description": "When context is related to user in the source, then there is userId." + { + "$ref": "#/components/schemas/AggregationTerms" }, - "taxState": { - "type": "string", - "description": "Tax state can either be `gross` or `net`." + { + "$ref": "#/components/schemas/AggregationHistogram" }, - "useCache": { - "type": "boolean", - "description": "When boolean value is `true`, caching is used." + { + "$ref": "#/components/schemas/AggregationRange" } - } + ] } } }, - "ProductListingFlags": { + "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", - "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 + "score": { + "type": "number" }, - "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.", + "query": { + "oneOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "additionalProperties": true + }, + "Sort": { + "type": "object", + "properties": { + "field": { + "type": "string" + }, + "order": { "type": "string", - "nullable": true + "enum": [ + "ASC", + "DESC" + ] + }, + "naturalSorting": { + "type": "boolean" + }, + "type": { + "type": "string" } + }, + "required": [ + "field", + "order" + ] + }, + "Filters": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] } }, - "ProductListingCriteria": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "SimpleFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "contains", + "equalsAny", + "prefix", + "suffix" + ] }, - { - "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 `|`.", + "field": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": [ + "type", + "field", + "value" + ] + }, + "EqualsFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "equals" + ] + }, + "field": { + "type": "string" + }, + "value": { + "oneOf": [ + { "type": "string" }, - "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 + { + "type": "number" }, - "property-whitelist": { - "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", - "type": "string" + { + "type": "boolean" }, - "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 + { + "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": { - "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." - } - } + "type": { + "type": "string", + "enum": [ + "range" + ] }, - "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." - } - } + "field": { + "type": "string" }, - "post-filter": { + "parameters": { + "type": "object", "properties": { - "type": { - "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." + "gte": { + "type": "number" }, - "field": { - "description": "To filter only the results but not the aggregations by field like an property identifier." + "gt": { + "type": "number" }, - "value": { - "description": "To filter only the results but not the aggregations by value." + "lte": { + "type": "number" + }, + "lt": { + "type": "number" } } } - } + }, + "required": [ + "type", + "field", + "parameters" + ] }, - "CalculatedPrice": { + "Cart": { "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "unitPrice": { - "type": "number" + "name": { + "description": "Name of the cart - for example `guest-cart`", + "type": "string" }, - "quantity": { - "type": "number" + "token": { + "description": "Context token identifying the cart and the user session", + "type": "string" }, - "rawTotal": { - "type": "number" + "price": { + "$ref": "#/components/schemas/CalculatedPrice" }, - "totalPrice": { - "type": "number" + "lineItems": { + "description": "All items within the cart", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } }, - "calculatedTaxes": { + "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": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" + "paymentMethodId": { + "type": "string" }, - "price": { - "type": "number" + "amount": { + "$ref": "#/components/schemas/CalculatedPrice" } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } - }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" } - ] - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" + }, + "properties": { + "paymentMethodId": { + "description": "Unique identity of payment method." } - ] + } }, - "positionPrice": { - "type": "number" + "modified": { + "type": "boolean", + "description": "It signifies any changes to cart." }, - "netPrice": { - "type": "number" + "customerComment": { + "type": "string", + "description": "A comment that can be added to the cart.", + "nullable": true }, - "regulationPrice": { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - }, + "affiliateCode": { + "type": "string", + "description": "An affiliate tracking code", "nullable": true }, - "hasRange": { - "type": "boolean" + "campaignCode": { + "type": "string", + "description": "A campaign tracking code", + "nullable": true }, - "variantId": { + "id": { + "description": "Unique identity of cart." + } + } + }, + "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", - "format": "^[0-9a-f]{32}$", "nullable": true }, - "apiAlias": { + "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", - "enum": [ - "calculated_price" - ] + "nullable": true + } + } + }, + "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": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "country": { + "$ref": "#/components/schemas/Country" }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } + "countryState": { + "$ref": "#/components/schemas/CountryState", + "nullable": true + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "referencePrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitPrice", - "positionPrice", - "netPrice", - "taxRules" + "customerId", + "createdAt", + "updatedAt", + "country", + "salutation" ] }, "CartListPrice": { @@ -12599,25 +12380,6 @@ "apiAlias" ] }, - "CartItems": { - "type": "object", - "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." - } - } - } - } - }, "ShippingMethodPageRouteResponse": { "type": "array", "items": { @@ -13247,267 +13009,309 @@ } } }, - "NavigationType": { - "type": "string", - "enum": [ - "main-navigation", - "footer-navigation", - "service-navigation" - ] - }, - "CrossSellingElement": { + "Price": { "type": "object", + "description": "Price object", "properties": { - "crossSelling": { - "$ref": "#/components/schemas/ProductCrossSelling" + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } + "gross": { + "description": "", + "type": "number" + }, + "net": { + "description": "", + "type": "number" + }, + "linked": { + "description": "", + "type": "boolean" + }, + "listPrice": { + "description": "", + "type": "object", + "properties": { + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "gross": { + "description": "", + "type": "number" + }, + "net": { + "description": "", + "type": "number" + }, + "linked": { + "description": "", + "type": "boolean" + } + }, + "required": [ + "gross", + "net" + ] }, + "regulationPrice": { + "description": "", + "type": "object", + "properties": { + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "gross": { + "description": "", + "type": "number" + }, + "net": { + "description": "", + "type": "number" + }, + "linked": { + "description": "", + "type": "boolean" + } + }, + "required": [ + "gross", + "net" + ] + } + }, + "required": [ + "currencyId", + "gross", + "net" + ] + }, + "CrossSellingElementCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrossSellingElement" + }, + "properties": { "total": { - "type": "integer", - "format": "int32" + "description": "Number of cross selling elements found." + } + } + }, + "AggregationEntity": { + "title": "AggregationEntity", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "streamId": { + "type": { + "description": "The type of aggregation", "type": "string", - "format": "uuid" + "enum": [ + "entity" + ] }, - "apiAlias": { + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "definition": { + "description": "The entity definition e.g \"product_manufacturer\".", + "type": "string" + } + }, + "required": [ + "name", + "type", + "field", + "definition" + ] + }, + "AggregationFilter": { + "title": "AggregationFilter", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", "type": "string", "enum": [ - "cross_selling_element" + "filter" ] + }, + "filter": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Filters" + } } }, "required": [ - "crossSelling", - "products", - "total", - "apiAlias" + "name", + "type", + "filter" ] }, - "LineItemType": { - "type": "string", - "enum": [ - "product", - "credit", - "custom", - "promotion", - "discount", - "container", - "quantity" + "AggregationTerms": { + "title": "AggregationTerms", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "terms" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "limit": { + "description": "The number of terms to return", + "type": "number" + }, + "sort": { + "type": "array", + "description": "Sorting the aggregation result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + } + }, + "required": [ + "name", + "type", + "field" ] }, - "LineItem": { + "AggregationHistogram": { + "title": "AggregationHistogram", "type": "object", "properties": { - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - }, - "cover": { - "$ref": "#/components/schemas/ProductMedia" - }, - "dataContextHash": { - "type": "string" - }, - "dataTimestamp": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" }, - "deliveryInformation": { - "$ref": "#/components/schemas/CartDeliveryInformation" - }, - "description": { + "type": { + "description": "The type of aggregation", "type": "string", - "description": "Description of line items in an order." + "enum": [ + "histogram" + ] }, - "good": { - "type": "boolean", - "description": "When set to true, it indicates the line item is physical else it is virtual." + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "id": { - "type": "string", - "description": "Unique identity of line item." + "interval": { + "description": "The interval of the histogram", + "type": "number" }, - "label": { - "type": "string", - "description": "It is a typical product name given to the line item." + "format": { + "description": "The format of the histogram", + "type": "string" }, - "modified": { - "type": "boolean", - "description": "When boolean value is `true`, line items are said to be modified." + "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" }, - "modifiedByApp": { - "type": "boolean" + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "range" + ] }, - "payload": { - "$ref": "#/components/schemas/ProductJsonApi" + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "price": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "calculated_price" - ] - }, - "calculatedTaxes": { - "type": "array", - "items": { + "ranges": { + "description": "The ranges of the aggregation", + "type": "array", + "items": { + "type": "object", + "anyOf": [ + { "type": "object", + "title": "From and to", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" + "from": { + "type": "number", + "description": "The lower bound of the range" }, - "price": { - "type": "number" + "to": { + "type": "number", + "description": "The upper bound of the range" } }, "required": [ - "apiAlias", - "tax", - "taxRate", - "price" + "from", + "to" ] - } - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] - }, - "quantity": { - "type": "number" - }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] - }, - "regulationPrice": { - "type": "object", - "properties": { - "price": { - "type": "number" + }, + { + "type": "object", + "title": "From only", + "properties": { + "from": { + "type": "string", + "description": "The lower bound of the range" + } }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } + "required": [ + "from" + ] }, - "nullable": true - }, - "totalPrice": { - "type": "number" - }, - "unitPrice": { - "type": "number" - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { + { "type": "object", + "title": "To only", "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" + "to": { + "type": "string", + "description": "The upper bound of the range" } - } - } - } - }, - "required": [ - "apiAlias", - "totalPrice", - "quantity", - "unitPrice" - ] - }, - "priceDefinition": { - "$ref": "#/components/schemas/CartPriceQuantity" - }, - "quantity": { - "type": "number", - "description": "Number of items of product." - }, - "quantityInformation": { - "type": "object", - "properties": { - "maxPurchase": { - "type": "number" - }, - "minPurchase": { - "type": "number" - }, - "purchaseSteps": { - "type": "number" - } - } - }, - "referencedId": { - "type": "string", - "description": "Unique identity of type of entity." - }, - "removable": { - "type": "boolean", - "description": "Allows the line item to be removable from the cart when set to true." - }, - "stackable": { - "type": "boolean", - "description": "Allows to change the quantity of the line item when set to true." - }, - "states": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "is-physical", - "is-download" + }, + "required": [ + "to" + ] + } ] } - }, - "type": { - "$ref": "#/components/schemas/LineItemType", - "description": "Type refers to the entity type of an item whether it is product or promotion for instance." - }, - "uniqueIdentifier": { - "type": "string" } }, "required": [ - "id", - "type" + "name", + "type", + "field", + "ranges" ] }, "AccountNewsletterRecipient": { @@ -13535,91 +13339,6 @@ "apiAlias" ] }, - "EntitySearchResult": { - "type": "object", - "properties": { - "entity": { - "type": "string" - }, - "total": { - "type": "integer", - "description": "The total number of found entities" - }, - "aggregations": { - "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", - "items": { - "type": "object" - } - }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." - }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." - } - } - }, - "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" - ] - }, "OrderRouteResponse": { "type": "object", "properties": { @@ -13648,107 +13367,163 @@ "orders" ] }, - "Sitemap": { + "CartPriceReference": { "type": "object", "properties": { - "filename": { - "type": "string", - "description": "Name of the file which holds a list of all URL's." + "purchaseUnit": { + "type": "number" }, - "created": { + "referenceUnit": { + "type": "number" + }, + "unitName": { + "type": "string" + }, + "price": { + "type": "number" + }, + "apiAlias": { "type": "string", - "format": "date-time" - } - }, - "required": [ - "filename", - "created" - ] - }, - "CartDeliveryPosition": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "deliveryDate": { + "enum": [ + "cart_price_reference" + ] + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { "type": "object", "properties": { - "earliest": { - "type": "string", - "format": "date-time" + "price": { + "type": "number" }, - "latest": { + "apiAlias": { "type": "string", - "format": "date-time" + "enum": [ + "cart_regulation_price" + ] } - } - }, - "identifier": { - "type": "string" + }, + "nullable": true }, - "lineItem": { - "$ref": "#/components/schemas/LineItem" + "hasRange": { + "type": "boolean" }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" + "variantId": { + "type": "string", + "format": "^[0-9a-f]{32}$", + "nullable": true } - } + }, + "required": [ + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" + ] }, - "WishlistLoadRouteResponse": { - "type": "object", - "properties": { - "wishlist": { + "ProductListingCriteria": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + }, + { "type": "object", + "description": "Additional search parameters for product listings", "properties": { - "customerId": { - "type": "string", - "description": "Unique identity of the customer." + "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 }, - "salesChannelId": { + "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.", "type": "string", - "description": "Unique identity of the sales channel." + "nullable": true } } - }, - "products": { - "$ref": "#/components/schemas/ProductListingResult" } - } - }, - "Criteria": { - "type": "object", - "description": "Criteria to query entities.", + ], "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "term": { - "description": "Search term", - "type": "string" - }, - "limit": { - "description": "Number of items per result page", - "type": "integer" - }, "filter": { - "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - }, "properties": { "type": { "description": "To filter the results and aggregations with filter types like ==, >=, etc." @@ -13761,42 +13536,20 @@ } } }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" - } - }, - "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" + "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." + } } }, - "associations": { - "$ref": "#/components/schemas/Associations" - }, "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - }, "properties": { "type": { "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." @@ -13808,635 +13561,906 @@ "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" - }, + } + } + }, + "CartDeliveryPosition": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { + "type": "object", "properties": { - "field": { - "description": "Sort the search results by field like an property identifier." - }, - "order": { - "description": "Sort the search results of orders by ascending or descending." + "earliest": { + "type": "string", + "format": "date-time" }, - "naturalSorting": { - "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." + "latest": { + "type": "string", + "format": "date-time" } } }, - "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" - } + "identifier": { + "type": "string" }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" + "lineItem": { + "$ref": "#/components/schemas/LineItem" }, - "includes": { - "$ref": "#/components/schemas/Includes" - } - } - }, - "Associations": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Criteria" - } - }, - "Includes": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" + "price": { + "$ref": "#/components/schemas/CalculatedPrice" } } }, - "Aggregation": { - "anyOf": [ + "ProductListingResult": { + "allOf": [ { - "$ref": "#/components/schemas/AggregationMetrics" + "$ref": "#/components/schemas/EntitySearchResult" }, { - "title": "AggregationEntity", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationEntity" + "type": "object", + "properties": { + "currentFilters": { + "type": "object", + "description": "Contains the state of the filters. These can be used to create listing filters.", + "properties": { + "navigationId": { + "type": "string" + }, + "manufacturer": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "price": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "default": 0 + }, + "max": { + "type": "integer", + "default": 0 + } + }, + "required": [ + "min", + "max" + ] + }, + "rating": { + "type": "integer", + "nullable": true + }, + "shipping-free": { + "type": "boolean", + "default": false + }, + "properties": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "search": { + "type": "string" + } + }, + "required": [ + "manufacturer", + "navigationId", + "price", + "properties", + "rating", + "shipping-free" + ] + }, + "availableSortings": { + "type": "array", + "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", + "items": { + "type": "object", + "properties": { + "label": { + "type": "string" + }, + "translated": { + "type": "object", + "properties": { + "label": { + "type": "string" + } + }, + "required": [ + "label" + ] + }, + "key": { + "type": "string" + }, + "priority": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_sorting" + ] + } + }, + "required": [ + "label", + "translated", + "key", + "priority", + "apiAlias" + ] + } }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationFilter", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationFilter" + "sorting": { + "type": "string" }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationTerms", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationTerms" + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationHistogram", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationHistogram" + "entity": { + "type": "string", + "enum": [ + "product" + ] }, - { - "$ref": "#/components/schemas/SubAggregations" + "apiAlias": { + "type": "string", + "enum": [ + "product_listing" + ] } + }, + "required": [ + "elements", + "availableSortings", + "currentFilters", + "apiAlias" ] + } + ] + }, + "NavigationType": { + "type": "string", + "enum": [ + "main-navigation", + "footer-navigation", + "service-navigation" + ] + }, + "Sitemap": { + "type": "object", + "properties": { + "filename": { + "type": "string", + "description": "Name of the file which holds a list of all URL's." }, - { - "title": "AggregationRange", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationRange" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "created": { + "type": "string", + "format": "date-time" } + }, + "required": [ + "filename", + "created" ] }, - "SubAggregations": { + "CartError": { "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" + "items": { + "type": "object", + "properties": { + "key": { + "type": "string" }, - { - "$ref": "#/components/schemas/AggregationTerms" + "level": { + "type": "number", + "enum": [ + 0, + 10, + 20 + ], + "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" }, - { - "$ref": "#/components/schemas/AggregationHistogram" + "message": { + "type": "string" }, - { - "$ref": "#/components/schemas/AggregationRange" + "messageKey": { + "type": "string" } - ] + } } } }, - "TotalCountMode": { - "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", - "type": "string", - "default": "none", - "enum": [ - "none", - "exact", - "next-pages" - ] - }, - "Query": { + "Breadcrumb": { "type": "object", "properties": { - "score": { - "type": "number" + "name": { + "type": "string" }, - "query": { - "oneOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" + "categoryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "type": { + "type": "string", + "enum": [ + "page", + "link", + "folder" + ] + }, + "translated": { + "type": "object", + "additionalProperties": true, + "properties": { + "customFields": { + "type": "object" }, - { - "$ref": "#/components/schemas/EqualsFilter" + "slotConfig": { + "type": "object" }, - { - "$ref": "#/components/schemas/MultiNotFilter" + "linkType": { + "type": "string", + "enum": [ + "external", + "category", + "product", + "landing_page" + ] }, - { - "$ref": "#/components/schemas/RangeFilter" + "internalLink": { + "type": "string" + }, + "externalLink": { + "type": "string" + }, + "linkNewTab": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "metaTitle": { + "type": "string" + }, + "metaDescription": { + "type": "string" + }, + "keywords": { + "type": "string" } + } + }, + "path": { + "type": "string" + }, + "seoUrls": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" + } + }, + "apiAlias": { + "type": "string", + "enum": [ + "breadcrumb" ] } }, - "additionalProperties": true + "required": [ + "name", + "categoryId", + "type", + "translated", + "path", + "apiAlias" + ] }, - "Sort": { + "AggregationMetrics": { "type": "object", "properties": { - "field": { + "name": { "type": "string" }, - "order": { + "type": { "type": "string", "enum": [ - "ASC", - "DESC" + "avg", + "count", + "max", + "min", + "stats", + "sum" ] }, - "naturalSorting": { - "type": "boolean" - }, - "type": { + "field": { "type": "string" } }, "required": [ - "field", - "order" + "name", + "type", + "field" ] }, - "Filters": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] + "SuccessResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + } } }, - "SimpleFilter": { + "EntitySearchResult": { "type": "object", "properties": { - "type": { - "type": "string", - "enum": [ - "contains", - "equalsAny", - "prefix", - "suffix" - ] - }, - "field": { + "entity": { "type": "string" }, - "value": { - "type": "string" + "total": { + "type": "integer", + "description": "The total number of found entities" + }, + "aggregations": { + "type": "array", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", + "items": { + "type": "object" + } + }, + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." + }, + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." } - }, - "required": [ - "type", - "field", - "value" - ] + } }, - "EqualsFilter": { + "WishlistLoadRouteResponse": { "type": "object", "properties": { - "type": { - "type": "string", - "enum": [ - "equals" - ] + "wishlist": { + "type": "object", + "properties": { + "customerId": { + "type": "string", + "description": "Unique identity of the customer." + }, + "salesChannelId": { + "type": "string", + "description": "Unique identity of the sales channel." + } + } }, - "field": { - "type": "string" + "products": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + }, + "FindProductVariantRouteResponse": { + "type": "object", + "properties": { + "foundCombination": { + "type": "object", + "properties": { + "variantId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of a variant." + }, + "options": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Available product variant options. For example, for variant `Size`, option would be `XS`, `S`, `M`, `L`, `XL`." + } + } + } + } + }, + "CartDelivery": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } }, - "value": { - "oneOf": [ - { - "type": "string" + "location": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] }, - { - "type": "number" + "country": { + "$ref": "#/components/schemas/Country" }, - { - "type": "boolean" + "address": { + "$ref": "#/components/schemas/CustomerAddress" }, - { - "type": "null" + "state": { + "$ref": "#/components/schemas/CountryState" } - ] + } + }, + "positions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDeliveryPosition" + } + }, + "shippingCosts": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" } - }, - "required": [ - "type", - "field", - "value" - ] + } }, - "MultiNotFilter": { + "ProductDetailResponse": { "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "type": { - "type": "string", - "enum": [ - "multi", - "not" - ] + "product": { + "$ref": "#/components/schemas/Product" }, - "operator": { - "type": "string", - "enum": [ - "and", - "or", - "nor", - "nand" - ] + "configurator": { + "type": "array", + "description": "List of property groups with their corresponding options and information on how to display them.", + "items": { + "$ref": "#/components/schemas/PropertyGroup" + } }, - "queries": { - "$ref": "#/components/schemas/Filters" + "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": [ - "type", - "operator", - "queries" + "product" + ] + }, + "LineItemType": { + "type": "string", + "enum": [ + "product", + "credit", + "custom", + "promotion", + "discount", + "container", + "quantity" ] }, - "RangeFilter": { + "LineItem": { "type": "object", "properties": { - "type": { - "type": "string", - "enum": [ - "range" - ] + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } }, - "field": { + "cover": { + "$ref": "#/components/schemas/ProductMedia" + }, + "dataContextHash": { "type": "string" }, - "parameters": { + "dataTimestamp": { + "type": "string" + }, + "deliveryInformation": { + "$ref": "#/components/schemas/CartDeliveryInformation" + }, + "description": { + "type": "string", + "description": "Description of line items in an order." + }, + "good": { + "type": "boolean", + "description": "When set to true, it indicates the line item is physical else it is virtual." + }, + "id": { + "type": "string", + "description": "Unique identity of line item." + }, + "label": { + "type": "string", + "description": "It is a typical product name given to the line item." + }, + "modified": { + "type": "boolean", + "description": "When boolean value is `true`, line items are said to be modified." + }, + "modifiedByApp": { + "type": "boolean" + }, + "payload": { + "$ref": "#/components/schemas/ProductJsonApi" + }, + "price": { "type": "object", "properties": { - "gte": { - "type": "number" + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] }, - "gt": { + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] + }, + "quantity": { "type": "number" }, - "lte": { + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + }, + "nullable": true + }, + "totalPrice": { "type": "number" }, - "lt": { + "unitPrice": { "type": "number" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } } - } - } - }, - "required": [ - "type", - "field", - "parameters" - ] - }, - "AggregationEntity": { - "title": "AggregationEntity", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "entity" + }, + "required": [ + "apiAlias", + "totalPrice", + "quantity", + "unitPrice" ] }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "definition": { - "description": "The entity definition e.g \"product_manufacturer\".", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field", - "definition" - ] - }, - "AggregationFilter": { - "title": "AggregationFilter", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" + "priceDefinition": { + "$ref": "#/components/schemas/CartPriceQuantity" }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "filter" - ] + "quantity": { + "type": "number", + "description": "Number of items of product." }, - "filter": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Filters" + "quantityInformation": { + "type": "object", + "properties": { + "maxPurchase": { + "type": "number" + }, + "minPurchase": { + "type": "number" + }, + "purchaseSteps": { + "type": "number" + } } - } - }, - "required": [ - "name", - "type", - "filter" - ] - }, - "AggregationTerms": { - "title": "AggregationTerms", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" }, - "type": { - "description": "The type of aggregation", + "referencedId": { "type": "string", - "enum": [ - "terms" - ] + "description": "Unique identity of type of entity." }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "removable": { + "type": "boolean", + "description": "Allows the line item to be removable from the cart when set to true." }, - "limit": { - "description": "The number of terms to return", - "type": "number" + "stackable": { + "type": "boolean", + "description": "Allows to change the quantity of the line item when set to true." }, - "sort": { + "states": { "type": "array", - "description": "Sorting the aggregation result.", "items": { - "$ref": "#/components/schemas/Sort" + "type": "string", + "enum": [ + "is-physical", + "is-download" + ] } + }, + "type": { + "$ref": "#/components/schemas/LineItemType", + "description": "Type refers to the entity type of an item whether it is product or promotion for instance." + }, + "uniqueIdentifier": { + "type": "string" } }, "required": [ - "name", - "type", - "field" + "id", + "type" ] }, - "AggregationHistogram": { - "title": "AggregationHistogram", - "type": "object", + "CustomerAddressBody": { + "description": "Added since version: 6.0.0.0", + "required": [ + "countryId", + "firstName", + "lastName", + "city", + "street" + ], "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" + "countryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "type": { - "description": "The type of aggregation", + "countryStateId": { "type": "string", - "enum": [ - "histogram" - ] + "pattern": "^[0-9a-f]{32}$" }, - "field": { - "description": "The field you want to aggregate over.", + "salutationId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "firstName": { "type": "string" }, - "interval": { - "description": "The interval of the histogram", - "type": "number" + "lastName": { + "type": "string" }, - "format": { - "description": "The format of the histogram", + "zipcode": { "type": "string" }, - "timeZone": { - "description": "The timezone of the histogram", + "city": { + "type": "string" + }, + "company": { + "type": "string" + }, + "street": { + "type": "string" + }, + "department": { + "type": "string" + }, + "title": { + "type": "string" + }, + "phoneNumber": { + "type": "string" + }, + "additionalAddressLine1": { "type": "string" + }, + "additionalAddressLine2": { + "type": "string" + }, + "customFields": { + "type": "object" + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "$ref": "#/components/schemas/CountryState" + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, - "required": [ - "name", - "type", - "field" - ] + "type": "object" }, - "AggregationRange": { - "title": "AggregationRange", - "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", + "CartPriceQuantity": { "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": [ - "range" + "cart_price_quantity" ] }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "isCalculated": { + "type": "boolean" }, - "ranges": { - "description": "The ranges of the aggregation", + "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", - "anyOf": [ - { - "type": "object", - "title": "From and to", - "properties": { - "from": { - "type": "number", - "description": "The lower bound of the range" - }, - "to": { - "type": "number", - "description": "The upper bound of the range" - } - }, - "required": [ - "from", - "to" - ] - }, - { - "type": "object", - "title": "From only", - "properties": { - "from": { - "type": "string", - "description": "The lower bound of the range" - } - }, - "required": [ - "from" - ] + "properties": { + "taxRate": { + "type": "number", + "format": "float" }, - { - "type": "object", - "title": "To only", - "properties": { - "to": { - "type": "string", - "description": "The upper bound of the range" - } - }, - "required": [ - "to" - ] + "name": { + "type": "string" } - ] + } } + }, + "type": { + "type": "string" } }, "required": [ - "name", - "type", - "field", - "ranges" + "apiAlias" ] }, - "CustomerAddressRead": { + "CrossSellingElement": { "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true + "crossSelling": { + "$ref": "#/components/schemas/ProductCrossSelling" }, - "customerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } }, - "createdAt": { - "type": "string", - "format": "date-time" + "total": { + "type": "integer", + "format": "int32" }, - "updatedAt": { + "streamId": { "type": "string", - "format": "date-time", - "nullable": true - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "$ref": "#/components/schemas/CountryState", - "nullable": true + "format": "uuid" }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "apiAlias": { + "type": "string", + "enum": [ + "cross_selling_element" + ] } }, "required": [ - "customerId", - "createdAt", - "updatedAt", - "country", - "salutation" + "crossSelling", + "products", + "total", + "apiAlias" ] }, - "SuccessResponse": { + "CartItems": { "type": "object", "properties": { - "success": { - "type": "boolean" - } - } - }, - "CrossSellingElementCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CrossSellingElement" - }, - "properties": { - "total": { - "description": "Number of cross selling elements found." + "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." + } + } } } }, @@ -15355,48 +15379,140 @@ } ], "paths": { - "/script/{hook}": { - "get": { + "/country-state/{countryId}": { + "post": { "tags": [ - "API", - "Script", - "App" + "System & Context", + "Endpoints supporting Criteria " ], - "summary": "Access point for different api logics which are provided by apps over script hooks", - "operationId": "getScriptStoreApiRoute", + "summary": "Fetch the states of a country", + "description": "Perform a filtered search the states for a country", + "operationId": "readCountryState", "parameters": [ { - "name": "hook", + "name": "countryId", "in": "path", - "description": "Dynamic hook which used to build the hook name", "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": "Returns different structures of results based on the called script.", + "description": "Entity search result containing countries.", "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": true, - "nullable": true + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CountryState" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } - }, - "application/vnd.api+json": { + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/search-suggest": { + "post": { + "tags": [ + "Product" + ], + "summary": "Search for products (suggest)", + "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", + "operationId": "searchSuggest", + "parameters": [ + { + "name": "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": [ + { + "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" + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", + "content": { + "application/json": { "schema": { - "type": "object", - "additionalProperties": true, - "nullable": true + "$ref": "#/components/schemas/ProductListingResult" } } } - }, - "204": { - "description": "No data by default" } }, "security": [ @@ -15404,48 +15520,141 @@ "ApiKey": [] } ] - }, + } + }, + "/product-listing/{categoryId}": { "post": { "tags": [ - "API", - "Script", - "App" + "Product" ], - "summary": "Access point for different api logics which are provided by apps over script hooks", - "operationId": "postScriptStoreApiRoute", + "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": "hook", + "name": "categoryId", "in": "path", - "description": "Dynamic hook which used to build the hook name", + "description": "Identifier of a category.", "required": true, "schema": { "type": "string" } + }, + { + "name": "sw-include-seo-urls", + "in": "header", + "description": "Determines if the response must contain a SeoUrl entity for a product entity", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "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": [ + { + "ApiKey": [] + } + ] + } + }, + "/category": { + "post": { + "tags": [ + "Category", + "Endpoints supporting Criteria " + ], + "summary": "Fetch a list of categories", + "description": "Perform a filtered search for categories.", + "operationId": "readCategoryList", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } + } + } + }, "responses": { "200": { - "description": "Returns different structures of results based on the called script.", + "description": "Entity search result containing categories.", "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": true, - "nullable": true - } - }, - "application/vnd.api+json": { - "schema": { - "type": "object", - "additionalProperties": true, - "nullable": true + "allOf": [ + { + "type": "object", + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + } + } + } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } - }, - "204": { - "description": "No data by default" } }, "security": [ @@ -15455,52 +15664,64 @@ ] } }, - "/document/download/{documentId}/{deepLinkCode}": { + "/category/{navigationId}": { "post": { "tags": [ - "Document", + "Category", "Endpoints supporting Criteria " ], - "summary": "Download generated document", - "description": "Returns blob file of a generated document to download.", - "operationId": "download", + "summary": "Fetch a single category", + "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.", + "operationId": "readCategory", "parameters": [ { - "name": "documentId", - "in": "path", - "required": true, + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } }, { - "name": "deepLinkCode", - "required": true, + "name": "navigationId", "in": "path", + "description": "Identifier of the category to be fetched", + "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, + "name": "slots", + "in": "query", + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } } ], "requestBody": { - "required": false, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Criteria" + }, + { + "$ref": "#/components/schemas/ProductListingCriteria" } ] } @@ -15509,11 +15730,11 @@ }, "responses": { "200": { - "description": "Returns the document information and blob to download.", + "description": "The loaded category with cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Document" + "$ref": "#/components/schemas/Category" } } } @@ -15521,22 +15742,32 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/newsletter-recipient": { + "/language": { "post": { "tags": [ - "Profile", - "Newsletter", - "Endpoints supporting Criteria" + "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": "Fetch newsletter recipients", - "description": "Perform a filtered search for newsletter recipients.", - "operationId": "readNewsletterRecipient", "requestBody": { "required": false, "content": { @@ -15553,11 +15784,29 @@ }, "responses": { "200": { - "description": "", + "description": "Entity search result containing languages.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AccountNewsletterRecipient" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + } + } + }, + "required": [ + "elements" + ], + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -15565,237 +15814,246 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/change-profile": { + "/media": { "post": { "tags": [ - "Profile" + "Content" ], - "summary": "Change the customer's information", - "description": "Make changes to a customer's account, like changing their name, salutation or title.", - "operationId": "changeProfile", + "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": [ - "salutationId", - "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" - }, - "company": { - "description": "Company of the customer. Only required when `accountType` is `business`.", - "type": "string" - }, - "birthdayDay": { - "description": "Birthday day", - "type": "integer" - }, - "birthdayMonth": { - "description": "Birthday month", - "type": "integer" - }, - "birthdayYear": { - "description": "Birthday year", - "type": "integer" + "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": { - "description": "Returns a success response indicating a successful update", + "description": "The loaded MediaCollection containing the requested Media Entities.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/Media" + } + } + } + } + }, + "404": { + "$ref": "#/components/responses/404" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/_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" + } + } + } + } + } } } } } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] + } } }, - "/account/change-email": { - "post": { + "/script/{hook}": { + "get": { "tags": [ - "Profile" + "API", + "Script", + "App" ], - "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" - } + "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" } } - }, + ], "responses": { "200": { - "description": "Returns a success response indicating a successful update", + "description": "Returns different structures of results based on the called script.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "type": "object", + "additionalProperties": true, + "nullable": true + } + }, + "application/vnd.api+json": { + "schema": { + "type": "object", + "additionalProperties": true, + "nullable": true } } } + }, + "204": { + "description": "No data by default" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] - } - }, - "/account/change-language": { + }, "post": { "tags": [ - "Profile" + "API", + "Script", + "App" ], - "summary": "Change the customer's language.", - "description": "Changes the language of the logged in customer", - "operationId": "changeLanguage", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "languageId" - ], - "properties": { - "language": { - "description": "New languageId", - "type": "string" - } - }, - "type": "object" - } + "summary": "Access point for different api logics which are provided by apps over script hooks", + "operationId": "postScriptStoreApiRoute", + "parameters": [ + { + "name": "hook", + "in": "path", + "description": "Dynamic hook which used to build the hook name", + "required": true, + "schema": { + "type": "string" } } - }, + ], "responses": { "200": { - "description": "Returns a success response indicating a successful update", + "description": "Returns different structures of results based on the called script.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "type": "object", + "additionalProperties": true, + "nullable": true + } + }, + "application/vnd.api+json": { + "schema": { + "type": "object", + "additionalProperties": true, + "nullable": true } } } + }, + "204": { + "description": "No data by default" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/change-password": { + "/product/{productId}/cross-selling": { "post": { "tags": [ - "Profile" + "Product" ], - "summary": "Change the customer's password", - "description": "Changes a customer's password using their current password as a validation.", - "operationId": "changePassword", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "password", - "newPassword", - "newPasswordConfirm" - ], - "properties": { - "password": { - "description": "Current password of the customer", - "type": "string" - }, - "newPassword": { - "description": "New Password for the customer", - "type": "string" - }, - "newPasswordConfirm": { - "description": "Confirmation of the new password", - "type": "string" - } - }, - "type": "object" - } + "summary": "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}$" } } - }, + ], "responses": { "200": { - "description": "Returns a success response indicating a successful update.", + "description": "Found cross sellings", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/CrossSellingElementCollection" } } } @@ -15803,38 +16061,71 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/change-payment-method/{paymentMethodId}": { + "/product/{productId}": { "post": { "tags": [ - "Profile" + "Product" ], - "summary": "Change the customer's default payment method", - "description": "Changes a customer's default (preselected) payment method.", - "operationId": "changePaymentMethod", + "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": "paymentMethodId", + "name": "productId", "in": "path", - "description": "Identifier of the desired default payment method", + "description": "Product 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}$" + } + }, + { + "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" + } + ] + } } } - ], + }, "responses": { "200": { - "description": "Returns a success response indicating a successful update.", + "description": "Product information along with variant groups and options", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/ProductDetailResponse" } } } @@ -15842,68 +16133,68 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/customer-recovery-is-expired": { + "/product": { "post": { "tags": [ - "Profile" + "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}$" + } + } ], - "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, + "required": false, "content": { "application/json": { "schema": { - "required": [ - "hash" - ], - "properties": { - "hash": { - "description": "Parameter from the link in the confirmation mail sent in Step 1", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Returns a CustomerRecoveryIsExpiredResponse that indicates if the hash is expired or not.", + "description": "Entity search result containing products", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "isExpired": { - "type": "boolean" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" } - }, - "required": [ - "isExpired" - ] - } + } + }, + "type": "object" }, - "apiAlias": { - "enum": [ - "array_struct" - ], - "type": "string" + { + "$ref": "#/components/schemas/EntitySearchResult" } - } + ] } } } @@ -15916,15 +16207,36 @@ ] } }, - "/account/customer": { + "/product/{productId}/reviews": { "post": { "tags": [ - "Profile", + "Product", "Endpoints supporting Criteria " ], - "summary": "Get information about current customer", - "description": "Returns information about the current customer.", - "operationId": "readCustomer", + "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}$" + } + } + ], "requestBody": { "required": false, "content": { @@ -15941,11 +16253,26 @@ }, "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": "Entity search result containing product reviews", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Customer" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductReview" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -15953,56 +16280,81 @@ }, "security": [ { - "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": [] + "ApiKey": [] } ] } }, - "/account/address/{addressId}": { - "delete": { + "/product/{productId}/review": { + "post": { "tags": [ - "Address" + "Product" ], - "summary": "Delete an address of a customer", - "description": "Delete an address of customer.\n\n Only addresses which are not set as default addresses for shipping or billing can be deleted. You can check the current default addresses of your customer using the profile information endpoint and change them using the default address endpoint.\n\n **A customer must have at least one address (which can be used for shipping and billing).**\n\n An automatic fallback is not applied.", - "operationId": "deleteCustomerAddress", + "summary": "Save a product review", + "description": "Saves a review for a product. Reviews have to be activated in the settings.", + "operationId": "saveProductReview", "parameters": [ { - "name": "addressId", + "name": "productId", "in": "path", - "description": "ID of the address to be deleted.", + "description": "Identifier of the product which is reviewed.", "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": { + "content": { + "application/json": { + "schema": { + "required": [ + "title", + "content", + "points" + ], + "properties": { + "name": { + "description": "The name of the review author. If not set, the first name of the customer is chosen.", + "type": "string" + }, + "email": { + "description": "The email address of the review author. If not set, the email of the customer is chosen.", + "type": "string" + }, + "title": { + "description": "The title of the review.", + "type": "string" + }, + "content": { + "description": "The content of review.", + "type": "string" + }, + "points": { + "description": "The review rating for the product.", + "type": "number", + "format": "double" + } + }, + "type": "object" + } + } + } + }, "responses": { - "204": { - "description": "No Content response, when the address has been deleted" - }, - "400": { - "description": "Response containing a list of errors, most likely due to the address being in use" + "200": { + "description": "Success response indicating the review was saved successfully." } }, "security": [ @@ -16011,22 +16363,34 @@ "ContextToken": [] } ] - }, - "patch": { + } + }, + "/product/{productId}/find-variant": { + "post": { "tags": [ - "Address" + "Product" ], - "summary": "Modify an address of a customer", - "description": "Modifies an existing address of a customer.", - "operationId": "updateCustomerAddress", + "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": "addressId", + "name": "productId", "in": "path", - "description": "Address ID", + "description": "Product ID", "required": true, "schema": { - "type": "string" + "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}$" } } ], @@ -16034,25 +16398,34 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerAddressBody" + "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" + } + }, + "type": "object" } } } }, "responses": { "200": { - "description": "", + "description": "Returns an FoundCombination struct containing the ids matching the search.", "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/CustomerAddress" - }, - { - "$ref": "#/components/schemas/CustomerAddressRead" - } - ] + "$ref": "#/components/schemas/FindProductVariantRouteResponse" } } } @@ -16060,21 +16433,49 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/list-address": { + "/document/download/{documentId}/{deepLinkCode}": { "post": { "tags": [ - "Address", + "Document", "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": "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", + "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": { @@ -16091,14 +16492,11 @@ }, "responses": { "200": { - "description": "", + "description": "Returns the document information and blob to download.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CustomerAddress" - } + "$ref": "#/components/schemas/Document" } } } @@ -16112,48 +16510,70 @@ ] } }, - "/account/login": { + "/search": { "post": { "tags": [ - "Login & Registration" + "Product" + ], + "summary": "Search for products", + "description": "Performs a search for products which can be used to display a product listing.", + "operationId": "searchPage", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "in": "header", + "name": "sw-include-seo-urls", + "required": false, + "schema": { + "type": "boolean" + } + } ], - "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" + "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" }, - "password": { - "description": "Password", - "type": "string" + { + "$ref": "#/components/schemas/ProductListingCriteria" + }, + { + "$ref": "#/components/schemas/ProductListingFlags" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "401": { - "description": "If credentials are incorrect an error is returned", + "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" } } } @@ -16166,97 +16586,99 @@ ] } }, - "/account/login/imitate-customer": { + "/shipping-method": { "post": { "tags": [ - "Login & Registration" + "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", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "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" + } + } ], - "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, + "required": false, "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" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "400": { - "description": "If the token is incorrect an error is returned", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/failure" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/account/logout": { - "post": { - "tags": [ - "Login & Registration" - ], - "summary": "Log out a customer", - "description": "Logs out a customer.", - "operationId": "logoutCustomer", - "responses": { - "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "403": { - "$ref": "#/components/responses/403" + "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" + } + ] + } + } + } } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/register-confirm": { + "/newsletter/confirm": { "post": { "tags": [ - "Login & Registration" + "Newsletter" ], - "summary": "Confirm a customer registration", - "description": "Confirms a customer registration when double opt-in is activated.\n\nLearn more about double opt-in registration in our guide \"Register a customer\".", - "operationId": "registerConfirm", + "summary": "Confirm a newsletter registration", + "description": "You have to use the hash from the link sent out via email to confirm the user registration.", + "operationId": "confirmNewsletter", "requestBody": { "required": true, "content": { @@ -16268,11 +16690,11 @@ ], "properties": { "hash": { - "description": "Hash from the email received", + "description": "Hash parameter from link the in the confirmation mail", "type": "string" }, "em": { - "description": "Email hash from the email received", + "description": "Email hash parameter from the link in the confirmation mail", "type": "string" } }, @@ -16283,13 +16705,7 @@ }, "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": "The newsletter confirmation was successful." } }, "security": [ @@ -16299,152 +16715,73 @@ ] } }, - "/account/register": { + "/newsletter/subscribe": { "post": { "tags": [ - "Login & Registration" + "Newsletter" ], - "summary": "Register a customer", - "description": "Registers a customer. Used both for normal customers and guest customers.See the Guide \"Register a customer\" for more information on customer registration.", - "operationId": "register", + "summary": "Create or remove a newsletter subscription", + "description": "This route is used to create/remove/confirm a newsletter subscription.\n\nThe `option` property controls what should happen:\n* `direct`: The subscription is directly active and does not need a confirmation.\n* `subscribe`: An email will be send to the provided email address containing a link to the /newsletter/confirm route.\nThe subscription is only successful, if the /newsletter/confirm route is called with the generated hashes.\n* `unsubscribe`: The email address will be removed from the newsletter subscriptions.\n* `confirmSubscribe`: Confirms the newsletter subscription for the provided email address.", + "operationId": "subscribeToNewsletter", "requestBody": { "required": true, "content": { "application/json": { "schema": { + "required": [ + "email", + "option", + "storefrontUrl" + ], "properties": { "email": { - "description": "Email of the customer. Has to be unique, unless `guest` is `true`", + "description": "Email address that will receive the confirmation and the newsletter.", "type": "string" }, - "password": { - "description": "Password for the customer. Required, unless `guest` is `true`", + "option": { + "description": "Defines what should be done.", "type": "string" }, - "salutationId": { - "description": "Id of the salutation for the customer account. Fetch options using `salutation` endpoint.", + "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": "Customer first name. Value will be reused for shipping and billing address if not provided explicitly.", + "description": "First name", "type": "string" }, "lastName": { - "description": "Customer last name. Value will be reused for shipping and billing address if not provided explicitly.", + "description": "Last name", "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.", + "street": { + "description": "Street", "type": "string" }, - "billingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "shippingAddress": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "accountType": { - "description": "Account type of the customer which can be either `private` or `business`.", - "type": "string", - "default": "private" - }, - "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", + "city": { + "description": "City", "type": "string" }, - "affiliateCode": { - "description": "Field can be used to store an affiliate tracking code", + "zipCode": { + "description": "Zip 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" - ], - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Customer" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/account/recovery-password-confirm": { - "post": { - "tags": [ - "Profile" - ], - "summary": "Reset a password with recovery credentials", - "description": "This operation is Step 2 of the password reset flow. It is required to conduct Step 1 \"Send a password recovery mail\" in order to obtain the required credentials for this step.Resets a customer's password using credentials from a password recovery mail as a validation.", - "operationId": "recoveryPassword", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "hash", - "newPassword", - "newPasswordConfirm" - ], - "properties": { - "hash": { - "description": "Parameter from the link in the confirmation mail sent in Step 1", + "tags": { + "description": "Zip code", "type": "string" }, - "newPassword": { - "description": "New password for the customer", - "type": "string" + "languageId": { + "description": "Identifier of the language.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "newPasswordConfirm": { - "description": "Confirmation of the new password", + "customFields": { + "description": "Custom field data that should be added to the subscription.", "type": "string" } }, @@ -16455,14 +16792,7 @@ }, "responses": { "200": { - "description": "Returns a success response indicating a successful update.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } + "description": "Success" } }, "security": [ @@ -16472,30 +16802,25 @@ ] } }, - "/account/recovery-password": { + "/newsletter/unsubscribe": { "post": { "tags": [ - "Profile" + "Newsletter" ], - "summary": "Send a password recovery mail", - "description": "This operation is Step 1 of the password reset flow. Make sure to implement Step 2 \"Reset password with recovery credentials\" in order to allow for the complete flow in your application. Sends a recovery mail containing a link with credentials that allows a customer to reset their password.", - "operationId": "sendRecoveryMail", + "summary": "Remove a newsletter subscription", + "description": "Removes a newsletter recipient from the mailing lists.", + "operationId": "unsubscribeToNewsletter", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "email", - "storefrontUrl" + "email" ], "properties": { "email": { - "description": "E-Mail address to identify the customer", - "type": "string" - }, - "storefrontUrl": { - "description": "URL of the storefront to use for the generated reset link. It has to be a domain that is configured in the sales channel domain settings.", + "description": "Email address that should be removed from the mailing lists.", "type": "string" } }, @@ -16506,14 +16831,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.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } + "description": "Unsubscribing was successful." } }, "security": [ @@ -16522,101 +16840,135 @@ } ] } - }, - "/account/address/default-shipping/{addressId}": { - "patch": { - "tags": [ - "Address" - ], - "summary": "Change a customer's default shipping address", - "description": "Updates the default (preselected) shipping addresses of a customer.", - "operationId": "defaultShippingAddress", - "parameters": [ - { - "name": "addressId", - "in": "path", - "description": "Address ID", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "" - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/account/address/default-billing/{addressId}": { - "patch": { + }, + "/payment-method": { + "post": { "tags": [ - "Address" + "Payment Method", + "Endpoints supporting Criteria " ], - "summary": "Change a customer's default billing address", - "description": "Updates the default (preselected) billing addresses of a customer.", - "operationId": "defaultBillingAddress", + "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": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + }, + { + "properties": { + "onlyAvailable": { + "description": "List only available", + "type": "boolean" + } + }, + "type": "object" + } + ] + } + } + } + }, "responses": { "200": { - "description": "" + "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": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/address": { + "/handle-payment": { "post": { "tags": [ - "Address" + "Payment & Shipping" ], - "summary": "Create a new address for a customer", - "description": "Creates a new address for a customer.", - "operationId": "createCustomerAddress", + "summary": "Initiate a payment for an order", + "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order.", + "operationId": "handlePaymentMethod", "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerAddress" + "required": [ + "orderId" + ], + "properties": { + "orderId": { + "description": "Identifier of an order", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "finishUrl": { + "description": "URL to which the client should be redirected after successful payment", + "type": "string" + }, + "errorUrl": { + "description": "URL to which the client should be redirected after erroneous payment", + "type": "string" + } + }, + "type": "object" } } } }, "responses": { "200": { - "description": "", + "description": "Redirect to external payment provider", "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/CustomerAddress" - }, - { - "$ref": "#/components/schemas/CustomerAddressRead" + "type": "object", + "properties": { + "redirectUrl": { + "type": "string" } + }, + "required": [ + "redirectUrl" ] } } @@ -16625,8 +16977,7 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } @@ -16880,15 +17231,53 @@ ] } }, - "/shipping-method": { + "/product-export/{accessKey}/{fileName}": { + "get": { + "tags": [ + "Product" + ], + "summary": "Export product export", + "operationId": "readProductExport", + "parameters": [ + { + "name": "accessKey", + "in": "path", + "description": "Access Key", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "fileName", + "in": "path", + "description": "File Name", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/contact-form": { "post": { "tags": [ - "Payment & Shipping", - "Endpoints supporting Criteria " + "Content" ], - "summary": "Fetch shipping methods", - "description": "Perform a filtered search for shipping methods.", - "operationId": "readShippingMethod", + "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", @@ -16899,65 +17288,78 @@ "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, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "", - "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" - } - ] - } + "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." + } + }, "security": [ { "ApiKey": [] @@ -16965,56 +17367,91 @@ ] } }, - "/customer/wishlist/add/{productId}": { - "post": { + "/breadcrumb/{id}": { + "get": { "tags": [ - "Wishlist" + "Experimental", + "Breadcrumb" ], - "summary": "Add a product to a wishlist", - "description": "Adds a product to a customers wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "addProductOnWishlist", + "summary": "Fetch a breadcrumb", + "description": "Perform search to get category or product breadcrumb. \n\nExperimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", + "operationId": "readBreadcrumb", "parameters": [ { - "name": "productId", + "name": "id", "in": "path", - "description": "Identifier of the product to be added.", + "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}$" + } } ], "responses": { "200": { - "description": "Returns a success response.", + "description": "Search result containing SeoUrl\\'s to be used as breadcrumb.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/BreadcrumbCollection" } } } + }, + "400": { + "$ref": "#/components/responses/400" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/customer/wishlist": { + "/landing-page/{landingPageId}": { "post": { "tags": [ - "Wishlist", + "Content", "Endpoints supporting Criteria " ], - "summary": "Fetch a wishlist", - "description": "Fetch a customer's wishlist. Products on the wishlist can be filtered using a criteria object.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "readCustomerWishlist", + "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", @@ -17027,13 +17464,28 @@ } ], "requestBody": { - "required": false, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Criteria" + }, + { + "allOf": [ + { + "properties": { + "slots": { + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/ProductListingCriteria" + } + ] } ] } @@ -17042,60 +17494,41 @@ }, "responses": { "200": { - "description": "", + "description": "The loaded landing page with cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WishlistLoadRouteResponse" + "$ref": "#/components/schemas/LandingPage" } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/customer/wishlist/merge": { - "post": { + "/context": { + "get": { "tags": [ - "Wishlist" + "System & Context" ], - "summary": "Create a wishlist for a customer", - "description": "Create a new wishlist for a logged in customer or extend the existing wishlist given a set of products.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * A customer can only have a single wishlist.\n * The wishlist feature has to be activated.", - "operationId": "mergeProductOnWishlist", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "properties": { - "productIds": { - "description": "List product id", - "type": "array", - "items": { - "description": "product id", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - }, - "type": "object" - } - } - } - }, + "summary": "Fetch the current context", + "description": "Fetches the current context. This includes for example the `customerGroup`, `currency`, `taxRules` and many more.", + "operationId": "readContext", "responses": { "200": { - "description": "Returns a success response.", + "description": "Returns the current context.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/SalesChannelContext" } } } @@ -17103,58 +17536,77 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] - } - }, - "/customer/wishlist/delete/{productId}": { - "delete": { + }, + "patch": { "tags": [ - "Wishlist" + "System & Context" ], - "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}$" + "summary": "Modify the current context", + "description": "Used for switching the context. A typical example would be changing the language or changing the currency.", + "operationId": "updateContext", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "currencyId": { + "description": "Currency", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "languageId": { + "description": "Language", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "billingAddressId": { + "description": "Billing Address", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingAddressId": { + "description": "Shipping Address", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "paymentMethodId": { + "description": "Payment Method", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingMethodId": { + "description": "Shipping Method", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryId": { + "description": "Country", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryStateId": { + "description": "Country State", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "type": "object" + } } } - ], + }, "responses": { "200": { - "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" - } - } - } + "$ref": "#/components/responses/ContextTokenResponse" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } @@ -17234,21 +17686,63 @@ ] } }, - "/context": { - "get": { + "/salutation": { + "post": { "tags": [ - "System & Context" + "System & Context", + "Endpoints supporting Criteria " ], - "summary": "Fetch the current context", - "description": "Fetches the current context. This includes for example the `customerGroup`, `currency`, `taxRules` and many more.", - "operationId": "readContext", + "summary": "Fetch 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}$" + } + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } + } + } + }, "responses": { "200": { - "description": "Returns the current context.", + "description": "Entity search result containing salutations.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SalesChannelContext" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Salutation" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -17259,199 +17753,202 @@ "ApiKey": [] } ] - }, - "patch": { + } + }, + "/account/newsletter-recipient": { + "post": { "tags": [ - "System & Context" + "Profile", + "Newsletter", + "Endpoints supporting Criteria" ], - "summary": "Modify the current context", - "description": "Used for switching the context. A typical example would be changing the language or changing the currency.", - "operationId": "updateContext", + "summary": "Fetch newsletter recipients", + "description": "Perform a filtered search for newsletter recipients.", + "operationId": "readNewsletterRecipient", "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "properties": { - "currencyId": { - "description": "Currency", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "languageId": { - "description": "Language", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "billingAddressId": { - "description": "Billing Address", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shippingAddressId": { - "description": "Shipping Address", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "paymentMethodId": { - "description": "Payment Method", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shippingMethodId": { - "description": "Shipping Method", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryId": { - "description": "Country", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryStateId": { - "description": "Country State", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AccountNewsletterRecipient" + } + } + } } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/contact-form": { + "/account/change-profile": { "post": { "tags": [ - "Content" - ], - "summary": "Submit a contact form message", - "description": "Used for submitting contact forms. Be aware that there can be more required fields, depending on the system settings.", - "operationId": "sendContactMail", - "parameters": [ - { - "name": "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 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": [ "salutationId", - "email", - "subject", - "comment" + "firstName", + "lastName" ], "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", + "description": "Id of the salutation for the customer account. Fetch options using `salutation` endpoint.", "type": "string" }, - "phone": { - "description": "Phone. This field may be required depending on the system settings.", + "title": { + "description": "(Academic) title of the customer", "type": "string" }, - "subject": { - "description": "The subject of the contact form.", + "firstName": { + "description": "Customer first name. Value will be reused for shipping and billing address if not provided explicitly.", "type": "string" }, - "comment": { - "description": "The message of the contact form", + "lastName": { + "description": "Customer last name. Value will be reused for shipping and billing address if not provided explicitly.", "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}$" + "birthdayDay": { + "description": "Birthday day", + "type": "integer" }, - "cmsPageType": { - "description": "Type of the content management page", - "type": "string" + "birthdayMonth": { + "description": "Birthday month", + "type": "integer" }, - "entityName": { - "description": "Entity name for slot config", - "type": "string" + "birthdayYear": { + "description": "Birthday year", + "type": "integer" } }, - "type": "object" + "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": "Message sent successful." + "description": "Returns a success response indicating a successful update", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/newsletter/confirm": { + "/account/change-email": { "post": { "tags": [ - "Newsletter" + "Profile" ], - "summary": "Confirm a newsletter registration", - "description": "You have to use the hash from the link sent out via email to confirm the user registration.", - "operationId": "confirmNewsletter", + "summary": "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": [ - "hash", - "em" + "email", + "emailConfirmation", + "password" ], "properties": { - "hash": { - "description": "Hash parameter from link the in the confirmation mail", + "email": { + "description": "New email address. Has to be unique amongst all customers", "type": "string" }, - "em": { - "description": "Email hash parameter from the link in the confirmation mail", + "emailConfirmation": { + "description": "Confirmation of the new email address.", + "type": "string" + }, + "password": { + "description": "Customer's current password", "type": "string" } }, @@ -17462,83 +17959,43 @@ }, "responses": { "200": { - "description": "The newsletter confirmation was successful." + "description": "Returns a success response indicating a successful update", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/newsletter/subscribe": { + "/account/change-language": { "post": { "tags": [ - "Newsletter" + "Profile" ], - "summary": "Create or remove a newsletter subscription", - "description": "This route is used to create/remove/confirm a newsletter subscription.\n\nThe `option` property controls what should happen:\n* `direct`: The subscription is directly active and does not need a confirmation.\n* `subscribe`: An email will be send to the provided email address containing a link to the /newsletter/confirm route.\nThe subscription is only successful, if the /newsletter/confirm route is called with the generated hashes.\n* `unsubscribe`: The email address will be removed from the newsletter subscriptions.\n* `confirmSubscribe`: Confirms the newsletter subscription for the provided email address.", - "operationId": "subscribeToNewsletter", + "summary": "Change the customer's language.", + "description": "Changes the language of the logged in customer", + "operationId": "changeLanguage", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "email", - "option", - "storefrontUrl" + "languageId" ], "properties": { - "email": { - "description": "Email address that will receive the confirmation and the newsletter.", - "type": "string" - }, - "option": { - "description": "Defines what should be done.", - "type": "string" - }, - "storefrontUrl": { - "description": "Url of the storefront of the shop. This will be used for generating the link to the /newsletter/confirm inside the confirm email.", - "type": "string" - }, - "salutationId": { - "description": "Identifier of the salutation.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "description": "First name", - "type": "string" - }, - "lastName": { - "description": "Last name", - "type": "string" - }, - "street": { - "description": "Street", - "type": "string" - }, - "city": { - "description": "City", - "type": "string" - }, - "zipCode": { - "description": "Zip code", - "type": "string" - }, - "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.", + "language": { + "description": "New languageId", "type": "string" } }, @@ -17549,35 +18006,53 @@ }, "responses": { "200": { - "description": "Success" + "description": "Returns a success response indicating a successful update", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/newsletter/unsubscribe": { + "/account/change-password": { "post": { "tags": [ - "Newsletter" + "Profile" ], - "summary": "Remove a newsletter subscription", - "description": "Removes a newsletter recipient from the mailing lists.", - "operationId": "unsubscribeToNewsletter", + "summary": "Change the customer's password", + "description": "Changes a customer's password using their current password as a validation.", + "operationId": "changePassword", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "email" + "password", + "newPassword", + "newPasswordConfirm" ], "properties": { - "email": { - "description": "Email address that should be removed from the mailing lists.", + "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" } }, @@ -17588,76 +18063,119 @@ }, "responses": { "200": { - "description": "Unsubscribing was successful." + "description": "Returns a success response indicating a successful update.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/language": { + "/account/change-payment-method/{paymentMethodId}": { "post": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Profile" ], - "summary": "Fetch languages", - "description": "Perform a filtered search for languages.", - "operationId": "readLanguages", + "summary": "Change the customer's default payment method", + "description": "Changes a customer's default (preselected) payment method.", + "operationId": "changePaymentMethod", "parameters": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "name": "paymentMethodId", + "in": "path", + "description": "Identifier of the desired default payment method", + "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns a success response indicating a successful update.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } } } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/account/customer-recovery-is-expired": { + "post": { + "tags": [ + "Profile" ], + "summary": "Checks if the customer recovery entry for a given hash is expired.", + "description": "This can be used to validate a provided hash has a valid and not expired customer recovery hash.", + "operationId": "getCustomerRecoveryIsExpired", "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "hash" + ], + "properties": { + "hash": { + "description": "Parameter from the link in the confirmation mail sent in Step 1", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "Entity search result containing languages.", + "description": "Returns a CustomerRecoveryIsExpiredResponse that indicates if the hash is expired or not.", "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Language" + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "isExpired": { + "type": "boolean" } - } - }, - "required": [ - "elements" - ], - "type": "object" + }, + "required": [ + "isExpired" + ] + } }, - { - "$ref": "#/components/schemas/EntitySearchResult" + "apiAlias": { + "enum": [ + "array_struct" + ], + "type": "string" } - ] + } } } } @@ -17670,43 +18188,23 @@ ] } }, - "/payment-method": { + "/account/customer": { "post": { "tags": [ - "Payment Method", + "Profile", "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}$" - } - } - ], + "summary": "Get information about current customer", + "description": "Returns information about the current customer.", + "operationId": "readCustomer", "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Criteria" - }, - { - "properties": { - "onlyAvailable": { - "description": "List only available", - "type": "boolean" - } - }, - "type": "object" } ] } @@ -17715,27 +18213,11 @@ }, "responses": { "200": { - "description": "", + "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": { - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PaymentMethod" - } - } - }, - "type": "object" + "$ref": "#/components/schemas/Customer" } } } @@ -17743,165 +18225,105 @@ }, "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": [] } ] } }, - "/app-system/{name}/generate-token": { - "post": { + "/account/address/{addressId}": { + "delete": { "tags": [ - "App system" + "Address" ], - "summary": "Generate JWT token for app system backend", - "description": "Generate JWT token for authenticated communication with the app server", - "operationId": "generateJWTAppSystemAppServer", + "summary": "Delete an address of a customer", + "description": "Delete an address of customer.\n\n Only addresses which are not set as default addresses for shipping or billing can be deleted. You can check the current default addresses of your customer using the profile information endpoint and change them using the default address endpoint.\n\n **A customer must have at least one address (which can be used for shipping and billing).**\n\n An automatic fallback is not applied.", + "operationId": "deleteCustomerAddress", "parameters": [ { + "name": "addressId", "in": "path", - "name": "name", + "description": "ID of the address to be deleted.", "required": true, - "description": "Name of the app", "schema": { "type": "string" } } ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "type": "object" - } - } - } - }, "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "token": { - "type": "string" - }, - "expires": { - "type": "string", - "format": "date-time" - }, - "shopId": { - "type": "string" - } - } - } - } - } + "204": { + "description": "No Content response, when the address has been deleted" + }, + "400": { + "description": "Response containing a list of errors, most likely due to the address being in use" } }, "security": [ { - "ApiKey": [] + "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" - } - } - } - } - } - } - } + }, + "patch": { + "tags": [ + "Address" + ], + "summary": "Modify an address of a customer", + "description": "Modifies an existing address of a customer.", + "operationId": "updateCustomerAddress", + "parameters": [ + { + "name": "addressId", + "in": "path", + "description": "Address ID", + "required": true, + "schema": { + "type": "string" } } - } - } - }, - "/handle-payment": { - "post": { - "tags": [ - "Payment & Shipping" ], - "summary": "Initiate a payment for an order", - "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order.", - "operationId": "handlePaymentMethod", "requestBody": { - "required": true, "content": { "application/json": { "schema": { - "required": [ - "orderId" - ], - "properties": { - "orderId": { - "description": "Identifier of an order", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "finishUrl": { - "description": "URL to which the client should be redirected after successful payment", - "type": "string" - }, - "errorUrl": { - "description": "URL to which the client should be redirected after erroneous payment", - "type": "string" - } - }, - "type": "object" + "$ref": "#/components/schemas/CustomerAddressBody" } } } }, "responses": { "200": { - "description": "Redirect to external payment provider", + "description": "", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/CustomerAddress" + }, + { + "$ref": "#/components/schemas/CustomerAddressRead" } - }, - "required": [ - "redirectUrl" ] } } @@ -17910,32 +18332,21 @@ }, "security": [ { - "ApiKey": [] - } - ] - } - }, - "/category": { - "post": { - "tags": [ - "Category", - "Endpoints supporting Criteria " - ], - "summary": "Fetch a list of categories", - "description": "Perform a filtered search for categories.", - "operationId": "readCategoryList", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "ApiKey": [], + "ContextToken": [] } + ] + } + }, + "/account/list-address": { + "post": { + "tags": [ + "Address", + "Endpoints supporting Criteria " ], + "summary": "Fetch addresses of a customer", + "description": "Lists all addresses of the current customer and allows filtering them based on a criteria.", + "operationId": "listAddress", "requestBody": { "required": false, "content": { @@ -17952,26 +18363,14 @@ }, "responses": { "200": { - "description": "Entity search result containing categories.", + "description": "", "content": { "application/json": { "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - } - } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomerAddress" + } } } } @@ -17979,82 +18378,54 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/category/{navigationId}": { + "/account/login": { "post": { "tags": [ - "Category", - "Endpoints supporting Criteria " - ], - "summary": "Fetch a single category", - "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.", - "operationId": "readCategory", - "parameters": [ - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "navigationId", - "in": "path", - "description": "Identifier of the category to be fetched", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "slots", - "in": "query", - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", - "schema": { - "type": "string" - } - } + "Login & Registration" ], + "summary": "Log in a customer", + "description": "Logs in customers given their credentials.", + "operationId": "loginCustomer", "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "username", + "password" + ], + "properties": { + "username": { + "description": "Email", + "type": "string" }, - { - "$ref": "#/components/schemas/ProductListingCriteria" + "password": { + "description": "Password", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "The loaded category with cms page", + "$ref": "#/components/responses/ContextTokenResponse" + }, + "401": { + "description": "If credentials are incorrect an error is returned", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Category" + "$ref": "#/components/schemas/failure" } } } @@ -18067,67 +18438,53 @@ ] } }, - "/product-listing/{categoryId}": { + "/account/login/imitate-customer": { "post": { "tags": [ - "Product" - ], - "summary": "Fetch a product listing by category", - "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.", - "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": "Determines if the response must contain a SeoUrl entity for a product entity", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } + "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": { - "allOf": [ - { - "$ref": "#/components/schemas/ProductListingCriteria" + "required": [ + "token", + "customerId", + "userId" + ], + "properties": { + "token": { + "description": "Generated customer impersonation token", + "type": "string" }, - { - "$ref": "#/components/schemas/ProductListingFlags" + "customerId": { + "description": "ID of the customer", + "type": "string" + }, + "userId": { + "description": "ID of the user who generated the token", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", + "$ref": "#/components/responses/ContextTokenResponse" + }, + "400": { + "description": "If the token is incorrect an error is returned", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "$ref": "#/components/schemas/failure" } } } @@ -18140,71 +18497,71 @@ ] } }, - "/cms/{id}": { + "/account/logout": { "post": { "tags": [ - "Content" + "Login & Registration" ], - "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}$" - } + "summary": "Log out a customer", + "description": "Logs out a customer.", + "operationId": "logoutCustomer", + "responses": { + "200": { + "$ref": "#/components/responses/ContextTokenResponse" }, + "403": { + "$ref": "#/components/responses/403" + } + }, + "security": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "ApiKey": [], + "ContextToken": [] } + ] + } + }, + "/account/register-confirm": { + "post": { + "tags": [ + "Login & Registration" ], + "summary": "Confirm a customer registration", + "description": "Confirms a customer registration when double opt-in is activated.\n\nLearn more about double opt-in registration in our guide \"Register a customer\".", + "operationId": "registerConfirm", "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "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" + "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": "The loaded cms page", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CmsPage" - } - } - } + "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": { - "$ref": "#/components/responses/404" + "description": "No hash provided" + }, + "412": { + "description": "The customer has already been confirmed" } }, "security": [ @@ -18214,111 +18571,154 @@ ] } }, - "/salutation": { + "/account/register": { "post": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " - ], - "summary": "Fetch salutations", - "description": "Fetches salutations with a criteria obj.", - "operationId": "readSalutation", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } + "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": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "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" } - ] - } - } - } - }, - "responses": { - "200": { - "description": "Entity search result containing salutations.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Salutation" - } - } + }, + "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" }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" + "company": { + "type": "null" + }, + "vatIds": { + "type": "null" + } } - ] - } + }, + { + "required": [ + "accountType", + "company", + "vatIds" + ], + "properties": { + "accountType": { + "description": "Type of the customer account. Can be `private` or `business`.", + "type": "string", + "enum": [ + "business" + ] + }, + "company": { + "description": "Company of the customer. Only required when `accountType` is `business`.", + "type": "string" + }, + "vatIds": { + "description": "VAT IDs of the customer's company. Only valid when `accountType` is `business`.", + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + } + } + } + ], + "type": "object" } } } }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/product/{productId}/cross-selling": { - "post": { - "tags": [ - "Product" - ], - "summary": "Fetch cross-selling groups of a product", - "description": "This route is used to load the cross sellings for a product. A product has several cross selling definitions in which several products are linked. The route returns the cross sellings together with the linked products", - "operationId": "readProductCrossSellings", - "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Product ID", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "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": "Found cross sellings", + "description": "Success", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CrossSellingElementCollection" + "$ref": "#/components/schemas/Customer" } } } @@ -18331,66 +18731,50 @@ ] } }, - "/product/{productId}": { + "/account/recovery-password-confirm": { "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": "Reset a password with recovery credentials", + "description": "This operation is Step 2 of the password reset flow. It is required to conduct Step 1 \"Send a password recovery mail\" in order to obtain the required credentials for this step.Resets a customer's password using credentials from a password recovery mail as a validation.", + "operationId": "recoveryPassword", "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "hash", + "newPassword", + "newPasswordConfirm" + ], + "properties": { + "hash": { + "description": "Parameter from the link in the confirmation mail sent in Step 1", + "type": "string" + }, + "newPassword": { + "description": "New password for the customer", + "type": "string" + }, + "newPasswordConfirm": { + "description": "Confirmation of the new password", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "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" } } } @@ -18403,63 +18787,45 @@ ] } }, - "/product": { + "/account/recovery-password": { "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": "Send a password recovery mail", + "description": "This operation is Step 1 of the password reset flow. Make sure to implement Step 2 \"Reset password with recovery credentials\" in order to allow for the complete flow in your application. Sends a recovery mail containing a link with credentials that allows a customer to reset their password.", + "operationId": "sendRecoveryMail", "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "email", + "storefrontUrl" + ], + "properties": { + "email": { + "description": "E-Mail address to identify the customer", + "type": "string" + }, + "storefrontUrl": { + "description": "URL of the storefront to use for the generated reset link. It has to be a domain that is configured in the sales channel domain settings.", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "Entity search result containing products", + "description": "If email corresponds to an existing customer, a mail will be sent out to that customer containing a link assembled using the following schema:\n\nReturns a success indicating a successful initialisation of the reset flow.", "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -18472,156 +18838,106 @@ ] } }, - "/product/{productId}/reviews": { - "post": { + "/account/address/default-shipping/{addressId}": { + "patch": { "tags": [ - "Product", - "Endpoints supporting Criteria " + "Address" ], - "summary": "Fetch product reviews", - "description": "Perform a filtered search for product reviews.", - "operationId": "readProductReviews", + "summary": "Change a customer's default shipping address", + "description": "Updates the default (preselected) shipping addresses of a customer.", + "operationId": "defaultShippingAddress", "parameters": [ { - "name": "productId", + "name": "addressId", "in": "path", - "description": "Identifier of the product.", + "description": "Address ID", "required": true, "schema": { "type": "string" } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } } ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } - } - } - }, "responses": { "200": { - "description": "Entity search result containing product reviews", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductReview" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } + "description": "" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/product/{productId}/review": { - "post": { + "/account/address/default-billing/{addressId}": { + "patch": { "tags": [ - "Product" + "Address" ], - "summary": "Save a product review", - "description": "Saves a review for a product. Reviews have to be activated in the settings.", - "operationId": "saveProductReview", + "summary": "Change a customer's default billing address", + "description": "Updates the default (preselected) billing addresses of a customer.", + "operationId": "defaultBillingAddress", "parameters": [ { - "name": "productId", + "name": "addressId", "in": "path", - "description": "Identifier of the product which is reviewed.", + "description": "Address ID", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } - }, + } + ], + "responses": { + "200": { + "description": "" + } + }, + "security": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "ApiKey": [], + "ContextToken": [] } + ] + } + }, + "/account/address": { + "post": { + "tags": [ + "Address" ], + "summary": "Create a new address for a customer", + "description": "Creates a new address for a customer.", + "operationId": "createCustomerAddress", "requestBody": { "content": { "application/json": { "schema": { - "required": [ - "title", - "content", - "points" - ], - "properties": { - "name": { - "description": "The name of the review author. If not set, the first name of the customer is chosen.", - "type": "string" - }, - "email": { - "description": "The email address of the review author. If not set, the email of the customer is chosen.", - "type": "string" - }, - "title": { - "description": "The title of the review.", - "type": "string" - }, - "content": { - "description": "The content of review.", - "type": "string" - }, - "points": { - "description": "The review rating for the product.", - "type": "number", - "format": "double" - } - }, - "type": "object" + "$ref": "#/components/schemas/CustomerAddress" + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/CustomerAddress" + }, + { + "$ref": "#/components/schemas/CustomerAddressRead" + } + ] + } } } } }, - "responses": { - "200": { - "description": "Success response indicating the review was saved successfully." - } - }, "security": [ { "ApiKey": [], @@ -18630,67 +18946,33 @@ ] } }, - "/product/{productId}/find-variant": { + "/customer/wishlist/add/{productId}": { "post": { "tags": [ - "Product" + "Wishlist" ], - "summary": "Search for a matching variant by product options.", - "description": "Performs a search for product variants and returns the best matching variant.", - "operationId": "searchProductVariantIds", + "summary": "Add a product to a wishlist", + "description": "Adds a product to a customers wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "addProductOnWishlist", "parameters": [ { "name": "productId", "in": "path", - "description": "Product ID", + "description": "Identifier of the product to be added.", "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "required": [ - "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" - } - }, - "type": "object" - } - } - } - }, "responses": { "200": { - "description": "Returns an FoundCombination struct containing the ids matching the search.", + "description": "Returns a success response.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/FindProductVariantRouteResponse" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -18698,19 +18980,21 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/sitemap": { - "get": { + "/customer/wishlist": { + "post": { "tags": [ - "Sitemap & Routes" + "Wishlist", + "Endpoints supporting Criteria " ], - "summary": "Fetch sitemaps", - "description": "Fetches a list of compressed sitemap files, which are often used by search engines.", - "operationId": "readSitemap", + "summary": "Fetch a wishlist", + "description": "Fetch a customer's wishlist. Products on the wishlist can be filtered using a criteria object.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "readCustomerWishlist", "parameters": [ { "name": "sw-language-id", @@ -18723,16 +19007,27 @@ } } ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } + } + } + }, "responses": { "200": { - "description": "Returns a list of available sitemaps.", + "description": "", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Sitemap" - } + "$ref": "#/components/schemas/WishlistLoadRouteResponse" } } } @@ -18740,55 +19035,48 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/sitemap/{filePath}": { - "get": { + "/customer/wishlist/merge": { + "post": { "tags": [ - "Sitemap & Routes" + "Wishlist" ], - "summary": "Download sitemap file", - "description": "Downloads the sitemap file from the configured sitemap storage.", - "operationId": "getSitemapFile", - "parameters": [ - { - "name": "filePath", - "in": "path", - "description": "The path to the sitemap file", - "required": true, - "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}$" + "summary": "Create a wishlist for a customer", + "description": "Create a new wishlist for a logged in customer or extend the existing wishlist given a set of products.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * A customer can only have a single wishlist.\n * The wishlist feature has to be activated.", + "operationId": "mergeProductOnWishlist", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "productIds": { + "description": "List product id", + "type": "array", + "items": { + "description": "product id", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + }, + "type": "object" + } } } - ], + }, "responses": { "200": { - "description": "Returns the blob to download.", + "description": "Returns a success response.", "content": { - "application/xml": { - "schema": { - "type": "string", - "format": "binary" - } - }, - "application/gzip": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -18796,25 +19084,26 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/checkout/cart": { - "get": { + "/customer/wishlist/delete/{productId}": { + "delete": { "tags": [ - "Cart" + "Wishlist" ], - "summary": "Fetch or create a cart", - "description": "Used to fetch the current cart or for creating a new one.", - "operationId": "readCart", + "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": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "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}$" @@ -18823,36 +19112,21 @@ ], "responses": { "200": { - "description": "Cart", + "description": "Returns a success response indicating a successful removal.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "$ref": "#/components/schemas/SuccessResponse" } } } - } - }, - "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", + }, + "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/SuccessResponse" + "$ref": "#/components/schemas/failure" } } } @@ -18860,20 +19134,60 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/checkout/cart/line-item": { + "/_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" + } + } + } + }, + "/cms/{id}": { "post": { "tags": [ - "Cart" + "Content" ], - "summary": "Add items to the cart", - "description": "This route adds items to the cart. An item can be a product or promotion for example. They are referenced by the `referencedId`-parameter.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#adding-new-items-to-the-cart)", - "operationId": "addLineItem", + "summary": "Fetch 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", @@ -18889,21 +19203,37 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CartItems" + "allOf": [ + { + "properties": { + "slots": { + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/ProductListingCriteria" + } + ] } } } }, "responses": { "200": { - "description": "The updated cart.", + "description": "The loaded cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "$ref": "#/components/schemas/CmsPage" } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -18911,27 +19241,24 @@ "ApiKey": [] } ] - }, - "delete": { + } + }, + "/customer-group-registration/config/{customerGroupId}": { + "get": { "tags": [ - "Cart" + "Login & Registration" ], - "summary": "Remove items from the cart", - "description": "DEPRECATED: use removeLineItem instead. This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", - "operationId": "removeLineItemDeprecated", - "deprecated": true, + "summary": "Fetch registration settings for customer group", + "operationId": "getCustomerGroupRegistrationInfo", "parameters": [ { - "name": "ids", - "in": "query", - "description": "A list of product identifiers.", + "name": "customerGroupId", + "in": "path", + "description": "Customer group id", "required": true, "schema": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, { @@ -18947,11 +19274,11 @@ ], "responses": { "200": { - "description": "The updated cart.", + "description": "Returns the customer group including registration settings.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "$ref": "#/components/schemas/CustomerGroup" } } } @@ -18962,63 +19289,27 @@ "ApiKey": [] } ] - }, - "patch": { + } + }, + "/navigation/{activeId}/{rootId}": { + "post": { "tags": [ - "Cart" + "Category", + "Endpoints supporting Criteria " ], - "summary": "Update items in the cart", - "description": "This route updates items in the cart. A typical example is updating the quantity of an item.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#updating-items-in-the-cart)", - "operationId": "updateLineItem", + "summary": "Fetch a navigation menu", + "description": "This endpoint returns categories that can be used as a page navigation. You can either return them as a tree or as a flat list. You can also control the depth of the tree.\n\n Instead of passing uuids, you can also use one of the following aliases for the activeId and rootId parameters to get the respective navigations of your sales channel.\n\n * main-navigation\n * service-navigation\n * footer-navigation", + "operationId": "readNavigation", "parameters": [ { - "name": "sw-language-id", + "name": "sw-include-seo-urls", "in": "header", - "description": "Instructs Shopware to return the response in the given language.", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", "required": false, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CartItems" - } - } - } - }, - "responses": { - "200": { - "description": "The updated cart.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Cart" - } - } + "type": "boolean" } - } - }, - "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", @@ -19028,6 +19319,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": { @@ -19035,32 +19360,39 @@ "content": { "application/json": { "schema": { - "required": [ - "ids" - ], - "properties": { - "ids": { - "description": "A list of product identifiers.", - "type": "array", - "minItems": 1, - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "allOf": [ + { + "$ref": "#/components/schemas/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" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "The updated cart.", + "description": "All available navigations", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "$ref": "#/components/schemas/NavigationRouteResponse" } } } @@ -19073,14 +19405,15 @@ ] } }, - "/checkout/order": { + "/currency": { "post": { "tags": [ - "Order" + "System & Context", + "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 currencies", + "description": "Perform a filtered search for currencies.", + "operationId": "readCurrency", "parameters": [ { "name": "sw-language-id", @@ -19094,122 +19427,41 @@ } ], "requestBody": { - "description": "Contains additional metadata which is stored together with the order. It can also contain payment transaction details.", + "required": false, "content": { "application/json": { "schema": { - "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" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "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", + "description": "Entity search result containing currencies.", "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": { + "allOf": [ + { "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/ShippingMethod" + "$ref": "#/components/schemas/Currency" } } }, "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" - } - } - } + { + "$ref": "#/components/schemas/EntitySearchResult" } - } + ] } } } @@ -19222,52 +19474,57 @@ ] } }, - "/media": { + "/app-system/{name}/generate-token": { "post": { "tags": [ - "Content" + "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": "Fetch and resolve Media Entities", - "description": "Fetch one or multiple Media Entities with the corresponding Identifier.", - "operationId": "readMedia", "requestBody": { + "required": false, "content": { "application/json": { "schema": { - "properties": { - "ids": { - "description": "Identifier (UUID) of the media entity to be fetched.", - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - }, - "type": "object", - "required": [ - "ids" - ] + "type": "object" } } } }, "responses": { "200": { - "description": "The loaded MediaCollection containing the requested Media Entities.", + "description": "", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Media" + "type": "object", + "properties": { + "token": { + "type": "string" + }, + "expires": { + "type": "string", + "format": "date-time" + }, + "shopId": { + "type": "string" + } } } } } - }, - "404": { - "$ref": "#/components/responses/404" } }, "security": [ @@ -19277,15 +19534,15 @@ ] } }, - "/currency": { + "/country": { "post": { "tags": [ "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch currencies", - "description": "Perform a filtered search for currencies.", - "operationId": "readCurrency", + "summary": "Fetch countries", + "description": "Perform a filtered search for countries", + "operationId": "readCountry", "parameters": [ { "name": "sw-language-id", @@ -19314,7 +19571,7 @@ }, "responses": { "200": { - "description": "Entity search result containing currencies.", + "description": "Entity search result containing countries.", "content": { "application/json": { "schema": { @@ -19324,7 +19581,7 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Currency" + "$ref": "#/components/schemas/Country" } } }, @@ -19346,25 +19603,79 @@ ] } }, - "/landing-page/{landingPageId}": { - "post": { + "/checkout/cart": { + "get": { "tags": [ - "Content", - "Endpoints supporting Criteria " + "Cart" ], - "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", + "summary": "Fetch or create a cart", + "description": "Used to fetch the current cart or for creating a new one.", + "operationId": "readCart", "parameters": [ { - "name": "landingPageId", - "in": "path", - "description": "Identifier of the landing page.", - "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": "Cart", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Cart" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + }, + "delete": { + "tags": [ + "Cart" + ], + "summary": "Delete a cart", + "description": "This route deletes the cart of the customer.", + "operationId": "deleteCart", + "responses": { + "204": { + "description": "Successfully deleted the cart", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/checkout/cart/line-item": { + "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", @@ -19380,44 +19691,21 @@ "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" - } - ] - } - ] + "$ref": "#/components/schemas/CartItems" } } } }, "responses": { "200": { - "description": "The loaded landing page with cms page", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LandingPage" + "$ref": "#/components/schemas/Cart" } } } - }, - "404": { - "$ref": "#/components/responses/404" } }, "security": [ @@ -19425,24 +19713,27 @@ "ApiKey": [] } ] - } - }, - "/customer-group-registration/config/{customerGroupId}": { - "get": { + }, + "delete": { "tags": [ - "Login & Registration" + "Cart" ], - "summary": "Fetch registration settings for customer group", - "operationId": "getCustomerGroupRegistrationInfo", + "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": "customerGroupId", - "in": "path", - "description": "Customer group id", + "name": "ids", + "in": "query", + "description": "A list of product identifiers.", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } }, { @@ -19458,11 +19749,11 @@ ], "responses": { "200": { - "description": "Returns the customer group including registration settings.", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerGroup" + "$ref": "#/components/schemas/Cart" } } } @@ -19473,16 +19764,14 @@ "ApiKey": [] } ] - } - }, - "/search": { - "post": { + }, + "patch": { "tags": [ - "Product" + "Cart" ], - "summary": "Search for products", - "description": "Performs a search for products which can be used to display a product listing.", - "operationId": "searchPage", + "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", @@ -19493,52 +19782,24 @@ "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": { "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/CartItems" } } } }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "$ref": "#/components/schemas/Cart" } } } @@ -19551,25 +19812,15 @@ ] } }, - "/country-state/{countryId}": { + "/checkout/cart/line-item/delete": { "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": "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": "countryId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, { "name": "sw-language-id", "in": "header", @@ -19582,110 +19833,39 @@ } ], "requestBody": { - "required": false, + "required": true, "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" + "required": [ + "ids" + ], + "properties": { + "ids": { + "description": "A list of product identifiers.", + "type": "array", + "minItems": 1, + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } - ] - } + } + }, + "type": "object" } } } }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/breadcrumb/{id}": { - "get": { - "tags": [ - "Experimental", - "Breadcrumb" - ], - "summary": "Fetch a breadcrumb", - "description": "Perform search to get category or product breadcrumb. \n\nExperimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", - "operationId": "readBreadcrumb", - "parameters": [ - { - "name": "id", - "in": "path", - "description": "UUID for product or category", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "type", - "in": "query", - "description": "Type: category or product (optional - default: product)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "product", - "category" - ] - } - }, - { - "name": "referrerCategoryId", - "in": "query", - "description": "UUID for referrer category only used for product breadcrumb", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], "responses": { "200": { - "description": "Search result containing SeoUrl\\'s to be used as breadcrumb.", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BreadcrumbCollection" + "$ref": "#/components/schemas/Cart" } } } - }, - "400": { - "$ref": "#/components/responses/400" } }, "security": [ @@ -19695,44 +19875,14 @@ ] } }, - "/_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" - } - } - } - }, - "/country": { + "/checkout/order": { "post": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Order" ], - "summary": "Fetch countries", - "description": "Perform a filtered search for countries", - "operationId": "readCountry", + "summary": "Create an order from a cart", + "description": "Creates a new order from the current cart and deletes the cart.\n\nIf you are using the [prepared payment flow](https://developer.shopware.com/docs/concepts/commerce/checkout-concept/payments#2.1-prepare-payment-optional), this endpoint also receives additional transaction details. The exact name of the parameters depends on the implementation of the corresponding *payment handler*.", + "operationId": "createOrder", "parameters": [ { "name": "sw-language-id", @@ -19746,41 +19896,122 @@ } ], "requestBody": { - "required": false, + "description": "Contains additional metadata which is stored together with the order. It can also contain payment transaction details.", "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "properties": { + "customerComment": { + "description": "Adds a comment from the customer to the order.", + "type": "string" + }, + "affiliateCode": { + "description": "The affiliate code can be used to track which referrer the customer came through. An example could be `Price-comparison-company-XY`.", + "type": "string" + }, + "campaignCode": { + "description": "The campaign code is used to track which action the customer came from. An example could be `Summer-Deals`", + "type": "string" } - ] + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Order", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Order" + } } } } }, + "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": "Entity search result containing countries.", + "description": "Checkout gateway response", "content": { "application/json": { "schema": { - "allOf": [ - { + "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/Country" + "$ref": "#/components/schemas/ShippingMethod" } } }, "type": "object" }, - { - "$ref": "#/components/schemas/EntitySearchResult" + "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" + } + } + } } - ] + } } } } @@ -19793,14 +20024,14 @@ ] } }, - "/search-suggest": { - "post": { + "/sitemap": { + "get": { "tags": [ - "Product" + "Sitemap & Routes" ], - "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 sitemaps", + "description": "Fetches a list of compressed sitemap files, which are often used by search engines.", + "operationId": "readSitemap", "parameters": [ { "name": "sw-language-id", @@ -19813,39 +20044,16 @@ } } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "required": [ - "search" - ], - "properties": { - "search": { - "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/ProductListingFlags" - } - ] - } - } - } - }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", + "description": "Returns a list of available sitemaps.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "type": "array", + "items": { + "$ref": "#/components/schemas/Sitemap" + } } } } @@ -19858,62 +20066,23 @@ ] } }, - "/product-export/{accessKey}/{fileName}": { + "/sitemap/{filePath}": { "get": { "tags": [ - "Product" + "Sitemap & Routes" ], - "summary": "Export product export", - "operationId": "readProductExport", + "summary": "Download sitemap file", + "description": "Downloads the sitemap file from the configured sitemap storage.", + "operationId": "getSitemapFile", "parameters": [ { - "name": "accessKey", - "in": "path", - "description": "Access Key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "fileName", + "name": "filePath", "in": "path", - "description": "File Name", + "description": "The path to the sitemap file", "required": true, "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "" - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/navigation/{activeId}/{rootId}": { - "post": { - "tags": [ - "Category", - "Endpoints supporting Criteria " - ], - "summary": "Fetch a navigation menu", - "description": "This endpoint returns categories that can be used as a page navigation. You can either return them as a tree or as a flat list. You can also control the depth of the tree.\n\n Instead of passing uuids, you can also use one of the following aliases for the activeId and rootId parameters to get the respective navigations of your sales channel.\n\n * main-navigation\n * service-navigation\n * footer-navigation", - "operationId": "readNavigation", - "parameters": [ - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, - "schema": { - "type": "boolean" + "type": "string", + "pattern": ".*\\.(xml|gz)$" } }, { @@ -19925,80 +20094,22 @@ "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": { - "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" - } - ] - } - } - } - }, "responses": { "200": { - "description": "All available navigations", + "description": "Returns the blob to download.", "content": { - "application/json": { + "application/xml": { "schema": { - "$ref": "#/components/schemas/NavigationRouteResponse" + "type": "string", + "format": "binary" + } + }, + "application/gzip": { + "schema": { + "type": "string", + "format": "binary" } } } From 7c009c10abdc9468ae13c4e0ea92b996540a52ac Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 7 May 2025 10:26:14 +0200 Subject: [PATCH 25/35] [create-pull-request] automated change (#320) Co-authored-by: shopwareBot --- storeapi.json | 12417 ++++++++++++++++++++++++------------------------ 1 file changed, 6220 insertions(+), 6197 deletions(-) diff --git a/storeapi.json b/storeapi.json index 190a523..14fdc56 100644 --- a/storeapi.json +++ b/storeapi.json @@ -7,7 +7,7 @@ "name": "MIT", "url": "https://github.com/shopware/shopware/blob/trunk/LICENSE" }, - "version": "6.6.10.1" + "version": "6.6.10.4" }, "servers": [ { @@ -2769,6 +2769,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." @@ -5150,6 +5154,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." @@ -11149,201 +11157,46 @@ }, "type": "object" }, - "BreadcrumbCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Breadcrumb" - } - }, - "CartDeliveryInformation": { + "AccountNewsletterRecipient": { "type": "object", "properties": { - "apiAlias": { + "status": { "type": "string", "enum": [ - "cart_delivery_information" + "undefined", + "notSet", + "direct", + "optIn", + "optOut" ] }, - "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" + "apiAlias": { + "type": "string", + "enum": [ + "account_newsletter_recipient" + ] } }, "required": [ + "status", "apiAlias" ] }, - "CalculatedPrice": { + "ProductListingFlags": { "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", + "description": "Additional flags for product listings", "properties": { - "unitPrice": { - "type": "number" - }, - "quantity": { - "type": "number" - }, - "rawTotal": { - "type": "number" - }, - "totalPrice": { - "type": "number" - }, - "calculatedTaxes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } - }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] - }, - "positionPrice": { - "type": "number" - }, - "netPrice": { - "type": "number" - }, - "regulationPrice": { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - }, - "nullable": true - }, - "hasRange": { - "type": "boolean" - }, - "variantId": { + "no-aggregations": { + "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", "type": "string", - "format": "^[0-9a-f]{32}$", "nullable": true }, - "apiAlias": { + "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", - "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" - } - } - } + "nullable": true } - }, - "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "referencePrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitPrice", - "positionPrice", - "netPrice", - "taxRules" - ] + } }, "NavigationRouteResponse": { "type": "array", @@ -11356,1736 +11209,1640 @@ } } }, - "SalesChannelContext": { + "Criteria": { "type": "object", + "description": "Criteria to query entities.", "properties": { - "token": { - "description": "Context the user session", + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", "type": "string" }, - "currentCustomerGroup": { - "type": "object", - "description": "Customer group of the current user", + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + }, "properties": { - "name": { - "type": "string", - "description": "Name of customer group to which the customer belongs within the specific sales channel they are currently interacting with." + "type": { + "description": "To filter the results and aggregations with filter types like ==, >=, etc." }, - "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." + "field": { + "description": "To filter the results and aggregations by field like an property identifier." + }, + "value": { + "description": "To filter the results and aggregations by value." } } }, - "fallbackCustomerGroup": { - "description": "Fallback group if the default customer group is not applicable", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" } }, - "currency": { - "$ref": "#/components/schemas/Currency", + "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" + } + }, + "associations": { + "$ref": "#/components/schemas/Associations" + }, + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + }, "properties": { - "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." + "type": { + "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." }, - "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." + "field": { + "description": "To filter only the results but not the aggregations by field like an property identifier." }, - "isSystemDefault": { - "description": "Runtime field, cannot be used as part of the criteria." + "value": { + "description": "To filter only the results but not the aggregations by value." } } }, - "salesChannel": { - "description": "Information about the current sales channel", - "type": "object", + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + }, "properties": { - "typeId": { - "type": "string", - "description": "Unique identity of a sales channel's type within a specific sales channel." - }, - "languageId": { - "type": "string", - "description": "Unique identity of a sales channel's language within a specific sales channel." - }, - "currencyId": { - "type": "string", - "description": "Unique identity of a sales channel's currency within a specific sales channel." - }, - "paymentMethodId": { - "type": "string", - "description": "Unique identity of a sales channel's payment method within a specific sales channel." + "field": { + "description": "Sort the search results by field like an property identifier." }, - "shippingMethodId": { - "type": "string", - "description": "Unique identity of a sales channel's shipping method within a specific sales channel." + "order": { + "description": "Sort the search results of orders by ascending or descending." }, - "countryId": { - "type": "string", - "description": "Unique identity of a sales channel's country within a specific sales channel." + "naturalSorting": { + "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." + } + } + }, + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } + }, + "fields": { + "type": "array", + "description": "Fields which should be returned in the search result.", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" + } + } + }, + "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": [ + { + "$ref": "#/components/schemas/AggregationEntity" }, - "navigationCategoryId": { - "type": "string", - "description": "Unique identity of a sales channel's navigation category within a specific sales channel." + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationFilter", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationFilter" }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32", - "description": "It determines the number of levels of subcategories in the storefront category menu within a specific sales channel." + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationTerms", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationTerms" }, - "footerCategoryId": { - "type": "string", - "description": "Unique identity of a sales channel's footer category within a specific sales channel." + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" }, - "serviceCategoryId": { - "type": "string", - "description": "Unique identity of a sales channel's service category within a specific sales channel." + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationRange", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationRange" }, - "name": { - "type": "string", - "description": "Name of the sales channel." + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + } + ] + }, + "SubAggregations": { + "type": "object", + "properties": { + "aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" }, - "shortName": { - "type": "string", - "description": "A short name for sales channel." + { + "$ref": "#/components/schemas/AggregationEntity" }, - "accessKey": { - "type": "string", - "description": "Access key to store api." + { + "$ref": "#/components/schemas/AggregationFilter" }, - "active": { - "type": "boolean", - "description": "When `true`, the sales channel is enabled." + { + "$ref": "#/components/schemas/AggregationTerms" }, - "maintenance": { - "type": "boolean", - "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." + { + "$ref": "#/components/schemas/AggregationHistogram" }, - "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." - }, - "customerGroupId": { - "type": "string", - "description": "Unique identity of a sales channel's customer group within a specific sales channel." + { + "$ref": "#/components/schemas/AggregationRange" + } + ] + } + } + }, + "TotalCountMode": { + "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", + "type": "string", + "default": "none", + "enum": [ + "none", + "exact", + "next-pages" + ] + }, + "Query": { + "type": "object", + "properties": { + "score": { + "type": "number" + }, + "query": { + "oneOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "hreflangActive": { - "type": "boolean", - "description": "When `true`, the sales channel pages are available in different languages within a specific sales channel." + { + "$ref": "#/components/schemas/EqualsFilter" }, - "hreflangDefaultDomainId": { - "type": "string", - "description": "Unique identity of a sales channel's hreflangDefaultDomain within a specific sales channel." + { + "$ref": "#/components/schemas/MultiNotFilter" }, - "analyticsId": { - "type": "string", - "description": "Unique identity of a sales channel's analytics within a specific sales channel." + { + "$ref": "#/components/schemas/RangeFilter" } - } + ] + } + }, + "additionalProperties": true + }, + "Sort": { + "type": "object", + "properties": { + "field": { + "type": "string" }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } + "order": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + }, + "naturalSorting": { + "type": "boolean" + }, + "type": { + "type": "string" + } + }, + "required": [ + "field", + "order" + ] + }, + "Filters": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "properties": { - "taxRate": { - "description": "Rate of tax within a specific sales channel." - }, - "name": { - "description": "Name defined for a Tax within a specific sales channel." - } + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } + ] + } + }, + "SimpleFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "contains", + "equalsAny", + "prefix", + "suffix" + ] }, - "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." - }, - "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." + "field": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": [ + "type", + "field", + "value" + ] + }, + "EqualsFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "equals" + ] + }, + "field": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "type": "string" }, - "defaultBillingAddressId": { - "description": "Unique identity of customer's default billing address within a specific sales channel." + { + "type": "number" }, - "defaultShippingAddressId": { - "description": "Unique identity of customer's default shipping address within a specific sales channel." + { + "type": "boolean" }, - "customerNumber": { - "description": "Name of the customer within a specific sales channel the customer is interacting." + { + "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" }, - "salutationId": { - "description": "Unique identity of customer's default shipping address within a specific sales channel." + "gt": { + "type": "number" }, - "firstName": { - "description": "First name of the customer within a specific sales channel." + "lte": { + "type": "number" }, - "lastName": { - "description": "Last name of the customer within a specific sales channel." - }, - "company": { - "description": "Company name of the customer within a specific sales channel." - }, - "password": { - "description": "Password of the customer within a specific sales channel." - }, - "email": { - "description": "Email of the customer within a specific sales channel." - }, - "title": { - "description": "Customer's title or honorifics like Mr, Mrs, etc within a specific sales channel." - }, - "affiliateCode": { - "description": "An affiliate code is an identification option with which website operators can mark outgoing links within a specific sales channel." - }, - "campaignCode": { - "description": "A unique identifier for a campaign within a specific sales channel." - }, - "active": { - "description": "When `true`, the status of the customer is set active within a specific sales channel." - }, - "doubleOptInRegistration": { - "description": "When `true`, user subscriptions to an email marketing list is allowed within a specific sales channel." - }, - "doubleOptInEmailSentDate": { - "description": "Date and time when the double opt-in email was sent within a specific sales channel." - }, - "doubleOptInConfirmDate": { - "description": "Date and time when the double opt-in email was confirmed within a specific sales channel." - }, - "hash": { - "description": "Password hash for account recovery within a specific sales channel." - }, - "guest": { - "description": "Boolean value is `true` for a guest account within a specific sales channel." - }, - "firstLogin": { - "description": "Captures date and time of customer's first login within a specific sales channel." - }, - "lastLogin": { - "description": "Captures date and time of customer's last login within a specific sales channel." - }, - "newsletter": { - "description": "When `true`, then the customer gets subscribe to the newsletter" - }, - "birthday": { - "description": "Captures customer's birthday details within a specific sales channel." - }, - "lastOrderDate": { - "description": "Captures customer's last order date within a specific sales channel." - }, - "orderCount": { - "description": "Captures the number of orders placed by a customer within a specific sales channel." - }, - "legacyEncoder": { - "description": "encapsulates shop credentials when needed to migrate shop system from old instance to new instance" - }, - "legacyPassword": { - "description": "Hashed password of the old shop system" - }, - "autoIncrement": { - "description": "Internal field. " - }, - "remoteAddress": { - "description": "Anonymous IP address of the customer for last session." - } - } - }, - "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethod", - "properties": { - "pluginId": { - "description": "Unique identity of payment plugin within a specific sales channel." - }, - "handlerIdentifier": { - "description": "Internal field that contains system identifier details for payment methods like Paypal." - }, - "name": { - "description": "Name of the payment method within a specific sales channel." - }, - "description": { - "description": "A short description about the payment method within a specific sales channel." - }, - "position": { - "description": "The order of the tabs of your defined payment methods in the storefront by entering numerical values like 1,2,3, etc within a specific sales channel." - }, - "active": { - "description": "When `true`, the payment method is available for usage within a specific sales channel." - }, - "availabilityRuleId": { - "description": "Unique identity of the rule for the payment method." - }, - "mediaId": { - "description": "Unique identity of media used in payment method within a specific sales channel." - }, - "formattedHandlerIdentifier": { - "description": "Internal field that contains system identifier details for payment methods like Paypal." - } - } - }, - "shippingLocation": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" - } - } - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod", - "properties": { - "name": { - "description": "Name of the shipping method within a specific sales channel." - }, - "active": { - "description": "When `true`, the shipping method is available for usage within a specific sales channel." - }, - "description": { - "description": "A short description about the shipping method within a specific sales channel." - }, - "trackingUrl": { - "description": "URL that allows to track packages for a specific sales channel." - }, - "deliveryTimeId": { - "description": "Unique identity of deliveryTime within a specific sales channel." - }, - "availabilityRuleId": { - "description": "Unique identity of the rule for the payment method." - }, - "mediaId": { - "description": "Unique identity of media used in shipping method within a specific sales channel." - } - } - }, - "context": { - "description": "Core context with general configuration values and state", - "type": "object", - "properties": { - "versionId": { - "type": "string", - "description": "Unique identity of context's version in a specific sales channel." - }, - "currencyId": { - "type": "string", - "description": "Unique identity of currency context in a specific sales channel." - }, - "currencyFactor": { - "type": "integer", - "description": "Unique identity of currency factor context in a specific sales channel." - }, - "currencyPrecision": { - "type": "integer", - "format": "int32", - "description": "It defines the round off value of currency to the nearest decimal point. If set to 2, it rounds off to two significant decimal points." - }, - "languageIdChain": { - "type": "array", - "items": { - "type": "string" - } - }, - "scope": { - "type": "string", - "description": "Scope defines if its related to system or user context." - }, - "source": { - "type": "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." + "lt": { + "type": "number" } } } - } + }, + "required": [ + "type", + "field", + "parameters" + ] }, - "Criteria": { - "type": "object", - "description": "Criteria to query entities.", - "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "term": { - "description": "Search term", - "type": "string" - }, - "limit": { - "description": "Number of items per result page", - "type": "integer" - }, - "filter": { - "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" + "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" }, - { - "$ref": "#/components/schemas/EqualsFilter" + "min": { + "type": "integer", + "format": "int32" }, - { - "$ref": "#/components/schemas/MultiNotFilter" + "max": { + "type": "integer", + "format": "int32" }, - { - "$ref": "#/components/schemas/RangeFilter" + "unit": { + "type": "string" } - ] + } }, - "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." + "translations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + } + } } - } - }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" - } - }, - "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" - } - }, - "associations": { - "$ref": "#/components/schemas/Associations" - }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" + }, + "orderDeliveries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "orderId": { + "type": "string" + }, + "shippingOrderAddressId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "shippingDateEarliest": { + "type": "string", + "format": "date-time" + }, + "shippingDateLatest": { + "type": "string", + "format": "date-time" + }, + "stateId": { + "type": "string" + } + } + } + }, + "salesChannelDefaultAssignments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } + } + }, + "salesChannels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } + } + }, + "availabilityRule": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - { - "$ref": "#/components/schemas/EqualsFilter" + "description": { + "type": "string" }, - { - "$ref": "#/components/schemas/MultiNotFilter" + "priority": { + "type": "integer", + "format": "int32" }, - { - "$ref": "#/components/schemas/RangeFilter" + "invalid": { + "type": "boolean" } - ] - }, - "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." + "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." }, - "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" - } + "active": { + "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" + "description": { + "description": "The order of the tabs of your defined shipping methods in the storefront by entering numerical values like 1,2,3, etc." }, - "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" + "deliveryTimeId": { + "description": "Unique identity of the delivery time." }, - { - "title": "AggregationEntity", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationEntity" + "deliveryTime": { + "properties": { + "name": { + "description": "Name given to delivery time." }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationFilter", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationFilter" + "min": { + "description": "Minimum delivery time taken." }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationTerms", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationTerms" + "max": { + "description": "Maximum delivery time taken." }, - { - "$ref": "#/components/schemas/SubAggregations" + "unit": { + "description": "Unit in which the delivery time is defined. For example, days or hours." } - ] + } }, - { - "title": "AggregationHistogram", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationHistogram" + "translations": { + "properties": { + "shippingMethodId": { + "description": "Unique identity of shipping method." }, - { - "$ref": "#/components/schemas/SubAggregations" + "name": { + "description": "Name of the shipping method." + }, + "description": { + "description": "A short description of the shipping method." } - ] + } }, - { - "title": "AggregationRange", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationRange" + "orderDeliveries": { + "properties": { + "orderId": { + "description": "Unique identity of order." }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - } - ] - }, - "SubAggregations": { - "type": "object", - "properties": { - "aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" + "shippingOrderAddressId": { + "description": "Unique identity of shipping order address." }, - { - "$ref": "#/components/schemas/AggregationEntity" + "shippingMethodId": { + "description": "Unique identity of shipping method." }, - { - "$ref": "#/components/schemas/AggregationFilter" + "shippingDateEarliest": { + "description": "Date and time of earliest delivery of products." }, - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/AggregationHistogram" + "shippingDateLatest": { + "description": "Date and time of latest delivery of products." }, - { - "$ref": "#/components/schemas/AggregationRange" + "stateId": { + "description": "Unique identity of state." } - ] - } - } - }, - "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" + "salesChannelDefaultAssignments": { + "properties": { + "stateId": { + "description": "Unique identity of state." }, - { - "$ref": "#/components/schemas/EqualsFilter" + "languageId": { + "description": "Unique identity of language." }, - { - "$ref": "#/components/schemas/MultiNotFilter" + "currencyId": { + "description": "Unique identity of currency." }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "additionalProperties": true - }, - "Sort": { - "type": "object", - "properties": { - "field": { - "type": "string" - }, - "order": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - }, - "naturalSorting": { - "type": "boolean" - }, - "type": { - "type": "string" - } - }, - "required": [ - "field", - "order" - ] - }, - "Filters": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "SimpleFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "contains", - "equalsAny", - "prefix", - "suffix" - ] - }, - "field": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "required": [ - "type", - "field", - "value" - ] - }, - "EqualsFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "equals" - ] - }, - "field": { - "type": "string" - }, - "value": { - "oneOf": [ - { - "type": "string" + "paymentMethodId": { + "description": "Unique identity of payment method." }, - { - "type": "number" + "shippingMethodId": { + "description": "Unique identity of shipping method." }, - { - "type": "boolean" + "countryId": { + "description": "Unique identity of country." }, - { - "type": "null" + "navigationCategoryId": { + "description": "Unique identity of navigation category." + }, + "navigationCategoryDepth": { + "description": "It determines the number of levels of subcategories in the storefront category menu." + }, + "footerCategoryId": { + "description": "Unique identity of footer category." + }, + "serviceCategoryId": { + "description": "Unique identity of service category." + }, + "name": { + "description": "Name of the sales channel." + }, + "shortName": { + "description": "A short name for sales channel." + }, + "accessKey": { + "description": "Access key to store api." + }, + "active": { + "description": "When boolean value is `true`, the shipping methods are available for selection in the sales channel's storefront." + }, + "maintenance": { + "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." + }, + "maintenanceIpWhitelist": { + "description": "Array of IP address allowed to access the sales channel." + }, + "mailHeaderFooterId": { + "description": "Unique identity of mail header and footer." + }, + "customerGroupId": { + "description": "Unique identity of customer group." + }, + "hreflangActive": { + "description": "When boolean value is `true`, the sales channel pages are available in different languages." + }, + "hreflangDefaultDomainId": { + "description": "Unique identity of hreflangDefaultDomain." } - ] - } - }, - "required": [ - "type", - "field", - "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", + "salesChannels": { "properties": { - "gte": { - "type": "number" + "stateId": { + "description": "Unique identity of state." }, - "gt": { - "type": "number" + "languageId": { + "description": "Unique identity of language." }, - "lte": { - "type": "number" + "currencyId": { + "description": "Unique identity of currency." }, - "lt": { - "type": "number" + "paymentMethodId": { + "description": "Unique identity of payment method." + }, + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "countryId": { + "description": "Unique identity of country." + }, + "navigationCategoryId": { + "description": "Unique identity of navigation category." + }, + "navigationCategoryDepth": { + "description": "It determines the number of levels of subcategories in the storefront category menu." + }, + "footerCategoryId": { + "description": "Unique identity of footer category." + }, + "serviceCategoryId": { + "description": "Unique identity of service category." + }, + "name": { + "description": "Name of the sales channel." + }, + "shortName": { + "description": "A short name for sales channel." + }, + "accessKey": { + "description": "Access key to store api." + }, + "active": { + "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." + }, + "maintenance": { + "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." + }, + "maintenanceIpWhitelist": { + "description": "Array of IP address allowed to access the sales channel." + }, + "mailHeaderFooterId": { + "description": "Unique identity of mail header and footer." + }, + "customerGroupId": { + "description": "Unique identity of customer group." + }, + "hreflangActive": { + "description": "When boolean value is `true``, the sales channel pages are available in different languages." + }, + "hreflangDefaultDomainId": { + "description": "Unique identity of hreflangDefaultDomain." } } - } - }, - "required": [ - "type", - "field", - "parameters" - ] - }, - "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" - }, + "availabilityRule": { "properties": { - "key": { - "description": "Unique key for every message." + "name": { + "description": "Unique name for the rule." }, - "level": { - "description": "Types of level - Notice, warning and error. " + "description": { + "description": "A short description about the rule." }, - "message": { - "description": "A persistent error passed from the shopping cart calculation processes to the user end." + "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." } } }, - "deliveries": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDelivery" - } + "availabilityRuleId": { + "description": "Unique identity of availability rule." }, - "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" - } - } - }, + "prices": { "properties": { - "paymentMethodId": { - "description": "Unique identity of payment method." + "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." } } }, - "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 + "mediaId": { + "description": "Unique identity of media." }, - "campaignCode": { - "type": "string", - "description": "A campaign tracking code", - "nullable": true + "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." + } + } }, - "id": { - "description": "Unique identity of cart." + "tags": { + "properties": { + "name": { + "description": "Name of the tag." + } + } } } }, - "ProductListingFlags": { + "SuccessResponse": { "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 + "success": { + "type": "boolean" } } }, - "CustomerAddressRead": { + "CartError": { "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "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": { - "type": "string", - "format": "date-time", - "nullable": true - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "$ref": "#/components/schemas/CountryState", - "nullable": true - }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "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" + } + } + } + } + }, + "AggregationEntity": { + "title": "AggregationEntity", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "entity" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "definition": { + "description": "The entity definition e.g \"product_manufacturer\".", + "type": "string" } }, "required": [ - "customerId", - "createdAt", - "updatedAt", - "country", - "salutation" + "name", + "type", + "field", + "definition" ] }, - "CartListPrice": { + "AggregationFilter": { + "title": "AggregationFilter", "type": "object", - "description": "", "properties": { - "discount": { - "type": "number" + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "percentage": { - "type": "number" + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "filter" + ] }, - "price": { + "filter": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Filters" + } + } + }, + "required": [ + "name", + "type", + "filter" + ] + }, + "AggregationTerms": { + "title": "AggregationTerms", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "terms" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "limit": { + "description": "The number of terms to return", "type": "number" }, - "apiAlias": { + "sort": { + "type": "array", + "description": "Sorting the aggregation result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "AggregationHistogram": { + "title": "AggregationHistogram", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", "type": "string", "enum": [ - "cart_list_price" + "histogram" ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "interval": { + "description": "The interval of the histogram", + "type": "number" + }, + "format": { + "description": "The format of the histogram", + "type": "string" + }, + "timeZone": { + "description": "The timezone of the histogram", + "type": "string" } }, "required": [ - "apiAlias" + "name", + "type", + "field" ] }, - "ShippingMethodPageRouteResponse": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "deliveryTimeId": { - "type": "string" - }, - "deliveryTime": { + "AggregationRange": { + "title": "AggregationRange", + "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "range" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "ranges": { + "description": "The ranges of the aggregation", + "type": "array", + "items": { "type": "object", - "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer", - "format": "int32" + "anyOf": [ + { + "type": "object", + "title": "From and to", + "properties": { + "from": { + "type": "number", + "description": "The lower bound of the range" + }, + "to": { + "type": "number", + "description": "The upper bound of the range" + } + }, + "required": [ + "from", + "to" + ] }, - "max": { - "type": "integer", - "format": "int32" + { + "type": "object", + "title": "From only", + "properties": { + "from": { + "type": "string", + "description": "The lower bound of the range" + } + }, + "required": [ + "from" + ] }, - "unit": { - "type": "string" + { + "type": "object", + "title": "To only", + "properties": { + "to": { + "type": "string", + "description": "The upper bound of the range" + } + }, + "required": [ + "to" + ] } - } - }, - "translations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" + ] + } + } + }, + "required": [ + "name", + "type", + "field", + "ranges" + ] + }, + "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": { + "type": "string" + }, + "dataTimestamp": { + "type": "string" + }, + "deliveryInformation": { + "$ref": "#/components/schemas/CartDeliveryInformation" + }, + "description": { + "type": "string", + "description": "Description of line items in an order." + }, + "good": { + "type": "boolean", + "description": "When set to true, it indicates the line item is physical else it is virtual." + }, + "id": { + "type": "string", + "description": "Unique identity of line item." + }, + "label": { + "type": "string", + "description": "It is a typical product name given to the line item." + }, + "modified": { + "type": "boolean", + "description": "When boolean value is `true`, line items are said to be modified." + }, + "modifiedByApp": { + "type": "boolean" + }, + "payload": { + "$ref": "#/components/schemas/ProductJsonApi" + }, + "price": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] + }, + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } }, - "name": { - "type": "string" + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" }, - "description": { - "type": "string" + { + "type": "null" } - } - } - }, - "orderDeliveries": { - "type": "array", - "items": { + ] + }, + "quantity": { + "type": "number" + }, + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { "type": "object", "properties": { - "orderId": { - "type": "string" - }, - "shippingOrderAddressId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "shippingDateEarliest": { - "type": "string", - "format": "date-time" + "price": { + "type": "number" }, - "shippingDateLatest": { + "apiAlias": { "type": "string", - "format": "date-time" - }, - "stateId": { - "type": "string" + "enum": [ + "cart_regulation_price" + ] + } + }, + "nullable": true + }, + "totalPrice": { + "type": "number" + }, + "unitPrice": { + "type": "number" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } } } } }, - "salesChannelDefaultAssignments": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" - }, - "hreflangDefaultDomainId": { - "type": "string" - } - } - } - }, - "salesChannels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" - }, - "hreflangDefaultDomainId": { - "type": "string" - } - } - } - }, - "availabilityRule": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "priority": { - "type": "integer", - "format": "int32" - }, - "invalid": { - "type": "boolean" - } - } - }, - "availabilityRuleId": { - "type": "string" - }, - "prices": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "ruleId": { - "type": "string" - }, - "calculation": { - "type": "integer", - "format": "int32" - }, - "quantityStart": { - "type": "number", - "format": "float" - }, - "quantityEnd": { - "type": "number", - "format": "float" - }, - "price": { - "type": "number", - "format": "float" - }, - "calculationRuleId": { - "type": "string" - } - } - } - }, - "mediaId": { - "type": "string" - }, - "media": { - "type": "object", - "properties": { - "userId": { - "type": "string" - }, - "mimeType": { - "type": "string" - }, - "fileExtension": { - "type": "string" - }, - "fileSize": { - "type": "integer", - "format": "int32" - }, - "title": { - "type": "string" - }, - "metaDataRaw": { - "type": "string" - }, - "mediaTypeRaw": { - "type": "string" - }, - "uploadedAt": { - "type": "string", - "format": "date-time" - }, - "alt": { - "type": "string" - }, - "url": { - "type": "string" - }, - "fileName": { - "type": "string" - }, - "mediaFolderId": { - "type": "string" - }, - "private": { - "type": "boolean" - }, - "thumbnailsRo": { - "type": "string" - } - } - }, - "tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - } - } - } - } - } - }, - "properties": { - "name": { - "description": "Name of the shipping method." - }, - "active": { - "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." + "required": [ + "apiAlias", + "totalPrice", + "quantity", + "unitPrice" + ] }, - "description": { - "description": "The order of the tabs of your defined shipping methods in the storefront by entering numerical values like 1,2,3, etc." + "priceDefinition": { + "$ref": "#/components/schemas/CartPriceQuantity" }, - "deliveryTimeId": { - "description": "Unique identity of the delivery time." + "quantity": { + "type": "number", + "description": "Number of items of product." }, - "deliveryTime": { + "quantityInformation": { + "type": "object", "properties": { - "name": { - "description": "Name given to delivery time." - }, - "min": { - "description": "Minimum delivery time taken." + "maxPurchase": { + "type": "number" }, - "max": { - "description": "Maximum delivery time taken." + "minPurchase": { + "type": "number" }, - "unit": { - "description": "Unit in which the delivery time is defined. For example, days or hours." + "purchaseSteps": { + "type": "number" } } }, - "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." - } - } + "referencedId": { + "type": "string", + "description": "Unique identity of type of entity." }, - "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." - } - } + "removable": { + "type": "boolean", + "description": "Allows the line item to be removable from the cart when set to true." }, - "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." - } - } + "stackable": { + "type": "boolean", + "description": "Allows to change the quantity of the line item when set to true." }, - "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." - } + "states": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "is-physical", + "is-download" + ] } }, - "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." + "type": { + "$ref": "#/components/schemas/LineItemType", + "description": "Type refers to the entity type of an item whether it is product or promotion for instance." + }, + "uniqueIdentifier": { + "type": "string" + } + }, + "required": [ + "id", + "type" + ] + }, + "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" }, - "invalid": { - "description": "When the boolean value is `true`, the rule is no more available for usage." + { + "type": "null" } - } - }, - "availabilityRuleId": { - "description": "Unique identity of availability rule." + ] }, - "prices": { + "regulationPrice": { + "type": "object", "properties": { - "shippingMethodId": { - "description": "Unique identity of shipping method." - }, - "currencyId": { - "description": "Unique identity of currency." - }, - "ruleId": { - "description": "Unique identity of rule." - }, - "calculation": { - "description": "Shipping price calculated based on quantity, price, weight or volume of items." - }, - "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." + "type": "number" }, - "calculationRuleId": { - "description": "Unique identity of calculation rule." + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] } - } + }, + "nullable": true }, - "mediaId": { - "description": "Unique identity of media." + "hasRange": { + "type": "boolean" }, - "media": { - "properties": { - "userId": { - "description": "Unique identity of user." - }, - "mimeType": { - "description": "A string sent along with a file indicating the type of the file. For example: image/jpeg." - }, - "fileExtension": { - "description": "Type of file indication. For example: jpeg, png." - }, - "fileSize": { - "description": "Size of the file media file uploaded." - }, - "title": { - "description": "Title name give to the media." - }, - "metaDataRaw": { - "description": "Details of the media file uploaded." - }, - "alt": { - "description": "Alternate text for media." - }, - "url": { - "description": "Runtime field, cannot be used as part of the criteria." - }, - "fileName": { - "description": "Name of the media file uploaded." - }, - "mediaFolderId": { - "description": "Unique identity of media folder." - }, - "private": { - "description": "Boolean value is `true` to keep the media display private." - } - } - }, - "tags": { - "properties": { - "name": { - "description": "Name of the tag." - } - } + "variantId": { + "type": "string", + "format": "^[0-9a-f]{32}$", + "nullable": true } - } + }, + "required": [ + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" + ] }, - "Price": { + "Sitemap": { "type": "object", - "description": "Price object", "properties": { - "currencyId": { + "filename": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "", - "type": "number" - }, - "net": { - "description": "", - "type": "number" - }, - "linked": { - "description": "", - "type": "boolean" - }, - "listPrice": { - "description": "", - "type": "object", - "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "", - "type": "number" - }, - "net": { - "description": "", - "type": "number" - }, - "linked": { - "description": "", - "type": "boolean" - } - }, - "required": [ - "gross", - "net" - ] + "description": "Name of the file which holds a list of all URL's." }, - "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" - ] + "created": { + "type": "string", + "format": "date-time" } }, "required": [ - "currencyId", - "gross", - "net" + "filename", + "created" ] }, "CrossSellingElementCollection": { @@ -13099,244 +12856,136 @@ } } }, - "AggregationEntity": { - "title": "AggregationEntity", + "CalculatedPrice": { "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "entity" - ] + "unitPrice": { + "type": "number" }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "quantity": { + "type": "number" }, - "definition": { - "description": "The entity definition e.g \"product_manufacturer\".", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field", - "definition" - ] - }, - "AggregationFilter": { - "title": "AggregationFilter", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" + "rawTotal": { + "type": "number" }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "filter" - ] + "totalPrice": { + "type": "number" }, - "filter": { + "calculatedTaxes": { "type": "array", "items": { - "$ref": "#/components/schemas/Filters" + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] } - } - }, - "required": [ - "name", - "type", - "filter" - ] - }, - "AggregationTerms": { - "title": "AggregationTerms", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "terms" + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } ] }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] }, - "limit": { - "description": "The number of terms to return", + "positionPrice": { "type": "number" }, - "sort": { - "type": "array", - "description": "Sorting the aggregation result.", - "items": { - "$ref": "#/components/schemas/Sort" - } - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "AggregationHistogram": { - "title": "AggregationHistogram", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "histogram" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "interval": { - "description": "The interval of the histogram", + "netPrice": { "type": "number" }, - "format": { - "description": "The format of the histogram", - "type": "string" + "regulationPrice": { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + }, + "nullable": true }, - "timeZone": { - "description": "The timezone of the histogram", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "AggregationRange": { - "title": "AggregationRange", - "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" + "hasRange": { + "type": "boolean" }, - "type": { - "description": "The type of aggregation", + "variantId": { + "type": "string", + "format": "^[0-9a-f]{32}$", + "nullable": true + }, + "apiAlias": { "type": "string", "enum": [ - "range" + "calculated_price" ] }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "ranges": { - "description": "The ranges of the aggregation", + "taxRules": { "type": "array", + "description": "Currently active tax rules and/or rates", "items": { "type": "object", - "anyOf": [ - { - "type": "object", - "title": "From and to", - "properties": { - "from": { - "type": "number", - "description": "The lower bound of the range" - }, - "to": { - "type": "number", - "description": "The upper bound of the range" - } - }, - "required": [ - "from", - "to" - ] - }, - { - "type": "object", - "title": "From only", - "properties": { - "from": { - "type": "string", - "description": "The lower bound of the range" - } - }, - "required": [ - "from" - ] + "properties": { + "taxRate": { + "type": "number", + "format": "float" }, - { - "type": "object", - "title": "To only", - "properties": { - "to": { - "type": "string", - "description": "The upper bound of the range" - } - }, - "required": [ - "to" - ] + "name": { + "type": "string" } - ] + } } } }, "required": [ - "name", - "type", - "field", - "ranges" - ] - }, - "AccountNewsletterRecipient": { - "type": "object", - "properties": { - "status": { - "type": "string", - "enum": [ - "undefined", - "notSet", - "direct", - "optIn", - "optOut" - ] - }, - "apiAlias": { - "type": "string", - "enum": [ - "account_newsletter_recipient" - ] - } - }, - "required": [ - "status", - "apiAlias" + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "referencePrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitPrice", + "positionPrice", + "netPrice", + "taxRules" ] }, "OrderRouteResponse": { @@ -13367,2377 +13016,2412 @@ "orders" ] }, - "CartPriceReference": { + "CartDeliveryInformation": { "type": "object", "properties": { - "purchaseUnit": { - "type": "number" - }, - "referenceUnit": { - "type": "number" - }, - "unitName": { - "type": "string" - }, - "price": { - "type": "number" - }, "apiAlias": { "type": "string", "enum": [ - "cart_price_reference" + "cart_delivery_information" ] }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] + "freeDelivery": { + "type": "boolean" }, - "regulationPrice": { + "deliveryTime": { "type": "object", "properties": { - "price": { - "type": "number" + "name": { + "type": "string" + }, + "min": { + "type": "integer" + }, + "max": { + "type": "integer" + }, + "unit": { + "type": "string" }, "apiAlias": { "type": "string", "enum": [ - "cart_regulation_price" + "cart_delivery_time" ] } - }, - "nullable": true + } }, - "hasRange": { - "type": "boolean" + "height": { + "type": "integer" }, - "variantId": { - "type": "string", - "format": "^[0-9a-f]{32}$", - "nullable": true + "length": { + "type": "integer" + }, + "restockTime": { + "type": "integer" + }, + "stock": { + "type": "integer" + }, + "weight": { + "type": "integer" + }, + "width": { + "type": "integer" } }, "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" + "apiAlias" ] }, - "ProductListingCriteria": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "CartListPrice": { + "type": "object", + "description": "", + "properties": { + "discount": { + "type": "number" }, - { + "percentage": { + "type": "number" + }, + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_list_price" + ] + } + }, + "required": [ + "apiAlias" + ] + }, + "WishlistLoadRouteResponse": { + "type": "object", + "properties": { + "wishlist": { "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" + "customerId": { + "type": "string", + "description": "Unique identity of the customer." }, - "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.", + "salesChannelId": { "type": "string", - "nullable": true + "description": "Unique identity of the sales channel." } } + }, + "products": { + "$ref": "#/components/schemas/ProductListingResult" } - ], + } + }, + "SalesChannelContext": { + "type": "object", "properties": { - "filter": { + "token": { + "description": "Context the user session", + "type": "string" + }, + "currentCustomerGroup": { + "type": "object", + "description": "Customer group of the current user", "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." + "name": { + "type": "string", + "description": "Name of customer group to which the customer belongs within the specific sales channel they are currently interacting with." }, - "value": { - "description": "To filter the results and aggregations by value." + "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." } } }, - "sort": { + "fallbackCustomerGroup": { + "description": "Fallback group if the default customer group is not applicable", + "type": "object", "properties": { - "field": { - "description": "Sort the search results by field like an property identifier." - }, - "order": { - "description": "Sort the search results of orders by ascending or descending." + "name": { + "type": "string" }, - "naturalSorting": { - "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." + "displayGross": { + "type": "boolean" } } }, - "post-filter": { + "currency": { + "$ref": "#/components/schemas/Currency", "properties": { - "type": { - "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." + "isoCode": { + "description": "Standard international three digit code to represent currency in a given sales channel. For example, USD." }, - "field": { - "description": "To filter only the results but not the aggregations by field like an property identifier." + "factor": { + "description": "Currency exchange rate in a specific sales channel the customer is currently interacting with." }, - "value": { - "description": "To filter only the results but not the aggregations by value." + "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." } } - } - } - }, - "CartDeliveryPosition": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "deliveryDate": { + }, + "salesChannel": { + "description": "Information about the current sales channel", "type": "object", "properties": { - "earliest": { + "typeId": { "type": "string", - "format": "date-time" + "description": "Unique identity of a sales channel's type within a specific sales channel." }, - "latest": { + "languageId": { "type": "string", - "format": "date-time" - } - } - }, - "identifier": { - "type": "string" - }, - "lineItem": { - "$ref": "#/components/schemas/LineItem" - }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" - } - } - }, - "ProductListingResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EntitySearchResult" - }, - { - "type": "object", - "properties": { - "currentFilters": { - "type": "object", - "description": "Contains the state of the filters. These can be used to create listing filters.", - "properties": { - "navigationId": { - "type": "string" - }, - "manufacturer": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "price": { - "type": "object", - "properties": { - "min": { - "type": "integer", - "default": 0 - }, - "max": { - "type": "integer", - "default": 0 - } - }, - "required": [ - "min", - "max" - ] - }, - "rating": { - "type": "integer", - "nullable": true - }, - "shipping-free": { - "type": "boolean", - "default": false - }, - "properties": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "search": { - "type": "string" - } - }, - "required": [ - "manufacturer", - "navigationId", - "price", - "properties", - "rating", - "shipping-free" - ] + "description": "Unique identity of a sales channel's language within a specific sales channel." }, - "availableSortings": { - "type": "array", - "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", - "items": { - "type": "object", - "properties": { - "label": { - "type": "string" - }, - "translated": { - "type": "object", - "properties": { - "label": { - "type": "string" - } - }, - "required": [ - "label" - ] - }, - "key": { - "type": "string" - }, - "priority": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_sorting" - ] - } - }, - "required": [ - "label", - "translated", - "key", - "priority", - "apiAlias" - ] - } + "currencyId": { + "type": "string", + "description": "Unique identity of a sales channel's currency within a specific sales channel." }, - "sorting": { - "type": "string" + "paymentMethodId": { + "type": "string", + "description": "Unique identity of a sales channel's payment method within a specific sales channel." }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } + "shippingMethodId": { + "type": "string", + "description": "Unique identity of a sales channel's shipping method within a specific sales channel." }, - "entity": { + "countryId": { "type": "string", - "enum": [ - "product" - ] + "description": "Unique identity of a sales channel's country within a specific sales channel." }, - "apiAlias": { + "navigationCategoryId": { "type": "string", - "enum": [ - "product_listing" - ] - } - }, - "required": [ - "elements", - "availableSortings", - "currentFilters", - "apiAlias" - ] - } - ] - }, - "NavigationType": { - "type": "string", - "enum": [ - "main-navigation", - "footer-navigation", - "service-navigation" - ] - }, - "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" - ] - }, - "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" + "description": "Unique identity of a sales channel's navigation category within a specific sales channel." }, - "level": { - "type": "number", - "enum": [ - 0, - 10, - 20 - ], - "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" + "navigationCategoryDepth": { + "type": "integer", + "format": "int32", + "description": "It determines the number of levels of subcategories in the storefront category menu within a specific sales channel." }, - "message": { - "type": "string" + "footerCategoryId": { + "type": "string", + "description": "Unique identity of a sales channel's footer category within a specific sales channel." }, - "messageKey": { - "type": "string" - } - } - } - } - }, - "Breadcrumb": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "categoryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "type": { - "type": "string", - "enum": [ - "page", - "link", - "folder" - ] - }, - "translated": { - "type": "object", - "additionalProperties": true, - "properties": { - "customFields": { - "type": "object" + "serviceCategoryId": { + "type": "string", + "description": "Unique identity of a sales channel's service category within a specific sales channel." }, - "slotConfig": { - "type": "object" + "name": { + "type": "string", + "description": "Name of the sales channel." }, - "linkType": { + "shortName": { "type": "string", - "enum": [ - "external", - "category", - "product", - "landing_page" - ] + "description": "A short name for sales channel." }, - "internalLink": { - "type": "string" + "accessKey": { + "type": "string", + "description": "Access key to store api." }, - "externalLink": { - "type": "string" + "active": { + "type": "boolean", + "description": "When `true`, the sales channel is enabled." }, - "linkNewTab": { - "type": "boolean" + "maintenance": { + "type": "boolean", + "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." }, - "description": { - "type": "string" + "maintenanceIpWhitelist": { + "type": "string", + "description": "Array of IP address allowed to access the sales channel." }, - "metaTitle": { - "type": "string" + "mailHeaderFooterId": { + "type": "string", + "description": "Unique identity of a sales channel's mail header and footer within a specific sales channel." }, - "metaDescription": { - "type": "string" + "customerGroupId": { + "type": "string", + "description": "Unique identity of a sales channel's customer group within a specific sales channel." }, - "keywords": { - "type": "string" + "hreflangActive": { + "type": "boolean", + "description": "When `true`, the sales channel pages are available in different languages within a specific sales channel." + }, + "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." } } }, - "path": { - "type": "string" - }, - "seoUrls": { + "taxRules": { "type": "array", + "description": "Currently active tax rules and/or rates", "items": { - "$ref": "#/components/schemas/SeoUrl" - } - }, - "apiAlias": { - "type": "string", - "enum": [ - "breadcrumb" - ] - } - }, - "required": [ - "name", - "categoryId", - "type", - "translated", - "path", - "apiAlias" - ] - }, - "AggregationMetrics": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "avg", - "count", - "max", - "min", - "stats", - "sum" - ] - }, - "field": { - "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "SuccessResponse": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - } - } - }, - "EntitySearchResult": { - "type": "object", - "properties": { - "entity": { - "type": "string" - }, - "total": { - "type": "integer", - "description": "The total number of found entities" - }, - "aggregations": { - "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", - "items": { - "type": "object" - } - }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." - }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." - } - } - }, - "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" - } - } - }, - "FindProductVariantRouteResponse": { - "type": "object", - "properties": { - "foundCombination": { - "type": "object", - "properties": { - "variantId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of a variant." - }, - "options": { - "type": "array", - "items": { - "type": "string" + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" }, - "description": "Available product variant options. For example, for variant `Size`, option would be `XS`, `S`, `M`, `L`, `XL`." + "name": { + "type": "string" + } } - } - } - } - }, - "CartDelivery": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "deliveryDate": { - "type": "object", + }, "properties": { - "earliest": { - "type": "string", - "format": "date-time" + "taxRate": { + "description": "Rate of tax within a specific sales channel." }, - "latest": { - "type": "string", - "format": "date-time" + "name": { + "description": "Name defined for a Tax within a specific sales channel." } } }, - "location": { - "type": "object", + "customer": { + "$ref": "#/components/schemas/Customer", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] + "groupId": { + "description": "Unique identity of a customer's group within a specific sales channel." }, - "country": { - "$ref": "#/components/schemas/Country" + "defaultPaymentMethodId": { + "description": "Unique identity of a customer's default payment method within a specific sales channel." }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" + "salesChannelId": { + "description": "Unique identity of sales channel the customer is currently interacting with." }, - "state": { - "$ref": "#/components/schemas/CountryState" + "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." } } }, - "positions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDeliveryPosition" + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod", + "properties": { + "pluginId": { + "description": "Unique identity of payment plugin within a specific sales channel." + }, + "handlerIdentifier": { + "description": "Internal field that contains system identifier details for payment methods like Paypal." + }, + "name": { + "description": "Name of the payment method within a specific sales channel." + }, + "description": { + "description": "A short description about the payment method within a specific sales channel." + }, + "position": { + "description": "The order of the tabs of your defined payment methods in the storefront by entering numerical values like 1,2,3, etc within a specific sales channel." + }, + "active": { + "description": "When `true`, the payment method is available for usage within a specific sales channel." + }, + "availabilityRuleId": { + "description": "Unique identity of the rule for the payment method." + }, + "mediaId": { + "description": "Unique identity of media used in payment method within a specific sales channel." + }, + "formattedHandlerIdentifier": { + "description": "Internal field that contains system identifier details for payment methods like Paypal." + } } }, - "shippingCosts": { - "$ref": "#/components/schemas/CalculatedPrice" + "shippingLocation": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + } + } }, "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" + "$ref": "#/components/schemas/ShippingMethod", + "properties": { + "name": { + "description": "Name of the shipping method within a specific sales channel." + }, + "active": { + "description": "When `true`, the shipping method is available for usage within a specific sales channel." + }, + "description": { + "description": "A short description about the shipping method within a specific sales channel." + }, + "trackingUrl": { + "description": "URL that allows to track packages for a specific sales channel." + }, + "deliveryTimeId": { + "description": "Unique identity of deliveryTime within a specific sales channel." + }, + "availabilityRuleId": { + "description": "Unique identity of the rule for the payment method." + }, + "mediaId": { + "description": "Unique identity of media used in shipping method within a specific sales channel." + } + } + }, + "context": { + "description": "Core context with general configuration values and state", + "type": "object", + "properties": { + "versionId": { + "type": "string", + "description": "Unique identity of context's version in a specific sales channel." + }, + "currencyId": { + "type": "string", + "description": "Unique identity of currency context in a specific sales channel." + }, + "currencyFactor": { + "type": "integer", + "description": "Unique identity of currency factor context in a specific sales channel." + }, + "currencyPrecision": { + "type": "integer", + "format": "int32", + "description": "It defines the round off value of currency to the nearest decimal point. If set to 2, it rounds off to two significant decimal points." + }, + "languageIdChain": { + "type": "array", + "items": { + "type": "string" + } + }, + "scope": { + "type": "string", + "description": "Scope defines if its related to system or user context." + }, + "source": { + "type": "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." + } + } } } }, - "ProductDetailResponse": { - "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", + "CustomerAddressBody": { + "description": "Added since version: 6.0.0.0", + "required": [ + "countryId", + "firstName", + "lastName", + "city", + "street" + ], "properties": { - "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." + "countryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "isCloseout": { - "description": "Boolean value to check if the product is still buyable when stock value is 0." + "countryStateId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "displayGroup": { - "description": "Internal field." + "salutationId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "manufacturerNumber": { - "description": "Unique number of the product manufacturer." + "firstName": { + "type": "string" }, - "stock": { - "description": "Quantity of product available." + "lastName": { + "type": "string" }, - "sortedProperties": { - "description": "Properties of the product that are sorted" - } - }, - "required": [ - "product" - ] - }, - "LineItemType": { - "type": "string", - "enum": [ - "product", - "credit", - "custom", - "promotion", - "discount", - "container", - "quantity" - ] - }, - "LineItem": { - "type": "object", - "properties": { - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } + "zipcode": { + "type": "string" }, - "cover": { - "$ref": "#/components/schemas/ProductMedia" + "city": { + "type": "string" }, - "dataContextHash": { + "company": { "type": "string" }, - "dataTimestamp": { + "street": { "type": "string" }, - "deliveryInformation": { - "$ref": "#/components/schemas/CartDeliveryInformation" + "department": { + "type": "string" }, - "description": { - "type": "string", - "description": "Description of line items in an order." + "title": { + "type": "string" }, - "good": { - "type": "boolean", - "description": "When set to true, it indicates the line item is physical else it is virtual." + "phoneNumber": { + "type": "string" }, - "id": { - "type": "string", - "description": "Unique identity of line item." + "additionalAddressLine1": { + "type": "string" }, - "label": { - "type": "string", - "description": "It is a typical product name given to the line item." + "additionalAddressLine2": { + "type": "string" }, - "modified": { - "type": "boolean", - "description": "When boolean value is `true`, line items are said to be modified." + "customFields": { + "type": "object" }, - "modifiedByApp": { - "type": "boolean" + "country": { + "$ref": "#/components/schemas/Country" }, - "payload": { - "$ref": "#/components/schemas/ProductJsonApi" + "countryState": { + "$ref": "#/components/schemas/CountryState" }, - "price": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "calculated_price" - ] - }, - "calculatedTaxes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] - }, - "quantity": { - "type": "number" + "salutation": { + "$ref": "#/components/schemas/Salutation" + } + }, + "type": "object" + }, + "CartItems": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + }, + "properties": { + "id": { + "description": "Unique identity of cart item." }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] + "modified": { + "description": "When boolean value is `true`, the cart is said to be modified." + } + } + } + } + }, + "FindProductVariantRouteResponse": { + "type": "object", + "properties": { + "foundCombination": { + "type": "object", + "properties": { + "variantId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of a variant." }, - "regulationPrice": { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } + "options": { + "type": "array", + "items": { + "type": "string" }, - "nullable": true + "description": "Available product variant options. For example, for variant `Size`, option would be `XS`, `S`, `M`, `L`, `XL`." + } + } + } + } + }, + "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}$" }, - "totalPrice": { + "gross": { + "description": "", "type": "number" }, - "unitPrice": { + "net": { + "description": "", "type": "number" }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } + "linked": { + "description": "", + "type": "boolean" } }, "required": [ - "apiAlias", - "totalPrice", - "quantity", - "unitPrice" + "gross", + "net" ] }, - "priceDefinition": { - "$ref": "#/components/schemas/CartPriceQuantity" - }, - "quantity": { - "type": "number", - "description": "Number of items of product." - }, - "quantityInformation": { + "regulationPrice": { + "description": "", "type": "object", "properties": { - "maxPurchase": { - "type": "number" + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "minPurchase": { + "gross": { + "description": "", "type": "number" }, - "purchaseSteps": { + "net": { + "description": "", "type": "number" + }, + "linked": { + "description": "", + "type": "boolean" } - } - }, - "referencedId": { - "type": "string", - "description": "Unique identity of type of entity." - }, - "removable": { - "type": "boolean", - "description": "Allows the line item to be removable from the cart when set to true." - }, - "stackable": { - "type": "boolean", - "description": "Allows to change the quantity of the line item when set to true." - }, - "states": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "is-physical", - "is-download" - ] - } - }, - "type": { - "$ref": "#/components/schemas/LineItemType", - "description": "Type refers to the entity type of an item whether it is product or promotion for instance." - }, - "uniqueIdentifier": { - "type": "string" + }, + "required": [ + "gross", + "net" + ] } }, "required": [ - "id", - "type" + "currencyId", + "gross", + "net" ] }, - "CustomerAddressBody": { - "description": "Added since version: 6.0.0.0", - "required": [ - "countryId", - "firstName", - "lastName", - "city", - "street" - ], + "CartDelivery": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "countryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } }, - "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" + "location": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "state": { + "$ref": "#/components/schemas/CountryState" + } + } }, - "country": { - "$ref": "#/components/schemas/Country" + "positions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDeliveryPosition" + } }, - "countryState": { - "$ref": "#/components/schemas/CountryState" + "shippingCosts": { + "$ref": "#/components/schemas/CalculatedPrice" }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" } - }, - "type": "object" + } }, - "CartPriceQuantity": { + "Cart": { "type": "object", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_quantity" - ] - }, - "isCalculated": { - "type": "boolean" + "name": { + "description": "Name of the cart - for example `guest-cart`", + "type": "string" }, - "listPrice": { - "$ref": "#/components/schemas/CartListPrice" + "token": { + "description": "Context token identifying the cart and the user session", + "type": "string" }, "price": { - "type": "number" + "$ref": "#/components/schemas/CalculatedPrice" }, - "quantity": { - "type": "number" + "lineItems": { + "description": "All items within the cart", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } }, - "regulationPrice": { + "errors": { + "type": "array", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "items": { + "$ref": "#/components/schemas/CartError" + }, "properties": { - "price": { - "type": "number", - "format": "float" + "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." } - }, - "type": "object" + } }, - "taxRules": { + "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": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { + "paymentMethodId": { "type": "string" + }, + "amount": { + "$ref": "#/components/schemas/CalculatedPrice" } } + }, + "properties": { + "paymentMethodId": { + "description": "Unique identity of payment method." + } } }, - "type": { - "type": "string" + "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." } - }, - "required": [ - "apiAlias" - ] + } }, - "CrossSellingElement": { + "EntitySearchResult": { "type": "object", "properties": { - "crossSelling": { - "$ref": "#/components/schemas/ProductCrossSelling" + "entity": { + "type": "string" }, - "products": { + "total": { + "type": "integer", + "description": "The total number of found entities" + }, + "aggregations": { "type": "array", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", "items": { - "$ref": "#/components/schemas/Product" + "type": "object" } }, - "total": { + "page": { "type": "integer", - "format": "int32" + "description": "The actual page. This can be used for pagination." }, - "streamId": { - "type": "string", - "format": "uuid" + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." + } + } + }, + "AggregationMetrics": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - "apiAlias": { + "type": { "type": "string", "enum": [ - "cross_selling_element" + "avg", + "count", + "max", + "min", + "stats", + "sum" ] + }, + "field": { + "type": "string" } }, "required": [ - "crossSelling", - "products", - "total", - "apiAlias" + "name", + "type", + "field" ] }, - "CartItems": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - }, + "ProductListingCriteria": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + }, + { + "type": "object", + "description": "Additional search parameters for product listings", "properties": { - "id": { - "description": "Unique identity of cart item." + "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" }, - "modified": { - "description": "When boolean value is `true`, the cart is said to be modified." - } - } - } - } - }, - "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." + "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 }, - "totalPrice": { - "description": "Gross price of the product." + "p": { + "description": "Search result page", + "type": "integer", + "default": 1 }, - "calculatedTaxes": { - "description": "Contains calculated tax on order delivery price." + "manufacturer": { + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "type": "string" }, - "taxRules": { - "description": "Pricing based on multiple taxes." + "min-price": { + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 }, - "positionPrice": { - "description": "Price of each line item in the cart multiplied by its quantity excluding charges like shipping cost, rules, taxes etc." + "max-price": { + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 }, - "rawTotal": { - "description": "The total value before rounding off." + "rating": { + "description": "Filter products with a minimum average rating.", + "type": "integer" }, - "taxStatus": { - "description": "TaxStatus takes `Free`, `Net` or `Gross` as values." - } - } - }, - "shippingCosts": { - "properties": { - "unitPrice": { - "description": "Shipping cost of product per item (where, quantity=1)." + "shipping-free": { + "description": "Filters products that are marked as shipping-free.", + "type": "boolean", + "default": false }, - "totalPrice": { - "description": "Shipping cost of product based on quantity." + "properties": { + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "type": "string" }, - "quantity": { - "description": "Number of items of each product." + "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 }, - "calculatedTaxes": { - "description": "Contains calculated taxes based on shipping costs/methods." + "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 }, - "taxRules": { - "description": "Pricing based on multiple taxes." + "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 }, - "referencePrice": { - "description": "Original cost price of the product." + "shipping-free-filter": { + "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", + "type": "boolean", + "default": true }, - "listPrice": { - "properties": { - "price": { - "description": "Price of each line item." - }, - "discount": { - "description": "Absolute discount on each line item." - }, - "percentage": { - "description": "Discount in percentage." - } - } + "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 }, - "regulationPrice": { - "properties": { - "price": { - "description": "Contains cheapest price from last 30 days as per EU law." - } - } + "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.", + "type": "string", + "nullable": true + } + } + } + ], + "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." } } }, - "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." + "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." + } + } }, - "amountNet": { - "description": "Net price of the order." + "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." + } + } } } }, - "OrderReturnLineItem": { + "NavigationType": { + "type": "string", + "enum": [ + "main-navigation", + "footer-navigation", + "service-navigation" + ] + }, + "CustomerAddressRead": { + "type": "object", "properties": { "id": { - "description": "Unique identity of order return line item." + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true }, - "versionId": { - "description": "Unique identity of order return line item's version." + "customerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true }, - "orderReturnId": { - "description": "Unique identity of order return." + "createdAt": { + "type": "string", + "format": "date-time" }, - "orderReturnVersionId": { - "description": "Unique identity of order return version." + "updatedAt": { + "type": "string", + "format": "date-time", + "nullable": true }, - "orderLineItemId": { - "description": "Unique identity of order line item." + "country": { + "$ref": "#/components/schemas/Country" }, - "orderLineItemVersionId": { - "description": "Unique identity of order line items's version." + "countryState": { + "$ref": "#/components/schemas/CountryState", + "nullable": true }, - "reasonId": { - "description": "Unique identity of reason for return." + "salutation": { + "$ref": "#/components/schemas/Salutation" + } + }, + "required": [ + "customerId", + "createdAt", + "updatedAt", + "country", + "salutation" + ] + }, + "Breadcrumb": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - "quantity": { - "description": "Number of line items returned." + "categoryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "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." + "type": { + "type": "string", + "enum": [ + "page", + "link", + "folder" + ] }, - "stateId": { - "description": "Unique identity of state." - } - } - }, - "OrderReturnLineItemReason": { - "properties": { - "id": { - "description": "Unique identity for reason of return." + "translated": { + "type": "object", + "additionalProperties": true, + "properties": { + "customFields": { + "type": "object" + }, + "slotConfig": { + "type": "object" + }, + "linkType": { + "type": "string", + "enum": [ + "external", + "category", + "product", + "landing_page" + ] + }, + "internalLink": { + "type": "string" + }, + "externalLink": { + "type": "string" + }, + "linkNewTab": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "metaTitle": { + "type": "string" + }, + "metaDescription": { + "type": "string" + }, + "keywords": { + "type": "string" + } + } }, - "reasonKey": { - "description": "Unique key associated with reason for the order return. " + "path": { + "type": "string" }, - "content": { - "description": "Description of the reason of return." + "seoUrls": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" + } }, - "translated": { - "description": "Contains the translations of all translated fields." + "apiAlias": { + "type": "string", + "enum": [ + "breadcrumb" + ] } - } + }, + "required": [ + "name", + "categoryId", + "type", + "translated", + "path", + "apiAlias" + ] }, - "OrderWarehouseGroup": { - "properties": { - "id": { - "description": "Unique identity of order warehouse group." + "ProductListingResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EntitySearchResult" + }, + { + "type": "object", + "properties": { + "currentFilters": { + "type": "object", + "description": "Contains the state of the filters. These can be used to create listing filters.", + "properties": { + "navigationId": { + "type": "string" + }, + "manufacturer": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "price": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "default": 0 + }, + "max": { + "type": "integer", + "default": 0 + } + }, + "required": [ + "min", + "max" + ] + }, + "rating": { + "type": "integer", + "nullable": true + }, + "shipping-free": { + "type": "boolean", + "default": false + }, + "properties": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "search": { + "type": "string" + } + }, + "required": [ + "manufacturer", + "navigationId", + "price", + "properties", + "rating", + "shipping-free" + ] + }, + "availableSortings": { + "type": "array", + "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", + "items": { + "type": "object", + "properties": { + "label": { + "type": "string" + }, + "translated": { + "type": "object", + "properties": { + "label": { + "type": "string" + } + }, + "required": [ + "label" + ] + }, + "key": { + "type": "string" + }, + "priority": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_sorting" + ] + } + }, + "required": [ + "label", + "translated", + "key", + "priority", + "apiAlias" + ] + } + }, + "sorting": { + "type": "string" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "entity": { + "type": "string", + "enum": [ + "product" + ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_listing" + ] + } + }, + "required": [ + "elements", + "availableSortings", + "currentFilters", + "apiAlias" + ] } - } + ] }, - "ProductReviewSummary": { + "CrossSellingElement": { + "type": "object", "properties": { - "id": { - "description": "Unique identity of products's review summary." + "crossSelling": { + "$ref": "#/components/schemas/ProductCrossSelling" }, - "productId": { - "description": "Unique identity of products." + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } }, - "salesChannelId": { - "description": "Unique identity of sales channel." + "total": { + "type": "integer", + "format": "int32" }, - "summary": { - "description": "Unique identity of products's review summary." - }, - "visible": { - "description": "When boolean value is `true`, the review is displayed to the customer." + "streamId": { + "type": "string", + "format": "uuid" }, - "translated": { - "description": "Contains the translations of all translated fields." - } - } - }, - "ProductWarehouse": { - "properties": { - "id": { - "description": "Unique identity of warehouse of product." + "apiAlias": { + "type": "string", + "enum": [ + "cross_selling_element" + ] } - } + }, + "required": [ + "crossSelling", + "products", + "total", + "apiAlias" + ] }, - "Subscription": { + "ProductDetailResponse": { + "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", "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." + "product": { + "$ref": "#/components/schemas/Product" }, - "subscriptionIntervalId": { - "description": "Unique identity for subscription interval." + "configurator": { + "type": "array", + "description": "List of property groups with their corresponding options and information on how to display them.", + "items": { + "$ref": "#/components/schemas/PropertyGroup" + } }, - "subscriptionIntervalName": { - "description": "Unique name for subscription interval." + "id": { + "description": "Unique identity of product detail response." }, - "dateInterval": { - "description": "Relative interval data. For example, `every 3 days`, `every 2 months`, etc." + "available": { + "description": "When boolean value is true, the product is available for purchase." }, - "cronInterval": { - "description": "Absolute interval data. For example, `only on January`, `only on Mondays`, etc." + "isCloseout": { + "description": "Boolean value to check if the product is still buyable when stock value is 0." }, - "billingAddressId": { - "description": "Unique identity of billing address." + "displayGroup": { + "description": "Internal field." }, - "shippingAddressId": { - "description": "Unique identity of shipping address." + "manufacturerNumber": { + "description": "Unique number of the product manufacturer." }, - "shippingMethodId": { - "description": "Unique identity of shipping method." + "stock": { + "description": "Quantity of product available." }, - "paymentMethodId": { - "description": "Unique identity of payment method." + "sortedProperties": { + "description": "Properties of the product that are sorted" + } + }, + "required": [ + "product" + ] + }, + "CartDeliveryPosition": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } }, - "currencyId": { - "description": "Unique identity of currency." + "identifier": { + "type": "string" }, - "languageId": { - "description": "Unique identity of language." + "lineItem": { + "$ref": "#/components/schemas/LineItem" }, - "customFields": { - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + "price": { + "$ref": "#/components/schemas/CalculatedPrice" } } }, - "SubscriptionAddress": { + "CartPriceQuantity": { + "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." + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_quantity" + ] }, - "title": { - "description": "Title name given to customer's order address." + "isCalculated": { + "type": "boolean" }, - "vatId": { - "description": "Unique identity of VAT." + "listPrice": { + "$ref": "#/components/schemas/CartListPrice" }, - "phoneNumber": { - "description": "Phone number of the customer." + "price": { + "type": "number" }, - "additionalAddressLine1": { - "description": "Additional address input if necessary." + "quantity": { + "type": "number" }, - "additionalAddressLine2": { - "description": "Additional address input if necessary." + "regulationPrice": { + "properties": { + "price": { + "type": "number", + "format": "float" + } + }, + "type": "object" }, - "customFields": { - "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + "taxRules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } }, - "email": { - "description": "Last name of the subscribed customer. " + "type": { + "type": "string" } + }, + "required": [ + "apiAlias" + ] + }, + "BreadcrumbCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Breadcrumb" } }, - "SubscriptionCustomer": { + "AccountNewsletterRecipientResult": { "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." + "status": { + "description": "Status indicates if the customer has subscribed to the news letter or not." } } }, - "SubscriptionInterval": { + "OrderProductWarehouse": { "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." + "description": "Unique identity of order's product warehouse." } } }, - "SubscriptionPlan": { + "OrderReturn": { "properties": { "id": { - "description": "Unique identity of subscription plan." + "description": "Unique identity of order return." }, - "name": { - "description": "Name of the subscription plan." + "versionId": { + "description": "Unique identity of order return's version." }, - "description": { - "description": "A short description about the subscription plan." + "orderId": { + "description": "Unique identity of order." }, - "active": { - "description": "When `true`, the subscription plan is available for selection in storefront." + "orderVersionId": { + "description": "Unique identity of order return version." }, - "activeStorefrontLabel": { - "description": "When boolean value id `true`, the label overrides the plan name." + "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." + } + } }, - "availabilityRuleId": { - "description": "Unique identity of rule." + "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." + } + } + } + } }, - "label": { - "description": "Label that can overwrite the active plan name. " + "stateId": { + "description": "Unique identity of state." }, - "translated": { - "description": "Contains the translations of all translated fields." - } - } - }, - "SubscriptionPlanIntervalMapping": { - "properties": { - "id": { - "description": "Unique identity of subscription plan interval mapping." + "returnNumber": { + "description": "Reference number for returning order." }, - "subscriptionIntervalId": { - "description": "Unique identity of subscription interval." + "requestedAt": { + "description": "Date and time when the order return was requested." }, - "subscriptionPlanId": { - "description": "Unique identity of subscription plan." + "amountTotal": { + "description": "Gross price of the order." + }, + "amountNet": { + "description": "Net price of the order." } } }, - "SubscriptionPlanProductMapping": { + "OrderReturnLineItem": { "properties": { "id": { - "description": "Unique identity of subscription plan for product mapping." + "description": "Unique identity of order return line item." }, - "productId": { - "description": "Unique identity of product." + "versionId": { + "description": "Unique identity of order return line item's version." }, - "productVersionId": { - "description": "Unique identity of product's version." + "orderReturnId": { + "description": "Unique identity of order return." }, - "subscriptionPlanId": { - "description": "Unique identity of subscription plan." - } - } - }, - "SubscriptionTagMapping": { - "properties": { - "id": { - "description": "Unique identity of subscription tag." + "orderReturnVersionId": { + "description": "Unique identity of order return version." }, - "subscriptionId": { - "description": "Unique identity of subscription." + "orderLineItemId": { + "description": "Unique identity of order line item." }, - "tagId": { - "description": "Unique identity of subscription tag." - } - } - }, - "SwagDelayAction": { - "properties": { - "id": { - "description": "Unique identity of swag delay action for flow builder" + "orderLineItemVersionId": { + "description": "Unique identity of order line items's version." }, - "orderId": { - "description": "Unique identity of order." + "reasonId": { + "description": "Unique identity of reason for return." }, - "customerId": { - "description": "Unique identity of customer." + "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." } } }, - "Warehouse": { + "OrderReturnLineItemReason": { "properties": { "id": { - "description": "Unique identity of warehouse." + "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." } } }, - "WarehouseGroup": { + "OrderWarehouseGroup": { "properties": { "id": { - "description": "Unique identity of warehouse group." + "description": "Unique identity of order warehouse group." } } }, - "CustomPrice": { + "ProductReviewSummary": { "properties": { "id": { - "description": "Unique identity of the custom price." + "description": "Unique identity of products's review summary." }, "productId": { - "description": "Unique identity of the product." + "description": "Unique identity of products." }, - "productVersionId": { - "description": "Unique identity of the product's version." + "salesChannelId": { + "description": "Unique identity of sales channel." }, - "customerId": { - "description": "Unique identity of the customer." + "summary": { + "description": "Unique identity of products's review summary." }, - "customerGroupId": { - "description": "Unique identity of the customer's group." + "visible": { + "description": "When boolean value is `true`, the review is displayed to the customer." }, - "price": { - "description": "Detailed information of price." + "translated": { + "description": "Contains the translations of all translated fields." } } }, - "CustomerSpecificFeatures": { + "ProductWarehouse": { "properties": { "id": { - "description": "Unique identity of the customer specific features." - }, - "customerId": { - "description": "Unique identity of the customer." + "description": "Unique identity of warehouse of product." } } }, - "MediaAiTag": { + "Subscription": { "properties": { "id": { - "description": "Unique identity of the AI media tag." + "description": "Unique identity of subscription." }, - "tag": { - "description": "Tag that indicates if the media is made by AI or not." + "convertedOrder": { + "description": "An array loaded with persistent information related to cart data." }, - "translated": { - "description": "Contains the translations of all translated fields." - } - } - } - }, - "responses": { - "404": { - "description": "Not Found", - "content": { - "application/vnd.api+json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "404", - "title": "Not Found", - "description": "Resource with given parameter was not found." - } - ] - } + "subscriptionNumber": { + "description": "Unique number associated with subscription." }, - "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." - } - ] - } + "nextSchedule": { + "description": "Date and time of next scheduled subscription for example: `yyyy-mm-dd hh:mm:ss` - `2023-08-15 15:25:32`." }, - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "403", - "title": "Forbidden", - "description": "This operation is restricted to logged in users." - } - ] - } - } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/vnd.api+json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "401", - "title": "Unauthorized", - "description": "Authorization information is missing or invalid." - } - ] - } + "salesChannelId": { + "description": "Unique identity of sales channel." }, - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "401", - "title": "Unauthorized", - "description": "Authorization information is missing or invalid." - } - ] - } - } - } - }, - "400": { - "description": "Bad Request", - "content": { - "application/vnd.api+json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "400", - "title": "Bad Request", - "description": "Bad parameters for this endpoint. See documentation for the correct ones." - } - ] - } + "subscriptionPlanId": { + "description": "Unique identity of subscription plan." }, - "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." - } - ] - } + "subscriptionPlanName": { + "description": "Unique name for subscription plan." + }, + "subscriptionIntervalId": { + "description": "Unique identity for subscription interval." + }, + "subscriptionIntervalName": { + "description": "Unique name for subscription interval." + }, + "dateInterval": { + "description": "Relative interval data. For example, `every 3 days`, `every 2 months`, etc." + }, + "cronInterval": { + "description": "Absolute interval data. For example, `only on January`, `only on Mondays`, etc." + }, + "billingAddressId": { + "description": "Unique identity of billing address." + }, + "shippingAddressId": { + "description": "Unique identity of shipping address." + }, + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "paymentMethodId": { + "description": "Unique identity of payment method." + }, + "currencyId": { + "description": "Unique identity of currency." + }, + "languageId": { + "description": "Unique identity of language." + }, + "customFields": { + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." } } }, - "204": { - "description": "No Content" - }, - "OpenApi3": { - "description": "Returns information about the store API.", - "content": { - "application/json": { - "schema": { - "properties": { - "openapi": { - "type": "string" - }, - "info": { - "type": "object", - "properties": { - "title": { - "type": "string" - }, - "summary": { - "type": "string" - }, - "description": { - "type": "string" - }, - "termsOfService": { - "type": "string", - "format": "uri" - }, - "contact": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "url": { - "type": "string", - "format": "uri" - }, - "email": { - "type": "string", - "format": "email" - } - } - }, - "license": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "identifier": { - "type": "string" - }, - "url": { - "type": "string", - "format": "uri" - } - }, - "required": [ - "name" - ] - }, - "version": { - "type": "string" - } - }, - "required": [ - "title", - "version" - ] - }, - "jsonSchemaDialect": { - "type": "string" - }, - "webhooks": { - "type": "object" - }, - "servers": { - "type": "array", - "items": { - "type": "object", - "properties": { - "url": { - "type": "string" - } - }, - "required": [ - "url" - ] - } - }, - "components": { - "type": "object", - "properties": { - "schemas": { - "type": "object" - }, - "responses": { - "type": "object" - }, - "parameters": { - "type": "object" - }, - "examples": { - "type": "object" - }, - "requestBodies": { - "type": "object" - }, - "headers": { - "type": "object" - }, - "securitySchemes": { - "type": "object" - }, - "links": { - "type": "object" - }, - "callbacks": { - "type": "object" - }, - "pathItems": { - "type": "object" - } - } - }, - "security": { - "type": "array", - "items": { - "type": "object" - } - }, - "paths": { - "type": "object" - }, - "tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "externalDocs": { - "type": "object", - "properties": { - "description": { - "type": "string" - }, - "url": { - "type": "string", - "format": "uri" - } - }, - "required": [ - "url" - ] - } - }, - "required": [ - "name" - ] - } - }, - "externalDocs": { - "type": "object", - "properties": { - "description": { - "type": "string" - }, - "url": { - "type": "string", - "format": "uri" - } - }, - "required": [ - "url" - ] - } - }, - "type": "object", - "required": [ - "openapi", - "info" - ] - } + "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. " } } }, - "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" - } + "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." } - }, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "description": "Define the URL which browser will be redirected to", - "type": "string" - } - } - } + } + }, + "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." } } - } - }, - "parameters": { - "contentType": { - "name": "Content-Type", - "in": "header", - "description": "Content type of the request", - "required": true, - "schema": { - "type": "string", - "default": "application/json" + }, + "SubscriptionPlan": { + "properties": { + "id": { + "description": "Unique identity of subscription plan." + }, + "name": { + "description": "Name of the subscription plan." + }, + "description": { + "description": "A short description about the subscription plan." + }, + "active": { + "description": "When `true`, the subscription plan is available for selection in storefront." + }, + "activeStorefrontLabel": { + "description": "When boolean value id `true`, the label overrides the plan name." + }, + "availabilityRuleId": { + "description": "Unique identity of rule." + }, + "label": { + "description": "Label that can overwrite the active plan name. " + }, + "translated": { + "description": "Contains the translations of all translated fields." + } } }, - "accept": { - "name": "Accept", - "in": "header", - "description": "Accepted response content types", - "required": true, - "schema": { - "type": "string", - "default": "application/json" + "SubscriptionPlanIntervalMapping": { + "properties": { + "id": { + "description": "Unique identity of subscription plan interval mapping." + }, + "subscriptionIntervalId": { + "description": "Unique identity of subscription interval." + }, + "subscriptionPlanId": { + "description": "Unique identity of subscription plan." + } + } + }, + "SubscriptionPlanProductMapping": { + "properties": { + "id": { + "description": "Unique identity of subscription plan for product mapping." + }, + "productId": { + "description": "Unique identity of product." + }, + "productVersionId": { + "description": "Unique identity of product's version." + }, + "subscriptionPlanId": { + "description": "Unique identity of subscription plan." + } + } + }, + "SubscriptionTagMapping": { + "properties": { + "id": { + "description": "Unique identity of subscription tag." + }, + "subscriptionId": { + "description": "Unique identity of subscription." + }, + "tagId": { + "description": "Unique identity of subscription tag." + } + } + }, + "SwagDelayAction": { + "properties": { + "id": { + "description": "Unique identity of swag delay action for flow builder" + }, + "orderId": { + "description": "Unique identity of order." + }, + "customerId": { + "description": "Unique identity of customer." + } + } + }, + "Warehouse": { + "properties": { + "id": { + "description": "Unique identity of warehouse." + } + } + }, + "WarehouseGroup": { + "properties": { + "id": { + "description": "Unique identity of warehouse group." + } + } + }, + "CustomPrice": { + "properties": { + "id": { + "description": "Unique identity of the custom price." + }, + "productId": { + "description": "Unique identity of the product." + }, + "productVersionId": { + "description": "Unique identity of the product's version." + }, + "customerId": { + "description": "Unique identity of the customer." + }, + "customerGroupId": { + "description": "Unique identity of the customer's group." + }, + "price": { + "description": "Detailed information of price." + } + } + }, + "CustomerSpecificFeatures": { + "properties": { + "id": { + "description": "Unique identity of the customer specific features." + }, + "customerId": { + "description": "Unique identity of the customer." + } + } + }, + "MediaAiTag": { + "properties": { + "id": { + "description": "Unique identity of the AI media tag." + }, + "tag": { + "description": "Tag that indicates if the media is made by AI or not." + }, + "translated": { + "description": "Contains the translations of all translated fields." + } } } }, - "securitySchemes": { - "ApiKey": { - "type": "apiKey", - "description": "Identifies the sales channel you want to access the API through", - "name": "sw-access-key", - "in": "header" - }, - "ContextToken": { - "type": "apiKey", - "description": "Identifies an anonymous or identified user session", - "name": "sw-context-token", - "in": "header" - } - } - }, - "security": [ - { - "ApiKey": [] - } - ], - "paths": { - "/country-state/{countryId}": { - "post": { - "tags": [ - "System & Context", - "Endpoints supporting Criteria " - ], - "summary": "Fetch the states of a country", - "description": "Perform a filtered search the states for a country", - "operationId": "readCountryState", - "parameters": [ - { - "name": "countryId", - "in": "path", - "required": true, + "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." + } + ] } }, - { - "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": { - "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" - } - ] + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "404", + "title": "Not Found", + "description": "Resource with given parameter was not found." } - } + ] } } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/search-suggest": { - "post": { - "tags": [ - "Product" - ], - "summary": "Search for products (suggest)", - "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", - "operationId": "searchSuggest", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/vnd.api+json": { "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "required": [ - "search" - ], - "properties": { - "search": { - "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/ProductListingFlags" - } - ] - } + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "403", + "title": "Forbidden", + "description": "This operation is restricted to logged in users." + } + ] } - } - }, - "responses": { - "200": { - "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProductListingResult" + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "403", + "title": "Forbidden", + "description": "This operation is restricted to logged in users." } - } + ] } } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/product-listing/{categoryId}": { - "post": { - "tags": [ - "Product" - ], - "summary": "Fetch a product listing by category", - "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.", - "operationId": "readProductListing", - "parameters": [ - { - "name": "categoryId", - "in": "path", - "description": "Identifier of a category.", - "required": true, + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/vnd.api+json": { "schema": { - "type": "string" + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "401", + "title": "Unauthorized", + "description": "Authorization information is missing or invalid." + } + ] } }, - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Determines if the response must contain a SeoUrl entity for a product entity", - "required": false, + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "401", + "title": "Unauthorized", + "description": "Authorization information is missing or invalid." + } + ] + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/vnd.api+json": { "schema": { - "type": "boolean" + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "400", + "title": "Bad Request", + "description": "Bad parameters for this endpoint. See documentation for the correct ones." + } + ] } }, - { - "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": "400", + "title": "Bad Request", + "description": "Bad parameters for this endpoint. See documentation for the correct ones." + } + ] } } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/ProductListingCriteria" - }, - { - "$ref": "#/components/schemas/ProductListingFlags" - } - ] - } + } + }, + "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" } } }, - "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" + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redirectUrl": { + "description": "Define the URL which browser will be redirected to", + "type": "string" } } } } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/category": { - "post": { - "tags": [ - "Category", - "Endpoints supporting Criteria " - ], - "summary": "Fetch a list of categories", - "description": "Perform a filtered search for categories.", - "operationId": "readCategoryList", - "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": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "Entity search result containing categories.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { + "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": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" + "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" + ] } }, - { - "$ref": "#/components/schemas/EntitySearchResult" + "required": [ + "name" + ] + } + }, + "externalDocs": { + "type": "object", + "properties": { + "description": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" } + }, + "required": [ + "url" ] } - } + }, + "type": "object", + "required": [ + "openapi", + "info" + ] } } - }, - "security": [ - { - "ApiKey": [] - } - ] + } } }, - "/category/{navigationId}": { + "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": { + "/newsletter/confirm": { "post": { "tags": [ - "Category", - "Endpoints supporting Criteria " - ], - "summary": "Fetch a single category", - "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.", - "operationId": "readCategory", - "parameters": [ - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "navigationId", - "in": "path", - "description": "Identifier of the category to be fetched", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "slots", - "in": "query", - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", - "schema": { - "type": "string" - } - } + "Newsletter" ], + "summary": "Confirm a newsletter registration", + "description": "You have to use the hash from the link sent out via email to confirm the user registration.", + "operationId": "confirmNewsletter", "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "hash", + "em" + ], + "properties": { + "hash": { + "description": "Hash parameter from link the in the confirmation mail", + "type": "string" }, - { - "$ref": "#/components/schemas/ProductListingCriteria" + "em": { + "description": "Email hash parameter from the link in the confirmation mail", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "The loaded category with cms page", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Category" - } - } - } + "description": "The newsletter confirmation was successful." } }, "security": [ @@ -15747,69 +15431,84 @@ ] } }, - "/language": { + "/newsletter/subscribe": { "post": { "tags": [ - "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}$" - } - } + "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": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "email", + "option", + "storefrontUrl" + ], + "properties": { + "email": { + "description": "Email address that will receive the confirmation and the newsletter.", + "type": "string" + }, + "option": { + "description": "Defines what should be done.", + "type": "string" + }, + "storefrontUrl": { + "description": "Url of the storefront of the shop. This will be used for generating the link to the /newsletter/confirm inside the confirm email.", + "type": "string" + }, + "salutationId": { + "description": "Identifier of the salutation.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "firstName": { + "description": "First name", + "type": "string" + }, + "lastName": { + "description": "Last name", + "type": "string" + }, + "street": { + "description": "Street", + "type": "string" + }, + "city": { + "description": "City", + "type": "string" + }, + "zipCode": { + "description": "Zip code", + "type": "string" + }, + "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" } } } }, "responses": { "200": { - "description": "Entity search result containing languages.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Language" - } - } - }, - "required": [ - "elements" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } + "description": "Success" } }, "security": [ @@ -15819,52 +15518,36 @@ ] } }, - "/media": { + "/newsletter/unsubscribe": { "post": { "tags": [ - "Content" + "Newsletter" ], - "summary": "Fetch and resolve Media Entities", - "description": "Fetch one or multiple Media Entities with the corresponding Identifier.", - "operationId": "readMedia", + "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": { - "ids": { - "description": "Identifier (UUID) of the media entity to be fetched.", - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "email": { + "description": "Email address that should be removed from the mailing lists.", + "type": "string" } }, - "type": "object", - "required": [ - "ids" - ] + "type": "object" } } } }, "responses": { "200": { - "description": "The loaded MediaCollection containing the requested Media Entities.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Media" - } - } - } - } - }, - "404": { - "$ref": "#/components/responses/404" + "description": "Unsubscribing was successful." } }, "security": [ @@ -15874,92 +15557,45 @@ ] } }, - "/_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" - } - } - } - } - } - } - } - } - } - } - } - }, - "/script/{hook}": { + "/customer-group-registration/config/{customerGroupId}": { "get": { "tags": [ - "API", - "Script", - "App" + "Login & Registration" ], - "summary": "Access point for different api logics which are provided by apps over script hooks", - "operationId": "getScriptStoreApiRoute", + "summary": "Fetch registration settings for customer group", + "operationId": "getCustomerGroupRegistrationInfo", "parameters": [ { - "name": "hook", + "name": "customerGroupId", "in": "path", - "description": "Dynamic hook which used to build the hook name", + "description": "Customer group 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}$" } } ], "responses": { "200": { - "description": "Returns different structures of results based on the called script.", + "description": "Returns the customer group including registration settings.", "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": true, - "nullable": true - } - }, - "application/vnd.api+json": { - "schema": { - "type": "object", - "additionalProperties": true, - "nullable": true + "$ref": "#/components/schemas/CustomerGroup" } } } - }, - "204": { - "description": "No data by default" } }, "security": [ @@ -15967,48 +15603,81 @@ "ApiKey": [] } ] - }, + } + }, + "/search": { "post": { "tags": [ - "API", - "Script", - "App" + "Product" ], - "summary": "Access point for different api logics which are provided by apps over script hooks", - "operationId": "postScriptStoreApiRoute", + "summary": "Search for products", + "description": "Performs a search for products which can be used to display a product listing.", + "operationId": "searchPage", "parameters": [ { - "name": "hook", - "in": "path", - "description": "Dynamic hook which used to build the hook name", - "required": true, + "name": "p", + "in": "query", + "description": "The page number to fetch.", + "required": false, "schema": { - "type": "string" + "type": "integer" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "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": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "search": { + "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/ProductListingCriteria" + }, + { + "$ref": "#/components/schemas/ProductListingFlags" + } + ] + } + } + } + }, "responses": { "200": { - "description": "Returns different structures of results based on the called script.", + "description": "Returns a product listing containing all products and additional fields to display a listing.", "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": true, - "nullable": true - } - }, - "application/vnd.api+json": { - "schema": { - "type": "object", - "additionalProperties": true, - "nullable": true + "$ref": "#/components/schemas/ProductListingResult" } } } - }, - "204": { - "description": "No data by default" } }, "security": [ @@ -16018,22 +15687,23 @@ ] } }, - "/product/{productId}/cross-selling": { + "/navigation/{activeId}/{rootId}": { "post": { "tags": [ - "Product" + "Category", + "Endpoints supporting Criteria " ], - "summary": "Fetch cross-selling groups of a product", - "description": "This route is used to load the cross sellings for a product. A product has several cross selling definitions in which several products are linked. The route returns the cross sellings together with the linked products", - "operationId": "readProductCrossSellings", + "summary": "Fetch a 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": "productId", - "in": "path", - "description": "Product ID", - "required": true, + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, "schema": { - "type": "string" + "type": "boolean" } }, { @@ -16045,15 +15715,80 @@ "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": { + "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" + } + ] + } + } + } + }, "responses": { "200": { - "description": "Found cross sellings", + "description": "All available navigations", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CrossSellingElementCollection" + "$ref": "#/components/schemas/NavigationRouteResponse" } } } @@ -16066,25 +15801,16 @@ ] } }, - "/product/{productId}": { + "/shipping-method": { "post": { "tags": [ - "Product" + "Payment & Shipping", + "Endpoints supporting Criteria " ], - "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", + "summary": "Fetch shipping methods", + "description": "Perform a filtered search for shipping methods.", + "operationId": "readShippingMethod", "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Product ID", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$'" - } - }, { "name": "sw-language-id", "in": "header", @@ -16096,10 +15822,9 @@ } }, { - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "in": "header", - "name": "sw-include-seo-urls", - "required": false, + "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" } @@ -16121,11 +15846,34 @@ }, "responses": { "200": { - "description": "Product information along with variant groups and options", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductDetailResponse" + "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" + } + ] } } } @@ -16138,35 +15886,145 @@ ] } }, - "/product": { + "/account/newsletter-recipient": { "post": { "tags": [ - "Product", - "Endpoints supporting Criteria " + "Profile", + "Newsletter", + "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}$" + "summary": "Fetch newsletter recipients", + "description": "Perform a filtered search for newsletter recipients.", + "operationId": "readNewsletterRecipient", + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AccountNewsletterRecipient" + } + } } } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/account/change-profile": { + "post": { + "tags": [ + "Profile" ], + "summary": "Change the customer's information", + "description": "Make changes to a customer's account, like changing their name, salutation or title.", + "operationId": "changeProfile", "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ + "type": "object", + "required": [ + "salutationId", + "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" + } + } + }, { - "$ref": "#/components/schemas/Criteria" + "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 + } + } } ] } @@ -16175,26 +16033,11 @@ }, "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" } } } @@ -16202,77 +16045,56 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/product/{productId}/reviews": { + "/account/change-email": { "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 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": "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" } } } @@ -16280,71 +16102,32 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/product/{productId}/review": { + "/account/change-language": { "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": "Change the customer's language.", + "description": "Changes the language of the logged in customer", + "operationId": "changeLanguage", "requestBody": { + "required": true, "content": { "application/json": { "schema": { "required": [ - "title", - "content", - "points" + "languageId" ], "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.", + "language": { + "description": "New languageId", "type": "string" - }, - "points": { - "description": "The review rating for the product.", - "type": "number", - "format": "double" } }, "type": "object" @@ -16354,7 +16137,14 @@ }, "responses": { "200": { - "description": "Success response indicating the review was saved successfully." + "description": "Returns a success response indicating a successful update", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } } }, "security": [ @@ -16365,52 +16155,35 @@ ] } }, - "/product/{productId}/find-variant": { + "/account/change-password": { "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" ], + "summary": "Change the customer's password", + "description": "Changes a customer's password using their current password as a validation.", + "operationId": "changePassword", "requestBody": { + "required": true, "content": { "application/json": { "schema": { "required": [ - "options" + "password", + "newPassword", + "newPasswordConfirm" ], "properties": { - "options": { - "description": "The options parameter for the variant to find.", - "type": "array", - "items": { - "type": "string" - } + "password": { + "description": "Current password of the customer", + "type": "string" }, - "switchedGroup": { - "description": "The id of the option group that has been switched.", + "newPassword": { + "description": "New Password for the customer", + "type": "string" + }, + "newPasswordConfirm": { + "description": "Confirmation of the new password", "type": "string" } }, @@ -16421,11 +16194,11 @@ }, "responses": { "200": { - "description": "Returns an FoundCombination struct containing the ids matching the search.", + "description": "Returns a success response indicating a successful update.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/FindProductVariantRouteResponse" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -16433,70 +16206,107 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/document/download/{documentId}/{deepLinkCode}": { + "/account/change-payment-method/{paymentMethodId}": { "post": { "tags": [ - "Document", - "Endpoints supporting Criteria " + "Profile" ], - "summary": "Download generated document", - "description": "Returns blob file of a generated document to download.", - "operationId": "download", + "summary": "Change the customer's default payment method", + "description": "Changes a customer's default (preselected) payment method.", + "operationId": "changePaymentMethod", "parameters": [ { - "name": "documentId", + "name": "paymentMethodId", "in": "path", + "description": "Identifier of the desired default payment method", "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "deepLinkCode", - "required": true, - "in": "path", "schema": { "type": "string" } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + } + ], + "responses": { + "200": { + "description": "Returns a success response indicating a successful update.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } } } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/account/customer-recovery-is-expired": { + "post": { + "tags": [ + "Profile" ], + "summary": "Checks if the customer recovery entry for a given hash is expired.", + "description": "This can be used to validate a provided hash has a valid and not expired customer recovery hash.", + "operationId": "getCustomerRecoveryIsExpired", "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "hash" + ], + "properties": { + "hash": { + "description": "Parameter from the link in the confirmation mail sent in Step 1", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "Returns the document information and blob to download.", + "description": "Returns a CustomerRecoveryIsExpiredResponse that indicates if the hash is expired or not.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Document" + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "isExpired": { + "type": "boolean" + } + }, + "required": [ + "isExpired" + ] + } + }, + "apiAlias": { + "enum": [ + "array_struct" + ], + "type": "string" + } + } } } } @@ -16504,63 +16314,28 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/search": { + "/account/customer": { "post": { "tags": [ - "Product" - ], - "summary": "Search for products", - "description": "Performs a search for products which can be used to display a product listing.", - "operationId": "searchPage", - "parameters": [ - { - "name": "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", + "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": { "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" } ] } @@ -16569,11 +16344,11 @@ }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", + "description": "Returns the logged in customer, also for guest sessions. Check for the value of `guest` field to see whether the customer is a guest.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "$ref": "#/components/schemas/Customer" } } } @@ -16581,50 +16356,88 @@ }, "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": [] } ] } }, - "/shipping-method": { - "post": { + "/account/address/{addressId}": { + "delete": { "tags": [ - "Payment & Shipping", - "Endpoints supporting Criteria " + "Address" ], - "summary": "Fetch shipping methods", - "description": "Perform a filtered search for shipping methods.", - "operationId": "readShippingMethod", + "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": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "name": "addressId", + "in": "path", + "description": "ID of the address to be deleted.", + "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } + } + ], + "responses": { + "204": { + "description": "No Content response, when the address has been deleted" }, + "400": { + "description": "Response containing a list of errors, most likely due to the address being in use" + } + }, + "security": [ { - "name": "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.", + "ApiKey": [], + "ContextToken": [] + } + ] + }, + "patch": { + "tags": [ + "Address" + ], + "summary": "Modify an address of a customer", + "description": "Modifies an existing address of a customer.", + "operationId": "updateCustomerAddress", + "parameters": [ + { + "name": "addressId", + "in": "path", + "description": "Address ID", + "required": true, "schema": { - "type": "boolean" + "type": "string" } } ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomerAddressBody" } } } @@ -16637,26 +16450,10 @@ "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/CustomerAddress" }, { - "$ref": "#/components/schemas/EntitySearchResult" + "$ref": "#/components/schemas/CustomerAddressRead" } ] } @@ -16666,161 +16463,82 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/newsletter/confirm": { + "/account/list-address": { "post": { "tags": [ - "Newsletter" + "Address", + "Endpoints supporting Criteria " ], - "summary": "Confirm a newsletter registration", - "description": "You have to use the hash from the link sent out via email to confirm the user registration.", - "operationId": "confirmNewsletter", + "summary": "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": true, + "required": false, "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" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "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": { - "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" + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomerAddress" } - }, - "type": "object" + } } } } }, - "responses": { - "200": { - "description": "Success" - } - }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/newsletter/unsubscribe": { + "/account/login": { "post": { "tags": [ - "Newsletter" + "Login & Registration" ], - "summary": "Remove a newsletter subscription", - "description": "Removes a newsletter recipient from the mailing lists.", - "operationId": "unsubscribeToNewsletter", + "summary": "Log in a customer", + "description": "Logs in customers given their credentials.", + "operationId": "loginCustomer", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "email" + "username", + "password" ], "properties": { - "email": { - "description": "Email address that should be removed from the mailing lists.", + "username": { + "description": "Email", + "type": "string" + }, + "password": { + "description": "Password", "type": "string" } }, @@ -16831,82 +16549,14 @@ }, "responses": { "200": { - "description": "Unsubscribing was successful." - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/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": "", + "$ref": "#/components/responses/ContextTokenResponse" + }, + "401": { + "description": "If credentials are incorrect an error is returned", "content": { "application/json": { "schema": { - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PaymentMethod" - } - } - }, - "type": "object" + "$ref": "#/components/schemas/failure" } } } @@ -16919,34 +16569,35 @@ ] } }, - "/handle-payment": { + "/account/login/imitate-customer": { "post": { "tags": [ - "Payment & Shipping" + "Login & Registration" ], - "summary": "Initiate a payment for an order", - "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order.", - "operationId": "handlePaymentMethod", + "summary": "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": [ - "orderId" + "token", + "customerId", + "userId" ], "properties": { - "orderId": { - "description": "Identifier of an order", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "token": { + "description": "Generated customer impersonation token", + "type": "string" }, - "finishUrl": { - "description": "URL to which the client should be redirected after successful payment", + "customerId": { + "description": "ID of the customer", "type": "string" }, - "errorUrl": { - "description": "URL to which the client should be redirected after erroneous payment", + "userId": { + "description": "ID of the user who generated the token", "type": "string" } }, @@ -16957,19 +16608,14 @@ }, "responses": { "200": { - "description": "Redirect to external payment provider", + "$ref": "#/components/responses/ContextTokenResponse" + }, + "400": { + "description": "If the token is incorrect an error is returned", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "type": "string" - } - }, - "required": [ - "redirectUrl" - ] + "$ref": "#/components/schemas/failure" } } } @@ -16982,117 +16628,228 @@ ] } }, - "/order/state/cancel": { + "/account/logout": { "post": { "tags": [ - "Order" + "Login & Registration" ], - "summary": "Cancel an order", - "description": "Cancels an order. The order state will be set to 'cancelled'.", - "operationId": "cancelOrder", - "parameters": [ + "summary": "Log out a customer", + "description": "Logs out a customer.", + "operationId": "logoutCustomer", + "responses": { + "200": { + "$ref": "#/components/responses/ContextTokenResponse" + }, + "403": { + "$ref": "#/components/responses/403" + } + }, + "security": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "ApiKey": [], + "ContextToken": [] } + ] + } + }, + "/account/register-confirm": { + "post": { + "tags": [ + "Login & Registration" ], + "summary": "Confirm a customer registration", + "description": "Confirms a customer registration when double opt-in is activated.\n\nLearn more about double opt-in registration in our guide \"Register a customer\".", + "operationId": "registerConfirm", "requestBody": { "required": true, "content": { "application/json": { "schema": { + "required": [ + "hash", + "em" + ], "properties": { - "orderId": { - "description": "The identifier of the order to be canceled.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "hash": { + "description": "Hash from the email received", + "type": "string" + }, + "em": { + "description": "Email hash from the email received", + "type": "string" } }, - "type": "object", - "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": "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": [] } ] } }, - "/order": { + "/account/register": { "post": { "tags": [ - "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}$" - } - } + "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": { - "allOf": [ + "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": [ { - "$ref": "#/components/schemas/Criteria" + "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": { - "checkPromotion": { - "description": "Check if the payment method of the order is still changeable.", - "type": "boolean" + "accountType": { + "description": "Type of the customer account. Can be `private` or `business`.", + "type": "string", + "enum": [ + "business" + ] + }, + "company": { + "description": "Company of the customer. Only required when `accountType` is `business`.", + "type": "string" + }, + "vatIds": { + "description": "VAT IDs of the customer's company. Only valid when `accountType` is `business`.", + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 } - }, - "type": "object" + } } - ] + ], + "type": "object" } } } }, "responses": { "200": { - "description": "An array of orders and an indicator if the payment of the order can be changed.", + "description": "Success", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OrderRouteResponse" + "$ref": "#/components/schemas/Customer" } } } @@ -17100,51 +16857,41 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/order/payment": { + "/account/recovery-password-confirm": { "post": { "tags": [ - "Order" - ], - "summary": "Update the payment method of an order", - "description": "Changes the payment method of a specific order. You can use the /order route to find out if the payment method of an order can be changed - take a look at the `paymentChangeable`- array in the response.", - "operationId": "orderSetPayment", - "parameters": [ - { - "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": "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": [ - "paymentMethodId", - "orderId" + "hash", + "newPassword", + "newPasswordConfirm" ], "properties": { - "paymentMethodId": { - "description": "The identifier of the paymentMethod to be set", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "hash": { + "description": "Parameter from the link in the confirmation mail sent in Step 1", + "type": "string" }, - "orderId": { - "description": "The identifier of the order.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "newPassword": { + "description": "New password for the customer", + "type": "string" + }, + "newPasswordConfirm": { + "description": "Confirmation of the new password", + "type": "string" } }, "type": "object" @@ -17154,7 +16901,7 @@ }, "responses": { "200": { - "description": "Successfully updated the payment method of the order.", + "description": "Returns a success response indicating a successful update.", "content": { "application/json": { "schema": { @@ -17166,58 +16913,50 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/order/download/{orderId}/{downloadId}": { - "get": { + "/account/recovery-password": { + "post": { "tags": [ - "Order" + "Profile" ], - "summary": "Download a purchased file", - "description": "Download a file included in the given order and with the given id. Access must be granted.", - "operationId": "orderDownloadFile", - "parameters": [ - { - "name": "orderId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "downloadId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "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" + ], + "properties": { + "email": { + "description": "E-Mail address to identify the customer", + "type": "string" + }, + "storefrontUrl": { + "description": "URL of the storefront to use for the generated reset link. It has to be a domain that is configured in the sales channel domain settings.", + "type": "string" + } + }, + "type": "object" + } } } - ], + }, "responses": { "200": { - "description": "An arbitrary binary file.", + "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/octet-stream": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -17225,33 +16964,24 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/product-export/{accessKey}/{fileName}": { - "get": { + "/account/address/default-shipping/{addressId}": { + "patch": { "tags": [ - "Product" + "Address" ], - "summary": "Export product export", - "operationId": "readProductExport", + "summary": "Change a customer's default shipping address", + "description": "Updates the default (preselected) shipping addresses of a customer.", + "operationId": "defaultShippingAddress", "parameters": [ { - "name": "accessKey", - "in": "path", - "description": "Access Key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "fileName", + "name": "addressId", "in": "path", - "description": "File Name", + "description": "Address ID", "required": true, "schema": { "type": "string" @@ -17265,189 +16995,111 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/contact-form": { - "post": { + "/account/address/default-billing/{addressId}": { + "patch": { "tags": [ - "Content" + "Address" ], - "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": "Change a customer's default billing address", + "description": "Updates the default (preselected) billing addresses of a customer.", + "operationId": "defaultBillingAddress", "parameters": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "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" - } + "name": "addressId", + "in": "path", + "description": "Address ID", + "required": true, + "schema": { + "type": "string" } } - }, + ], "responses": { "200": { - "description": "Message sent successful." + "description": "" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/breadcrumb/{id}": { - "get": { + "/account/address": { + "post": { "tags": [ - "Experimental", - "Breadcrumb" + "Address" ], - "summary": "Fetch a breadcrumb", - "description": "Perform search to get category or product breadcrumb. \n\nExperimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", - "operationId": "readBreadcrumb", - "parameters": [ - { - "name": "id", - "in": "path", - "description": "UUID for product or category", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "type", - "in": "query", - "description": "Type: category or product (optional - default: product)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "product", - "category" - ] - } - }, - { - "name": "referrerCategoryId", - "in": "query", - "description": "UUID for referrer category only used for product breadcrumb", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "summary": "Create a new address for a customer", + "description": "Creates a new address for a customer.", + "operationId": "createCustomerAddress", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomerAddress" + } } } - ], + }, "responses": { "200": { - "description": "Search result containing SeoUrl\\'s to be used as breadcrumb.", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BreadcrumbCollection" + "allOf": [ + { + "$ref": "#/components/schemas/CustomerAddress" + }, + { + "$ref": "#/components/schemas/CustomerAddressRead" + } + ] } } } - }, - "400": { - "$ref": "#/components/responses/400" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/landing-page/{landingPageId}": { + "/document/download/{documentId}/{deepLinkCode}": { "post": { "tags": [ - "Content", + "Document", "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", + "summary": "Download generated document", + "description": "Returns blob file of a generated document to download.", + "operationId": "download", "parameters": [ { - "name": "landingPageId", + "name": "documentId", "in": "path", - "description": "Identifier of the landing page.", "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "deepLinkCode", + "required": true, + "in": "path", "schema": { "type": "string" } @@ -17464,28 +17116,13 @@ } ], "requestBody": { + "required": false, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Criteria" - }, - { - "allOf": [ - { - "properties": { - "slots": { - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/ProductListingCriteria" - } - ] } ] } @@ -17494,41 +17131,51 @@ }, "responses": { "200": { - "description": "The loaded landing page with cms page", + "description": "Returns the document information and blob to download.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LandingPage" + "$ref": "#/components/schemas/Document" } } } - }, - "404": { - "$ref": "#/components/responses/404" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/context": { - "get": { + "/customer/wishlist/add/{productId}": { + "post": { "tags": [ - "System & Context" + "Wishlist" + ], + "summary": "Add a product to a wishlist", + "description": "Adds a product to a customers wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "addProductOnWishlist", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Identifier of the product to be added.", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } ], - "summary": "Fetch the current context", - "description": "Fetches the current context. This includes for example the `customerGroup`, `currency`, `taxRules` and many more.", - "operationId": "readContext", "responses": { "200": { - "description": "Returns the current context.", + "description": "Returns a success response.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SalesChannelContext" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -17536,62 +17183,89 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] - }, - "patch": { + } + }, + "/customer/wishlist": { + "post": { "tags": [ - "System & Context" + "Wishlist", + "Endpoints supporting Criteria " + ], + "summary": "Fetch a wishlist", + "description": "Fetch a customer's wishlist. Products on the wishlist can be filtered using a criteria object.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "readCustomerWishlist", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } ], - "summary": "Modify the current context", - "description": "Used for switching the context. A typical example would be changing the language or changing the currency.", - "operationId": "updateContext", "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "properties": { - "currencyId": { - "description": "Currency", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "languageId": { - "description": "Language", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "billingAddressId": { - "description": "Billing Address", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shippingAddressId": { - "description": "Shipping Address", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "paymentMethodId": { - "description": "Payment Method", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shippingMethodId": { - "description": "Shipping Method", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryId": { - "description": "Country", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryStateId": { - "description": "Country State", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WishlistLoadRouteResponse" + } + } + } + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/customer/wishlist/merge": { + "post": { + "tags": [ + "Wishlist" + ], + "summary": "Create a wishlist for a customer", + "description": "Create a new wishlist for a logged in customer or extend the existing wishlist given a set of products.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * A customer can only have a single wishlist.\n * The wishlist feature has to be activated.", + "operationId": "mergeProductOnWishlist", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "productIds": { + "description": "List product id", + "type": "array", + "items": { + "description": "product id", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } }, "type": "object" @@ -17601,100 +17275,83 @@ }, "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" + "description": "Returns a success response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/seo-url": { - "post": { + "/customer/wishlist/delete/{productId}": { + "delete": { "tags": [ - "Sitemap & Routes", - "Endpoints supporting Criteria " + "Wishlist" ], - "summary": "Fetch SEO routes", - "description": "Perform a filtered search for seo urls.", - "operationId": "readSeoUrl", + "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": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "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}$" } } ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } - } - } - }, "responses": { "200": { - "description": "Entity search result containing seo urls.", + "description": "Returns a success response indicating a successful removal.", "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } - } - }, - "type": "object", - "required": [ - "elements" - ] - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/SuccessResponse" } } } }, "404": { - "$ref": "#/components/responses/404" + "description": "The removal of the product failed. Probably because the product could not be found on the wishlist.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + } + } + } } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/salutation": { + "/currency": { "post": { "tags": [ "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch salutations", - "description": "Fetches salutations with a criteria obj.", - "operationId": "readSalutation", + "summary": "Fetch currencies", + "description": "Perform a filtered search for currencies.", + "operationId": "readCurrency", "parameters": [ { "name": "sw-language-id", @@ -17723,7 +17380,7 @@ }, "responses": { "200": { - "description": "Entity search result containing salutations.", + "description": "Entity search result containing currencies.", "content": { "application/json": { "schema": { @@ -17733,7 +17390,7 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Salutation" + "$ref": "#/components/schemas/Currency" } } }, @@ -17755,145 +17412,46 @@ ] } }, - "/account/newsletter-recipient": { + "/search-suggest": { "post": { "tags": [ - "Profile", - "Newsletter", - "Endpoints supporting Criteria" + "Product" ], - "summary": "Fetch newsletter recipients", - "description": "Perform a filtered search for newsletter recipients.", - "operationId": "readNewsletterRecipient", - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AccountNewsletterRecipient" - } - } - } - } - }, - "security": [ + "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": [ { - "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/change-profile": { - "post": { - "tags": [ - "Profile" ], - "summary": "Change the customer's information", - "description": "Make changes to a customer's account, like changing their name, salutation or title.", - "operationId": "changeProfile", "requestBody": { "required": true, "content": { "application/json": { "schema": { - "type": "object", - "required": [ - "salutationId", - "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" - } - } - }, + "allOf": [ { "required": [ - "accountType", - "company", - "vatIds" + "search" ], "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`.", + "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" - }, - "vatIds": { - "description": "VAT IDs of the customer's company. Only valid when `accountType` is `business`.", - "type": "array", - "items": { - "type": "string" - }, - "minItems": 1 } - } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/ProductListingFlags" } ] } @@ -17902,11 +17460,11 @@ }, "responses": { "200": { - "description": "Returns a success response indicating a successful update", + "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/SuccessResponse" + "$ref": "#/components/schemas/ProductListingResult" } } } @@ -17914,44 +17472,35 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/change-email": { + "/app-system/{name}/generate-token": { "post": { "tags": [ - "Profile" + "App system" + ], + "summary": "Generate JWT token for app system backend", + "description": "Generate JWT token for authenticated communication with the app server", + "operationId": "generateJWTAppSystemAppServer", + "parameters": [ + { + "in": "path", + "name": "name", + "required": true, + "description": "Name of the app", + "schema": { + "type": "string" + } + } ], - "summary": "Change the customer's email address", - "description": "Changes a customer's email address to a new email address, using their current password as a validation.", - "operationId": "changeEmail", "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "required": [ - "email", - "emailConfirmation", - "password" - ], - "properties": { - "email": { - "description": "New email address. Has to be unique amongst all customers", - "type": "string" - }, - "emailConfirmation": { - "description": "Confirmation of the new email address.", - "type": "string" - }, - "password": { - "description": "Customer's current password", - "type": "string" - } - }, "type": "object" } } @@ -17959,11 +17508,23 @@ }, "responses": { "200": { - "description": "Returns a success response indicating a successful update", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "type": "object", + "properties": { + "token": { + "type": "string" + }, + "expires": { + "type": "string", + "format": "date-time" + }, + "shopId": { + "type": "string" + } + } } } } @@ -17971,46 +17532,71 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/change-language": { + "/language": { "post": { "tags": [ - "Profile" + "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": "Change the customer's language.", - "description": "Changes the language of the logged in customer", - "operationId": "changeLanguage", "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "required": [ - "languageId" - ], - "properties": { - "language": { - "description": "New languageId", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Returns a success response indicating a successful update", + "description": "Entity search result containing languages.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + } + } + }, + "required": [ + "elements" + ], + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -18018,56 +17604,58 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/change-password": { + "/order/state/cancel": { "post": { "tags": [ - "Profile" + "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}$" + } + } ], - "summary": "Change the customer's password", - "description": "Changes a customer's password using their current password as a validation.", - "operationId": "changePassword", "requestBody": { "required": true, "content": { "application/json": { "schema": { - "required": [ - "password", - "newPassword", - "newPasswordConfirm" - ], "properties": { - "password": { - "description": "Current password of the customer", - "type": "string" - }, - "newPassword": { - "description": "New Password for the customer", - "type": "string" - }, - "newPasswordConfirm": { - "description": "Confirmation of the new password", - "type": "string" + "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": "Returns a success response indicating a successful update.", + "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/SuccessResponse" + "$ref": "#/components/schemas/StateMachineState" } } } @@ -18081,101 +17669,57 @@ ] } }, - "/account/change-payment-method/{paymentMethodId}": { + "/order": { "post": { "tags": [ - "Profile" + "Order", + "Endpoints supporting Criteria " ], - "summary": "Change the customer's default payment method", - "description": "Changes a customer's default (preselected) payment method.", - "operationId": "changePaymentMethod", + "summary": "Fetch a list of orders", + "description": "List orders of a customer.", + "operationId": "readOrder", "parameters": [ { - "name": "paymentMethodId", - "in": "path", - "description": "Identifier of the desired default payment method", - "required": true, + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Returns a success response indicating a successful update.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/account/customer-recovery-is-expired": { - "post": { - "tags": [ - "Profile" ], - "summary": "Checks if the customer recovery entry for a given hash is expired.", - "description": "This can be used to validate a provided hash has a valid and not expired customer recovery hash.", - "operationId": "getCustomerRecoveryIsExpired", "requestBody": { "required": true, "content": { "application/json": { "schema": { - "required": [ - "hash" - ], - "properties": { - "hash": { - "description": "Parameter from the link in the confirmation mail sent in Step 1", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + }, + { + "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 CustomerRecoveryIsExpiredResponse that indicates if the hash is expired or not.", + "description": "An array of orders and an indicator if the payment of the order can be changed.", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "isExpired": { - "type": "boolean" - } - }, - "required": [ - "isExpired" - ] - } - }, - "apiAlias": { - "enum": [ - "array_struct" - ], - "type": "string" - } - } + "$ref": "#/components/schemas/OrderRouteResponse" } } } @@ -18183,41 +17727,65 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/account/customer": { + "/order/payment": { "post": { "tags": [ - "Profile", - "Endpoints supporting Criteria " + "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": "Get information about current customer", - "description": "Returns information about the current customer.", - "operationId": "readCustomer", "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "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": "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": "Successfully updated the payment method of the order.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Customer" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -18229,52 +17797,57 @@ "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": [] - } - ] } }, - "/account/address/{addressId}": { - "delete": { + "/order/download/{orderId}/{downloadId}": { + "get": { "tags": [ - "Address" + "Order" ], - "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": "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": "ID of the address to be deleted.", "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": { - "204": { - "description": "No Content response, when the address has been deleted" - }, - "400": { - "description": "Response containing a list of errors, most likely due to the address being in use" + "200": { + "description": "An arbitrary binary file.", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } } }, "security": [ @@ -18283,46 +17856,63 @@ "ContextToken": [] } ] - }, - "patch": { + } + }, + "/category": { + "post": { "tags": [ - "Address" + "Category", + "Endpoints supporting Criteria " ], - "summary": "Modify an address of a customer", - "description": "Modifies an existing address of a customer.", - "operationId": "updateCustomerAddress", + "summary": "Fetch a list of categories", + "description": "Perform a filtered search for categories.", + "operationId": "readCategoryList", "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": false, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerAddressBody" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] } } } }, "responses": { "200": { - "description": "", + "description": "Entity search result containing categories.", "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/CustomerAddress" + "type": "object", + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + } + } + } }, { - "$ref": "#/components/schemas/CustomerAddressRead" + "$ref": "#/components/schemas/EntitySearchResult" } ] } @@ -18332,29 +17922,69 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/list-address": { + "/category/{navigationId}": { "post": { "tags": [ - "Address", + "Category", "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 a single category", + "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.", + "operationId": "readCategory", + "parameters": [ + { + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "navigationId", + "in": "path", + "description": "Identifier of the category to be fetched", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "slots", + "in": "query", + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", + "schema": { + "type": "string" + } + } + ], "requestBody": { - "required": false, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Criteria" + }, + { + "$ref": "#/components/schemas/ProductListingCriteria" } ] } @@ -18363,14 +17993,11 @@ }, "responses": { "200": { - "description": "", + "description": "The loaded category with cms page", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CustomerAddress" - } + "$ref": "#/components/schemas/Category" } } } @@ -18378,57 +18005,77 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/login": { + "/seo-url": { "post": { "tags": [ - "Login & Registration" + "Sitemap & Routes", + "Endpoints supporting Criteria " + ], + "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}$" + } + } ], - "summary": "Log in a customer", - "description": "Logs in customers given their credentials.", - "operationId": "loginCustomer", "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "required": [ - "username", - "password" - ], - "properties": { - "username": { - "description": "Email", - "type": "string" - }, - "password": { - "description": "Password", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "401": { - "description": "If credentials are incorrect an error is returned", + "description": "Entity search result containing seo urls.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/failure" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" + } + } + }, + "type": "object", + "required": [ + "elements" + ] + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -18438,56 +18085,36 @@ ] } }, - "/account/login/imitate-customer": { - "post": { + "/product-export/{accessKey}/{fileName}": { + "get": { "tags": [ - "Login & Registration" + "Product" ], - "summary": "Imitate the log in as a customer", - "description": "Imitate the log in as a customer given a generated token.", - "operationId": "imitateCustomerLogin", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "token", - "customerId", - "userId" - ], - "properties": { - "token": { - "description": "Generated customer impersonation token", - "type": "string" - }, - "customerId": { - "description": "ID of the customer", - "type": "string" - }, - "userId": { - "description": "ID of the user who generated the token", - "type": "string" - } - }, - "type": "object" - } + "summary": "Export product export", + "operationId": "readProductExport", + "parameters": [ + { + "name": "accessKey", + "in": "path", + "description": "Access Key", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "fileName", + "in": "path", + "description": "File Name", + "required": true, + "schema": { + "type": "string" } } - }, + ], "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "400": { - "description": "If the token is incorrect an error is returned", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - } - } - } + "description": "" } }, "security": [ @@ -18497,73 +18124,97 @@ ] } }, - "/account/logout": { - "post": { + "/sitemap": { + "get": { "tags": [ - "Login & Registration" + "Sitemap & Routes" + ], + "summary": "Fetch sitemaps", + "description": "Fetches a list of compressed sitemap files, which are often used by search engines.", + "operationId": "readSitemap", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } ], - "summary": "Log out a customer", - "description": "Logs out a customer.", - "operationId": "logoutCustomer", "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "403": { - "$ref": "#/components/responses/403" + "description": "Returns a list of available sitemaps.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Sitemap" + } + } + } + } } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/register-confirm": { - "post": { + "/sitemap/{filePath}": { + "get": { "tags": [ - "Login & Registration" + "Sitemap & Routes" ], - "summary": "Confirm a customer registration", - "description": "Confirms a customer registration when double opt-in is activated.\n\nLearn more about double opt-in registration in our guide \"Register a customer\".", - "operationId": "registerConfirm", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "hash", - "em" - ], - "properties": { - "hash": { - "description": "Hash from the email received", - "type": "string" - }, - "em": { - "description": "Email hash from the email received", - "type": "string" - } - }, - "type": "object" + "summary": "Download sitemap file", + "description": "Downloads the sitemap file from the configured sitemap storage.", + "operationId": "getSitemapFile", + "parameters": [ + { + "name": "filePath", + "in": "path", + "description": "The path to the sitemap file", + "required": true, + "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}$" + } + } + ], + "responses": { + "200": { + "description": "Returns the blob to download.", + "content": { + "application/xml": { + "schema": { + "type": "string", + "format": "binary" + } + }, + "application/gzip": { + "schema": { + "type": "string", + "format": "binary" + } } } } }, - "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" - } - }, "security": [ { "ApiKey": [] @@ -18571,142 +18222,86 @@ ] } }, - "/account/register": { + "/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": "Register a customer", - "description": "Registers a customer. Used both for normal customers and guest customers.See the Guide \"Register a customer\" for more information on customer registration.", - "operationId": "register", "requestBody": { "required": true, "content": { "application/json": { "schema": { + "required": [ + "salutationId", + "email", + "subject", + "comment" + ], "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" + "description": "Identifier of the salutation. Use `/api/salutation` endpoint to fetch possible values.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, "firstName": { - "description": "Customer first name. Value will be reused for shipping and billing address if not provided explicitly.", + "description": "Firstname. This field may be required depending on the system settings.", "type": "string" }, "lastName": { - "description": "Customer last name. Value will be reused for shipping and billing address if not provided explicitly.", + "description": "Lastname. This field may be required depending on the system settings.", "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.", + "email": { + "description": "Email address", "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 + "phone": { + "description": "Phone. This field may be required depending on the system settings.", + "type": "string" }, - "birthdayDay": { - "description": "Birthday day", - "type": "integer" + "subject": { + "description": "The subject of the contact form.", + "type": "string" }, - "birthdayMonth": { - "description": "Birthday month", - "type": "integer" + "comment": { + "description": "The message of the contact form", + "type": "string" }, - "birthdayYear": { - "description": "Birthday year", - "type": "integer" + "navigationId": { + "description": "Identifier of the navigation page. Can be used to override the configuration.\nTake a look at the settings of a category containing a concat form in the administration.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "title": { - "description": "(Academic) title of the customer", - "type": "string" + "slotId": { + "description": "Identifier of the cms element", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "affiliateCode": { - "description": "Field can be used to store an affiliate tracking code", + "cmsPageType": { + "description": "Type of the content management page", "type": "string" }, - "campaignCode": { - "description": "Field can be used to store a campaign tracking code", + "entityName": { + "description": "Entity name for slot config", "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 - } - } - } - ], "type": "object" } } @@ -18714,14 +18309,7 @@ }, "responses": { "200": { - "description": "Success", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Customer" - } - } - } + "description": "Message sent successful." } }, "security": [ @@ -18731,50 +18319,92 @@ ] } }, - "/account/recovery-password-confirm": { + "/_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" + } + } + } + }, + "/salutation": { "post": { "tags": [ - "Profile" + "System & Context", + "Endpoints supporting Criteria " ], - "summary": "Reset a password with recovery credentials", - "description": "This operation is Step 2 of the password reset flow. It is required to conduct Step 1 \"Send a password recovery mail\" in order to obtain the required credentials for this step.Resets a customer's password using credentials from a password recovery mail as a validation.", - "operationId": "recoveryPassword", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "hash", - "newPassword", - "newPasswordConfirm" - ], - "properties": { - "hash": { - "description": "Parameter from the link in the confirmation mail sent in Step 1", - "type": "string" - }, - "newPassword": { - "description": "New password for the customer", - "type": "string" - }, - "newPasswordConfirm": { - "description": "Confirmation of the new password", - "type": "string" + "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}$" + } + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Returns a success response indicating a successful update.", + "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" + } + ] } } } @@ -18787,48 +18417,71 @@ ] } }, - "/account/recovery-password": { + "/cms/{id}": { "post": { "tags": [ - "Profile" + "Content" + ], + "summary": "Fetch and resolve a CMS page", + "description": "Loads a content management page by its identifier and resolve the slot data. This could be media files, product listing and so on.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.", + "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", + "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" - ], - "properties": { - "email": { - "description": "E-Mail address to identify the customer", - "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" }, - "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" + { + "$ref": "#/components/schemas/ProductListingCriteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "If email corresponds to an existing customer, a mail will be sent out to that customer containing a link assembled using the following schema:\n\nReturns a success indicating a successful initialisation of the reset flow.", + "description": "The loaded cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/CmsPage" } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -18838,19 +18491,20 @@ ] } }, - "/account/address/default-shipping/{addressId}": { - "patch": { + "/script/{hook}": { + "get": { "tags": [ - "Address" + "API", + "Script", + "App" ], - "summary": "Change a customer's default shipping address", - "description": "Updates the default (preselected) shipping addresses of a customer.", - "operationId": "defaultShippingAddress", + "summary": "Access point for different api logics which are provided by apps over script hooks", + "operationId": "getScriptStoreApiRoute", "parameters": [ { - "name": "addressId", + "name": "hook", "in": "path", - "description": "Address ID", + "description": "Dynamic hook which used to build the hook name", "required": true, "schema": { "type": "string" @@ -18859,30 +18513,47 @@ ], "responses": { "200": { - "description": "" + "description": "Returns different structures of results based on the called script.", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "nullable": true + } + }, + "application/vnd.api+json": { + "schema": { + "type": "object", + "additionalProperties": true, + "nullable": true + } + } + } + }, + "204": { + "description": "No data by default" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] - } - }, - "/account/address/default-billing/{addressId}": { - "patch": { + }, + "post": { "tags": [ - "Address" + "API", + "Script", + "App" ], - "summary": "Change a customer's default billing address", - "description": "Updates the default (preselected) billing addresses of a customer.", - "operationId": "defaultBillingAddress", + "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": "Address ID", + "description": "Dynamic hook which used to build the hook name", "required": true, "schema": { "type": "string" @@ -18891,110 +18562,195 @@ ], "responses": { "200": { - "description": "" + "description": "Returns different structures of results based on the called script.", + "content": { + "application/json": { + "schema": { + "type": "object", + "additionalProperties": true, + "nullable": true + } + }, + "application/vnd.api+json": { + "schema": { + "type": "object", + "additionalProperties": true, + "nullable": true + } + } + } + }, + "204": { + "description": "No data by default" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/address": { - "post": { + "/context": { + "get": { "tags": [ - "Address" + "System & Context" ], - "summary": "Create a new address for a customer", - "description": "Creates a new address for a customer.", - "operationId": "createCustomerAddress", + "summary": "Fetch the current context", + "description": "Fetches the current context. This includes for example the `customerGroup`, `currency`, `taxRules` and many more.", + "operationId": "readContext", + "responses": { + "200": { + "description": "Returns the current context.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SalesChannelContext" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + }, + "patch": { + "tags": [ + "System & Context" + ], + "summary": "Modify the current context", + "description": "Used for switching the context. A typical example would be changing the language or changing the currency.", + "operationId": "updateContext", "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerAddress" + "properties": { + "currencyId": { + "description": "Currency", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "languageId": { + "description": "Language", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "billingAddressId": { + "description": "Billing Address", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingAddressId": { + "description": "Shipping Address", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "paymentMethodId": { + "description": "Payment Method", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingMethodId": { + "description": "Shipping Method", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryId": { + "description": "Country", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryStateId": { + "description": "Country State", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "type": "object" } } } }, "responses": { "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/CustomerAddress" - }, - { - "$ref": "#/components/schemas/CustomerAddressRead" - } - ] - } - } - } + "$ref": "#/components/responses/ContextTokenResponse" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/customer/wishlist/add/{productId}": { + "/media": { "post": { "tags": [ - "Wishlist" + "Content" ], - "summary": "Add a product to a wishlist", - "description": "Adds a product to a customers wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "addProductOnWishlist", - "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Identifier of the product to be added.", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "summary": "Fetch and resolve Media Entities", + "description": "Fetch one or multiple Media Entities with the corresponding Identifier.", + "operationId": "readMedia", + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "ids": { + "description": "Identifier (UUID) of the media entity to be fetched.", + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + }, + "type": "object", + "required": [ + "ids" + ] + } } } - ], + }, "responses": { "200": { - "description": "Returns a success response.", + "description": "The loaded MediaCollection containing the requested Media Entities.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "type": "array", + "items": { + "$ref": "#/components/schemas/Media" + } } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/customer/wishlist": { + "/payment-method": { "post": { "tags": [ - "Wishlist", + "Payment Method", "Endpoints supporting Criteria " ], - "summary": "Fetch a wishlist", - "description": "Fetch a customer's wishlist. Products on the wishlist can be filtered using a criteria object.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "readCustomerWishlist", + "summary": "Loads all available payment methods", + "operationId": "readPaymentMethod", "parameters": [ { "name": "sw-language-id", @@ -19008,13 +18764,22 @@ } ], "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Criteria" + }, + { + "properties": { + "onlyAvailable": { + "description": "List only available", + "type": "boolean" + } + }, + "type": "object" } ] } @@ -19027,7 +18792,23 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WishlistLoadRouteResponse" + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentMethod" + } + } + }, + "type": "object" } } } @@ -19035,75 +18816,106 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/customer/wishlist/merge": { + "/landing-page/{landingPageId}": { "post": { "tags": [ - "Wishlist" + "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}$" + } + } ], - "summary": "Create a wishlist for a customer", - "description": "Create a new wishlist for a logged in customer or extend the existing wishlist given a set of products.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * A customer can only have a single wishlist.\n * The wishlist feature has to be activated.", - "operationId": "mergeProductOnWishlist", "requestBody": { - "required": true, "content": { "application/json": { "schema": { - "properties": { - "productIds": { - "description": "List product id", - "type": "array", - "items": { - "description": "product id", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "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" + } + ] } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Returns a success response.", + "description": "The loaded landing page with cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/LandingPage" } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/customer/wishlist/delete/{productId}": { - "delete": { + "/checkout/cart": { + "get": { "tags": [ - "Wishlist" + "Cart" ], - "summary": "Remove a product from a wishlist", - "description": "Removes a product from a customer's wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "deleteProductOnWishlist", + "summary": "Fetch or create a cart", + "description": "Used to fetch the current cart or for creating a new one.", + "operationId": "readCart", "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}$" @@ -19112,21 +18924,11 @@ ], "responses": { "200": { - "description": "Returns a success response indicating a successful removal.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } - }, - "404": { - "description": "The removal of the product failed. Probably because the product could not be found on the wishlist.", + "description": "Cart", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/failure" + "$ref": "#/components/schemas/Cart" } } } @@ -19134,60 +18936,45 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] - } - }, - "/_info/openapi3.json": { - "get": { + }, + "delete": { "tags": [ - "System Info & Health Check" + "Cart" ], - "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" - ] + "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" + } + } } } - ], - "responses": { - "200": { - "$ref": "#/components/responses/OpenApi3" + }, + "security": [ + { + "ApiKey": [] } - } + ] } }, - "/cms/{id}": { + "/checkout/cart/line-item": { "post": { "tags": [ - "Content" + "Cart" ], - "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": "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": "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", @@ -19203,37 +18990,21 @@ "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "slots": { - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/ProductListingCriteria" - } - ] + "$ref": "#/components/schemas/CartItems" } } } }, "responses": { "200": { - "description": "The loaded cms page", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CmsPage" + "$ref": "#/components/schemas/Cart" } } } - }, - "404": { - "$ref": "#/components/responses/404" } }, "security": [ @@ -19241,24 +19012,27 @@ "ApiKey": [] } ] - } - }, - "/customer-group-registration/config/{customerGroupId}": { - "get": { + }, + "delete": { "tags": [ - "Login & Registration" + "Cart" ], - "summary": "Fetch registration settings for customer group", - "operationId": "getCustomerGroupRegistrationInfo", + "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": "customerGroupId", - "in": "path", - "description": "Customer group id", + "name": "ids", + "in": "query", + "description": "A list of product identifiers.", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } }, { @@ -19274,11 +19048,11 @@ ], "responses": { "200": { - "description": "Returns the customer group including registration settings.", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerGroup" + "$ref": "#/components/schemas/Cart" } } } @@ -19289,27 +19063,15 @@ "ApiKey": [] } ] - } - }, - "/navigation/{activeId}/{rootId}": { - "post": { + }, + "patch": { "tags": [ - "Category", - "Endpoints supporting Criteria " + "Cart" ], - "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": "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-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", @@ -19319,39 +19081,53 @@ "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" + } + ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CartItems" + } + } + } + }, + "responses": { + "200": { + "description": "The updated cart.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Cart" } - ] + } } - }, + } + }, + "security": [ { - "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, + "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, "schema": { - "oneOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "$ref": "#/components/schemas/NavigationType" - } - ] + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } ], @@ -19360,39 +19136,32 @@ "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" + "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": "All available navigations", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NavigationRouteResponse" + "$ref": "#/components/schemas/Cart" } } } @@ -19405,15 +19174,14 @@ ] } }, - "/currency": { + "/checkout/order": { "post": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Order" ], - "summary": "Fetch currencies", - "description": "Perform a filtered search for currencies.", - "operationId": "readCurrency", + "summary": "Create an order from a cart", + "description": "Creates a new order from the current cart and deletes the cart.\n\nIf you are using the [prepared payment flow](https://developer.shopware.com/docs/concepts/commerce/checkout-concept/payments#2.1-prepare-payment-optional), this endpoint also receives additional transaction details. The exact name of the parameters depends on the implementation of the corresponding *payment handler*.", + "operationId": "createOrder", "parameters": [ { "name": "sw-language-id", @@ -19427,41 +19195,122 @@ } ], "requestBody": { - "required": false, + "description": "Contains additional metadata which is stored together with the order. It can also contain payment transaction details.", "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "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": "Entity search result containing currencies.", + "description": "Order", "content": { "application/json": { "schema": { - "allOf": [ - { + "$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/Currency" + "$ref": "#/components/schemas/PaymentMethod" } } }, "type": "object" }, - { - "$ref": "#/components/schemas/EntitySearchResult" + "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" + } + } + } } - ] + } } } } @@ -19474,57 +19323,63 @@ ] } }, - "/app-system/{name}/generate-token": { - "post": { + "/breadcrumb/{id}": { + "get": { "tags": [ - "App system" + "Experimental", + "Breadcrumb" ], - "summary": "Generate JWT token for app system backend", - "description": "Generate JWT token for authenticated communication with the app server", - "operationId": "generateJWTAppSystemAppServer", + "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", - "name": "name", + "description": "UUID for product or category", "required": true, - "description": "Name of the app", "schema": { - "type": "string" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } - } - ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "type": "object" - } + }, + { + "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}$" } } - }, + ], "responses": { "200": { - "description": "", + "description": "Search result containing SeoUrl\\'s to be used as breadcrumb.", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "token": { - "type": "string" - }, - "expires": { - "type": "string", - "format": "date-time" - }, - "shopId": { - "type": "string" - } - } + "$ref": "#/components/schemas/BreadcrumbCollection" } } } + }, + "400": { + "$ref": "#/components/responses/400" } }, "security": [ @@ -19534,16 +19389,25 @@ ] } }, - "/country": { + "/country-state/{countryId}": { "post": { "tags": [ "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch countries", - "description": "Perform a filtered search for countries", - "operationId": "readCountry", + "summary": "Fetch the states of a country", + "description": "Perform a filtered search the states for a country", + "operationId": "readCountryState", "parameters": [ + { + "name": "countryId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, { "name": "sw-language-id", "in": "header", @@ -19581,7 +19445,7 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Country" + "$ref": "#/components/schemas/CountryState" } } }, @@ -19603,15 +19467,24 @@ ] } }, - "/checkout/cart": { - "get": { + "/product/{productId}/cross-selling": { + "post": { "tags": [ - "Cart" + "Product" ], - "summary": "Fetch or create a cart", - "description": "Used to fetch the current cart or for creating a new one.", - "operationId": "readCart", + "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", @@ -19625,11 +19498,11 @@ ], "responses": { "200": { - "description": "Cart", + "description": "Found cross sellings", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "$ref": "#/components/schemas/CrossSellingElementCollection" } } } @@ -19640,21 +19513,68 @@ "ApiKey": [] } ] - }, - "delete": { + } + }, + "/product/{productId}": { + "post": { "tags": [ - "Cart" + "Product" ], - "summary": "Delete a cart", - "description": "This route deletes the cart of the customer.", - "operationId": "deleteCart", + "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" + } + ] + } + } + } + }, "responses": { - "204": { - "description": "Successfully deleted the cart", + "200": { + "description": "Product information along with variant groups and options", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/ProductDetailResponse" } } } @@ -19667,14 +19587,15 @@ ] } }, - "/checkout/cart/line-item": { + "/product": { "post": { "tags": [ - "Cart" + "Product", + "Endpoints supporting Criteria " ], - "summary": "Add items to the cart", - "description": "This route adds items to the cart. An item can be a product or promotion for example. They are referenced by the `referencedId`-parameter.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#adding-new-items-to-the-cart)", - "operationId": "addLineItem", + "summary": "Fetch 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", @@ -19688,21 +19609,41 @@ } ], "requestBody": { + "required": false, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CartItems" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] } } } }, "responses": { "200": { - "description": "The updated cart.", + "description": "Entity search result containing products", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -19713,27 +19654,25 @@ "ApiKey": [] } ] - }, - "delete": { + } + }, + "/product/{productId}/reviews": { + "post": { "tags": [ - "Cart" + "Product", + "Endpoints supporting Criteria " ], - "summary": "Remove items from the cart", - "description": "DEPRECATED: use removeLineItem instead. This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", - "operationId": "removeLineItemDeprecated", - "deprecated": true, + "summary": "Fetch product reviews", + "description": "Perform a filtered search for product reviews.", + "operationId": "readProductReviews", "parameters": [ { - "name": "ids", - "in": "query", - "description": "A list of product identifiers.", + "name": "productId", + "in": "path", + "description": "Identifier of the product.", "required": true, "schema": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "type": "string" } }, { @@ -19747,13 +19686,42 @@ } } ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } + } + } + }, "responses": { "200": { - "description": "The updated cart.", + "description": "Entity search result containing product reviews", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductReview" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -19764,15 +19732,27 @@ "ApiKey": [] } ] - }, - "patch": { + } + }, + "/product/{productId}/review": { + "post": { "tags": [ - "Cart" + "Product" ], - "summary": "Update items in the cart", - "description": "This route updates items in the cart. A typical example is updating the quantity of an item.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#updating-items-in-the-cart)", - "operationId": "updateLineItem", + "summary": "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", @@ -19788,39 +19768,70 @@ "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CartItems" + "required": [ + "title", + "content", + "points" + ], + "properties": { + "name": { + "description": "The name of the review author. If not set, the first name of the customer is chosen.", + "type": "string" + }, + "email": { + "description": "The email address of the review author. If not set, the email of the customer is chosen.", + "type": "string" + }, + "title": { + "description": "The title of the review.", + "type": "string" + }, + "content": { + "description": "The content of review.", + "type": "string" + }, + "points": { + "description": "The review rating for the product.", + "type": "number", + "format": "double" + } + }, + "type": "object" } } } }, "responses": { "200": { - "description": "The updated cart.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Cart" - } - } - } + "description": "Success response indicating the review was saved successfully." } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/checkout/cart/line-item/delete": { + "/product/{productId}/find-variant": { "post": { "tags": [ - "Cart" + "Product" ], - "summary": "Remove items from the cart", - "description": "This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", - "operationId": "removeLineItem", + "summary": "Search for 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", @@ -19833,22 +19844,23 @@ } ], "requestBody": { - "required": true, "content": { "application/json": { "schema": { "required": [ - "ids" + "options" ], "properties": { - "ids": { - "description": "A list of product identifiers.", + "options": { + "description": "The options parameter for the variant to find.", "type": "array", - "minItems": 1, "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } + }, + "switchedGroup": { + "description": "The id of the option group that has been switched.", + "type": "string" } }, "type": "object" @@ -19858,11 +19870,11 @@ }, "responses": { "200": { - "description": "The updated cart.", + "description": "Returns an FoundCombination struct containing the ids matching the search.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "$ref": "#/components/schemas/FindProductVariantRouteResponse" } } } @@ -19875,15 +19887,42 @@ ] } }, - "/checkout/order": { + "/product-listing/{categoryId}": { "post": { "tags": [ - "Order" + "Product" ], - "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 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": "p", + "in": "query", + "description": "The page number to fetch.", + "required": false, + "schema": { + "type": "integer" + } + }, + { + "name": "sw-include-seo-urls", + "in": "header", + "description": "Determines if the response must contain a SeoUrl entity for a product entity", + "required": false, + "schema": { + "type": "boolean" + } + }, { "name": "sw-language-id", "in": "header", @@ -19896,36 +19935,28 @@ } ], "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" + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/ProductListingCriteria" }, - "campaignCode": { - "description": "The campaign code is used to track which action the customer came from. An example could be `Summer-Deals`", - "type": "string" + { + "$ref": "#/components/schemas/ProductListingFlags" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Order", + "description": "Returns a product listing containing all products and additional fields to display a listing.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Order" + "$ref": "#/components/schemas/ProductListingResult" } } } @@ -19933,85 +19964,68 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/checkout/gateway": { - "get": { + "/country": { + "post": { "tags": [ - "Gateway" + "System & Context", + "Endpoints supporting Criteria " ], - "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", + "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}$" + } + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } + } + } + }, "responses": { "200": { - "description": "Checkout gateway response", + "description": "Entity search result containing countries.", "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": { + "allOf": [ + { "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/ShippingMethod" + "$ref": "#/components/schemas/Country" } } }, "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" - } - } - } + { + "$ref": "#/components/schemas/EntitySearchResult" } - } + ] } } } @@ -20024,36 +20038,57 @@ ] } }, - "/sitemap": { - "get": { + "/handle-payment": { + "post": { "tags": [ - "Sitemap & Routes" + "Payment & Shipping" ], - "summary": "Fetch sitemaps", - "description": "Fetches a list of compressed sitemap files, which are often used by search engines.", - "operationId": "readSitemap", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "summary": "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 a list of available sitemaps.", + "description": "Redirect to external payment provider", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Sitemap" - } + "type": "object", + "properties": { + "redirectUrl": { + "type": "string" + } + }, + "required": [ + "redirectUrl" + ] } } } @@ -20066,60 +20101,48 @@ ] } }, - "/sitemap/{filePath}": { + "/_info/routes": { "get": { - "tags": [ - "Sitemap & Routes" - ], - "summary": "Download sitemap file", - "description": "Downloads the sitemap file from the configured sitemap storage.", - "operationId": "getSitemapFile", - "parameters": [ - { - "name": "filePath", - "in": "path", - "description": "The path to the sitemap file", - "required": true, - "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}$" - } - } - ], + "summary": "Get API routes", + "operationId": "getRoutes", "responses": { "200": { - "description": "Returns the blob to download.", + "description": "Successful operation", "content": { - "application/xml": { - "schema": { - "type": "string", - "format": "binary" - } - }, - "application/gzip": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "type": "object", + "required": [ + "endpoints" + ], + "properties": { + "endpoints": { + "type": "array", + "items": { + "type": "object", + "required": [ + "methods", + "path" + ], + "properties": { + "methods": { + "type": "array", + "items": { + "type": "string" + } + }, + "path": { + "type": "string" + } + } + } + } + } } } } } - }, - "security": [ - { - "ApiKey": [] - } - ] + } } } }, @@ -20129,7 +20152,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" } } ] From 2e5ef50bbf0435492e2e681e9e76a23701d3a2f4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 7 May 2025 10:26:25 +0200 Subject: [PATCH 26/35] [create-pull-request] automated change (#319) Co-authored-by: shopwareBot --- SwagGuidedShopping-storeapi.json | 4324 +++++++++++++++--------------- 1 file changed, 2166 insertions(+), 2158 deletions(-) diff --git a/SwagGuidedShopping-storeapi.json b/SwagGuidedShopping-storeapi.json index 7fe6eb8..249d728 100644 --- a/SwagGuidedShopping-storeapi.json +++ b/SwagGuidedShopping-storeapi.json @@ -7,7 +7,7 @@ "name": "MIT", "url": "https://github.com/shopware/shopware/blob/trunk/LICENSE" }, - "version": "6.6.10.1" + "version": "6.6.10.4" }, "servers": [ { @@ -2543,6 +2543,10 @@ "additionalAddressLine2": { "type": "string" }, + "hash": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "string" + }, "customFields": { "type": "object" }, @@ -4704,6 +4708,10 @@ "additionalAddressLine2": { "type": "string" }, + "hash": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "string" + }, "customFields": { "type": "object" }, @@ -10109,1714 +10117,2162 @@ }, "type": "object" }, - "CartDeliveryInformation": { + "AccountNewsletterRecipient": { "type": "object", "properties": { - "apiAlias": { + "status": { "type": "string", "enum": [ - "cart_delivery_information" + "undefined", + "notSet", + "direct", + "optIn", + "optOut" ] }, - "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" + "apiAlias": { + "type": "string", + "enum": [ + "account_newsletter_recipient" + ] } }, "required": [ + "status", "apiAlias" ] }, - "CalculatedPrice": { + "ProductListingFlags": { "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", + "description": "Additional flags for product listings", "properties": { - "unitPrice": { - "type": "number" + "no-aggregations": { + "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", + "type": "string", + "nullable": true }, - "quantity": { - "type": "number" + "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 + } + } + }, + "NavigationRouteResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + } + }, + "Criteria": { + "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", + "properties": { + "page": { + "description": "Search result page", + "type": "integer" }, - "rawTotal": { - "type": "number" + "term": { + "description": "Search term", + "type": "string" }, - "totalPrice": { - "type": "number" + "limit": { + "description": "Number of items per result page", + "type": "integer" }, - "calculatedTaxes": { + "filter": { "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "tax": { - "type": "number" + { + "$ref": "#/components/schemas/EqualsFilter" }, - "taxRate": { - "type": "number" + { + "$ref": "#/components/schemas/MultiNotFilter" }, - "price": { - "type": "number" + { + "$ref": "#/components/schemas/RangeFilter" } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" ] } }, - "referencePrice": { - "oneOf": [ + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } + }, + "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" + } + }, + "associations": { + "$ref": "#/components/schemas/Associations" + }, + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + }, + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } + }, + "fields": { + "type": "array", + "description": "Fields which should be returned in the search result.", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" + } + } + }, + "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": [ { - "$ref": "#/components/schemas/CartPriceReference" + "$ref": "#/components/schemas/AggregationEntity" }, { - "type": "null" + "$ref": "#/components/schemas/SubAggregations" } ] }, - "listPrice": { - "oneOf": [ + { + "title": "AggregationFilter", + "allOf": [ { - "$ref": "#/components/schemas/CartListPrice" + "$ref": "#/components/schemas/AggregationFilter" }, { - "type": "null" + "$ref": "#/components/schemas/SubAggregations" } ] }, - "positionPrice": { - "type": "number" - }, - "netPrice": { - "type": "number" + { + "title": "AggregationTerms", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] }, - "regulationPrice": { - "type": "object", - "properties": { - "price": { - "type": "number" + { + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] + { + "$ref": "#/components/schemas/SubAggregations" } - }, - "nullable": true + ] }, - "hasRange": { - "type": "boolean" + { + "title": "AggregationRange", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationRange" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + } + ] + }, + "SubAggregations": { + "type": "object", + "properties": { + "aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" + }, + { + "$ref": "#/components/schemas/AggregationEntity" + }, + { + "$ref": "#/components/schemas/AggregationFilter" + }, + { + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/AggregationRange" + } + ] + } + } + }, + "TotalCountMode": { + "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", + "type": "string", + "default": "none", + "enum": [ + "none", + "exact", + "next-pages" + ] + }, + "Query": { + "type": "object", + "properties": { + "score": { + "type": "number" }, - "variantId": { - "type": "string", - "format": "^[0-9a-f]{32}$", - "nullable": true + "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" }, - "apiAlias": { + "order": { "type": "string", "enum": [ - "calculated_price" + "ASC", + "DESC" ] }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } + "naturalSorting": { + "type": "boolean" + }, + "type": { + "type": "string" } }, "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "referencePrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitPrice", - "positionPrice", - "netPrice", - "taxRules" + "field", + "order" ] }, - "NavigationRouteResponse": { + "Filters": { "type": "array", "items": { - "$ref": "#/components/schemas/Category" + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] } }, - "SalesChannelContext": { + "SimpleFilter": { "type": "object", "properties": { - "token": { - "description": "Context the user session", - "type": "string" + "type": { + "type": "string", + "enum": [ + "contains", + "equalsAny", + "prefix", + "suffix" + ] }, - "currentCustomerGroup": { - "type": "object", - "description": "Customer group of the current user", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } - } + "field": { + "type": "string" }, - "fallbackCustomerGroup": { - "description": "Fallback group if the default customer group is not applicable", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } - } + "value": { + "type": "string" + } + }, + "required": [ + "type", + "field", + "value" + ] + }, + "EqualsFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "equals" + ] }, - "currency": { - "$ref": "#/components/schemas/Currency" + "field": { + "type": "string" }, - "salesChannel": { - "description": "Information about the current sales channel", - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { + "value": { + "oneOf": [ + { "type": "string" }, - "shippingMethodId": { - "type": "string" + { + "type": "number" }, - "countryId": { - "type": "string" + { + "type": "boolean" }, - "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" - }, - "analyticsId": { - "type": "string" - } - } - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } + { + "type": "null" } - } - }, - "customer": { - "$ref": "#/components/schemas/Customer" + ] + } + }, + "required": [ + "type", + "field", + "value" + ] + }, + "MultiNotFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "multi", + "not" + ] }, - "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethod" + "operator": { + "type": "string", + "enum": [ + "and", + "or", + "nor", + "nand" + ] }, - "shippingLocation": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" - } - } + "queries": { + "$ref": "#/components/schemas/Filters" + } + }, + "required": [ + "type", + "operator", + "queries" + ] + }, + "RangeFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "range" + ] }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" + "field": { + "type": "string" }, - "context": { - "description": "Core context with general configuration values and state", + "parameters": { "type": "object", "properties": { - "versionId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "currencyFactor": { - "type": "integer" - }, - "currencyPrecision": { - "type": "integer", - "format": "int32" - }, - "languageIdChain": { - "type": "array", - "items": { - "type": "string" - } - }, - "scope": { - "type": "string" + "gte": { + "type": "number" }, - "source": { - "type": "string" + "gt": { + "type": "number" }, - "taxState": { - "type": "string" + "lte": { + "type": "number" }, - "useCache": { - "type": "boolean" + "lt": { + "type": "number" } } } - } + }, + "required": [ + "type", + "field", + "parameters" + ] }, - "Criteria": { - "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", - "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "term": { - "description": "Search term", - "type": "string" - }, - "limit": { - "description": "Number of items per result page", - "type": "integer" - }, - "filter": { - "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" + "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" }, - { - "$ref": "#/components/schemas/EqualsFilter" + "min": { + "type": "integer", + "format": "int32" }, - { - "$ref": "#/components/schemas/MultiNotFilter" + "max": { + "type": "integer", + "format": "int32" }, - { - "$ref": "#/components/schemas/RangeFilter" + "unit": { + "type": "string" } - ] - } - }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" - } - }, - "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" - } - }, - "associations": { - "$ref": "#/components/schemas/Associations" - }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" + } + }, + "translations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + } } - ] - } - }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" - } - }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } - }, - "fields": { - "type": "array", - "description": "Fields which should be returned in the search result.", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" - }, - "includes": { - "$ref": "#/components/schemas/Includes" - } - } - }, - "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": [ - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/SubAggregations" } - ] - }, - { - "title": "AggregationFilter", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/SubAggregations" + }, + "orderDeliveries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "orderId": { + "type": "string" + }, + "shippingOrderAddressId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "shippingDateEarliest": { + "type": "string", + "format": "date-time" + }, + "shippingDateLatest": { + "type": "string", + "format": "date-time" + }, + "stateId": { + "type": "string" + } + } } - ] - }, - { - "title": "AggregationTerms", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/SubAggregations" + }, + "salesChannelDefaultAssignments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } } - ] - }, - { - "title": "AggregationHistogram", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/SubAggregations" + }, + "salesChannels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } } - ] - }, - { - "title": "AggregationRange", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationRange" - }, - { - "$ref": "#/components/schemas/SubAggregations" + }, + "availabilityRule": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "priority": { + "type": "integer", + "format": "int32" + }, + "invalid": { + "type": "boolean" + } } - ] - } - ] - }, - "SubAggregations": { - "type": "object", - "properties": { - "aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/AggregationRange" + }, + "availabilityRuleId": { + "type": "string" + }, + "prices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "ruleId": { + "type": "string" + }, + "calculation": { + "type": "integer", + "format": "int32" + }, + "quantityStart": { + "type": "number", + "format": "float" + }, + "quantityEnd": { + "type": "number", + "format": "float" + }, + "price": { + "type": "number", + "format": "float" + }, + "calculationRuleId": { + "type": "string" + } + } } - ] - } - } - }, - "TotalCountMode": { - "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", - "type": "string", - "default": "none", - "enum": [ - "none", - "exact", - "next-pages" - ] - }, - "Query": { - "type": "object", - "properties": { - "score": { - "type": "number" - }, - "query": { - "oneOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" + }, + "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" + } + } } - ] + } } - }, - "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": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "contains", - "equalsAny", - "prefix", - "suffix" - ] - }, - "field": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "required": [ - "type", - "field", - "value" - ] - }, - "EqualsFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "equals" - ] - }, - "field": { - "type": "string" - }, - "value": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "type", - "field", - "value" - ] - }, - "MultiNotFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "multi", - "not" - ] - }, - "operator": { - "type": "string", - "enum": [ - "and", - "or", - "nor", - "nand" - ] - }, - "queries": { - "$ref": "#/components/schemas/Filters" - } - }, - "required": [ - "type", - "operator", - "queries" - ] - }, - "RangeFilter": { + "CartError": { "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "type": { - "type": "string", - "enum": [ - "range" - ] - }, - "field": { - "type": "string" - }, - "parameters": { + "items": { "type": "object", "properties": { - "gte": { - "type": "number" + "key": { + "type": "string" }, - "gt": { - "type": "number" + "level": { + "type": "number", + "enum": [ + 0, + 10, + 20 + ], + "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" }, - "lte": { - "type": "number" + "message": { + "type": "string" }, - "lt": { - "type": "number" + "messageKey": { + "type": "string" } } } - }, - "required": [ - "type", - "field", - "parameters" - ] + } }, - "Cart": { + "AggregationEntity": { + "title": "AggregationEntity", "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", + "description": "Give your aggregation an identifier, so you can find it easier", "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" - } - }, - "deliveries": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDelivery" - } - }, - "transactions": { - "description": "A list of all payment transactions associated with the current cart.", - "type": "array", - "items": { - "type": "object", - "properties": { - "paymentMethodId": { - "type": "string" - }, - "amount": { - "$ref": "#/components/schemas/CalculatedPrice" - } - } - } - }, - "modified": { - "type": "boolean" - }, - "customerComment": { - "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 - } - } - }, - "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": { + "description": "The type of aggregation", "type": "string", - "nullable": true + "enum": [ + "entity" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "definition": { + "description": "The entity definition e.g \"product_manufacturer\".", + "type": "string" } - } + }, + "required": [ + "name", + "type", + "field", + "definition" + ] }, - "CustomerAddressRead": { + "AggregationFilter": { + "title": "AggregationFilter", "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 - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "$ref": "#/components/schemas/CountryState", - "nullable": true + "enum": [ + "filter" + ] }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "filter": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Filters" + } } }, "required": [ - "customerId", - "createdAt", - "updatedAt", - "country", - "salutation" + "name", + "type", + "filter" ] }, - "CartListPrice": { + "AggregationTerms": { + "title": "AggregationTerms", "type": "object", - "description": "", "properties": { - "discount": { - "type": "number" - }, - "percentage": { - "type": "number" - }, - "price": { - "type": "number" + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "apiAlias": { + "type": { + "description": "The type of aggregation", "type": "string", "enum": [ - "cart_list_price" + "terms" ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "limit": { + "description": "The number of terms to return", + "type": "number" + }, + "sort": { + "type": "array", + "description": "Sorting the aggregation result.", + "items": { + "$ref": "#/components/schemas/Sort" + } } }, "required": [ - "apiAlias" + "name", + "type", + "field" ] }, - "ShippingMethodPageRouteResponse": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "deliveryTimeId": { - "type": "string" - }, - "deliveryTime": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer", - "format": "int32" - }, - "max": { - "type": "integer", - "format": "int32" - }, - "unit": { - "type": "string" - } - } - }, - "translations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - } - } - } - }, - "orderDeliveries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "orderId": { - "type": "string" - }, - "shippingOrderAddressId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "shippingDateEarliest": { - "type": "string", - "format": "date-time" - }, - "shippingDateLatest": { - "type": "string", - "format": "date-time" - }, - "stateId": { - "type": "string" - } - } - } - }, - "salesChannelDefaultAssignments": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" + "AggregationHistogram": { + "title": "AggregationHistogram", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "histogram" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "interval": { + "description": "The interval of the histogram", + "type": "number" + }, + "format": { + "description": "The format of the histogram", + "type": "string" + }, + "timeZone": { + "description": "The timezone of the histogram", + "type": "string" + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "AggregationRange": { + "title": "AggregationRange", + "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "range" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "ranges": { + "description": "The ranges of the aggregation", + "type": "array", + "items": { + "type": "object", + "anyOf": [ + { + "type": "object", + "title": "From and to", + "properties": { + "from": { + "type": "number", + "description": "The lower bound of the range" + }, + "to": { + "type": "number", + "description": "The upper bound of the range" + } }, - "customerGroupId": { - "type": "string" + "required": [ + "from", + "to" + ] + }, + { + "type": "object", + "title": "From only", + "properties": { + "from": { + "type": "string", + "description": "The lower bound of the range" + } }, - "hreflangActive": { - "type": "boolean" + "required": [ + "from" + ] + }, + { + "type": "object", + "title": "To only", + "properties": { + "to": { + "type": "string", + "description": "The upper bound of the range" + } }, - "hreflangDefaultDomainId": { - "type": "string" - } + "required": [ + "to" + ] } - } - }, - "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" + ] + } + } + }, + "required": [ + "name", + "type", + "field", + "ranges" + ] + }, + "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": { + "type": "string" + }, + "dataTimestamp": { + "type": "string" + }, + "deliveryInformation": { + "$ref": "#/components/schemas/CartDeliveryInformation" + }, + "description": { + "type": "string" + }, + "good": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "label": { + "type": "string" + }, + "modified": { + "type": "boolean" + }, + "modifiedByApp": { + "type": "boolean" + }, + "payload": { + "$ref": "#/components/schemas/ProductJsonApi" + }, + "price": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] + }, + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } }, - "hreflangActive": { - "type": "boolean" + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" }, - "hreflangDefaultDomainId": { - "type": "string" + { + "type": "null" } - } - } - }, - "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": { + ] + }, + "quantity": { + "type": "number" + }, + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { "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" + "type": "number" }, - "calculationRuleId": { - "type": "string" + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + }, + "nullable": true + }, + "totalPrice": { + "type": "number" + }, + "unitPrice": { + "type": "number" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } } } } }, - "mediaId": { - "type": "string" + "required": [ + "apiAlias", + "totalPrice", + "quantity", + "unitPrice" + ] + }, + "priceDefinition": { + "$ref": "#/components/schemas/CartPriceQuantity" + }, + "quantity": { + "type": "number" + }, + "quantityInformation": { + "type": "object", + "properties": { + "maxPurchase": { + "type": "number" + }, + "minPurchase": { + "type": "number" + }, + "purchaseSteps": { + "type": "number" + } + } + }, + "referencedId": { + "type": "string" + }, + "removable": { + "type": "boolean" + }, + "stackable": { + "type": "boolean" + }, + "states": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "is-physical", + "is-download" + ] + } + }, + "type": { + "$ref": "#/components/schemas/LineItemType" + }, + "uniqueIdentifier": { + "type": "string" + } + }, + "required": [ + "id", + "type" + ] + }, + "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" + ] + } }, - "media": { + "nullable": true + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "type": "string", + "format": "^[0-9a-f]{32}$", + "nullable": true + } + }, + "required": [ + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" + ] + }, + "Sitemap": { + "type": "object", + "properties": { + "filename": { + "type": "string" + }, + "created": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "filename", + "created" + ] + }, + "CrossSellingElementCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrossSellingElement" + } + }, + "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": { + "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": { + "apiAlias": { "type": "string", - "format": "date-time" - }, - "alt": { - "type": "string" - }, - "url": { - "type": "string" + "enum": [ + "cart_tax_calculated" + ] }, - "fileName": { - "type": "string" + "tax": { + "type": "number" }, - "mediaFolderId": { - "type": "string" + "taxRate": { + "type": "number" }, - "private": { - "type": "boolean" + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } + }, + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] + }, + "positionPrice": { + "type": "number" + }, + "netPrice": { + "type": "number" + }, + "regulationPrice": { + "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 + }, + "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" }, - "thumbnailsRo": { + "name": { "type": "string" } } - }, - "tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - } + } + } + }, + "required": [ + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "referencePrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitPrice", + "positionPrice", + "netPrice", + "taxRules" + ] + }, + "OrderRouteResponse": { + "type": "object", + "properties": { + "orders": { + "allOf": [ + { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + }, + "paymentChangeable": { + "type": "object", + "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", + "additionalProperties": { + "type": "boolean" + } + } + }, + "required": [ + "orders" + ] + }, + "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" + ] + }, + "CartListPrice": { + "type": "object", + "description": "", + "properties": { + "discount": { + "type": "number" + }, + "percentage": { + "type": "number" + }, + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_list_price" + ] + } + }, + "required": [ + "apiAlias" + ] + }, + "WishlistLoadRouteResponse": { + "type": "object", + "properties": { + "wishlist": { + "type": "object", + "properties": { + "customerId": { + "type": "string" + }, + "salesChannelId": { + "type": "string" } } + }, + "products": { + "$ref": "#/components/schemas/ProductListingResult" } } }, - "Price": { + "SalesChannelContext": { "type": "object", - "description": "Price object", "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "token": { + "description": "Context the user session", + "type": "string" }, - "gross": { - "description": "", - "type": "number" + "currentCustomerGroup": { + "type": "object", + "description": "Customer group of the current user", + "properties": { + "name": { + "type": "string" + }, + "displayGross": { + "type": "boolean" + } + } }, - "net": { - "description": "", - "type": "number" + "fallbackCustomerGroup": { + "description": "Fallback group if the default customer group is not applicable", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "displayGross": { + "type": "boolean" + } + } }, - "linked": { - "description": "", - "type": "boolean" + "currency": { + "$ref": "#/components/schemas/Currency" }, - "listPrice": { - "description": "", + "salesChannel": { + "description": "Information about the current sales channel", "type": "object", "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" }, - "gross": { - "description": "", - "type": "number" + "paymentMethodId": { + "type": "string" }, - "net": { - "description": "", - "type": "number" + "shippingMethodId": { + "type": "string" }, - "linked": { - "description": "", + "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" + }, + "analyticsId": { + "type": "string" } - }, - "required": [ - "gross", - "net" - ] + } }, - "regulationPrice": { - "description": "", + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } + }, + "customer": { + "$ref": "#/components/schemas/Customer" + }, + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod" + }, + "shippingLocation": { "type": "object", "properties": { - "currencyId": { + "apiAlias": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "", - "type": "number" + "enum": [ + "cart_delivery_shipping_location" + ] }, - "net": { - "description": "", - "type": "number" + "country": { + "$ref": "#/components/schemas/Country" }, - "linked": { - "description": "", - "type": "boolean" + "address": { + "$ref": "#/components/schemas/CustomerAddress" } - }, - "required": [ - "gross", - "net" - ] - } - }, - "required": [ - "currencyId", - "gross", - "net" - ] - }, - "CrossSellingElementCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CrossSellingElement" + } + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + }, + "context": { + "description": "Core context with general configuration values and state", + "type": "object", + "properties": { + "versionId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "currencyFactor": { + "type": "integer" + }, + "currencyPrecision": { + "type": "integer", + "format": "int32" + }, + "languageIdChain": { + "type": "array", + "items": { + "type": "string" + } + }, + "scope": { + "type": "string" + }, + "source": { + "type": "string" + }, + "taxState": { + "type": "string" + }, + "useCache": { + "type": "boolean" + } + } + } } }, - "AggregationEntity": { - "title": "AggregationEntity", - "type": "object", + "CustomerAddressBody": { + "description": "Added since version: 6.0.0.0", + "required": [ + "countryId", + "firstName", + "lastName", + "city", + "street" + ], "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", + "countryId": { "type": "string", - "enum": [ - "entity" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "pattern": "^[0-9a-f]{32}$" }, - "definition": { - "description": "The entity definition e.g \"product_manufacturer\".", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field", - "definition" - ] - }, - "AggregationFilter": { - "title": "AggregationFilter", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" + "countryStateId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "type": { - "description": "The type of aggregation", + "salutationId": { "type": "string", - "enum": [ - "filter" - ] + "pattern": "^[0-9a-f]{32}$" }, - "filter": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Filters" - } - } - }, - "required": [ - "name", - "type", - "filter" - ] - }, - "AggregationTerms": { - "title": "AggregationTerms", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", + "firstName": { "type": "string" }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "terms" - ] + "lastName": { + "type": "string" }, - "field": { - "description": "The field you want to aggregate over.", + "zipcode": { "type": "string" }, - "limit": { - "description": "The number of terms to return", - "type": "number" + "city": { + "type": "string" }, - "sort": { - "type": "array", - "description": "Sorting the aggregation result.", - "items": { - "$ref": "#/components/schemas/Sort" - } - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "AggregationHistogram": { - "title": "AggregationHistogram", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", + "company": { "type": "string" }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "histogram" - ] + "street": { + "type": "string" }, - "field": { - "description": "The field you want to aggregate over.", + "department": { "type": "string" }, - "interval": { - "description": "The interval of the histogram", - "type": "number" + "title": { + "type": "string" }, - "format": { - "description": "The format of the histogram", + "phoneNumber": { "type": "string" }, - "timeZone": { - "description": "The timezone of the histogram", + "additionalAddressLine1": { "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", + }, + "additionalAddressLine2": { "type": "string" }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "range" - ] + "customFields": { + "type": "object" }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "country": { + "$ref": "#/components/schemas/Country" }, - "ranges": { - "description": "The ranges of the aggregation", - "type": "array", - "items": { - "type": "object", - "anyOf": [ - { - "type": "object", - "title": "From and to", - "properties": { - "from": { - "type": "number", - "description": "The lower bound of the range" - }, - "to": { - "type": "number", - "description": "The upper bound of the range" - } - }, - "required": [ - "from", - "to" - ] - }, - { - "type": "object", - "title": "From only", - "properties": { - "from": { - "type": "string", - "description": "The lower bound of the range" - } - }, - "required": [ - "from" - ] - }, - { - "type": "object", - "title": "To only", - "properties": { - "to": { - "type": "string", - "description": "The upper bound of the range" - } - }, - "required": [ - "to" - ] - } - ] - } + "countryState": { + "$ref": "#/components/schemas/CountryState" + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, - "required": [ - "name", - "type", - "field", - "ranges" - ] + "type": "object" }, - "AccountNewsletterRecipient": { + "CartItems": { "type": "object", "properties": { - "status": { - "type": "string", - "enum": [ - "undefined", - "notSet", - "direct", - "optIn", - "optOut" - ] - }, - "apiAlias": { - "type": "string", - "enum": [ - "account_newsletter_recipient" - ] + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } } - }, - "required": [ - "status", - "apiAlias" - ] + } }, - "OrderRouteResponse": { + "FindProductVariantRouteResponse": { "type": "object", "properties": { - "orders": { - "allOf": [ - { + "foundCombination": { + "type": "object", + "properties": { + "variantId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "options": { "type": "array", "items": { - "$ref": "#/components/schemas/Order" + "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" - ] + } }, - "CartPriceReference": { + "Price": { "type": "object", + "description": "Price object", "properties": { - "purchaseUnit": { - "type": "number" + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "referenceUnit": { + "gross": { + "description": "", "type": "number" }, - "unitName": { - "type": "string" - }, - "price": { + "net": { + "description": "", "type": "number" }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_reference" - ] + "linked": { + "description": "", + "type": "boolean" }, "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" + "description": "", + "type": "object", + "properties": { + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - { - "type": "null" + "gross": { + "description": "", + "type": "number" + }, + "net": { + "description": "", + "type": "number" + }, + "linked": { + "description": "", + "type": "boolean" } + }, + "required": [ + "gross", + "net" ] }, "regulationPrice": { + "description": "", "type": "object", "properties": { - "price": { + "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" + ] + }, + "CartDelivery": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } + }, + "location": { + "type": "object", + "properties": { "apiAlias": { "type": "string", "enum": [ - "cart_regulation_price" + "cart_delivery_shipping_location" ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "state": { + "$ref": "#/components/schemas/CountryState" } - }, + } + }, + "positions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDeliveryPosition" + } + }, + "shippingCosts": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + } + } + }, + "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" + } + }, + "deliveries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDelivery" + } + }, + "transactions": { + "description": "A list of all payment transactions associated with the current cart.", + "type": "array", + "items": { + "type": "object", + "properties": { + "paymentMethodId": { + "type": "string" + }, + "amount": { + "$ref": "#/components/schemas/CalculatedPrice" + } + } + } + }, + "modified": { + "type": "boolean" + }, + "customerComment": { + "type": "string", + "description": "A comment that can be added to the cart.", "nullable": true }, - "hasRange": { - "type": "boolean" + "affiliateCode": { + "type": "string", + "description": "An affiliate tracking code", + "nullable": true + }, + "campaignCode": { + "type": "string", + "description": "A campaign tracking code", + "nullable": true + } + } + }, + "EntitySearchResult": { + "type": "object", + "properties": { + "entity": { + "type": "string" + }, + "total": { + "type": "integer", + "description": "The total number of found entities" + }, + "aggregations": { + "type": "array", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", + "items": { + "type": "object" + } + }, + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." + }, + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." + } + } + }, + "AggregationMetrics": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - "variantId": { + "type": { "type": "string", - "format": "^[0-9a-f]{32}$", - "nullable": true + "enum": [ + "avg", + "count", + "max", + "min", + "stats", + "sum" + ] + }, + "field": { + "type": "string" } }, "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" + "name", + "type", + "field" ] }, "ProductListingCriteria": { @@ -11909,174 +12365,6 @@ } ] }, - "CartDeliveryPosition": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" - } - } - }, - "identifier": { - "type": "string" - }, - "lineItem": { - "$ref": "#/components/schemas/LineItem" - }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" - } - } - }, - "ProductListingResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EntitySearchResult" - }, - { - "type": "object", - "properties": { - "currentFilters": { - "type": "object", - "description": "Contains the state of the filters. These can be used to create listing filters.", - "properties": { - "navigationId": { - "type": "string" - }, - "manufacturer": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "price": { - "type": "object", - "properties": { - "min": { - "type": "integer", - "default": 0 - }, - "max": { - "type": "integer", - "default": 0 - } - }, - "required": [ - "min", - "max" - ] - }, - "rating": { - "type": "integer", - "nullable": true - }, - "shipping-free": { - "type": "boolean", - "default": false - }, - "properties": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "search": { - "type": "string" - } - }, - "required": [ - "manufacturer", - "navigationId", - "price", - "properties", - "rating", - "shipping-free" - ] - }, - "availableSortings": { - "type": "array", - "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", - "items": { - "type": "object", - "properties": { - "label": { - "type": "string" - }, - "translated": { - "type": "object", - "properties": { - "label": { - "type": "string" - } - }, - "required": [ - "label" - ] - }, - "key": { - "type": "string" - }, - "priority": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_sorting" - ] - } - }, - "required": [ - "label", - "translated", - "key", - "priority", - "apiAlias" - ] - } - }, - "sorting": { - "type": "string" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - }, - "entity": { - "type": "string", - "enum": [ - "product" - ] - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_listing" - ] - } - }, - "required": [ - "elements", - "availableSortings", - "currentFilters", - "apiAlias" - ] - } - ] - }, "NavigationType": { "type": "string", "enum": [ @@ -12085,50 +12373,46 @@ "service-navigation" ] }, - "Sitemap": { + "CustomerAddressRead": { "type": "object", "properties": { - "filename": { - "type": "string" + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true }, - "created": { + "customerId": { "type": "string", - "format": "date-time" - } - }, - "required": [ - "filename", - "created" - ] - }, - "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" - } - } + "pattern": "^[0-9a-f]{32}$", + "readOnly": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "$ref": "#/components/schemas/CountryState", + "nullable": true + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" } - } + }, + "required": [ + "customerId", + "createdAt", + "updatedAt", + "country", + "salutation" + ] }, "Breadcrumb": { "type": "object", @@ -12175,497 +12459,266 @@ }, "linkNewTab": { "type": "boolean" - }, - "description": { - "type": "string" - }, - "metaTitle": { - "type": "string" - }, - "metaDescription": { - "type": "string" - }, - "keywords": { - "type": "string" - } - } - }, - "path": { - "type": "string" - }, - "seoUrls": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } - }, - "apiAlias": { - "type": "string", - "enum": [ - "breadcrumb" - ] - } - }, - "required": [ - "name", - "categoryId", - "type", - "translated", - "path", - "apiAlias" - ] - }, - "AggregationMetrics": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "avg", - "count", - "max", - "min", - "stats", - "sum" - ] - }, - "field": { - "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "SuccessResponse": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - } - } - }, - "EntitySearchResult": { - "type": "object", - "properties": { - "entity": { - "type": "string" - }, - "total": { - "type": "integer", - "description": "The total number of found entities" - }, - "aggregations": { - "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", - "items": { - "type": "object" - } - }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." - }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." - } - } - }, - "WishlistLoadRouteResponse": { - "type": "object", - "properties": { - "wishlist": { - "type": "object", - "properties": { - "customerId": { - "type": "string" - }, - "salesChannelId": { - "type": "string" - } - } - }, - "products": { - "$ref": "#/components/schemas/ProductListingResult" - } - } - }, - "FindProductVariantRouteResponse": { - "type": "object", - "properties": { - "foundCombination": { - "type": "object", - "properties": { - "variantId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "options": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } - }, - "CartDelivery": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" - } - } - }, - "location": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "state": { - "$ref": "#/components/schemas/CountryState" - } - } - }, - "positions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDeliveryPosition" - } - }, - "shippingCosts": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "ProductDetailResponse": { - "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", - "properties": { - "product": { - "$ref": "#/components/schemas/Product" - }, - "configurator": { - "type": "array", - "description": "List of property groups with their corresponding options and information on how to display them.", - "items": { - "$ref": "#/components/schemas/PropertyGroup" - } - } - }, - "required": [ - "product" - ] - }, - "LineItemType": { - "type": "string", - "enum": [ - "product", - "credit", - "custom", - "promotion", - "discount", - "container", - "quantity" - ] - }, - "LineItem": { - "type": "object", - "properties": { - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" + }, + "description": { + "type": "string" + }, + "metaTitle": { + "type": "string" + }, + "metaDescription": { + "type": "string" + }, + "keywords": { + "type": "string" + } } }, - "cover": { - "$ref": "#/components/schemas/ProductMedia" - }, - "dataContextHash": { - "type": "string" - }, - "dataTimestamp": { - "type": "string" - }, - "deliveryInformation": { - "$ref": "#/components/schemas/CartDeliveryInformation" - }, - "description": { - "type": "string" - }, - "good": { - "type": "boolean" - }, - "id": { - "type": "string" - }, - "label": { + "path": { "type": "string" }, - "modified": { - "type": "boolean" - }, - "modifiedByApp": { - "type": "boolean" + "seoUrls": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" + } }, - "payload": { - "$ref": "#/components/schemas/ProductJsonApi" + "apiAlias": { + "type": "string", + "enum": [ + "breadcrumb" + ] + } + }, + "required": [ + "name", + "categoryId", + "type", + "translated", + "path", + "apiAlias" + ] + }, + "ProductListingResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EntitySearchResult" }, - "price": { + { "type": "object", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "calculated_price" + "currentFilters": { + "type": "object", + "description": "Contains the state of the filters. These can be used to create listing filters.", + "properties": { + "navigationId": { + "type": "string" + }, + "manufacturer": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "price": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "default": 0 + }, + "max": { + "type": "integer", + "default": 0 + } + }, + "required": [ + "min", + "max" + ] + }, + "rating": { + "type": "integer", + "nullable": true + }, + "shipping-free": { + "type": "boolean", + "default": false + }, + "properties": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "search": { + "type": "string" + } + }, + "required": [ + "manufacturer", + "navigationId", + "price", + "properties", + "rating", + "shipping-free" ] }, - "calculatedTaxes": { + "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": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" + "label": { + "type": "string" + }, + "translated": { + "type": "object", + "properties": { + "label": { + "type": "string" + } + }, + "required": [ + "label" ] }, - "tax": { - "type": "number" + "key": { + "type": "string" }, - "taxRate": { + "priority": { "type": "number" }, - "price": { - "type": "number" + "apiAlias": { + "type": "string", + "enum": [ + "product_sorting" + ] } }, "required": [ - "apiAlias", - "tax", - "taxRate", - "price" + "label", + "translated", + "key", + "priority", + "apiAlias" ] } }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] - }, - "quantity": { - "type": "number" - }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] - }, - "regulationPrice": { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - }, - "nullable": true - }, - "totalPrice": { - "type": "number" - }, - "unitPrice": { - "type": "number" + "sorting": { + "type": "string" }, - "taxRules": { + "elements": { "type": "array", - "description": "Currently active tax rules and/or rates", "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } + "$ref": "#/components/schemas/Product" } - } - }, - "required": [ - "apiAlias", - "totalPrice", - "quantity", - "unitPrice" - ] - }, - "priceDefinition": { - "$ref": "#/components/schemas/CartPriceQuantity" - }, - "quantity": { - "type": "number" - }, - "quantityInformation": { - "type": "object", - "properties": { - "maxPurchase": { - "type": "number" }, - "minPurchase": { - "type": "number" + "entity": { + "type": "string", + "enum": [ + "product" + ] }, - "purchaseSteps": { - "type": "number" + "apiAlias": { + "type": "string", + "enum": [ + "product_listing" + ] } + }, + "required": [ + "elements", + "availableSortings", + "currentFilters", + "apiAlias" + ] + } + ] + }, + "CrossSellingElement": { + "type": "object", + "properties": { + "crossSelling": { + "$ref": "#/components/schemas/ProductCrossSelling" + }, + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" } }, - "referencedId": { - "type": "string" + "total": { + "type": "integer", + "format": "int32" }, - "removable": { - "type": "boolean" + "streamId": { + "type": "string", + "format": "uuid" }, - "stackable": { - "type": "boolean" + "apiAlias": { + "type": "string", + "enum": [ + "cross_selling_element" + ] + } + }, + "required": [ + "crossSelling", + "products", + "total", + "apiAlias" + ] + }, + "ProductDetailResponse": { + "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", + "properties": { + "product": { + "$ref": "#/components/schemas/Product" }, - "states": { + "configurator": { "type": "array", + "description": "List of property groups with their corresponding options and information on how to display them.", "items": { - "type": "string", - "enum": [ - "is-physical", - "is-download" - ] + "$ref": "#/components/schemas/PropertyGroup" } - }, - "type": { - "$ref": "#/components/schemas/LineItemType" - }, - "uniqueIdentifier": { - "type": "string" } }, "required": [ - "id", - "type" + "product" ] }, - "CustomerAddressBody": { - "description": "Added since version: 6.0.0.0", - "required": [ - "countryId", - "firstName", - "lastName", - "city", - "street" - ], + "CartDeliveryPosition": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "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" + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } }, - "additionalAddressLine2": { + "identifier": { "type": "string" }, - "customFields": { - "type": "object" - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "$ref": "#/components/schemas/CountryState" + "lineItem": { + "$ref": "#/components/schemas/LineItem" }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "price": { + "$ref": "#/components/schemas/CalculatedPrice" } - }, - "type": "object" + } }, "CartPriceQuantity": { "type": "object", @@ -12719,51 +12772,6 @@ "required": [ "apiAlias" ] - }, - "CrossSellingElement": { - "type": "object", - "properties": { - "crossSelling": { - "$ref": "#/components/schemas/ProductCrossSelling" - }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - }, - "total": { - "type": "integer", - "format": "int32" - }, - "streamId": { - "type": "string", - "format": "uuid" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cross_selling_element" - ] - } - }, - "required": [ - "crossSelling", - "products", - "total", - "apiAlias" - ] - }, - "CartItems": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - } - } } }, "responses": { @@ -12902,6 +12910,30 @@ "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" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redirectUrl": { + "description": "Define the URL which browser will be redirected to", + "type": "string" + } + } + } + } + } + }, "OpenApi3": { "description": "Returns information about the store API.", "content": { @@ -13090,30 +13122,6 @@ } } } - }, - "ContextTokenResponse": { - "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", - "headers": { - "sw-context-token": { - "description": "Contains sw-context-token value", - "schema": { - "type": "string" - } - } - }, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "description": "Define the URL which browser will be redirected to", - "type": "string" - } - } - } - } - } } }, "parameters": { @@ -13297,7 +13305,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" } } ] From 10f948041c244018eac2b206ea13dbfde6f5612f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 17 Jun 2025 15:57:56 +0200 Subject: [PATCH 27/35] [create-pull-request] automated change (#327) Co-authored-by: shopwareBot --- SwagGuidedShopping-storeapi.json | 4001 +++++++++++++++--------------- 1 file changed, 2050 insertions(+), 1951 deletions(-) diff --git a/SwagGuidedShopping-storeapi.json b/SwagGuidedShopping-storeapi.json index 249d728..a373dc6 100644 --- a/SwagGuidedShopping-storeapi.json +++ b/SwagGuidedShopping-storeapi.json @@ -7,7 +7,7 @@ "name": "MIT", "url": "https://github.com/shopware/shopware/blob/trunk/LICENSE" }, - "version": "6.6.10.4" + "version": "6.6.10.5" }, "servers": [ { @@ -10117,1624 +10117,1838 @@ }, "type": "object" }, - "AccountNewsletterRecipient": { + "CalculatedPrice": { "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "status": { + "unitPrice": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "rawTotal": { + "type": "number" + }, + "totalPrice": { + "type": "number" + }, + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } + }, + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] + }, + "positionPrice": { + "type": "number" + }, + "netPrice": { + "type": "number" + }, + "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 + }, + "apiAlias": { "type": "string", "enum": [ - "undefined", - "notSet", - "direct", - "optIn", - "optOut" + "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" + ] + }, + "CrossSellingElement": { + "type": "object", + "properties": { + "crossSelling": { + "$ref": "#/components/schemas/ProductCrossSelling" + }, + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "streamId": { + "type": "string", + "format": "uuid" + }, "apiAlias": { "type": "string", "enum": [ - "account_newsletter_recipient" + "cross_selling_element" ] } }, "required": [ - "status", + "crossSelling", + "products", + "total", "apiAlias" ] }, - "ProductListingFlags": { + "AggregationEntity": { + "title": "AggregationEntity", "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 + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "only-aggregations": { - "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", + "type": { + "description": "The type of aggregation", "type": "string", - "nullable": true + "enum": [ + "entity" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "definition": { + "description": "The entity definition e.g \"product_manufacturer\".", + "type": "string" } - } - }, - "NavigationRouteResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } + }, + "required": [ + "name", + "type", + "field", + "definition" + ] }, - "Criteria": { + "AggregationFilter": { + "title": "AggregationFilter", "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "term": { - "description": "Search term", + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" }, - "limit": { - "description": "Number of items per result page", - "type": "integer" + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "filter" + ] }, "filter": { "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] + "$ref": "#/components/schemas/Filters" } + } + }, + "required": [ + "name", + "type", + "filter" + ] + }, + "AggregationTerms": { + "title": "AggregationTerms", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" - } - }, - "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" - } + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "terms" + ] }, - "associations": { - "$ref": "#/components/schemas/Associations" + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } + "limit": { + "description": "The number of terms to return", + "type": "number" }, "sort": { "type": "array", - "description": "Sorting in the search result.", + "description": "Sorting the aggregation result.", "items": { "$ref": "#/components/schemas/Sort" } - }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } - }, - "fields": { - "type": "array", - "description": "Fields which should be returned in the search result.", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" - }, - "includes": { - "$ref": "#/components/schemas/Includes" } - } - }, - "Associations": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Criteria" - } + }, + "required": [ + "name", + "type", + "field" + ] }, - "Includes": { + "AggregationHistogram": { + "title": "AggregationHistogram", "type": "object", - "additionalProperties": { - "type": "array", - "items": { + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" - } - } - }, - "Aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "title": "AggregationEntity", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] }, - { - "title": "AggregationFilter", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationTerms", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "histogram" ] }, - { - "title": "AggregationHistogram", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - { - "title": "AggregationRange", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationRange" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - } - ] - }, - "SubAggregations": { - "type": "object", - "properties": { - "aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/AggregationRange" - } - ] - } - } - }, - "TotalCountMode": { - "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", - "type": "string", - "default": "none", - "enum": [ - "none", - "exact", - "next-pages" - ] - }, - "Query": { - "type": "object", - "properties": { - "score": { + "interval": { + "description": "The interval of the histogram", "type": "number" }, - "query": { - "oneOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] + "format": { + "description": "The format of the histogram", + "type": "string" + }, + "timeZone": { + "description": "The timezone of the histogram", + "type": "string" } }, - "additionalProperties": true + "required": [ + "name", + "type", + "field" + ] }, - "Sort": { + "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": { - "field": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" }, - "order": { + "type": { + "description": "The type of aggregation", "type": "string", "enum": [ - "ASC", - "DESC" + "range" ] }, - "naturalSorting": { - "type": "boolean" - }, - "type": { - "type": "string" - } - }, - "required": [ - "field", - "order" - ] - }, - "Filters": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "SimpleFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "contains", - "equalsAny", - "prefix", - "suffix" - ] - }, - "field": { + "field": { + "description": "The field you want to aggregate over.", "type": "string" }, - "value": { - "type": "string" + "ranges": { + "description": "The ranges of the aggregation", + "type": "array", + "items": { + "type": "object", + "anyOf": [ + { + "type": "object", + "title": "From and to", + "properties": { + "from": { + "type": "number", + "description": "The lower bound of the range" + }, + "to": { + "type": "number", + "description": "The upper bound of the range" + } + }, + "required": [ + "from", + "to" + ] + }, + { + "type": "object", + "title": "From only", + "properties": { + "from": { + "type": "string", + "description": "The lower bound of the range" + } + }, + "required": [ + "from" + ] + }, + { + "type": "object", + "title": "To only", + "properties": { + "to": { + "type": "string", + "description": "The upper bound of the range" + } + }, + "required": [ + "to" + ] + } + ] + } } }, "required": [ + "name", "type", "field", - "value" + "ranges" ] }, - "EqualsFilter": { + "SuccessResponse": { "type": "object", "properties": { - "type": { - "type": "string", - "enum": [ - "equals" - ] - }, - "field": { - "type": "string" - }, - "value": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "type": "null" - } - ] + "success": { + "type": "boolean" } - }, - "required": [ - "type", - "field", - "value" - ] + } }, - "MultiNotFilter": { + "CartItems": { "type": "object", "properties": { - "type": { - "type": "string", - "enum": [ - "multi", - "not" - ] - }, - "operator": { - "type": "string", - "enum": [ - "and", - "or", - "nor", - "nand" - ] - }, - "queries": { - "$ref": "#/components/schemas/Filters" + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } } - }, - "required": [ - "type", - "operator", - "queries" - ] + } }, - "RangeFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "range" - ] - }, - "field": { - "type": "string" + "ProductListingResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EntitySearchResult" }, - "parameters": { + { "type": "object", "properties": { - "gte": { - "type": "number" - }, - "gt": { - "type": "number" - }, - "lte": { - "type": "number" - }, - "lt": { - "type": "number" - } - } - } - }, - "required": [ - "type", - "field", - "parameters" - ] - }, - "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": { + "currentFilters": { "type": "object", + "description": "Contains the state of the filters. These can be used to create listing filters.", "properties": { - "shippingMethodId": { + "navigationId": { "type": "string" }, - "name": { - "type": "string" + "manufacturer": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } }, - "description": { - "type": "string" - } - } - } - }, - "orderDeliveries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "orderId": { - "type": "string" - }, - "shippingOrderAddressId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "shippingDateEarliest": { - "type": "string", - "format": "date-time" - }, - "shippingDateLatest": { - "type": "string", - "format": "date-time" - }, - "stateId": { - "type": "string" - } - } - } - }, - "salesChannelDefaultAssignments": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" + "price": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "default": 0 + }, + "max": { + "type": "integer", + "default": 0 + } + }, + "required": [ + "min", + "max" + ] }, - "navigationCategoryDepth": { + "rating": { "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" + "nullable": true }, - "customerGroupId": { - "type": "string" + "shipping-free": { + "type": "boolean", + "default": false }, - "hreflangActive": { - "type": "boolean" + "properties": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } }, - "hreflangDefaultDomainId": { + "search": { "type": "string" } - } - } - }, - "salesChannels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" + }, + "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" + ] } - } - }, - "availabilityRule": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "priority": { - "type": "integer", - "format": "int32" - }, - "invalid": { - "type": "boolean" + }, + "sorting": { + "type": "string" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" } + }, + "entity": { + "type": "string", + "enum": [ + "product" + ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_listing" + ] } }, - "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" + ] + } + ] + }, + "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" } - }, - "mediaId": { - "type": "string" - }, - "media": { - "type": "object", - "properties": { - "userId": { - "type": "string" - }, - "mimeType": { - "type": "string" + } + } + } + }, + "EntitySearchResult": { + "type": "object", + "properties": { + "entity": { + "type": "string" + }, + "total": { + "type": "integer", + "description": "The total number of found entities" + }, + "aggregations": { + "type": "array", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", + "items": { + "type": "object" + } + }, + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." + }, + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." + } + } + }, + "CartDeliveryPosition": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } + }, + "identifier": { + "type": "string" + }, + "lineItem": { + "$ref": "#/components/schemas/LineItem" + }, + "price": { + "$ref": "#/components/schemas/CalculatedPrice" + } + } + }, + "CartListPrice": { + "type": "object", + "description": "", + "properties": { + "discount": { + "type": "number" + }, + "percentage": { + "type": "number" + }, + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_list_price" + ] + } + }, + "required": [ + "apiAlias" + ] + }, + "Criteria": { + "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", + "properties": { + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", + "type": "string" + }, + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "fileExtension": { - "type": "string" + { + "$ref": "#/components/schemas/EqualsFilter" }, - "fileSize": { - "type": "integer", - "format": "int32" + { + "$ref": "#/components/schemas/MultiNotFilter" }, - "title": { - "type": "string" + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } + }, + "query": { + "type": "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" + } + }, + "associations": { + "$ref": "#/components/schemas/Associations" + }, + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "metaDataRaw": { - "type": "string" + { + "$ref": "#/components/schemas/EqualsFilter" }, - "mediaTypeRaw": { - "type": "string" + { + "$ref": "#/components/schemas/MultiNotFilter" }, - "uploadedAt": { - "type": "string", - "format": "date-time" + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + }, + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } + }, + "fields": { + "type": "array", + "description": "Fields which should be returned in the search result.", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" + } + } + }, + "NoneFieldsCriteria": { + "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", + "properties": { + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", + "type": "string" + }, + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "alt": { - "type": "string" + { + "$ref": "#/components/schemas/EqualsFilter" }, - "url": { - "type": "string" + { + "$ref": "#/components/schemas/MultiNotFilter" }, - "fileName": { - "type": "string" + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } + }, + "query": { + "type": "string", + "description": "The query string to search for" + }, + "associations": { + "$ref": "#/components/schemas/Associations" + }, + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "mediaFolderId": { - "type": "string" + { + "$ref": "#/components/schemas/EqualsFilter" }, - "private": { - "type": "boolean" + { + "$ref": "#/components/schemas/MultiNotFilter" }, - "thumbnailsRo": { - "type": "string" - } - } - }, - "tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - } + { + "$ref": "#/components/schemas/RangeFilter" } - } + ] + } + }, + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + }, + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } + }, + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" } + }, + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" } } }, - "SuccessResponse": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - } + "Associations": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Criteria" } }, - "CartError": { + "Includes": { "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { + "additionalProperties": { + "type": "array", "items": { - "type": "object", - "properties": { - "key": { - "type": "string" + "type": "string" + } + } + }, + "Aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" + }, + { + "title": "AggregationEntity", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationEntity" }, - "level": { - "type": "number", - "enum": [ - 0, - 10, - 20 - ], - "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationFilter", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationFilter" }, - "message": { - "type": "string" + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationTerms", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationTerms" }, - "messageKey": { - "type": "string" + { + "$ref": "#/components/schemas/SubAggregations" } - } + ] + }, + { + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationRange", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationRange" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] } - } + ] }, - "AggregationEntity": { - "title": "AggregationEntity", + "SubAggregations": { "type": "object", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "entity" + "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" + } ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "definition": { - "description": "The entity definition e.g \"product_manufacturer\".", - "type": "string" } - }, - "required": [ - "name", - "type", - "field", - "definition" + } + }, + "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" ] }, - "AggregationFilter": { - "title": "AggregationFilter", + "Query": { "type": "object", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" + "score": { + "type": "number" }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "filter" + "query": { + "oneOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } ] - }, - "filter": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Filters" - } } }, - "required": [ - "name", - "type", - "filter" - ] + "additionalProperties": true }, - "AggregationTerms": { - "title": "AggregationTerms", + "Sort": { "type": "object", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", + "field": { "type": "string" }, - "type": { - "description": "The type of aggregation", + "order": { "type": "string", "enum": [ - "terms" + "ASC", + "DESC" ] }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "limit": { - "description": "The number of terms to return", - "type": "number" + "naturalSorting": { + "type": "boolean" }, - "sort": { - "type": "array", - "description": "Sorting the aggregation result.", - "items": { - "$ref": "#/components/schemas/Sort" - } + "type": { + "type": "string" } }, "required": [ - "name", - "type", - "field" + "field", + "order" ] }, - "AggregationHistogram": { - "title": "AggregationHistogram", + "Filters": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "SimpleFilter": { "type": "object", "properties": { - "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" + "contains", + "equalsAny", + "prefix", + "suffix" + ] }, - "format": { - "description": "The format of the histogram", + "field": { "type": "string" }, - "timeZone": { - "description": "The timezone of the histogram", + "value": { "type": "string" } }, "required": [ - "name", "type", - "field" + "field", + "value" ] }, - "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)", + "EqualsFilter": { "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" + "equals" ] }, "field": { - "description": "The field you want to aggregate over.", "type": "string" }, - "ranges": { - "description": "The ranges of the aggregation", - "type": "array", - "items": { - "type": "object", - "anyOf": [ - { - "type": "object", - "title": "From and to", - "properties": { - "from": { - "type": "number", - "description": "The lower bound of the range" - }, - "to": { - "type": "number", - "description": "The upper bound of the range" - } - }, - "required": [ - "from", - "to" - ] - }, - { - "type": "object", - "title": "From only", - "properties": { - "from": { - "type": "string", - "description": "The lower bound of the range" - } - }, - "required": [ - "from" - ] - }, - { - "type": "object", - "title": "To only", - "properties": { - "to": { - "type": "string", - "description": "The upper bound of the range" - } - }, - "required": [ - "to" - ] - } - ] - } + "value": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + } + ] } }, "required": [ - "name", "type", "field", - "ranges" - ] - }, - "LineItemType": { - "type": "string", - "enum": [ - "product", - "credit", - "custom", - "promotion", - "discount", - "container", - "quantity" + "value" ] }, - "LineItem": { + "MultiNotFilter": { "type": "object", "properties": { - "children": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - }, - "cover": { - "$ref": "#/components/schemas/ProductMedia" - }, - "dataContextHash": { - "type": "string" - }, - "dataTimestamp": { - "type": "string" - }, - "deliveryInformation": { - "$ref": "#/components/schemas/CartDeliveryInformation" - }, - "description": { - "type": "string" - }, - "good": { - "type": "boolean" - }, - "id": { - "type": "string" - }, - "label": { - "type": "string" - }, - "modified": { - "type": "boolean" - }, - "modifiedByApp": { - "type": "boolean" - }, - "payload": { - "$ref": "#/components/schemas/ProductJsonApi" - }, - "price": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "calculated_price" - ] - }, - "calculatedTaxes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] - }, - "quantity": { - "type": "number" - }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] - }, - "regulationPrice": { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - }, - "nullable": true - }, - "totalPrice": { - "type": "number" - }, - "unitPrice": { - "type": "number" - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } - } - }, - "required": [ - "apiAlias", - "totalPrice", - "quantity", - "unitPrice" + "type": { + "type": "string", + "enum": [ + "multi", + "not" ] }, - "priceDefinition": { - "$ref": "#/components/schemas/CartPriceQuantity" + "operator": { + "type": "string", + "enum": [ + "and", + "or", + "nor", + "nand" + ] }, - "quantity": { - "type": "number" + "queries": { + "$ref": "#/components/schemas/Filters" + } + }, + "required": [ + "type", + "operator", + "queries" + ] + }, + "RangeFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "range" + ] }, - "quantityInformation": { + "field": { + "type": "string" + }, + "parameters": { "type": "object", "properties": { - "maxPurchase": { + "gte": { "type": "number" }, - "minPurchase": { + "gt": { "type": "number" }, - "purchaseSteps": { + "lte": { + "type": "number" + }, + "lt": { "type": "number" } } + } + }, + "required": [ + "type", + "field", + "parameters" + ] + }, + "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 }, - "referencedId": { + "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 + } + } + }, + "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" }, - "removable": { - "type": "boolean" + "lastName": { + "type": "string" }, - "stackable": { - "type": "boolean" + "zipcode": { + "type": "string" }, - "states": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "is-physical", - "is-download" - ] - } + "city": { + "type": "string" }, - "type": { - "$ref": "#/components/schemas/LineItemType" + "company": { + "type": "string" }, - "uniqueIdentifier": { + "street": { "type": "string" - } - }, - "required": [ - "id", - "type" - ] - }, - "CartPriceReference": { - "type": "object", - "properties": { - "purchaseUnit": { - "type": "number" }, - "referenceUnit": { - "type": "number" + "department": { + "type": "string" }, - "unitName": { + "title": { "type": "string" }, - "price": { - "type": "number" + "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" + }, + "CartPriceQuantity": { + "type": "object", + "properties": { "apiAlias": { "type": "string", "enum": [ - "cart_price_reference" + "cart_price_quantity" ] }, + "isCalculated": { + "type": "boolean" + }, "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] + "$ref": "#/components/schemas/CartListPrice" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" }, "regulationPrice": { - "type": "object", "properties": { "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] + "type": "number", + "format": "float" } }, - "nullable": true + "type": "object" }, - "hasRange": { - "type": "boolean" + "taxRules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } }, - "variantId": { - "type": "string", - "format": "^[0-9a-f]{32}$", - "nullable": true + "type": { + "type": "string" } }, "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" + "apiAlias" ] }, - "Sitemap": { + "AggregationMetrics": { "type": "object", "properties": { - "filename": { + "name": { "type": "string" }, - "created": { + "type": { "type": "string", - "format": "date-time" + "enum": [ + "avg", + "count", + "max", + "min", + "stats", + "sum" + ] + }, + "field": { + "type": "string" + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "ProductDetailResponse": { + "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", + "properties": { + "product": { + "$ref": "#/components/schemas/Product" + }, + "configurator": { + "type": "array", + "description": "List of property groups with their corresponding options and information on how to display them.", + "items": { + "$ref": "#/components/schemas/PropertyGroup" + } } }, "required": [ - "filename", - "created" + "product" ] }, - "CrossSellingElementCollection": { + "NavigationRouteResponse": { "type": "array", "items": { - "$ref": "#/components/schemas/CrossSellingElement" + "$ref": "#/components/schemas/Category" } }, - "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": { - "type": "array", - "items": { + "ShippingMethodPageRouteResponse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "deliveryTimeId": { + "type": "string" + }, + "deliveryTime": { "type": "object", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] + "name": { + "type": "string" + }, + "min": { + "type": "integer", + "format": "int32" + }, + "max": { + "type": "integer", + "format": "int32" + }, + "unit": { + "type": "string" + } + } + }, + "translations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + } + } + } + }, + "orderDeliveries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "orderId": { + "type": "string" + }, + "shippingOrderAddressId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "shippingDateEarliest": { + "type": "string", + "format": "date-time" + }, + "shippingDateLatest": { + "type": "string", + "format": "date-time" + }, + "stateId": { + "type": "string" + } + } + } + }, + "salesChannelDefaultAssignments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } + } + }, + "salesChannels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } + } + }, + "availabilityRule": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - "tax": { - "type": "number" + "description": { + "type": "string" }, - "taxRate": { - "type": "number" + "priority": { + "type": "integer", + "format": "int32" }, - "price": { - "type": "number" + "invalid": { + "type": "boolean" } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } - }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" } - ] - }, - "positionPrice": { - "type": "number" - }, - "netPrice": { - "type": "number" - }, - "regulationPrice": { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] + }, + "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" + } + } } }, - "nullable": true - }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "type": "string", - "format": "^[0-9a-f]{32}$", - "nullable": true - }, - "apiAlias": { - "type": "string", - "enum": [ - "calculated_price" - ] - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { + "mediaId": { + "type": "string" + }, + "media": { "type": "object", "properties": { - "taxRate": { - "type": "number", - "format": "float" + "userId": { + "type": "string" }, - "name": { + "mimeType": { + "type": "string" + }, + "fileExtension": { + "type": "string" + }, + "fileSize": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string" + }, + "metaDataRaw": { + "type": "string" + }, + "mediaTypeRaw": { + "type": "string" + }, + "uploadedAt": { + "type": "string", + "format": "date-time" + }, + "alt": { + "type": "string" + }, + "url": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "mediaFolderId": { + "type": "string" + }, + "private": { + "type": "boolean" + }, + "thumbnailsRo": { "type": "string" } } - } - } - }, - "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "referencePrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitPrice", - "positionPrice", - "netPrice", - "taxRules" - ] - }, - "OrderRouteResponse": { - "type": "object", - "properties": { - "orders": { - "allOf": [ - { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order" - } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - }, - "paymentChangeable": { - "type": "object", - "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", - "additionalProperties": { - "type": "boolean" - } - } - }, - "required": [ - "orders" - ] - }, - "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" - ] + }, + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } } } + } + } + }, + "Cart": { + "type": "object", + "properties": { + "name": { + "description": "Name of the cart - for example `guest-cart`", + "type": "string" }, - "height": { - "type": "integer" + "token": { + "description": "Context token identifying the cart and the user session", + "type": "string" }, - "length": { - "type": "integer" + "price": { + "$ref": "#/components/schemas/CalculatedPrice" }, - "restockTime": { - "type": "integer" + "lineItems": { + "description": "All items within the cart", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } }, - "stock": { - "type": "integer" + "errors": { + "type": "array", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "items": { + "$ref": "#/components/schemas/CartError" + } }, - "weight": { - "type": "integer" + "deliveries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDelivery" + } }, - "width": { - "type": "integer" + "transactions": { + "description": "A list of all payment transactions associated with the current cart.", + "type": "array", + "items": { + "type": "object", + "properties": { + "paymentMethodId": { + "type": "string" + }, + "amount": { + "$ref": "#/components/schemas/CalculatedPrice" + } + } + } + }, + "modified": { + "type": "boolean" + }, + "customerComment": { + "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 } - }, - "required": [ - "apiAlias" - ] + } }, - "CartListPrice": { + "CartPriceReference": { "type": "object", - "description": "", "properties": { - "discount": { + "purchaseUnit": { "type": "number" }, - "percentage": { + "referenceUnit": { "type": "number" }, + "unitName": { + "type": "string" + }, "price": { "type": "number" }, "apiAlias": { "type": "string", "enum": [ - "cart_list_price" + "cart_price_reference" ] - } - }, - "required": [ - "apiAlias" - ] - }, - "WishlistLoadRouteResponse": { - "type": "object", - "properties": { - "wishlist": { + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { "type": "object", "properties": { - "customerId": { - "type": "string" + "price": { + "type": "number" }, - "salesChannelId": { - "type": "string" + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] } - } + }, + "nullable": true }, - "products": { - "$ref": "#/components/schemas/ProductListingResult" + "hasRange": { + "type": "boolean" + }, + "variantId": { + "type": "string", + "format": "^[0-9a-f]{32}$", + "nullable": true } - } + }, + "required": [ + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" + ] }, "SalesChannelContext": { "type": "object", @@ -11921,184 +12135,138 @@ } } }, - "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" - }, - "CartItems": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - } - } - }, - "FindProductVariantRouteResponse": { - "type": "object", - "properties": { - "foundCombination": { - "type": "object", - "properties": { - "variantId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "options": { - "type": "array", - "items": { - "type": "string" - } - } - } - } - } + "NavigationType": { + "type": "string", + "enum": [ + "main-navigation", + "footer-navigation", + "service-navigation" + ] }, - "Price": { + "Breadcrumb": { "type": "object", - "description": "Price object", "properties": { - "currencyId": { + "name": { + "type": "string" + }, + "categoryId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "gross": { - "description": "", - "type": "number" - }, - "net": { - "description": "", - "type": "number" - }, - "linked": { - "description": "", - "type": "boolean" + "type": { + "type": "string", + "enum": [ + "page", + "link", + "folder" + ] }, - "listPrice": { - "description": "", + "translated": { "type": "object", + "additionalProperties": true, "properties": { - "currencyId": { + "customFields": { + "type": "object" + }, + "slotConfig": { + "type": "object" + }, + "linkType": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "enum": [ + "external", + "category", + "product", + "landing_page" + ] }, - "gross": { - "description": "", - "type": "number" + "internalLink": { + "type": "string" }, - "net": { - "description": "", - "type": "number" + "externalLink": { + "type": "string" }, - "linked": { - "description": "", + "linkNewTab": { "type": "boolean" - } - }, - "required": [ - "gross", - "net" - ] - }, - "regulationPrice": { - "description": "", - "type": "object", - "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" }, - "gross": { - "description": "", - "type": "number" + "description": { + "type": "string" }, - "net": { - "description": "", - "type": "number" + "metaTitle": { + "type": "string" }, - "linked": { - "description": "", - "type": "boolean" + "metaDescription": { + "type": "string" + }, + "keywords": { + "type": "string" } - }, - "required": [ - "gross", - "net" + } + }, + "path": { + "type": "string" + }, + "seoUrls": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" + } + }, + "apiAlias": { + "type": "string", + "enum": [ + "breadcrumb" ] } }, "required": [ - "currencyId", - "gross", - "net" + "name", + "categoryId", + "type", + "translated", + "path", + "apiAlias" + ] + }, + "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": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "$ref": "#/components/schemas/CountryState", + "nullable": true + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" + } + }, + "required": [ + "customerId", + "createdAt", + "updatedAt", + "country", + "salutation" ] }, "CartDelivery": { @@ -12135,146 +12303,23 @@ }, "state": { "$ref": "#/components/schemas/CountryState" - } - } - }, - "positions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDeliveryPosition" - } - }, - "shippingCosts": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "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" - } - }, - "deliveries": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDelivery" - } - }, - "transactions": { - "description": "A list of all payment transactions associated with the current cart.", - "type": "array", - "items": { - "type": "object", - "properties": { - "paymentMethodId": { - "type": "string" - }, - "amount": { - "$ref": "#/components/schemas/CalculatedPrice" - } - } - } - }, - "modified": { - "type": "boolean" - }, - "customerComment": { - "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 - } - } - }, - "EntitySearchResult": { - "type": "object", - "properties": { - "entity": { - "type": "string" - }, - "total": { - "type": "integer", - "description": "The total number of found entities" + } + } }, - "aggregations": { + "positions": { "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", "items": { - "type": "object" + "$ref": "#/components/schemas/CartDeliveryPosition" } }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." + "shippingCosts": { + "$ref": "#/components/schemas/CalculatedPrice" }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" } } }, - "AggregationMetrics": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "avg", - "count", - "max", - "min", - "stats", - "sum" - ] - }, - "field": { - "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - }, "ProductListingCriteria": { "allOf": [ { @@ -12365,412 +12410,466 @@ } ] }, - "NavigationType": { - "type": "string", - "enum": [ - "main-navigation", - "footer-navigation", - "service-navigation" - ] - }, - "CustomerAddressRead": { + "CartDeliveryInformation": { "type": "object", "properties": { - "id": { + "apiAlias": { "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true + "enum": [ + "cart_delivery_information" + ] }, - "customerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true + "freeDelivery": { + "type": "boolean" }, - "createdAt": { - "type": "string", - "format": "date-time" + "deliveryTime": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "min": { + "type": "integer" + }, + "max": { + "type": "integer" + }, + "unit": { + "type": "string" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_time" + ] + } + } }, - "updatedAt": { - "type": "string", - "format": "date-time", - "nullable": true + "height": { + "type": "integer" }, - "country": { - "$ref": "#/components/schemas/Country" + "length": { + "type": "integer" }, - "countryState": { - "$ref": "#/components/schemas/CountryState", - "nullable": true + "restockTime": { + "type": "integer" }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "stock": { + "type": "integer" + }, + "weight": { + "type": "integer" + }, + "width": { + "type": "integer" } }, "required": [ - "customerId", - "createdAt", - "updatedAt", - "country", - "salutation" + "apiAlias" ] }, - "Breadcrumb": { + "WishlistLoadRouteResponse": { "type": "object", "properties": { - "name": { - "type": "string" - }, - "categoryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "type": { - "type": "string", - "enum": [ - "page", - "link", - "folder" - ] - }, - "translated": { + "wishlist": { "type": "object", - "additionalProperties": true, "properties": { - "customFields": { - "type": "object" - }, - "slotConfig": { - "type": "object" - }, - "linkType": { - "type": "string", - "enum": [ - "external", - "category", - "product", - "landing_page" - ] - }, - "internalLink": { - "type": "string" - }, - "externalLink": { - "type": "string" - }, - "linkNewTab": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "metaTitle": { - "type": "string" - }, - "metaDescription": { + "customerId": { "type": "string" }, - "keywords": { + "salesChannelId": { "type": "string" } } }, - "path": { - "type": "string" + "products": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + }, + "AccountNewsletterRecipient": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": [ + "undefined", + "notSet", + "direct", + "optIn", + "optOut" + ] }, - "seoUrls": { + "apiAlias": { + "type": "string", + "enum": [ + "account_newsletter_recipient" + ] + } + }, + "required": [ + "status", + "apiAlias" + ] + }, + "LineItemType": { + "type": "string", + "enum": [ + "product", + "credit", + "custom", + "promotion", + "discount", + "container", + "quantity" + ] + }, + "LineItem": { + "type": "object", + "properties": { + "children": { "type": "array", "items": { - "$ref": "#/components/schemas/SeoUrl" + "$ref": "#/components/schemas/LineItem" } }, - "apiAlias": { - "type": "string", - "enum": [ - "breadcrumb" - ] - } - }, - "required": [ - "name", - "categoryId", - "type", - "translated", - "path", - "apiAlias" - ] - }, - "ProductListingResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EntitySearchResult" + "cover": { + "$ref": "#/components/schemas/ProductMedia" + }, + "dataContextHash": { + "type": "string" + }, + "dataTimestamp": { + "type": "string" + }, + "deliveryInformation": { + "$ref": "#/components/schemas/CartDeliveryInformation" + }, + "description": { + "type": "string" + }, + "good": { + "type": "boolean" + }, + "id": { + "type": "string" + }, + "label": { + "type": "string" + }, + "modified": { + "type": "boolean" + }, + "modifiedByApp": { + "type": "boolean" + }, + "payload": { + "$ref": "#/components/schemas/ProductJsonApi" }, - { + "price": { "type": "object", "properties": { - "currentFilters": { - "type": "object", - "description": "Contains the state of the filters. These can be used to create listing filters.", - "properties": { - "navigationId": { - "type": "string" - }, - "manufacturer": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "price": { - "type": "object", - "properties": { - "min": { - "type": "integer", - "default": 0 - }, - "max": { - "type": "integer", - "default": 0 - } - }, - "required": [ - "min", - "max" - ] - }, - "rating": { - "type": "integer", - "nullable": true - }, - "shipping-free": { - "type": "boolean", - "default": false - }, - "properties": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "search": { - "type": "string" - } - }, - "required": [ - "manufacturer", - "navigationId", - "price", - "properties", - "rating", - "shipping-free" + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" ] }, - "availableSortings": { + "calculatedTaxes": { "type": "array", - "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", "items": { "type": "object", "properties": { - "label": { - "type": "string" - }, - "translated": { - "type": "object", - "properties": { - "label": { - "type": "string" - } - }, - "required": [ - "label" + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" ] }, - "key": { - "type": "string" + "tax": { + "type": "number" }, - "priority": { + "taxRate": { "type": "number" }, - "apiAlias": { - "type": "string", - "enum": [ - "product_sorting" - ] + "price": { + "type": "number" } }, "required": [ - "label", - "translated", - "key", - "priority", - "apiAlias" + "apiAlias", + "tax", + "taxRate", + "price" ] } }, - "sorting": { - "type": "string" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } + "quantity": { + "type": "number" }, - "entity": { - "type": "string", - "enum": [ - "product" + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } ] }, - "apiAlias": { - "type": "string", - "enum": [ - "product_listing" - ] + "regulationPrice": { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + }, + "nullable": true + }, + "totalPrice": { + "type": "number" + }, + "unitPrice": { + "type": "number" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } } }, "required": [ - "elements", - "availableSortings", - "currentFilters", - "apiAlias" + "apiAlias", + "totalPrice", + "quantity", + "unitPrice" ] - } - ] - }, - "CrossSellingElement": { - "type": "object", - "properties": { - "crossSelling": { - "$ref": "#/components/schemas/ProductCrossSelling" }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" + "priceDefinition": { + "$ref": "#/components/schemas/CartPriceQuantity" + }, + "quantity": { + "type": "number" + }, + "quantityInformation": { + "type": "object", + "properties": { + "maxPurchase": { + "type": "number" + }, + "minPurchase": { + "type": "number" + }, + "purchaseSteps": { + "type": "number" + } } }, - "total": { - "type": "integer", - "format": "int32" + "referencedId": { + "type": "string" + }, + "removable": { + "type": "boolean" + }, + "stackable": { + "type": "boolean" + }, + "states": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "is-physical", + "is-download" + ] + } }, - "streamId": { - "type": "string", - "format": "uuid" + "type": { + "$ref": "#/components/schemas/LineItemType" }, - "apiAlias": { - "type": "string", - "enum": [ - "cross_selling_element" - ] + "uniqueIdentifier": { + "type": "string" } }, "required": [ - "crossSelling", - "products", - "total", - "apiAlias" + "id", + "type" ] }, - "ProductDetailResponse": { + "Price": { "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", + "description": "Price object", "properties": { - "product": { - "$ref": "#/components/schemas/Product" + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "configurator": { - "type": "array", - "description": "List of property groups with their corresponding options and information on how to display them.", - "items": { - "$ref": "#/components/schemas/PropertyGroup" - } + "gross": { + "description": "", + "type": "number" + }, + "net": { + "description": "", + "type": "number" + }, + "linked": { + "description": "", + "type": "boolean" + }, + "listPrice": { + "description": "", + "type": "object", + "properties": { + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "gross": { + "description": "", + "type": "number" + }, + "net": { + "description": "", + "type": "number" + }, + "linked": { + "description": "", + "type": "boolean" + } + }, + "required": [ + "gross", + "net" + ] + }, + "regulationPrice": { + "description": "", + "type": "object", + "properties": { + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "gross": { + "description": "", + "type": "number" + }, + "net": { + "description": "", + "type": "number" + }, + "linked": { + "description": "", + "type": "boolean" + } + }, + "required": [ + "gross", + "net" + ] } }, "required": [ - "product" + "currencyId", + "gross", + "net" ] }, - "CartDeliveryPosition": { + "CrossSellingElementCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrossSellingElement" + } + }, + "FindProductVariantRouteResponse": { "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "deliveryDate": { + "foundCombination": { "type": "object", "properties": { - "earliest": { + "variantId": { "type": "string", - "format": "date-time" + "pattern": "^[0-9a-f]{32}$" }, - "latest": { - "type": "string", - "format": "date-time" + "options": { + "type": "array", + "items": { + "type": "string" + } } } - }, - "identifier": { - "type": "string" - }, - "lineItem": { - "$ref": "#/components/schemas/LineItem" - }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" } } }, - "CartPriceQuantity": { + "Sitemap": { "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" + "filename": { + "type": "string" }, - "taxRules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" + "created": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "filename", + "created" + ] + }, + "OrderRouteResponse": { + "type": "object", + "properties": { + "orders": { + "allOf": [ + { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" } - } + ] }, - "type": { - "type": "string" + "paymentChangeable": { + "type": "object", + "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", + "additionalProperties": { + "type": "boolean" + } } }, "required": [ - "apiAlias" + "orders" ] } }, @@ -12910,30 +13009,6 @@ "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" - } - } - }, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "description": "Define the URL which browser will be redirected to", - "type": "string" - } - } - } - } - } - }, "OpenApi3": { "description": "Returns information about the store API.", "content": { @@ -13122,6 +13197,30 @@ } } } + }, + "ContextTokenResponse": { + "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", + "headers": { + "sw-context-token": { + "description": "Contains sw-context-token value", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redirectUrl": { + "description": "Define the URL which browser will be redirected to", + "type": "string" + } + } + } + } + } } }, "parameters": { From 685080fc1a2df9f8159c231b4e37fdeb70b8f2fb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 17 Jun 2025 15:59:14 +0200 Subject: [PATCH 28/35] [create-pull-request] automated change (#325) Co-authored-by: shopwareBot --- storeapi.json | 10473 +++++++++++++++++++++++++----------------------- 1 file changed, 5432 insertions(+), 5041 deletions(-) diff --git a/storeapi.json b/storeapi.json index 14fdc56..c0060c6 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.10.4" + "version": "6.7.0.0" }, "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." }, @@ -3054,8 +3064,7 @@ "documentTypeId", "orderId", "config", - "deepLinkCode", - "fileType" + "deepLinkCode" ], "properties": { "id": { @@ -3127,10 +3136,6 @@ "type": "object", "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, - "fileType": { - "type": "string", - "description": "Type of file like PDF." - }, "createdAt": { "type": "string", "format": "date-time", @@ -3161,6 +3166,10 @@ }, "documentA11yMediaFile": { "$ref": "#/components/schemas/Media" + }, + "fileType": { + "type": "string", + "description": "Type of file like PDF." } }, "type": "object" @@ -4348,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": { @@ -4775,6 +4794,7 @@ "documents", "orderDate", "stateMachineState", + "price", "id", "billingAddressId", "currencyId", @@ -4873,7 +4893,8 @@ "description": "TaxStatus takes `Free`, `Net` or `Gross` as values." } }, - "type": "object" + "type": "object", + "$ref": "#/components/schemas/CalculatedPrice" }, "amountTotal": { "type": "number", @@ -4996,6 +5017,9 @@ "type": "string", "description": "Source of orders either via normal order placement or subscriptions." }, + "taxCalculationType": { + "type": "string" + }, "customFields": { "type": "object", "description": "Additional fields that offer a possibility to add own fields for the different program-areas." @@ -6612,6 +6636,7 @@ { "required": [ "id", + "technicalName", "name" ], "properties": { @@ -6646,38 +6671,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", @@ -6734,6 +6734,7 @@ "description": "Added since version: 6.0.0.0", "required": [ "id", + "technicalName", "name" ], "properties": { @@ -6777,38 +6778,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", @@ -6861,7 +6837,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": [ @@ -7858,6 +7873,7 @@ "calculatedPrice", "calculatedPrices", "seoCategory", + "translated", "id", "taxId", "productNumber", @@ -8179,43 +8195,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": { @@ -8224,26 +8236,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": { @@ -8386,13 +8406,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." @@ -8744,6 +8770,7 @@ "ProductMedia": { "description": "Added since version: 6.0.0.0", "required": [ + "media", "id", "productId", "mediaId" @@ -8795,9 +8822,6 @@ }, "media": { "$ref": "#/components/schemas/Media" - }, - "thumbnails": { - "$ref": "#/components/schemas/MediaThumbnail" } }, "type": "object" @@ -8894,6 +8918,12 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "customerId": { + "type": "string" + }, + "externalUser": { + "type": "string" } }, "type": "object" @@ -9297,6 +9327,7 @@ "required": [ "group", "option", + "translated", "id", "groupId", "name" @@ -9330,6 +9361,10 @@ "pattern": "^[0-9a-f]{32}$", "description": "Unique identity of media." }, + "combinable": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "boolean" + }, "customFields": { "type": "object", "description": "Additional fields that offer a possibility to add own fields for the different program-areas." @@ -10057,6 +10092,7 @@ { "required": [ "id", + "technicalName", "deliveryTimeId", "name" ], @@ -10068,6 +10104,9 @@ "name": { "type": "string" }, + "technicalName": { + "type": "string" + }, "active": { "type": "boolean" }, @@ -10095,9 +10134,6 @@ "trackingUrl": { "type": "string" }, - "technicalName": { - "type": "string" - }, "createdAt": { "type": "string", "format": "date-time", @@ -10303,6 +10339,7 @@ "description": "Added since version: 6.0.0.0", "required": [ "id", + "technicalName", "deliveryTimeId", "name" ], @@ -10316,6 +10353,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." @@ -10351,9 +10391,6 @@ "type": "string", "description": "This URL allows to track packages." }, - "technicalName": { - "type": "string" - }, "createdAt": { "type": "string", "format": "date-time", @@ -10617,6 +10654,7 @@ "StateMachineState": { "description": "Added since version: 6.0.0.0", "required": [ + "translated", "technicalName", "name" ], @@ -11157,159 +11195,230 @@ }, "type": "object" }, - "AccountNewsletterRecipient": { + "ReferencePrice": { "type": "object", "properties": { - "status": { - "type": "string", - "enum": [ - "undefined", - "notSet", - "direct", - "optIn", - "optOut" - ] + "purchaseUnit": { + "type": "number" + }, + "referenceUnit": { + "type": "number" + }, + "unitName": { + "type": "string" + }, + "price": { + "type": "number" }, "apiAlias": { "type": "string", "enum": [ - "account_newsletter_recipient" + "cart_price_reference" + ] + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/ListPrice" + }, + { + "type": "null" + } + ] + }, + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } ] } }, "required": [ - "status", - "apiAlias" + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" ] }, - "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 - } - } - }, - "NavigationRouteResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - }, - "properties": { - "id": { - "description": "Unique identity of navigation route response." - } - } - }, - "Criteria": { + "OrderRouteResponse": { "type": "object", - "description": "Criteria to query entities.", "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "term": { - "description": "Search term", - "type": "string" - }, - "limit": { - "description": "Number of items per result page", - "type": "integer" - }, - "filter": { - "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" + "orders": { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "elements" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" + } + } } - ] - }, - "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." + { + "$ref": "#/components/schemas/EntitySearchResult" } - } - }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" - } + ] }, - "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" + "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" + ] + }, + "ProductListingCriteria": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" }, - "associations": { - "$ref": "#/components/schemas/Associations" - }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - }, + { + "type": "object", + "description": "Additional search parameters for product listings", "properties": { - "type": { - "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." + "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" }, - "field": { - "description": "To filter only the results but not the aggregations by field like an property identifier." + "limit": { + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "type": "integer", + "minimum": 0 + }, + "p": { + "description": "Search result page", + "type": "integer", + "default": 1 + }, + "manufacturer": { + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "type": "string" + }, + "min-price": { + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "max-price": { + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "rating": { + "description": "Filter products with a minimum average rating.", + "type": "integer" + }, + "shipping-free": { + "description": "Filters products that are marked as shipping-free.", + "type": "boolean", + "default": false + }, + "properties": { + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "type": "string" + }, + "manufacturer-filter": { + "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "price-filter": { + "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "rating-filter": { + "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "shipping-free-filter": { + "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-filter": { + "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-whitelist": { + "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", + "type": "string" + }, + "reduce-aggregations": { + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + } + } + ], + "properties": { + "filter": { + "properties": { + "type": { + "description": "To filter the results and aggregations with filter types like ==, >=, etc." + }, + "field": { + "description": "To filter the results and aggregations by field like an property identifier." }, "value": { - "description": "To filter only the results but not the aggregations by value." + "description": "To filter the results and 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." @@ -11322,91 +11431,366 @@ } } }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" + "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." + } } - }, - "fields": { - "type": "array", - "description": "Fields which should be returned in the search result.", - "items": { - "type": "string", - "description": "Name of a field" + } + } + }, + "WishlistLoadRouteResponse": { + "type": "object", + "required": [ + "products" + ], + "properties": { + "wishlist": { + "type": "object", + "properties": { + "customerId": { + "type": "string", + "description": "Unique identity of the customer." + }, + "salesChannelId": { + "type": "string", + "description": "Unique identity of the sales channel." + } } }, - "grouping": { + "products": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + }, + "EntitySearchResult": { + "type": "object", + "properties": { + "entity": { + "type": "string" + }, + "total": { + "type": "integer", + "description": "The total number of found entities" + }, + "aggregations": { "type": "array", - "description": "Perform groupings over certain fields", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", "items": { - "type": "string", - "description": "Name of a field" + "type": "object" } }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." }, - "includes": { - "$ref": "#/components/schemas/Includes" + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." } } }, - "Associations": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Criteria" - } - }, - "Includes": { + "Criteria": { "type": "object", - "additionalProperties": { - "type": "array", - "items": { + "description": "Criteria to query entities.", + "properties": { + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", "type": "string" - } - } - }, - "Aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" }, - { - "title": "AggregationEntity", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "limit": { + "description": "Number of items per result page", + "type": "integer" }, - { - "title": "AggregationFilter", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationFilter" + "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." }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - }, - { - "title": "AggregationTerms", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationTerms" + "field": { + "description": "To filter the results and aggregations by field like an property identifier." }, - { - "$ref": "#/components/schemas/SubAggregations" + "value": { + "description": "To filter the results and aggregations by value." } - ] + } }, - { - "title": "AggregationHistogram", + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } + }, + "query": { + "type": "string", + "description": "The query string to search for" + }, + "associations": { + "$ref": "#/components/schemas/Associations" + }, + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + }, + "properties": { + "type": { + "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." + }, + "field": { + "description": "To filter only the results but not the aggregations by field like an property identifier." + }, + "value": { + "description": "To filter only the results but not the aggregations by value." + } + } + }, + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "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" + } + }, + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" + } + } + }, + "NoneFieldsCriteria": { + "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", + "properties": { + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", + "type": "string" + }, + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } + }, + "query": { + "type": "string", + "description": "The query string to search for" + }, + "associations": { + "$ref": "#/components/schemas/Associations" + }, + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + }, + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } + }, + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" + } + } + }, + "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": [ + { + "$ref": "#/components/schemas/AggregationEntity" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationFilter", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationFilter" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationTerms", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationHistogram", "allOf": [ { "$ref": "#/components/schemas/AggregationHistogram" @@ -11660,887 +12044,472 @@ "parameters" ] }, - "ShippingMethodPageRouteResponse": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "deliveryTimeId": { - "type": "string" - }, - "deliveryTime": { + "SuccessResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + } + } + }, + "SalesChannelContext": { + "type": "object", + "properties": { + "token": { + "description": "Context the user session", + "type": "string" + }, + "currentCustomerGroup": { + "type": "object", + "description": "Customer group of the current user", + "properties": { + "name": { + "type": "string", + "description": "Name of customer group to which the customer belongs within the specific sales channel they are currently interacting with." + }, + "displayGross": { + "type": "boolean", + "description": "When `true`, product's gross price is displayed for that customer group who belongs to the specific sales channel they are currently interacting with." + } + } + }, + "fallbackCustomerGroup": { + "description": "Fallback group if the default customer group is not applicable", + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "displayGross": { + "type": "boolean" + } + } + }, + "currency": { + "$ref": "#/components/schemas/Currency", + "properties": { + "isoCode": { + "description": "Standard international three digit code to represent currency in a given sales channel. For example, USD." + }, + "factor": { + "description": "Currency exchange rate in a specific sales channel the customer is currently interacting with." + }, + "symbol": { + "description": "A currency symbol is a graphical representation used as shorthand for a currency's name, for example US Dollar - $ in a given sales channel." + }, + "shortName": { + "description": "Acronym for international currencies, for example, USD in a given sales channel." + }, + "name": { + "description": "Full name of the currency in a given sales channel. For example, US-Dollar." + }, + "position": { + "description": "The order of the tabs for multiple currencies defined in a given sales channel." + }, + "decimalPrecision": { + "description": "It defines the round off value for currency to the nearest decimal point in a given sales channel. If set to 2, it rounds off to two significant decimal points." + }, + "isSystemDefault": { + "description": "Runtime field, cannot be used as part of the criteria." + } + } + }, + "salesChannel": { + "$ref": "#/components/schemas/SalesChannel", + "properties": { + "typeId": { + "description": "Unique identity of a sales channel's type within a specific sales channel." + }, + "languageId": { + "description": "Unique identity of a sales channel's language within a specific sales channel." + }, + "currencyId": { + "description": "Unique identity of a sales channel's currency within a specific sales channel." + }, + "paymentMethodId": { + "description": "Unique identity of a sales channel's payment method within a specific sales channel." + }, + "shippingMethodId": { + "description": "Unique identity of a sales channel's shipping method within a specific sales channel." + }, + "countryId": { + "description": "Unique identity of a sales channel's country within a specific sales channel." + }, + "navigationCategoryId": { + "description": "Unique identity of a sales channel's navigation category within a specific sales channel." + }, + "navigationCategoryDepth": { + "description": "It determines the number of levels of subcategories in the storefront category menu within a specific sales channel." + }, + "footerCategoryId": { + "description": "Unique identity of a sales channel's footer category within a specific sales channel." + }, + "serviceCategoryId": { + "description": "Unique identity of a sales channel's service category within a specific sales channel." + }, + "name": { + "description": "Name of the sales channel." + }, + "shortName": { + "description": "A short name for sales channel." + }, + "accessKey": { + "description": "Access key to store api." + }, + "active": { + "description": "When `true`, the sales channel is enabled." + }, + "maintenance": { + "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." + }, + "maintenanceIpWhitelist": { + "description": "Array of IP address allowed to access the sales channel." + }, + "mailHeaderFooterId": { + "description": "Unique identity of a sales channel's mail header and footer within a specific sales channel." + }, + "customerGroupId": { + "description": "Unique identity of a sales channel's customer group within a specific sales channel." + }, + "hreflangActive": { + "description": "When `true`, the sales channel pages are available in different languages within a specific sales channel." + }, + "hreflangDefaultDomainId": { + "description": "Unique identity of a sales channel's hreflangDefaultDomain within a specific sales channel." + }, + "analyticsId": { + "description": "Unique identity of a sales channel's analytics within a specific sales channel." + } + } + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { "type": "object", "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer", - "format": "int32" - }, - "max": { - "type": "integer", - "format": "int32" + "taxRate": { + "type": "number", + "format": "float" }, - "unit": { + "name": { "type": "string" } } }, - "translations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - } - } - } - }, - "orderDeliveries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "orderId": { - "type": "string" - }, - "shippingOrderAddressId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "shippingDateEarliest": { - "type": "string", - "format": "date-time" - }, - "shippingDateLatest": { - "type": "string", - "format": "date-time" - }, - "stateId": { - "type": "string" - } - } - } - }, - "salesChannelDefaultAssignments": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" - }, - "hreflangDefaultDomainId": { - "type": "string" - } - } - } - }, - "salesChannels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" - }, - "hreflangDefaultDomainId": { - "type": "string" - } - } - } - }, - "availabilityRule": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "priority": { - "type": "integer", - "format": "int32" - }, - "invalid": { - "type": "boolean" - } - } - }, - "availabilityRuleId": { - "type": "string" - }, - "prices": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "ruleId": { - "type": "string" - }, - "calculation": { - "type": "integer", - "format": "int32" - }, - "quantityStart": { - "type": "number", - "format": "float" - }, - "quantityEnd": { - "type": "number", - "format": "float" - }, - "price": { - "type": "number", - "format": "float" - }, - "calculationRuleId": { - "type": "string" - } - } - } - }, - "mediaId": { - "type": "string" - }, - "media": { - "type": "object", - "properties": { - "userId": { - "type": "string" - }, - "mimeType": { - "type": "string" - }, - "fileExtension": { - "type": "string" - }, - "fileSize": { - "type": "integer", - "format": "int32" - }, - "title": { - "type": "string" - }, - "metaDataRaw": { - "type": "string" - }, - "mediaTypeRaw": { - "type": "string" - }, - "uploadedAt": { - "type": "string", - "format": "date-time" - }, - "alt": { - "type": "string" - }, - "url": { - "type": "string" - }, - "fileName": { - "type": "string" - }, - "mediaFolderId": { - "type": "string" - }, - "private": { - "type": "boolean" - }, - "thumbnailsRo": { - "type": "string" - } - } - }, - "tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - } - } + "properties": { + "taxRate": { + "description": "Rate of tax within a specific sales channel." + }, + "name": { + "description": "Name defined for a Tax within a specific sales channel." } } - } - }, - "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": { + "customer": { + "$ref": "#/components/schemas/Customer", "properties": { - "name": { - "description": "Name given to delivery time." + "groupId": { + "description": "Unique identity of a customer's group within a specific sales channel." }, - "min": { - "description": "Minimum delivery time taken." + "defaultPaymentMethodId": { + "description": "Unique identity of a customer's default payment method within a specific sales channel." }, - "max": { - "description": "Maximum delivery time taken." + "salesChannelId": { + "description": "Unique identity of sales channel the customer is currently interacting with." }, - "unit": { - "description": "Unit in which the delivery time is defined. For example, days or hours." - } - } - }, - "translations": { - "properties": { - "shippingMethodId": { - "description": "Unique identity of shipping method." + "languageId": { + "description": "Unique identity of language within a specific sales channel the customer is interacting." }, - "name": { - "description": "Name of the shipping method." + "lastPaymentMethodId": { + "description": "Unique identity of customer's last payment method within a specific sales channel." }, - "description": { - "description": "A short description of the shipping method." - } - } - }, - "orderDeliveries": { - "properties": { - "orderId": { - "description": "Unique identity of order." + "defaultBillingAddressId": { + "description": "Unique identity of customer's default billing address within a specific sales channel." }, - "shippingOrderAddressId": { - "description": "Unique identity of shipping order address." + "defaultShippingAddressId": { + "description": "Unique identity of customer's default shipping address within a specific sales channel." }, - "shippingMethodId": { - "description": "Unique identity of shipping method." + "customerNumber": { + "description": "Name of the customer within a specific sales channel the customer is interacting." }, - "shippingDateEarliest": { - "description": "Date and time of earliest delivery of products." + "salutationId": { + "description": "Unique identity of customer's default shipping address within a specific sales channel." }, - "shippingDateLatest": { - "description": "Date and time of latest delivery of products." + "firstName": { + "description": "First name of the customer within a specific sales channel." }, - "stateId": { - "description": "Unique identity of state." - } - } - }, - "salesChannelDefaultAssignments": { - "properties": { - "stateId": { - "description": "Unique identity of state." + "lastName": { + "description": "Last name of the customer within a specific sales channel." }, - "languageId": { - "description": "Unique identity of language." + "company": { + "description": "Company name of the customer within a specific sales channel." }, - "currencyId": { - "description": "Unique identity of currency." + "password": { + "description": "Password of the customer within a specific sales channel." }, - "paymentMethodId": { - "description": "Unique identity of payment method." + "email": { + "description": "Email of the customer within a specific sales channel." }, - "shippingMethodId": { - "description": "Unique identity of shipping method." + "title": { + "description": "Customer's title or honorifics like Mr, Mrs, etc within a specific sales channel." }, - "countryId": { - "description": "Unique identity of country." + "affiliateCode": { + "description": "An affiliate code is an identification option with which website operators can mark outgoing links within a specific sales channel." }, - "navigationCategoryId": { - "description": "Unique identity of navigation category." + "campaignCode": { + "description": "A unique identifier for a campaign within a specific sales channel." }, - "navigationCategoryDepth": { - "description": "It determines the number of levels of subcategories in the storefront category menu." + "active": { + "description": "When `true`, the status of the customer is set active within a specific sales channel." }, - "footerCategoryId": { - "description": "Unique identity of footer category." + "doubleOptInRegistration": { + "description": "When `true`, user subscriptions to an email marketing list is allowed within a specific sales channel." }, - "serviceCategoryId": { - "description": "Unique identity of service category." + "doubleOptInEmailSentDate": { + "description": "Date and time when the double opt-in email was sent within a specific sales channel." }, - "name": { - "description": "Name of the sales channel." + "doubleOptInConfirmDate": { + "description": "Date and time when the double opt-in email was confirmed within a specific sales channel." }, - "shortName": { - "description": "A short name for sales channel." + "hash": { + "description": "Password hash for account recovery within a specific sales channel." }, - "accessKey": { - "description": "Access key to store api." + "guest": { + "description": "Boolean value is `true` for a guest account within a specific sales channel." }, - "active": { - "description": "When boolean value is `true`, the shipping methods are available for selection in the sales channel's storefront." + "firstLogin": { + "description": "Captures date and time of customer's first login within a specific sales channel." }, - "maintenance": { - "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." + "lastLogin": { + "description": "Captures date and time of customer's last login within a specific sales channel." }, - "maintenanceIpWhitelist": { - "description": "Array of IP address allowed to access the sales channel." + "newsletter": { + "description": "When `true`, then the customer gets subscribe to the newsletter" }, - "mailHeaderFooterId": { - "description": "Unique identity of mail header and footer." + "birthday": { + "description": "Captures customer's birthday details within a specific sales channel." }, - "customerGroupId": { - "description": "Unique identity of customer group." + "lastOrderDate": { + "description": "Captures customer's last order date within a specific sales channel." }, - "hreflangActive": { - "description": "When boolean value is `true`, the sales channel pages are available in different languages." + "orderCount": { + "description": "Captures the number of orders placed by a customer within a specific sales channel." }, - "hreflangDefaultDomainId": { - "description": "Unique identity of hreflangDefaultDomain." + "legacyEncoder": { + "description": "encapsulates shop credentials when needed to migrate shop system from old instance to new instance" + }, + "legacyPassword": { + "description": "Hashed password of the old shop system" + }, + "autoIncrement": { + "description": "Internal field. " + }, + "remoteAddress": { + "description": "Anonymous IP address of the customer for last session." } } }, - "salesChannels": { + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod", "properties": { - "stateId": { - "description": "Unique identity of state." - }, - "languageId": { - "description": "Unique identity of language." - }, - "currencyId": { - "description": "Unique identity of currency." - }, - "paymentMethodId": { - "description": "Unique identity of payment method." - }, - "shippingMethodId": { - "description": "Unique identity of shipping method." - }, - "countryId": { - "description": "Unique identity of country." - }, - "navigationCategoryId": { - "description": "Unique identity of navigation category." - }, - "navigationCategoryDepth": { - "description": "It determines the number of levels of subcategories in the storefront category menu." - }, - "footerCategoryId": { - "description": "Unique identity of footer category." + "pluginId": { + "description": "Unique identity of payment plugin within a specific sales channel." }, - "serviceCategoryId": { - "description": "Unique identity of service category." + "handlerIdentifier": { + "description": "Internal field that contains system identifier details for payment methods like Paypal." }, "name": { - "description": "Name of the sales channel." + "description": "Name of the payment method within a specific sales channel." }, - "shortName": { - "description": "A short name for sales channel." + "description": { + "description": "A short description about the payment method within a specific sales channel." }, - "accessKey": { - "description": "Access key to store api." + "position": { + "description": "The order of the tabs of your defined payment methods in the storefront by entering numerical values like 1,2,3, etc within a specific sales channel." }, "active": { - "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." - }, - "maintenance": { - "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." - }, - "maintenanceIpWhitelist": { - "description": "Array of IP address allowed to access the sales channel." - }, - "mailHeaderFooterId": { - "description": "Unique identity of mail header and footer." + "description": "When `true`, the payment method is available for usage within a specific sales channel." }, - "customerGroupId": { - "description": "Unique identity of customer group." + "availabilityRuleId": { + "description": "Unique identity of the rule for the payment method." }, - "hreflangActive": { - "description": "When boolean value is `true``, the sales channel pages are available in different languages." + "mediaId": { + "description": "Unique identity of media used in payment method within a specific sales channel." }, - "hreflangDefaultDomainId": { - "description": "Unique identity of hreflangDefaultDomain." + "formattedHandlerIdentifier": { + "description": "Internal field that contains system identifier details for payment methods like Paypal." } } }, - "availabilityRule": { + "shippingLocation": { + "type": "object", "properties": { - "name": { - "description": "Unique name for the rule." - }, - "description": { - "description": "A short description about the rule." + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] }, - "priority": { - "description": "A numerical value to prioritize one of the rules from the list." + "country": { + "$ref": "#/components/schemas/Country" }, - "invalid": { - "description": "When the boolean value is `true`, the rule is no more available for usage." + "address": { + "$ref": "#/components/schemas/CustomerAddress" } } }, - "availabilityRuleId": { - "description": "Unique identity of availability rule." - }, - "prices": { + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod", "properties": { - "shippingMethodId": { - "description": "Unique identity of shipping method." - }, - "currencyId": { - "description": "Unique identity of currency." + "name": { + "description": "Name of the shipping method within a specific sales channel." }, - "ruleId": { - "description": "Unique identity of rule." + "active": { + "description": "When `true`, the shipping method is available for usage within a specific sales channel." }, - "calculation": { - "description": "Shipping price calculated based on quantity, price, weight or volume of items." + "description": { + "description": "A short description about the shipping method within a specific sales channel." }, - "quantityStart": { - "description": "Starting range of quantity of an item." + "trackingUrl": { + "description": "URL that allows to track packages for a specific sales channel." }, - "quantityEnd": { - "description": "Ending range of quantity of an item." + "deliveryTimeId": { + "description": "Unique identity of deliveryTime within a specific sales channel." }, - "price": { - "description": "Shipping method price after applied rules." + "availabilityRuleId": { + "description": "Unique identity of the rule for the payment method." }, - "calculationRuleId": { - "description": "Unique identity of calculation rule." + "mediaId": { + "description": "Unique identity of media used in shipping method within a specific sales channel." } } }, - "mediaId": { - "description": "Unique identity of media." - }, - "media": { + "context": { + "description": "Core context with general configuration values and state", + "type": "object", "properties": { - "userId": { - "description": "Unique identity of user." - }, - "mimeType": { - "description": "A string sent along with a file indicating the type of the file. For example: image/jpeg." - }, - "fileExtension": { - "description": "Type of file indication. For example: jpeg, png." - }, - "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." + "versionId": { + "type": "string", + "description": "Unique identity of context's version in a specific sales channel." }, - "url": { - "description": "Runtime field, cannot be used as part of the criteria." + "currencyId": { + "type": "string", + "description": "Unique identity of currency context in a specific sales channel." }, - "fileName": { - "description": "Name of the media file uploaded." + "currencyFactor": { + "type": "integer", + "description": "Unique identity of currency factor context in a specific sales channel." }, - "mediaFolderId": { - "description": "Unique identity of media folder." + "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." }, - "private": { - "description": "Boolean value is `true` to keep the media display private." - } - } - }, - "tags": { - "properties": { - "name": { - "description": "Name of the tag." - } - } - } - } - }, - "SuccessResponse": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - } - } - }, - "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" + "languageIdChain": { + "type": "array", + "items": { + "type": "string" + } }, - "level": { - "type": "number", - "enum": [ - 0, - 10, - 20 - ], - "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" + "scope": { + "type": "string", + "description": "Scope defines if its related to system or user context." }, - "message": { - "type": "string" + "source": { + "type": "string", + "description": "When context is related to user in the source, then there is userId." }, - "messageKey": { - "type": "string" - } - } - } - } - }, - "AggregationEntity": { - "title": "AggregationEntity", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "entity" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "definition": { - "description": "The entity definition e.g \"product_manufacturer\".", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field", - "definition" - ] - }, - "AggregationFilter": { - "title": "AggregationFilter", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "filter" - ] - }, - "filter": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Filters" - } - } - }, - "required": [ - "name", - "type", - "filter" - ] - }, - "AggregationTerms": { - "title": "AggregationTerms", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "terms" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "limit": { - "description": "The number of terms to return", - "type": "number" - }, - "sort": { - "type": "array", - "description": "Sorting the aggregation result.", - "items": { - "$ref": "#/components/schemas/Sort" - } - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "AggregationHistogram": { - "title": "AggregationHistogram", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "histogram" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "interval": { - "description": "The interval of the histogram", - "type": "number" - }, - "format": { - "description": "The format of the histogram", - "type": "string" - }, - "timeZone": { - "description": "The timezone of the histogram", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "AggregationRange": { - "title": "AggregationRange", - "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "range" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "ranges": { - "description": "The ranges of the aggregation", - "type": "array", - "items": { - "type": "object", - "anyOf": [ - { - "type": "object", - "title": "From and to", - "properties": { - "from": { - "type": "number", - "description": "The lower bound of the range" - }, - "to": { - "type": "number", - "description": "The upper bound of the range" - } - }, - "required": [ - "from", - "to" - ] - }, - { - "type": "object", - "title": "From only", - "properties": { - "from": { - "type": "string", - "description": "The lower bound of the range" - } - }, - "required": [ - "from" - ] - }, - { - "type": "object", - "title": "To only", - "properties": { - "to": { - "type": "string", - "description": "The upper bound of the range" - } - }, - "required": [ - "to" - ] - } - ] + "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": [ - "name", - "type", - "field", - "ranges" + "salesChannel", + "apiAlias" + ] + }, + "ProductDetailResponse": { + "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", + "properties": { + "product": { + "$ref": "#/components/schemas/Product" + }, + "configurator": { + "type": "array", + "description": "List of property groups with their corresponding options and information on how to display them.", + "items": { + "$ref": "#/components/schemas/PropertyGroup" + } + }, + "id": { + "description": "Unique identity of product detail response." + }, + "available": { + "description": "When boolean value is true, the product is available for purchase." + }, + "isCloseout": { + "description": "Boolean value to check if the product is still buyable when stock value is 0." + }, + "displayGroup": { + "description": "Internal field." + }, + "manufacturerNumber": { + "description": "Unique number of the product manufacturer." + }, + "stock": { + "description": "Quantity of product available." + }, + "sortedProperties": { + "description": "Properties of the product that are sorted" + } + }, + "required": [ + "product" ] }, + "ProductListingFlags": { + "type": "object", + "description": "Additional flags for product listings", + "properties": { + "no-aggregations": { + "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "only-aggregations": { + "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + } + }, "LineItemType": { "type": "string", "enum": [ @@ -12662,19 +12631,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" @@ -12727,354 +12702,589 @@ } } }, - "referencedId": { + "referencedId": { + "type": "string", + "description": "Unique identity of type of entity." + }, + "removable": { + "type": "boolean", + "description": "Allows the line item to be removable from the cart when set to true." + }, + "stackable": { + "type": "boolean", + "description": "Allows to change the quantity of the line item when set to true." + }, + "states": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "is-physical", + "is-download" + ] + } + }, + "type": { + "$ref": "#/components/schemas/LineItemType", + "description": "Type refers to the entity type of an item whether it is product or promotion for instance." + }, + "uniqueIdentifier": { + "type": "string" + } + }, + "required": [ + "id", + "type", + "deliveryInformation", + "payload", + "quantity", + "states" + ] + }, + "CalculatedPrice": { + "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", + "properties": { + "unitPrice": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "rawTotal": { + "type": "number" + }, + "totalPrice": { + "type": "number" + }, + "taxStatus": { + "type": "string", + "enum": [ + "net", + "tax-free" + ] + }, + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } + }, + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } + ] + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] + }, + "positionPrice": { + "type": "number" + }, + "netPrice": { + "type": "number" + }, + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] + }, + "apiAlias": { "type": "string", - "description": "Unique identity of type of entity." + "enum": [ + "calculated_price" + ] }, - "removable": { - "type": "boolean", - "description": "Allows the line item to be removable from the cart when set to true." + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } + } + }, + "required": [ + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "referencePrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitPrice", + "positionPrice", + "netPrice", + "taxRules", + "rawTotal", + "taxStatus" + ] + }, + "CartError": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "key": { + "type": "string" }, - "stackable": { - "type": "boolean", - "description": "Allows to change the quantity of the line item when set to true." + "level": { + "type": "number", + "enum": [ + 0, + 10, + 20 + ], + "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" }, - "states": { + "message": { + "type": "string" + }, + "messageKey": { + "type": "string" + } + }, + "required": [ + "key", + "level", + "message", + "messageKey" + ] + }, + "CartItems": { + "type": "object", + "required": [ + "items" + ], + "properties": { + "items": { "type": "array", "items": { - "type": "string", - "enum": [ - "is-physical", - "is-download" - ] + "$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." + } } + } + } + }, + "AggregationMetrics": { + "type": "object", + "properties": { + "name": { + "type": "string" }, "type": { - "$ref": "#/components/schemas/LineItemType", - "description": "Type refers to the entity type of an item whether it is product or promotion for instance." + "type": "string", + "enum": [ + "avg", + "count", + "max", + "min", + "stats", + "sum" + ] }, - "uniqueIdentifier": { + "field": { "type": "string" } }, "required": [ - "id", - "type" + "name", + "type", + "field" ] }, - "CartPriceReference": { + "CrossSellingElement": { "type": "object", "properties": { - "purchaseUnit": { - "type": "number" + "crossSelling": { + "$ref": "#/components/schemas/ProductCrossSelling" }, - "referenceUnit": { - "type": "number" + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } }, - "unitName": { - "type": "string" + "total": { + "type": "integer", + "format": "int32" }, - "price": { - "type": "number" + "streamId": { + "type": "string", + "format": "uuid" }, "apiAlias": { "type": "string", "enum": [ - "cart_price_reference" + "cross_selling_element" ] + } + }, + "required": [ + "crossSelling", + "products", + "total", + "apiAlias" + ] + }, + "ProductListingResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EntitySearchResult" }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" + { + "type": "object", + "properties": { + "currentFilters": { + "type": "object", + "description": "Contains the state of the filters. These can be used to create listing filters.", + "properties": { + "navigationId": { + "type": "string" + }, + "manufacturer": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "price": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "default": 0 + }, + "max": { + "type": "integer", + "default": 0 + } + }, + "required": [ + "min", + "max" + ] + }, + "rating": { + "oneOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "shipping-free": { + "type": "boolean", + "default": false + }, + "properties": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "search": { + "type": "string" + } + }, + "required": [ + "manufacturer", + "navigationId", + "price", + "properties", + "rating", + "shipping-free" + ] + }, + "availableSortings": { + "type": "array", + "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", + "items": { + "type": "object", + "properties": { + "label": { + "type": "string" + }, + "translated": { + "type": "object", + "properties": { + "label": { + "type": "string" + } + }, + "required": [ + "label" + ] + }, + "key": { + "type": "string" + }, + "priority": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_sorting" + ] + } + }, + "required": [ + "label", + "translated", + "key", + "priority", + "apiAlias" + ] + } }, - { - "type": "null" - } - ] - }, - "regulationPrice": { - "type": "object", - "properties": { - "price": { - "type": "number" + "sorting": { + "type": "string" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "entity": { + "type": "string", + "enum": [ + "product" + ] }, "apiAlias": { "type": "string", "enum": [ - "cart_regulation_price" + "product_listing" ] } }, - "nullable": true - }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "type": "string", - "format": "^[0-9a-f]{32}$", - "nullable": true - } - }, - "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" - ] - }, - "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": [ + "elements", + "availableSortings", + "currentFilters", + "apiAlias" + ] } - }, - "required": [ - "filename", - "created" ] }, - "CrossSellingElementCollection": { + "NavigationRouteResponse": { "type": "array", "items": { - "$ref": "#/components/schemas/CrossSellingElement" + "$ref": "#/components/schemas/Category" }, "properties": { - "total": { - "description": "Number of cross selling elements found." + "id": { + "description": "Unique identity of navigation route response." } } }, - "CalculatedPrice": { + "Price": { "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", + "description": "Price object", "properties": { - "unitPrice": { - "type": "number" + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "quantity": { + "gross": { + "description": "", "type": "number" }, - "rawTotal": { + "net": { + "description": "", "type": "number" }, - "totalPrice": { - "type": "number" + "linked": { + "description": "", + "type": "boolean" }, - "calculatedTaxes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } + "listPrice": { + "description": "", + "type": "object", + "properties": { + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } - }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" + "gross": { + "description": "", + "type": "number" }, - { - "type": "null" - } - ] - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" + "net": { + "description": "", + "type": "number" }, - { - "type": "null" + "linked": { + "description": "", + "type": "boolean" } + }, + "required": [ + "gross", + "net" ] }, - "positionPrice": { - "type": "number" - }, - "netPrice": { - "type": "number" - }, "regulationPrice": { + "description": "", "type": "object", "properties": { - "price": { + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "gross": { + "description": "", "type": "number" }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] + "net": { + "description": "", + "type": "number" + }, + "linked": { + "description": "", + "type": "boolean" } }, - "nullable": true - }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "type": "string", - "format": "^[0-9a-f]{32}$", - "nullable": true - }, - "apiAlias": { - "type": "string", - "enum": [ - "calculated_price" + "required": [ + "gross", + "net" ] - }, - "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" + "currencyId", + "gross", + "net" ] }, - "OrderRouteResponse": { + "Sitemap": { "type": "object", "properties": { - "orders": { - "allOf": [ - { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order" - } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "filename": { + "type": "string", + "description": "Name of the file which holds a list of all URL's." }, - "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" - } + "created": { + "type": "string", + "format": "date-time" } }, "required": [ - "orders" + "filename", + "created" ] }, - "CartDeliveryInformation": { + "CartListPrice": { "type": "object", + "description": "", "properties": { + "discount": { + "type": "number" + }, + "percentage": { + "type": "number" + }, + "price": { + "type": "number" + }, "apiAlias": { "type": "string", "enum": [ - "cart_delivery_information" + "cart_list_price" ] - }, - "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" ] }, - "CartListPrice": { + "ListPrice": { "type": "object", "description": "", "properties": { @@ -13098,429 +13308,488 @@ "apiAlias" ] }, - "WishlistLoadRouteResponse": { + "CartPriceReference": { "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." - } - } + "purchaseUnit": { + "type": "number" }, - "products": { - "$ref": "#/components/schemas/ProductListingResult" - } - } - }, - "SalesChannelContext": { - "type": "object", - "properties": { - "token": { - "description": "Context the user session", + "referenceUnit": { + "type": "number" + }, + "unitName": { "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." - } - } + "price": { + "type": "number" }, - "fallbackCustomerGroup": { - "description": "Fallback group if the default customer group is not applicable", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } - } + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_reference" + ] }, - "currency": { - "$ref": "#/components/schemas/Currency", - "properties": { - "isoCode": { - "description": "Standard international three digit code to represent currency in a given sales channel. For example, USD." - }, - "factor": { - "description": "Currency exchange rate in a specific sales channel the customer is currently interacting with." - }, - "symbol": { - "description": "A currency symbol is a graphical representation used as shorthand for a currency's name, for example US Dollar - $ in a given sales channel." - }, - "shortName": { - "description": "Acronym for international currencies, for example, USD in a given sales channel." - }, - "name": { - "description": "Full name of the currency in a given sales channel. For example, US-Dollar." - }, - "position": { - "description": "The order of the tabs for multiple currencies defined in a given sales channel." - }, - "decimalPrecision": { - "description": "It defines the round off value for currency to the nearest decimal point in a given sales channel. If set to 2, it rounds off to two significant decimal points." + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" }, - "isSystemDefault": { - "description": "Runtime field, cannot be used as part of the criteria." + { + "type": "null" } - } + ] }, - "salesChannel": { - "description": "Information about the current sales channel", - "type": "object", - "properties": { - "typeId": { - "type": "string", - "description": "Unique identity of a sales channel's type within a specific sales channel." - }, - "languageId": { - "type": "string", - "description": "Unique identity of a sales channel's language within a specific sales channel." - }, - "currencyId": { - "type": "string", - "description": "Unique identity of a sales channel's currency within a specific sales channel." - }, - "paymentMethodId": { - "type": "string", - "description": "Unique identity of a sales channel's payment method within a specific sales channel." - }, - "shippingMethodId": { - "type": "string", - "description": "Unique identity of a sales channel's shipping method within a specific sales channel." - }, - "countryId": { - "type": "string", - "description": "Unique identity of a sales channel's country within a specific sales channel." - }, - "navigationCategoryId": { - "type": "string", - "description": "Unique identity of a sales channel's navigation category within a specific sales channel." - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32", - "description": "It determines the number of levels of subcategories in the storefront category menu within a specific sales channel." - }, - "footerCategoryId": { - "type": "string", - "description": "Unique identity of a sales channel's footer category within a specific sales channel." - }, - "serviceCategoryId": { - "type": "string", - "description": "Unique identity of a sales channel's service category within a specific sales channel." - }, - "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." - }, - "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." - }, - "customerGroupId": { - "type": "string", - "description": "Unique identity of a sales channel's customer group within a specific sales channel." - }, - "hreflangActive": { - "type": "boolean", - "description": "When `true`, the sales channel pages are available in different languages within a specific sales channel." - }, - "hreflangDefaultDomainId": { - "type": "string", - "description": "Unique identity of a sales channel's hreflangDefaultDomain within a specific sales channel." + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } }, - "analyticsId": { - "type": "string", - "description": "Unique identity of a sales channel's analytics within a specific sales channel." + { + "type": "null" } - } + ] }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" } - }, + ] + } + }, + "required": [ + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" + ] + }, + "FindProductVariantRouteResponse": { + "type": "object", + "properties": { + "foundCombination": { + "type": "object", "properties": { - "taxRate": { - "description": "Rate of tax within a specific sales channel." + "variantId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of a variant." }, - "name": { - "description": "Name defined for a Tax within a specific sales channel." + "options": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Available product variant options. For example, for variant `Size`, option would be `XS`, `S`, `M`, `L`, `XL`." } } + } + } + }, + "Breadcrumb": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - "customer": { - "$ref": "#/components/schemas/Customer", + "categoryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "type": { + "type": "string", + "enum": [ + "page", + "link", + "folder" + ] + }, + "translated": { + "type": "object", + "additionalProperties": true, "properties": { - "groupId": { - "description": "Unique identity of a customer's group within a specific sales channel." - }, - "defaultPaymentMethodId": { - "description": "Unique identity of a customer's default payment method within a specific sales channel." - }, - "salesChannelId": { - "description": "Unique identity of sales channel the customer is currently interacting with." - }, - "languageId": { - "description": "Unique identity of language within a specific sales channel the customer is interacting." - }, - "lastPaymentMethodId": { - "description": "Unique identity of customer's last payment method within a specific sales channel." - }, - "defaultBillingAddressId": { - "description": "Unique identity of customer's default billing address within a specific sales channel." - }, - "defaultShippingAddressId": { - "description": "Unique identity of customer's default shipping address within a specific sales channel." - }, - "customerNumber": { - "description": "Name of the customer within a specific sales channel the customer is interacting." - }, - "salutationId": { - "description": "Unique identity of customer's default shipping address within a specific sales channel." - }, - "firstName": { - "description": "First name of the customer within a specific sales channel." - }, - "lastName": { - "description": "Last name of the customer within a specific sales channel." - }, - "company": { - "description": "Company name of the customer within a specific sales channel." - }, - "password": { - "description": "Password of the customer within a specific sales channel." - }, - "email": { - "description": "Email of the customer within a specific sales channel." - }, - "title": { - "description": "Customer's title or honorifics like Mr, Mrs, etc within a specific sales channel." - }, - "affiliateCode": { - "description": "An affiliate code is an identification option with which website operators can mark outgoing links within a specific sales channel." - }, - "campaignCode": { - "description": "A unique identifier for a campaign within a specific sales channel." - }, - "active": { - "description": "When `true`, the status of the customer is set active within a specific sales channel." - }, - "doubleOptInRegistration": { - "description": "When `true`, user subscriptions to an email marketing list is allowed within a specific sales channel." - }, - "doubleOptInEmailSentDate": { - "description": "Date and time when the double opt-in email was sent within a specific sales channel." - }, - "doubleOptInConfirmDate": { - "description": "Date and time when the double opt-in email was confirmed within a specific sales channel." - }, - "hash": { - "description": "Password hash for account recovery within a specific sales channel." - }, - "guest": { - "description": "Boolean value is `true` for a guest account within a specific sales channel." - }, - "firstLogin": { - "description": "Captures date and time of customer's first login within a specific sales channel." + "customFields": { + "type": "object" }, - "lastLogin": { - "description": "Captures date and time of customer's last login within a specific sales channel." + "slotConfig": { + "type": "object" }, - "newsletter": { - "description": "When `true`, then the customer gets subscribe to the newsletter" + "linkType": { + "type": "string", + "enum": [ + "external", + "category", + "product", + "landing_page" + ] }, - "birthday": { - "description": "Captures customer's birthday details within a specific sales channel." + "internalLink": { + "type": "string" }, - "lastOrderDate": { - "description": "Captures customer's last order date within a specific sales channel." + "externalLink": { + "type": "string" }, - "orderCount": { - "description": "Captures the number of orders placed by a customer within a specific sales channel." + "linkNewTab": { + "type": "boolean" }, - "legacyEncoder": { - "description": "encapsulates shop credentials when needed to migrate shop system from old instance to new instance" + "description": { + "type": "string" }, - "legacyPassword": { - "description": "Hashed password of the old shop system" + "metaTitle": { + "type": "string" }, - "autoIncrement": { - "description": "Internal field. " + "metaDescription": { + "type": "string" }, - "remoteAddress": { - "description": "Anonymous IP address of the customer for last session." + "keywords": { + "type": "string" } } }, - "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethod", + "path": { + "type": "string" + }, + "seoUrls": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" + } + }, + "apiAlias": { + "type": "string", + "enum": [ + "breadcrumb" + ] + } + }, + "required": [ + "name", + "categoryId", + "type", + "translated", + "path", + "apiAlias" + ] + }, + "AccountNewsletterRecipient": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": [ + "undefined", + "notSet", + "direct", + "optIn", + "optOut" + ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "account_newsletter_recipient" + ] + } + }, + "required": [ + "status", + "apiAlias" + ] + }, + "CartDeliveryInformation": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_information" + ] + }, + "freeDelivery": { + "type": "boolean" + }, + "deliveryTime": { + "type": "object", "properties": { - "pluginId": { - "description": "Unique identity of payment plugin within a specific sales channel." - }, - "handlerIdentifier": { - "description": "Internal field that contains system identifier details for payment methods like Paypal." - }, "name": { - "description": "Name of the payment method within a specific sales channel." - }, - "description": { - "description": "A short description about the payment method within a specific sales channel." - }, - "position": { - "description": "The order of the tabs of your defined payment methods in the storefront by entering numerical values like 1,2,3, etc within a specific sales channel." + "type": "string" }, - "active": { - "description": "When `true`, the payment method is available for usage within a specific sales channel." + "min": { + "type": "integer" }, - "availabilityRuleId": { - "description": "Unique identity of the rule for the payment method." + "max": { + "type": "integer" }, - "mediaId": { - "description": "Unique identity of media used in payment method within a specific sales channel." + "unit": { + "type": "string" }, - "formattedHandlerIdentifier": { - "description": "Internal field that contains system identifier details for payment methods like Paypal." - } - } - }, - "shippingLocation": { - "type": "object", - "properties": { "apiAlias": { "type": "string", "enum": [ - "cart_delivery_shipping_location" + "cart_delivery_time" ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" } } }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod", - "properties": { - "name": { - "description": "Name of the shipping method within a specific sales channel." - }, - "active": { - "description": "When `true`, the shipping method is available for usage within a specific sales channel." - }, - "description": { - "description": "A short description about the shipping method within a specific sales channel." - }, - "trackingUrl": { - "description": "URL that allows to track packages for a specific sales channel." - }, - "deliveryTimeId": { - "description": "Unique identity of deliveryTime within a specific sales channel." - }, - "availabilityRuleId": { - "description": "Unique identity of the rule for the payment method." - }, - "mediaId": { - "description": "Unique identity of media used in shipping method within a specific sales channel." - } + "height": { + "type": "integer" + }, + "length": { + "type": "integer" + }, + "restockTime": { + "type": "integer" + }, + "stock": { + "type": "integer" + }, + "weight": { + "type": "integer" + }, + "width": { + "type": "integer" + } + }, + "required": [ + "apiAlias" + ] + }, + "AggregationEntity": { + "title": "AggregationEntity", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "entity" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "definition": { + "description": "The entity definition e.g \"product_manufacturer\".", + "type": "string" + } + }, + "required": [ + "name", + "type", + "field", + "definition" + ] + }, + "AggregationFilter": { + "title": "AggregationFilter", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "filter" + ] + }, + "filter": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Filters" } + } + }, + "required": [ + "name", + "type", + "filter" + ] + }, + "AggregationTerms": { + "title": "AggregationTerms", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "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" + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "terms" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "limit": { + "description": "The number of terms to return", + "type": "number" + }, + "sort": { + "type": "array", + "description": "Sorting the aggregation result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "AggregationHistogram": { + "title": "AggregationHistogram", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "histogram" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "interval": { + "description": "The interval of the histogram", + "type": "number" + }, + "format": { + "description": "The format of the histogram", + "type": "string" + }, + "timeZone": { + "description": "The timezone of the histogram", + "type": "string" + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "AggregationRange": { + "title": "AggregationRange", + "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "range" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "ranges": { + "description": "The ranges of the aggregation", + "type": "array", + "items": { + "type": "object", + "anyOf": [ + { + "type": "object", + "title": "From and to", + "properties": { + "from": { + "type": "number", + "description": "The lower bound of the range" + }, + "to": { + "type": "number", + "description": "The upper bound of the range" + } + }, + "required": [ + "from", + "to" + ] + }, + { + "type": "object", + "title": "From only", + "properties": { + "from": { + "type": "string", + "description": "The lower bound of the range" + } + }, + "required": [ + "from" + ] + }, + { + "type": "object", + "title": "To only", + "properties": { + "to": { + "type": "string", + "description": "The upper bound of the range" + } + }, + "required": [ + "to" + ] } - }, - "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." - } + ] } } - } + }, + "required": [ + "name", + "type", + "field", + "ranges" + ] }, "CustomerAddressBody": { "description": "Added since version: 6.0.0.0", @@ -13592,798 +13861,861 @@ }, "type": "object" }, - "CartItems": { + "Cart": { "type": "object", "properties": { - "items": { + "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" - }, - "properties": { - "id": { - "description": "Unique identity of cart item." - }, - "modified": { - "description": "When boolean value is `true`, the cart is said to be modified." - } } - } - } - }, - "FindProductVariantRouteResponse": { - "type": "object", - "properties": { - "foundCombination": { + }, + "errors": { "type": "object", - "properties": { - "variantId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of a variant." - }, - "options": { + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "anyOf": [ + { "type": "array", "items": { - "type": "string" - }, - "description": "Available product variant options. For example, for variant `Size`, option would be `XS`, `S`, `M`, `L`, `XL`." + "$ref": "#/components/schemas/CartError" + } + }, + { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "code": { + "type": "number" + }, + "key": { + "type": "string" + }, + "level": { + "type": "number" + }, + "message": { + "type": "string" + }, + "messageKey": { + "type": "string" + } + }, + "required": [ + "code", + "key", + "level", + "message", + "messageKey" + ] + } + } + ], + "properties": { + "key": { + "description": "Unique key for every message." + }, + "level": { + "description": "Types of level - Notice, warning and error. " + }, + "message": { + "description": "A persistent error passed from the shopping cart calculation processes to the user end." } } - } - } - }, - "Price": { - "type": "object", - "description": "Price object", - "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" }, - "gross": { - "description": "", - "type": "number" + "deliveries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDelivery" + } }, - "net": { - "description": "", - "type": "number" + "transactions": { + "description": "A list of all payment transactions associated with the current cart.", + "type": "array", + "items": { + "type": "object", + "properties": { + "paymentMethodId": { + "type": "string" + }, + "amount": { + "$ref": "#/components/schemas/CalculatedPrice" + } + } + }, + "properties": { + "paymentMethodId": { + "description": "Unique identity of payment method." + } + } }, - "linked": { - "description": "", - "type": "boolean" + "modified": { + "type": "boolean", + "description": "It signifies any changes to cart." }, - "listPrice": { - "description": "", - "type": "object", - "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "", - "type": "number" - }, - "net": { - "description": "", - "type": "number" + "customerComment": { + "description": "A comment that can be added to the cart.", + "oneOf": [ + { + "type": "string" }, - "linked": { - "description": "", - "type": "boolean" + { + "type": "null" + } + ] + }, + "affiliateCode": { + "description": "An affiliate tracking code", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" } - }, - "required": [ - "gross", - "net" ] }, - "regulationPrice": { - "description": "", - "type": "object", - "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "", - "type": "number" - }, - "net": { - "description": "", - "type": "number" + "campaignCode": { + "description": "A campaign tracking code", + "oneOf": [ + { + "type": "string" }, - "linked": { - "description": "", - "type": "boolean" + { + "type": "null" } - }, - "required": [ - "gross", - "net" ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart" + ] + }, + "id": { + "description": "Unique identity of cart." } }, "required": [ - "currencyId", - "gross", - "net" + "price", + "apiAlias" ] }, - "CartDelivery": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" + "Association": { + "additionalProperties": { + "$ref": "#/components/schemas/Association" + } + }, + "ShippingMethodPageRouteResponse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "deliveryTimeId": { + "type": "string" + }, + "deliveryTime": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "min": { + "type": "integer", + "format": "int32" + }, + "max": { + "type": "integer", + "format": "int32" + }, + "unit": { + "type": "string" + } + } + }, + "translations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + } + } + } + }, + "orderDeliveries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "orderId": { + "type": "string" + }, + "shippingOrderAddressId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "shippingDateEarliest": { + "type": "string", + "format": "date-time" + }, + "shippingDateLatest": { + "type": "string", + "format": "date-time" + }, + "stateId": { + "type": "string" + } + } + } + }, + "salesChannelDefaultAssignments": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } + } + }, + "salesChannels": { + "type": "array", + "items": { + "type": "object", + "properties": { + "typeId": { + "type": "string" + }, + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } } - } - }, - "location": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "state": { - "$ref": "#/components/schemas/CountryState" + }, + "availabilityRule": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "priority": { + "type": "integer", + "format": "int32" + }, + "invalid": { + "type": "boolean" + } } - } - }, - "positions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDeliveryPosition" - } - }, - "shippingCosts": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "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." + "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" + } + } } - } - }, - "deliveries": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDelivery" - } - }, - "transactions": { - "description": "A list of all payment transactions associated with the current cart.", - "type": "array", - "items": { + }, + "mediaId": { + "type": "string" + }, + "media": { "type": "object", "properties": { - "paymentMethodId": { + "userId": { "type": "string" }, - "amount": { - "$ref": "#/components/schemas/CalculatedPrice" + "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" } } }, - "properties": { - "paymentMethodId": { - "description": "Unique identity of payment method." + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } } } - }, - "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." - } - } - }, - "EntitySearchResult": { - "type": "object", - "properties": { - "entity": { - "type": "string" - }, - "total": { - "type": "integer", - "description": "The total number of found entities" - }, - "aggregations": { - "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", - "items": { - "type": "object" - } - }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." - }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." } - } - }, - "AggregationMetrics": { - "type": "object", + }, "properties": { "name": { - "type": "string" + "description": "Name of the shipping method." }, - "type": { - "type": "string", - "enum": [ - "avg", - "count", - "max", - "min", - "stats", - "sum" - ] + "active": { + "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." }, - "field": { - "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "ProductListingCriteria": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "description": { + "description": "The order of the tabs of your defined shipping methods in the storefront by entering numerical values like 1,2,3, etc." }, - { - "type": "object", - "description": "Additional search parameters for product listings", + "deliveryTimeId": { + "description": "Unique identity of the delivery time." + }, + "deliveryTime": { "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" + "name": { + "description": "Name given to delivery time." }, - "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 + "min": { + "description": "Minimum delivery time taken." }, - "p": { - "description": "Search result page", - "type": "integer", - "default": 1 + "max": { + "description": "Maximum delivery time taken." }, - "manufacturer": { - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", - "type": "string" + "unit": { + "description": "Unit in which the delivery time is defined. For example, days or hours." + } + } + }, + "translations": { + "properties": { + "shippingMethodId": { + "description": "Unique identity of shipping method." }, - "min-price": { - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 + "name": { + "description": "Name of the shipping method." }, - "max-price": { - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 + "description": { + "description": "A short description of the shipping method." + } + } + }, + "orderDeliveries": { + "properties": { + "orderId": { + "description": "Unique identity of order." }, - "rating": { - "description": "Filter products with a minimum average rating.", - "type": "integer" + "shippingOrderAddressId": { + "description": "Unique identity of shipping order address." }, - "shipping-free": { - "description": "Filters products that are marked as shipping-free.", - "type": "boolean", - "default": false + "shippingMethodId": { + "description": "Unique identity of shipping method." }, - "properties": { - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", - "type": "string" + "shippingDateEarliest": { + "description": "Date and time of earliest delivery of products." }, - "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 + "shippingDateLatest": { + "description": "Date and time of latest delivery of products." }, - "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 + "stateId": { + "description": "Unique identity of state." + } + } + }, + "salesChannelDefaultAssignments": { + "properties": { + "stateId": { + "description": "Unique identity of state." }, - "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 + "languageId": { + "description": "Unique identity of language." }, - "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 + "currencyId": { + "description": "Unique identity of currency." }, - "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 + "paymentMethodId": { + "description": "Unique identity of payment method." }, - "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" + "shippingMethodId": { + "description": "Unique identity of shipping method." }, - "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 + "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." } } - } - ], - "properties": { - "filter": { + }, + "salesChannels": { "properties": { - "type": { - "description": "To filter the results and aggregations with filter types like ==, >=, etc." + "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." }, - "field": { - "description": "To filter the results and aggregations by field like an property identifier." + "maintenanceIpWhitelist": { + "description": "Array of IP address allowed to access the sales channel." }, - "value": { - "description": "To filter the results and aggregations by value." - } - } - }, - "sort": { - "properties": { - "field": { - "description": "Sort the search results by field like an property identifier." + "mailHeaderFooterId": { + "description": "Unique identity of mail header and footer." }, - "order": { - "description": "Sort the search results of orders by ascending or descending." + "customerGroupId": { + "description": "Unique identity of customer group." }, - "naturalSorting": { - "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." + "hreflangActive": { + "description": "When boolean value is `true``, the sales channel pages are available in different languages." + }, + "hreflangDefaultDomainId": { + "description": "Unique identity of hreflangDefaultDomain." } } }, - "post-filter": { + "availabilityRule": { "properties": { - "type": { - "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." + "name": { + "description": "Unique name for the rule." }, - "field": { - "description": "To filter only the results but not the aggregations by field like an property identifier." + "description": { + "description": "A short description about the rule." }, - "value": { - "description": "To filter only the results but not the aggregations by value." + "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." } } - } - } - }, - "NavigationType": { - "type": "string", - "enum": [ - "main-navigation", - "footer-navigation", - "service-navigation" - ] - }, - "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": { - "type": "string", - "format": "date-time", - "nullable": true - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "$ref": "#/components/schemas/CountryState", - "nullable": true - }, - "salutation": { - "$ref": "#/components/schemas/Salutation" - } - }, - "required": [ - "customerId", - "createdAt", - "updatedAt", - "country", - "salutation" - ] - }, - "Breadcrumb": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "categoryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" }, - "type": { - "type": "string", - "enum": [ - "page", - "link", - "folder" - ] + "availabilityRuleId": { + "description": "Unique identity of availability rule." }, - "translated": { - "type": "object", - "additionalProperties": true, + "prices": { "properties": { - "customFields": { - "type": "object" - }, - "slotConfig": { - "type": "object" - }, - "linkType": { - "type": "string", - "enum": [ - "external", - "category", - "product", - "landing_page" - ] + "shippingMethodId": { + "description": "Unique identity of shipping method." }, - "internalLink": { - "type": "string" + "currencyId": { + "description": "Unique identity of currency." }, - "externalLink": { - "type": "string" + "ruleId": { + "description": "Unique identity of rule." }, - "linkNewTab": { - "type": "boolean" + "calculation": { + "description": "Shipping price calculated based on quantity, price, weight or volume of items." }, - "description": { - "type": "string" + "quantityStart": { + "description": "Starting range of quantity of an item." }, - "metaTitle": { - "type": "string" + "quantityEnd": { + "description": "Ending range of quantity of an item." }, - "metaDescription": { - "type": "string" + "price": { + "description": "Shipping method price after applied rules." }, - "keywords": { - "type": "string" + "calculationRuleId": { + "description": "Unique identity of calculation rule." } } }, - "path": { - "type": "string" - }, - "seoUrls": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } - }, - "apiAlias": { - "type": "string", - "enum": [ - "breadcrumb" - ] - } - }, - "required": [ - "name", - "categoryId", - "type", - "translated", - "path", - "apiAlias" - ] - }, - "ProductListingResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EntitySearchResult" + "mediaId": { + "description": "Unique identity of media." }, - { - "type": "object", + "media": { "properties": { - "currentFilters": { - "type": "object", - "description": "Contains the state of the filters. These can be used to create listing filters.", - "properties": { - "navigationId": { - "type": "string" - }, - "manufacturer": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "price": { - "type": "object", - "properties": { - "min": { - "type": "integer", - "default": 0 - }, - "max": { - "type": "integer", - "default": 0 - } - }, - "required": [ - "min", - "max" - ] - }, - "rating": { - "type": "integer", - "nullable": true - }, - "shipping-free": { - "type": "boolean", - "default": false - }, - "properties": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "search": { - "type": "string" - } - }, - "required": [ - "manufacturer", - "navigationId", - "price", - "properties", - "rating", - "shipping-free" - ] + "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." }, - "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" - ] - } + "fileSize": { + "description": "Size of the file media file uploaded." }, - "sorting": { - "type": "string" + "title": { + "description": "Title name give to the media." }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } + "metaDataRaw": { + "description": "Details of the media file uploaded." }, - "entity": { + "alt": { + "description": "Alternate text for media." + }, + "url": { + "description": "Runtime field, cannot be used as part of the criteria." + }, + "fileName": { + "description": "Name of the media file uploaded." + }, + "mediaFolderId": { + "description": "Unique identity of media folder." + }, + "private": { + "description": "Boolean value is `true` to keep the media display private." + } + } + }, + "tags": { + "properties": { + "name": { + "description": "Name of the tag." + } + } + } + } + }, + "CartDelivery": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { "type": "string", - "enum": [ - "product" - ] + "format": "date-time" }, + "latest": { + "type": "string", + "format": "date-time" + } + } + }, + "location": { + "type": "object", + "properties": { "apiAlias": { "type": "string", "enum": [ - "product_listing" + "cart_delivery_shipping_location" ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "state": { + "$ref": "#/components/schemas/CountryState" } - }, - "required": [ - "elements", - "availableSortings", - "currentFilters", - "apiAlias" - ] - } - ] - }, - "CrossSellingElement": { - "type": "object", - "properties": { - "crossSelling": { - "$ref": "#/components/schemas/ProductCrossSelling" + } }, - "products": { + "positions": { "type": "array", "items": { - "$ref": "#/components/schemas/Product" + "$ref": "#/components/schemas/CartDeliveryPosition" } }, - "total": { - "type": "integer", - "format": "int32" - }, - "streamId": { - "type": "string", - "format": "uuid" + "shippingCosts": { + "$ref": "#/components/schemas/CalculatedPrice" }, - "apiAlias": { - "type": "string", - "enum": [ - "cross_selling_element" - ] + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" } - }, - "required": [ - "crossSelling", - "products", - "total", - "apiAlias" + } + }, + "NavigationType": { + "type": "string", + "enum": [ + "main-navigation", + "footer-navigation", + "service-navigation" ] }, - "ProductDetailResponse": { - "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", + "CrossSellingElementCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrossSellingElement" + }, "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" + "total": { + "description": "Number of cross selling elements found." } - }, - "required": [ - "product" - ] + } }, "CartDeliveryPosition": { "type": "object", @@ -14411,7 +14743,60 @@ "price": { "$ref": "#/components/schemas/CalculatedPrice" } - } + } + }, + "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" + ] }, "CartPriceQuantity": { "type": "object", @@ -15291,320 +15676,102 @@ "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" - ] - } - } - } - } - }, - "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": { - "/newsletter/confirm": { - "post": { - "tags": [ - "Newsletter" - ], - "summary": "Confirm a newsletter registration", - "description": "You have to use the hash from the link sent out via email to confirm the user registration.", - "operationId": "confirmNewsletter", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "hash", - "em" - ], - "properties": { - "hash": { - "description": "Hash parameter from link the in the confirmation mail", - "type": "string" - }, - "em": { - "description": "Email hash parameter from the link in the confirmation mail", - "type": "string" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "The newsletter confirmation was successful." - } - }, - "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": { - "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" - } - } - } - }, - "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" + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "externalDocs": { + "type": "object", + "properties": { + "description": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "url" + ] + } + }, + "required": [ + "name" + ] } }, - "type": "object" - } + "externalDocs": { + "type": "object", + "properties": { + "description": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "url" + ] + } + }, + "type": "object", + "required": [ + "openapi", + "info" + ] } } - }, - "responses": { - "200": { - "description": "Unsubscribing was successful." - } - }, - "security": [ - { - "ApiKey": [] - } - ] + } } }, - "/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}$" - } - }, - { - "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 the customer group including registration settings.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomerGroup" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] + "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": { "/search": { "post": { "tags": [ @@ -15639,143 +15806,29 @@ "name": "sw-include-seo-urls", "required": false, "schema": { - "type": "boolean" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "search": { - "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/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": [ - { - "ApiKey": [] - } - ] - } - }, - "/navigation/{activeId}/{rootId}": { - "post": { - "tags": [ - "Category", - "Endpoints supporting Criteria " - ], - "summary": "Fetch a navigation menu", - "description": "This endpoint returns categories that can be used as a page navigation. You can either return them as a tree or as a flat list. You can also control the depth of the tree.\n\n Instead of passing uuids, you can also use one of the following aliases for the activeId and rootId parameters to get the respective navigations of your sales channel.\n\n * main-navigation\n * service-navigation\n * footer-navigation", - "operationId": "readNavigation", - "parameters": [ - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "activeId", - "in": "path", - "description": "Identifier of the active category in the navigation tree (if not used, just set to the same as rootId).", - "required": true, - "schema": { - "oneOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "$ref": "#/components/schemas/NavigationType" - } - ] - } - }, - { - "name": "rootId", - "in": "path", - "description": "Identifier of the root category for your desired navigation tree. You can use it to fetch sub-trees of your navigation tree.", - "required": true, - "schema": { - "oneOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "$ref": "#/components/schemas/NavigationType" - } - ] + "type": "boolean" } } ], "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" - } + "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" } ] } @@ -15784,11 +15837,11 @@ }, "responses": { "200": { - "description": "All available navigations", + "description": "Returns a product listing containing all products and additional fields to display a listing.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NavigationRouteResponse" + "$ref": "#/components/schemas/ProductListingResult" } } } @@ -15801,16 +15854,24 @@ ] } }, - "/shipping-method": { + "/product/{productId}/cross-selling": { "post": { "tags": [ - "Payment & Shipping", - "Endpoints supporting Criteria " + "Product" ], - "summary": "Fetch shipping methods", - "description": "Perform a filtered search for shipping methods.", - "operationId": "readShippingMethod", + "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", @@ -15822,58 +15883,22 @@ } }, { - "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.", + "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" } } ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } - } - } - }, "responses": { "200": { - "description": "", + "description": "Found cross sellings", "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/CrossSellingElementCollection" } } } @@ -15886,145 +15911,53 @@ ] } }, - "/account/newsletter-recipient": { + "/product/{productId}": { "post": { "tags": [ - "Profile", - "Newsletter", - "Endpoints supporting Criteria" + "Product" ], - "summary": "Fetch newsletter recipients", - "description": "Perform a filtered search for newsletter recipients.", - "operationId": "readNewsletterRecipient", - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } + "summary": "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}$'" } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/AccountNewsletterRecipient" - } - } + }, + { + "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}$" } - } - }, - "security": [ + }, { - "ApiKey": [], - "ContextToken": [] + "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" + } } - ] - } - }, - "/account/change-profile": { - "post": { - "tags": [ - "Profile" ], - "summary": "Change the customer's information", - "description": "Make changes to a customer's account, like changing their name, salutation or title.", - "operationId": "changeProfile", "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "type": "object", - "required": [ - "salutationId", - "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 - } - } + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/NoneFieldsCriteria" } ] } @@ -16033,11 +15966,11 @@ }, "responses": { "200": { - "description": "Returns a success response indicating a successful update", + "description": "Product information along with variant groups and options", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/ProductDetailResponse" } } } @@ -16045,56 +15978,71 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/change-email": { + "/product": { "post": { "tags": [ - "Profile" + "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}$" + } + } ], - "summary": "Change the customer's email address", - "description": "Changes a customer's email address to a new email address, using their current password as a validation.", - "operationId": "changeEmail", "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "required": [ - "email", - "emailConfirmation", - "password" - ], - "properties": { - "email": { - "description": "New email address. Has to be unique amongst all customers", - "type": "string" - }, - "emailConfirmation": { - "description": "Confirmation of the new email address.", - "type": "string" - }, - "password": { - "description": "Customer's current password", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Returns a success response indicating a successful update", + "description": "Entity search result containing products", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "allOf": [ + { + "required": [ + "elements" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -16102,46 +16050,77 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/change-language": { + "/product/{productId}/reviews": { "post": { "tags": [ - "Profile" + "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}$" + } + } ], - "summary": "Change the customer's language.", - "description": "Changes the language of the logged in customer", - "operationId": "changeLanguage", "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "required": [ - "languageId" - ], - "properties": { - "language": { - "description": "New languageId", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Returns a success response indicating a successful update", + "description": "Entity search result containing product reviews", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductReview" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -16149,42 +16128,71 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/change-password": { + "/product/{productId}/review": { "post": { "tags": [ - "Profile" + "Product" + ], + "summary": "Save a product review", + "description": "Saves a review for a product. Reviews have to be activated in the settings.", + "operationId": "saveProductReview", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Identifier of the product which is reviewed.", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } ], - "summary": "Change the customer's password", - "description": "Changes a customer's password using their current password as a validation.", - "operationId": "changePassword", "requestBody": { - "required": true, "content": { "application/json": { "schema": { "required": [ - "password", - "newPassword", - "newPasswordConfirm" + "title", + "content", + "points" ], "properties": { - "password": { - "description": "Current password of the customer", + "name": { + "description": "The name of the review author. If not set, the first name of the customer is chosen.", "type": "string" }, - "newPassword": { - "description": "New Password for the customer", + "email": { + "description": "The email address of the review author. If not set, the email of the customer is chosen.", "type": "string" }, - "newPasswordConfirm": { - "description": "Confirmation of the new password", + "title": { + "description": "The title of the review.", + "type": "string" + }, + "content": { + "description": "The content of review.", "type": "string" + }, + "points": { + "description": "The review rating for the product.", + "type": "number", + "format": "double" } }, "type": "object" @@ -16194,53 +16202,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-payment-method/{paymentMethodId}": { - "post": { - "tags": [ - "Profile" - ], - "summary": "Change the customer's default payment method", - "description": "Changes a customer's default (preselected) payment method.", - "operationId": "changePaymentMethod", - "parameters": [ - { - "name": "paymentMethodId", - "in": "path", - "description": "Identifier of the desired default payment method", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "Returns a success response indicating a successful update.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } + "description": "Success response indicating the review was saved successfully." } }, "security": [ @@ -16251,25 +16213,63 @@ ] } }, - "/account/customer-recovery-is-expired": { + "/product/{productId}/find-variant": { "post": { "tags": [ - "Profile" + "Product" + ], + "summary": "Search for a matching variant by product options.", + "description": "Performs a search for product variants and returns the best matching variant.", + "operationId": "searchProductVariantIds", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Product ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } ], - "summary": "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" + "options" ], "properties": { - "hash": { - "description": "Parameter from the link in the confirmation mail sent in Step 1", + "options": { + "oneOf": [ + { + "description": "The options parameter for the variant to find.", + "type": "array", + "items": { + "type": "string" + } + }, + { + "description": "The options parameter as a map of groupId => optionId.", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + ] + }, + "switchedGroup": { + "description": "The id of the option group that has been switched.", "type": "string" } }, @@ -16280,33 +16280,11 @@ }, "responses": { "200": { - "description": "Returns a CustomerRecoveryIsExpiredResponse that indicates if the hash is expired or not.", + "description": "Returns an FoundCombination struct containing the ids matching the search.", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "isExpired": { - "type": "boolean" - } - }, - "required": [ - "isExpired" - ] - } - }, - "apiAlias": { - "enum": [ - "array_struct" - ], - "type": "string" - } - } + "$ref": "#/components/schemas/FindProductVariantRouteResponse" } } } @@ -16319,23 +16297,63 @@ ] } }, - "/account/customer": { + "/product-listing/{categoryId}": { "post": { "tags": [ - "Profile", - "Endpoints supporting Criteria " + "Product" + ], + "summary": "Fetch a product listing by category", + "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.", + "operationId": "readProductListing", + "parameters": [ + { + "name": "categoryId", + "in": "path", + "description": "Identifier of a category.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "p", + "in": "query", + "description": "The page number to fetch.", + "required": false, + "schema": { + "type": "integer" + } + }, + { + "name": "sw-include-seo-urls", + "in": "header", + "description": "Determines if the response must contain a SeoUrl entity for a product entity", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } ], - "summary": "Get information about current customer", - "description": "Returns information about the current customer.", - "operationId": "readCustomer", "requestBody": { - "required": false, "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/Criteria" + "$ref": "#/components/schemas/ProductListingCriteria" + }, + { + "$ref": "#/components/schemas/ProductListingFlags" } ] } @@ -16344,11 +16362,11 @@ }, "responses": { "200": { - "description": "Returns the logged in customer, also for guest sessions. Check for the value of `guest` field to see whether the customer is a guest.", + "description": "Returns a product listing containing all products and additional fields to display a listing.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Customer" + "$ref": "#/components/schemas/ProductListingResult" } } } @@ -16356,136 +16374,100 @@ }, "security": [ { - "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": [] + "ApiKey": [] } ] } }, - "/account/address/{addressId}": { - "delete": { + "/navigation/{activeId}/{rootId}": { + "post": { "tags": [ - "Address" + "Category", + "Endpoints supporting Criteria " ], - "summary": "Delete an address of a customer", - "description": "Delete an address of customer.\n\n Only addresses which are not set as default addresses for shipping or billing can be deleted. You can check the current default addresses of your customer using the profile information endpoint and change them using the default address endpoint.\n\n **A customer must have at least one address (which can be used for shipping and billing).**\n\n An automatic fallback is not applied.", - "operationId": "deleteCustomerAddress", + "summary": "Fetch 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": "addressId", - "in": "path", - "description": "ID of the address to be deleted.", - "required": true, + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, "schema": { - "type": "string" + "type": "boolean" } - } - ], - "responses": { - "204": { - "description": "No Content response, when the address has been deleted" }, - "400": { - "description": "Response containing a list of errors, most likely due to the address being in use" - } - }, - "security": [ { - "ApiKey": [], - "ContextToken": [] - } - ] - }, - "patch": { - "tags": [ - "Address" - ], - "summary": "Modify an address of a customer", - "description": "Modifies an existing address of a customer.", - "operationId": "updateCustomerAddress", - "parameters": [ + "name": "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": "addressId", + "name": "activeId", "in": "path", - "description": "Address ID", + "description": "Identifier of the active category in the navigation tree (if not used, just set to the same as rootId).", "required": true, "schema": { - "type": "string" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomerAddressBody" - } - } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/CustomerAddress" - }, - { - "$ref": "#/components/schemas/CustomerAddressRead" - } - ] + "oneOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "$ref": "#/components/schemas/NavigationType" } - } + ] } - } - }, - "security": [ + }, { - "ApiKey": [], - "ContextToken": [] + "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" + } + ] + } } - ] - } - }, - "/account/list-address": { - "post": { - "tags": [ - "Address", - "Endpoints supporting Criteria " ], - "summary": "Fetch addresses of a customer", - "description": "Lists all addresses of the current customer and allows filtering them based on a criteria.", - "operationId": "listAddress", "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/Criteria" + "$ref": "#/components/schemas/NoneFieldsCriteria" + }, + { + "properties": { + "depth": { + "description": "Determines the depth of fetched navigation levels.", + "type": "integer", + "format": "int32" + }, + "buildTree": { + "description": "Return the categories as a tree or as a flat list.", + "type": "array", + "items": { + "type": "object" + } + } + }, + "type": "object" } ] } @@ -16494,14 +16476,11 @@ }, "responses": { "200": { - "description": "", + "description": "All available navigations", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CustomerAddress" - } + "$ref": "#/components/schemas/NavigationRouteResponse" } } } @@ -16509,36 +16488,87 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/login": { + "/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": "Log in a customer", - "description": "Logs in customers given their credentials.", - "operationId": "loginCustomer", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "username", - "password" + "email", + "subject", + "comment" ], "properties": { - "username": { - "description": "Email", + "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" }, - "password": { - "description": "Password", + "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" } }, @@ -16549,17 +16579,7 @@ }, "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "401": { - "description": "If credentials are incorrect an error is returned", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - } - } - } + "description": "Message sent successful." } }, "security": [ @@ -16569,53 +16589,63 @@ ] } }, - "/account/login/imitate-customer": { + "/category": { "post": { "tags": [ - "Login & Registration" + "Category", + "Endpoints supporting Criteria " + ], + "summary": "Fetch a list of categories", + "description": "Perform a filtered search for categories.", + "operationId": "readCategoryList", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } ], - "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, + "required": false, "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" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "400": { - "description": "If the token is incorrect an error is returned", + "description": "Entity search result containing categories.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/failure" + "allOf": [ + { + "type": "object", + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + } + } + } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -16628,71 +16658,80 @@ ] } }, - "/account/logout": { + "/category/{navigationId}": { "post": { "tags": [ - "Login & Registration" + "Category", + "Endpoints supporting Criteria " ], - "summary": "Log out a customer", - "description": "Logs out a customer.", - "operationId": "logoutCustomer", - "responses": { - "200": { - "$ref": "#/components/responses/ContextTokenResponse" + "summary": "Fetch a single category", + "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.", + "operationId": "readCategory", + "parameters": [ + { + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "navigationId", + "in": "path", + "description": "Identifier of the category to be fetched", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } }, - "403": { - "$ref": "#/components/responses/403" - } - }, - "security": [ { - "ApiKey": [], - "ContextToken": [] + "name": "slots", + "in": "query", + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", + "schema": { + "type": "string" + } } - ] - } - }, - "/account/register-confirm": { - "post": { - "tags": [ - "Login & Registration" ], - "summary": "Confirm a customer registration", - "description": "Confirms a customer registration when double opt-in is activated.\n\nLearn more about double opt-in registration in our guide \"Register a customer\".", - "operationId": "registerConfirm", "requestBody": { - "required": true, "content": { "application/json": { "schema": { - "required": [ - "hash", - "em" - ], - "properties": { - "hash": { - "description": "Hash from the email received", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" }, - "em": { - "description": "Email hash from the email received", - "type": "string" + { + "$ref": "#/components/schemas/ProductListingCriteria" } - }, - "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": "The loaded category with cms page", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Category" + } + } + } } }, "security": [ @@ -16702,154 +16741,53 @@ ] } }, - "/account/register": { + "/order/state/cancel": { "post": { "tags": [ - "Login & Registration" + "Order" + ], + "summary": "Cancel an order", + "description": "Cancels an order. The order state will be set to 'cancelled'.", + "operationId": "cancelOrder", + "parameters": [ + { + "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": "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" + "orderId": { + "description": "The identifier of the order to be canceled.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, + "type": "object", "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 - } - } - } - ], - "type": "object" + "orderId" + ] } } } }, "responses": { "200": { - "description": "Success", + "description": "Returns the state of the state machine\n\n example: More information about the state machine can be found in the corresponding guide: [Using the state machine](https://developer.shopware.com/docs/guides/plugins/plugins/checkout/order/using-the-state-machine)", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Customer" + "$ref": "#/components/schemas/StateMachineState" } } } @@ -16857,55 +16795,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/NoneFieldsCriteria" }, - "newPasswordConfirm": { - "description": "Confirmation of the new password", - "type": "string" + { + "properties": { + "checkPromotion": { + "description": "Check if the payment method of the order is still changeable.", + "type": "boolean" + } + }, + "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" } } } @@ -16913,36 +16859,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" @@ -16952,7 +16913,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": { @@ -16964,33 +16925,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": [ @@ -17001,28 +16990,68 @@ ] } }, - "/account/address/default-billing/{addressId}": { - "patch": { + "/document/download/{documentId}/{deepLinkCode}": { + "post": { "tags": [ - "Address" + "Document", + "Endpoints supporting Criteria " ], - "summary": "Change a customer's default billing address", - "description": "Updates the default (preselected) billing addresses of a customer.", - "operationId": "defaultBillingAddress", + "summary": "Download generated document", + "description": "Returns blob file of a generated document to download.", + "operationId": "download", "parameters": [ { - "name": "addressId", + "name": "documentId", "in": "path", - "description": "Address ID", "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "deepLinkCode", + "required": true, + "in": "path", "schema": { "type": "string" } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "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": "" + "description": "Returns the document information and blob to download.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Document" + } + } + } } }, "security": [ @@ -17033,19 +17062,36 @@ ] } }, - "/account/address": { + "/payment-method": { "post": { "tags": [ - "Address" + "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}$" + } + } ], - "summary": "Create a new address for a customer", - "description": "Creates a new address for a customer.", - "operationId": "createCustomerAddress", "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CustomerAddress" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] } } } @@ -17056,14 +17102,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" } } } @@ -17071,39 +17126,21 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/document/download/{documentId}/{deepLinkCode}": { + "/language": { "post": { "tags": [ - "Document", + "System & Context", "Endpoints supporting Criteria " ], - "summary": "Download generated document", - "description": "Returns blob file of a generated document to download.", - "operationId": "download", + "summary": "Fetch languages", + "description": "Perform a filtered search for languages.", + "operationId": "readLanguages", "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", @@ -17131,11 +17168,29 @@ }, "responses": { "200": { - "description": "Returns the document information and blob to download.", + "description": "Entity search result containing languages.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Document" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + } + } + }, + "required": [ + "elements" + ], + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -17143,61 +17198,86 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/customer/wishlist/add/{productId}": { - "post": { + "/breadcrumb/{id}": { + "get": { "tags": [ - "Wishlist" + "Experimental", + "Breadcrumb" ], - "summary": "Add a product to a wishlist", - "description": "Adds a product to a customers wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "addProductOnWishlist", + "summary": "Fetch a breadcrumb", + "description": "Perform search to get category or product breadcrumb. \n\nExperimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", + "operationId": "readBreadcrumb", "parameters": [ { - "name": "productId", + "name": "id", "in": "path", - "description": "Identifier of the product to be added.", + "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}$" + } } ], "responses": { "200": { - "description": "Returns a success response.", + "description": "Search result containing SeoUrl\\'s to be used as breadcrumb.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/BreadcrumbCollection" } } } + }, + "400": { + "$ref": "#/components/responses/400" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/customer/wishlist": { + "/country": { "post": { "tags": [ - "Wishlist", + "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch a wishlist", - "description": "Fetch a customer's wishlist. Products on the wishlist can be filtered using a criteria object.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "readCustomerWishlist", + "summary": "Fetch countries", + "description": "Perform a filtered search for countries", + "operationId": "readCountry", "parameters": [ { "name": "sw-language-id", @@ -17226,11 +17306,26 @@ }, "responses": { "200": { - "description": "", + "description": "Entity search result containing countries.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WishlistLoadRouteResponse" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Country" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -17238,36 +17333,35 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/customer/wishlist/merge": { + "/app-system/{name}/generate-token": { "post": { "tags": [ - "Wishlist" + "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": "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}$" - } - } - }, "type": "object" } } @@ -17275,11 +17369,23 @@ }, "responses": { "200": { - "description": "Returns a success response.", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "type": "object", + "properties": { + "token": { + "type": "string" + }, + "expires": { + "type": "string", + "format": "date-time" + }, + "shopId": { + "type": "string" + } + } } } } @@ -17287,122 +17393,127 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/customer/wishlist/delete/{productId}": { - "delete": { + "/landing-page/{landingPageId}": { + "post": { "tags": [ - "Wishlist" + "Content", + "Endpoints supporting Criteria " ], - "summary": "Remove a product from a wishlist", - "description": "Removes a product from a customer's wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "deleteProductOnWishlist", + "summary": "Fetch 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": "productId", + "name": "landingPageId", "in": "path", - "description": "The identifier of the product to be removed from the wishlist.", + "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}$" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + }, + { + "allOf": [ + { + "properties": { + "slots": { + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/ProductListingCriteria" + } + ] + } + ] + } + } + } + }, "responses": { "200": { - "description": "Returns a success response indicating a successful removal.", + "description": "The loaded landing page with cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/LandingPage" } } } }, "404": { - "description": "The removal of the product failed. Probably because the product could not be found on the wishlist.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - } - } - } + "$ref": "#/components/responses/404" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/currency": { + "/newsletter/confirm": { "post": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " - ], - "summary": "Fetch currencies", - "description": "Perform a filtered search for currencies.", - "operationId": "readCurrency", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } + "Newsletter" ], + "summary": "Confirm a newsletter registration", + "description": "You have to use the hash from the link sent out via email to confirm the user registration.", + "operationId": "confirmNewsletter", "requestBody": { - "required": false, + "required": true, "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "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": "Entity search result containing currencies.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Currency" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } + "description": "The newsletter confirmation was successful." } }, "security": [ @@ -17412,62 +17523,84 @@ ] } }, - "/search-suggest": { + "/newsletter/subscribe": { "post": { "tags": [ - "Product" - ], - "summary": "Search for products (suggest)", - "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", - "operationId": "searchSuggest", - "parameters": [ - { - "name": "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}$" - } - } + "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": { - "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" + "required": [ + "email", + "option", + "storefrontUrl" + ], + "properties": { + "email": { + "description": "Email address that will receive the confirmation and the newsletter.", + "type": "string" }, - { - "$ref": "#/components/schemas/ProductListingFlags" + "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" } } } }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProductListingResult" - } - } - } + "description": "Success" } }, "security": [ @@ -17477,30 +17610,28 @@ ] } }, - "/app-system/{name}/generate-token": { + "/newsletter/unsubscribe": { "post": { "tags": [ - "App system" - ], - "summary": "Generate JWT token for app system backend", - "description": "Generate JWT token for authenticated communication with the app server", - "operationId": "generateJWTAppSystemAppServer", - "parameters": [ - { - "in": "path", - "name": "name", - "required": true, - "description": "Name of the app", - "schema": { - "type": "string" - } - } + "Newsletter" ], + "summary": "Remove a newsletter subscription", + "description": "Removes a newsletter recipient from the mailing lists.", + "operationId": "unsubscribeToNewsletter", "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { + "required": [ + "email" + ], + "properties": { + "email": { + "description": "Email address that should be removed from the mailing lists.", + "type": "string" + } + }, "type": "object" } } @@ -17508,26 +17639,7 @@ }, "responses": { "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "token": { - "type": "string" - }, - "expires": { - "type": "string", - "format": "date-time" - }, - "shopId": { - "type": "string" - } - } - } - } - } + "description": "Unsubscribing was successful." } }, "security": [ @@ -17537,16 +17649,25 @@ ] } }, - "/language": { + "/cms/{id}": { "post": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Content" ], - "summary": "Fetch languages", - "description": "Perform a filtered search for languages.", - "operationId": "readLanguages", + "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", @@ -17559,47 +17680,40 @@ } ], "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" } ] } - } - } - }, - "responses": { - "200": { - "description": "Entity search result containing languages.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Language" - } - } - }, - "required": [ - "elements" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + } + } + }, + "responses": { + "200": { + "description": "The loaded cms page", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CmsPage" } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -17609,53 +17723,57 @@ ] } }, - "/order/state/cancel": { + "/handle-payment": { "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}$" - } - } + "Payment & Shipping" ], + "summary": "Initiate a payment for an order", + "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order.", + "operationId": "handlePaymentMethod", "requestBody": { "required": true, "content": { "application/json": { "schema": { + "required": [ + "orderId" + ], "properties": { "orderId": { - "description": "The identifier of the order to be canceled.", + "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", - "required": [ - "orderId" - ] + "type": "object" } } } }, "responses": { "200": { - "description": "Returns the state of the state machine\n\n example: More information about the state machine can be found in the corresponding guide: [Using the state machine](https://developer.shopware.com/docs/guides/plugins/plugins/checkout/order/using-the-state-machine)", + "description": "Redirect to external payment provider", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/StateMachineState" + "type": "object", + "properties": { + "redirectUrl": { + "type": "string" + } + }, + "required": [ + "redirectUrl" + ] } } } @@ -17663,50 +17781,29 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/order": { + "/account/newsletter-recipient": { "post": { "tags": [ - "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}$" - } - } + "Profile", + "Newsletter", + "Endpoints supporting Criteria" ], + "summary": "Fetch newsletter recipients", + "description": "Perform a filtered search for newsletter recipients.", + "operationId": "readNewsletterRecipient", "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Criteria" - }, - { - "properties": { - "checkPromotion": { - "description": "Check if the payment method of the order is still changeable.", - "type": "boolean" - } - }, - "type": "object" } ] } @@ -17715,11 +17812,11 @@ }, "responses": { "200": { - "description": "An array of orders and an indicator if the payment of the order can be changed.", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OrderRouteResponse" + "$ref": "#/components/schemas/AccountNewsletterRecipient" } } } @@ -17733,55 +17830,109 @@ ] } }, - "/order/payment": { + "/account/change-profile": { "post": { "tags": [ - "Order" - ], - "summary": "Update the payment method of an order", - "description": "Changes the payment method of a specific order. You can use the /order route to find out if the payment method of an order can be changed - take a look at the `paymentChangeable`- array in the response.", - "operationId": "orderSetPayment", - "parameters": [ - { - "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 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": [ - "paymentMethodId", - "orderId" + "firstName", + "lastName" ], "properties": { - "paymentMethodId": { - "description": "The identifier of the paymentMethod to be set", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "salutationId": { + "description": "Id of the salutation for the customer account. Fetch options using `salutation` endpoint.", + "type": "string" }, - "orderId": { - "description": "The identifier of the order.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "title": { + "description": "(Academic) title of the customer", + "type": "string" + }, + "firstName": { + "description": "Customer first name. Value will be reused for shipping and billing address if not provided explicitly.", + "type": "string" + }, + "lastName": { + "description": "Customer last name. Value will be reused for shipping and billing address if not provided explicitly.", + "type": "string" + }, + "birthdayDay": { + "description": "Birthday day", + "type": "integer" + }, + "birthdayMonth": { + "description": "Birthday month", + "type": "integer" + }, + "birthdayYear": { + "description": "Birthday year", + "type": "integer" } }, - "type": "object" + "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": "Successfully updated the payment method of the order.", + "description": "Returns a success response indicating a successful update", "content": { "application/json": { "schema": { @@ -17798,53 +17949,51 @@ } ] } - }, - "/order/download/{orderId}/{downloadId}": { - "get": { - "tags": [ - "Order" - ], - "summary": "Download a purchased file", - "description": "Download a file included in the given order and with the given id. Access must be granted.", - "operationId": "orderDownloadFile", - "parameters": [ - { - "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", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + }, + "/account/change-email": { + "post": { + "tags": [ + "Profile" + ], + "summary": "Change the customer's email address", + "description": "Changes a customer's email address to a new email address, using their current password as a validation.", + "operationId": "changeEmail", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "email", + "emailConfirmation", + "password" + ], + "properties": { + "email": { + "description": "New email address. Has to be unique amongst all customers", + "type": "string" + }, + "emailConfirmation": { + "description": "Confirmation of the new email address.", + "type": "string" + }, + "password": { + "description": "Customer's current password", + "type": "string" + } + }, + "type": "object" + } } } - ], + }, "responses": { "200": { - "description": "An arbitrary binary file.", + "description": "Returns a success response indicating a successful update", "content": { - "application/octet-stream": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -17858,63 +18007,40 @@ ] } }, - "/category": { + "/account/change-language": { "post": { "tags": [ - "Category", - "Endpoints supporting Criteria " - ], - "summary": "Fetch a list of categories", - "description": "Perform a filtered search for categories.", - "operationId": "readCategoryList", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } + "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 categories.", + "description": "Returns a success response indicating a successful update", "content": { "application/json": { "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - } - } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -17922,82 +18048,56 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/category/{navigationId}": { + "/account/change-password": { "post": { "tags": [ - "Category", - "Endpoints supporting Criteria " - ], - "summary": "Fetch a single category", - "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.", - "operationId": "readCategory", - "parameters": [ - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "navigationId", - "in": "path", - "description": "Identifier of the category to be fetched", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "slots", - "in": "query", - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", - "schema": { - "type": "string" - } - } + "Profile" ], + "summary": "Change the customer's password", + "description": "Changes a customer's password using their current password as a validation.", + "operationId": "changePassword", "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "password", + "newPassword", + "newPasswordConfirm" + ], + "properties": { + "password": { + "description": "Current password of the customer", + "type": "string" }, - { - "$ref": "#/components/schemas/ProductListingCriteria" + "newPassword": { + "description": "New Password for the customer", + "type": "string" + }, + "newPasswordConfirm": { + "description": "Confirmation of the new password", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "The loaded category with cms page", + "description": "Returns a success response indicating a successful update.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Category" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -18005,77 +18105,71 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/seo-url": { + "/account/customer-recovery-is-expired": { "post": { "tags": [ - "Sitemap & Routes", - "Endpoints supporting Criteria " - ], - "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}$" - } - } + "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": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "hash" + ], + "properties": { + "hash": { + "description": "Parameter from the link in the confirmation mail sent in Step 1", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "Entity search result containing seo urls.", + "description": "Returns a CustomerRecoveryIsExpiredResponse that indicates if the hash is expired or not.", "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "isExpired": { + "type": "boolean" } - } - }, - "type": "object", - "required": [ - "elements" - ] + }, + "required": [ + "isExpired" + ] + } }, - { - "$ref": "#/components/schemas/EntitySearchResult" + "apiAlias": { + "enum": [ + "array_struct" + ], + "type": "string" } - ] + } } } } - }, - "404": { - "$ref": "#/components/responses/404" } }, "security": [ @@ -18085,290 +18179,165 @@ ] } }, - "/product-export/{accessKey}/{fileName}": { - "get": { + "/account/customer": { + "post": { "tags": [ - "Product" + "Profile", + "Endpoints supporting Criteria " ], - "summary": "Export product export", - "operationId": "readProductExport", - "parameters": [ - { - "name": "accessKey", - "in": "path", - "description": "Access Key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "fileName", - "in": "path", - "description": "File Name", - "required": true, - "schema": { - "type": "string" + "summary": "Get information about current customer", + "description": "Returns information about the current customer.", + "operationId": "readCustomer", + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/NoneFieldsCriteria" + } + ] + } } } - ], + }, "responses": { "200": { - "description": "" + "description": "Returns the logged in customer, also for guest sessions. Check for the value of `guest` field to see whether the customer is a guest.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Customer" + } + } + } } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] - } - }, - "/sitemap": { - "get": { + }, + "delete": { "tags": [ - "Sitemap & Routes" - ], - "summary": "Fetch sitemaps", - "description": "Fetches a list of compressed sitemap files, which are often used by search engines.", - "operationId": "readSitemap", - "parameters": [ - { - "name": "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": "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 a list of available sitemaps.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Sitemap" - } - } - } - } + "204": { + "description": "Returns a no content response indicating a successful removal of the customer profile" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/sitemap/{filePath}": { - "get": { + "/account/address/{addressId}": { + "delete": { "tags": [ - "Sitemap & Routes" + "Address" ], - "summary": "Download sitemap file", - "description": "Downloads the sitemap file from the configured sitemap storage.", - "operationId": "getSitemapFile", + "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": "filePath", + "name": "addressId", "in": "path", - "description": "The path to the sitemap file", + "description": "ID of the address to be deleted.", "required": true, "schema": { - "type": "string", - "pattern": ".*\\.(xml|gz)$" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } } ], "responses": { - "200": { - "description": "Returns the blob to download.", - "content": { - "application/xml": { - "schema": { - "type": "string", - "format": "binary" - } - }, - "application/gzip": { - "schema": { - "type": "string", - "format": "binary" - } - } - } + "204": { + "description": "No Content response, when the address has been deleted" + }, + "400": { + "description": "Response containing a list of errors, most likely due to the address being in use" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] - } - }, - "/contact-form": { - "post": { + }, + "patch": { "tags": [ - "Content" + "Address" ], - "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": "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" } } ], "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" + "$ref": "#/components/schemas/CustomerAddressBody" + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/CustomerAddress" + }, + { + "$ref": "#/components/schemas/CustomerAddressRead" + } + ] + } } } } }, - "responses": { - "200": { - "description": "Message sent successful." - } - }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/_info/openapi3.json": { - "get": { - "tags": [ - "System Info & Health Check" - ], - "summary": "Get OpenAPI Specification", - "description": "Get information about the store API in OpenAPI format.", - "operationId": "api-info", - "parameters": [ - { - "name": "type", - "in": "query", - "description": "Type of the api", - "schema": { - "type": "string", - "enum": [ - "jsonapi", - "json" - ] - } - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/OpenApi3" - } - } - } - }, - "/salutation": { + "/account/list-address": { "post": { "tags": [ - "System & Context", + "Address", "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": "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": { @@ -18385,21 +18354,24 @@ }, "responses": { "200": { - "description": "Entity search result containing salutations.", + "description": "", "content": { "application/json": { "schema": { "allOf": [ { + "type": "object", + "required": [ + "elements" + ], "properties": { "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Salutation" + "$ref": "#/components/schemas/CustomerAddress" } } - }, - "type": "object" + } }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -18412,76 +18384,57 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/cms/{id}": { + "/account/login": { "post": { "tags": [ - "Content" - ], - "summary": "Fetch and resolve a CMS page", - "description": "Loads a content management page by its identifier and resolve the slot data. This could be media files, product listing and so on.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.", - "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", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } + "Login & Registration" ], + "summary": "Log in a customer", + "description": "Logs in customers given their credentials.", + "operationId": "loginCustomer", "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "slots": { - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", - "type": "string" - } - }, - "type": "object" + "required": [ + "username", + "password" + ], + "properties": { + "username": { + "description": "Email", + "type": "string" }, - { - "$ref": "#/components/schemas/ProductListingCriteria" + "password": { + "description": "Password", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "The loaded cms page", + "$ref": "#/components/responses/ContextTokenResponse" + }, + "401": { + "description": "If credentials are incorrect an error is returned", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CmsPage" + "$ref": "#/components/schemas/failure" } } } - }, - "404": { - "$ref": "#/components/responses/404" } }, "security": [ @@ -18491,97 +18444,130 @@ ] } }, - "/script/{hook}": { - "get": { + "/account/login/imitate-customer": { + "post": { "tags": [ - "API", - "Script", - "App" + "Login & Registration" ], - "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": "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": { - "description": "Returns different structures of results based on the called script.", + "$ref": "#/components/responses/ContextTokenResponse" + }, + "400": { + "description": "If the token is incorrect an error is returned", "content": { "application/json": { "schema": { - "type": "object", - "additionalProperties": true, - "nullable": true - } - }, - "application/vnd.api+json": { - "schema": { - "type": "object", - "additionalProperties": true, - "nullable": true + "$ref": "#/components/schemas/failure" } } } - }, - "204": { - "description": "No data by default" } }, - "security": [ - { - "ApiKey": [] - } - ] - }, - "post": { - "tags": [ - "API", - "Script", - "App" - ], - "summary": "Access point for different api logics which are provided by apps over script hooks", - "operationId": "postScriptStoreApiRoute", - "parameters": [ - { - "name": "hook", - "in": "path", - "description": "Dynamic hook which used to build the hook name", - "required": true, - "schema": { - "type": "string" - } - } - ], + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/account/logout": { + "post": { + "tags": [ + "Login & Registration" + ], + "summary": "Log out a customer", + "description": "Logs out a customer.", + "operationId": "logoutCustomer", + "responses": { + "200": { + "$ref": "#/components/responses/ContextTokenResponse" + }, + "403": { + "$ref": "#/components/responses/403" + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/account/register-confirm": { + "post": { + "tags": [ + "Login & Registration" + ], + "summary": "Confirm a customer registration", + "description": "Confirms a customer registration when double opt-in is activated.\n\nLearn more about double opt-in registration in our guide \"Register a customer\".", + "operationId": "registerConfirm", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "hash", + "em" + ], + "properties": { + "hash": { + "description": "Hash from the email received", + "type": "string" + }, + "em": { + "description": "Email hash from the email received", + "type": "string" + } + }, + "type": "object" + } + } + } + }, "responses": { "200": { - "description": "Returns different structures of results based on the called script.", - "content": { - "application/json": { - "schema": { - "type": "object", - "additionalProperties": true, - "nullable": true - } - }, - "application/vnd.api+json": { - "schema": { - "type": "object", - "additionalProperties": true, - "nullable": true - } - } - } + "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." }, - "204": { - "description": "No data by default" + "404": { + "description": "No hash provided" + }, + "412": { + "description": "The customer has already been confirmed" } }, "security": [ @@ -18591,21 +18577,153 @@ ] } }, - "/context": { - "get": { + "/account/register": { + "post": { "tags": [ - "System & Context" + "Login & Registration" ], - "summary": "Fetch the current context", - "description": "Fetches the current context. This includes for example the `customerGroup`, `currency`, `taxRules` and many more.", - "operationId": "readContext", + "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", + "firstName", + "lastName", + "acceptedDataProtection", + "storefrontUrl", + "billingAddress" + ], + "oneOf": [ + { + "properties": { + "accountType": { + "description": "Type of the customer account. Default value is 'private'.", + "type": "string", + "enum": [ + "private" + ], + "default": "private" + }, + "company": { + "type": "null" + }, + "vatIds": { + "type": "null" + } + } + }, + { + "required": [ + "accountType", + "company", + "vatIds" + ], + "properties": { + "accountType": { + "description": "Type of the customer account. Can be `private` or `business`.", + "type": "string", + "enum": [ + "business" + ] + }, + "company": { + "description": "Company of the customer. Only required when `accountType` is `business`.", + "type": "string" + }, + "vatIds": { + "description": "VAT IDs of the customer's company. Only valid when `accountType` is `business`.", + "type": "array", + "items": { + "type": "string" + }, + "minItems": 1 + } + } + } + ], + "type": "object" + } + } + } + }, "responses": { "200": { - "description": "Returns the current context.", + "description": "Success", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SalesChannelContext" + "$ref": "#/components/schemas/Customer" } } } @@ -18616,59 +18734,38 @@ "ApiKey": [] } ] - }, - "patch": { + } + }, + "/account/recovery-password-confirm": { + "post": { "tags": [ - "System & Context" + "Profile" ], - "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", + "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": { - "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}$" + "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" }, - "countryId": { - "description": "Country", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "newPassword": { + "description": "New password for the customer", + "type": "string" }, - "countryStateId": { - "description": "Country State", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "newPasswordConfirm": { + "description": "Confirmation of the new password", + "type": "string" } }, "type": "object" @@ -18678,7 +18775,14 @@ }, "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" + "description": "Returns a success response indicating a successful update.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } } }, "security": [ @@ -18688,52 +18792,48 @@ ] } }, - "/media": { + "/account/recovery-password": { "post": { "tags": [ - "Content" + "Profile" ], - "summary": "Fetch and resolve Media Entities", - "description": "Fetch one or multiple Media Entities with the corresponding Identifier.", - "operationId": "readMedia", + "summary": "Send a password recovery mail", + "description": "This operation is Step 1 of the password reset flow. Make sure to implement Step 2 \"Reset password with recovery credentials\" in order to allow for the complete flow in your application. Sends a recovery mail containing a link with credentials that allows a customer to reset their password.", + "operationId": "sendRecoveryMail", "requestBody": { + "required": true, "content": { "application/json": { "schema": { + "required": [ + "email", + "storefrontUrl" + ], "properties": { - "ids": { - "description": "Identifier (UUID) of the media entity to be fetched.", - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "email": { + "description": "E-Mail address to identify the customer", + "type": "string" + }, + "storefrontUrl": { + "description": "URL of the storefront to use for the generated reset link. It has to be a domain that is configured in the sales channel domain settings.", + "type": "string" } }, - "type": "object", - "required": [ - "ids" - ] + "type": "object" } } } }, "responses": { "200": { - "description": "The loaded MediaCollection containing the requested Media Entities.", + "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": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Media" - } + "$ref": "#/components/schemas/SuccessResponse" } } } - }, - "404": { - "$ref": "#/components/responses/404" } }, "security": [ @@ -18743,45 +18843,83 @@ ] } }, - "/payment-method": { - "post": { + "/account/address/default-shipping/{addressId}": { + "patch": { "tags": [ - "Payment Method", - "Endpoints supporting Criteria " + "Address" ], - "summary": "Loads all available payment methods", - "operationId": "readPaymentMethod", + "summary": "Change a customer's default shipping address", + "description": "Updates the default (preselected) shipping addresses of a customer.", + "operationId": "defaultShippingAddress", "parameters": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "name": "addressId", + "in": "path", + "description": "Address ID", + "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "" + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/account/address/default-billing/{addressId}": { + "patch": { + "tags": [ + "Address" + ], + "summary": "Change a customer's default billing address", + "description": "Updates the default (preselected) billing addresses of a customer.", + "operationId": "defaultBillingAddress", + "parameters": [ + { + "name": "addressId", + "in": "path", + "description": "Address ID", + "required": true, + "schema": { + "type": "string" } } ], + "responses": { + "200": { + "description": "" + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/account/address": { + "post": { + "tags": [ + "Address" + ], + "summary": "Create a new address for a customer", + "description": "Creates a new address for a customer.", + "operationId": "createCustomerAddress", "requestBody": { - "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - }, - { - "properties": { - "onlyAvailable": { - "description": "List only available", - "type": "boolean" - } - }, - "type": "object" - } - ] + "$ref": "#/components/schemas/CustomerAddressBody" } } } @@ -18792,23 +18930,14 @@ "content": { "application/json": { "schema": { - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" + "allOf": [ + { + "$ref": "#/components/schemas/CustomerAddress" }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PaymentMethod" - } + { + "$ref": "#/components/schemas/CustomerAddressRead" } - }, - "type": "object" + ] } } } @@ -18816,90 +18945,39 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/landing-page/{landingPageId}": { - "post": { + "/_info/openapi3.json": { + "get": { "tags": [ - "Content", - "Endpoints supporting Criteria " + "System Info & Health Check" ], - "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", + "summary": "Get OpenAPI Specification", + "description": "Get information about the store API in OpenAPI format.", + "operationId": "api-info", "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, + "name": "type", + "in": "query", + "description": "Type of the api", "schema": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - }, - { - "allOf": [ - { - "properties": { - "slots": { - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/ProductListingCriteria" - } - ] - } - ] - } + "enum": [ + "jsonapi", + "json" + ] } } - }, + ], "responses": { "200": { - "description": "The loaded landing page with cms page", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/LandingPage" - } - } - } - }, - "404": { - "$ref": "#/components/responses/404" - } - }, - "security": [ - { - "ApiKey": [] + "$ref": "#/components/responses/OpenApi3" } - ] + } } }, "/checkout/cart": { @@ -19323,44 +19401,221 @@ ] } }, - "/breadcrumb/{id}": { - "get": { + "/currency": { + "post": { "tags": [ - "Experimental", - "Breadcrumb" + "System & Context", + "Endpoints supporting Criteria " ], - "summary": "Fetch a breadcrumb", - "description": "Perform search to get category or product breadcrumb. \n\nExperimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", - "operationId": "readBreadcrumb", + "summary": "Fetch currencies", + "description": "Perform a filtered search for currencies.", + "operationId": "readCurrency", "parameters": [ { - "name": "id", + "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/NoneFieldsCriteria" + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Entity search result containing currencies.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Currency" + } + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/customer/wishlist/add/{productId}": { + "post": { + "tags": [ + "Wishlist" + ], + "summary": "Add a product to a wishlist", + "description": "Adds a product to a customers wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "addProductOnWishlist", + "parameters": [ + { + "name": "productId", "in": "path", - "description": "UUID for product or category", + "description": "Identifier of the product to be added.", "required": true, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } - }, + } + ], + "responses": { + "200": { + "description": "Returns a success response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } + } + }, + "security": [ { - "name": "type", - "in": "query", - "description": "Type: category or product (optional - default: product)", + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/customer/wishlist": { + "post": { + "tags": [ + "Wishlist", + "Endpoints supporting Criteria " + ], + "summary": "Fetch a wishlist", + "description": "Fetch a customer's wishlist. Products on the wishlist can be filtered using a criteria object.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "readCustomerWishlist", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", "required": false, "schema": { "type": "string", - "enum": [ - "product", - "category" - ] + "pattern": "^[0-9a-f]{32}$" } - }, + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/WishlistLoadRouteResponse" + } + } + } + } + }, + "security": [ { - "name": "referrerCategoryId", - "in": "query", - "description": "UUID for referrer category only used for product breadcrumb", - "required": false, + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/customer/wishlist/merge": { + "post": { + "tags": [ + "Wishlist" + ], + "summary": "Create a wishlist for a customer", + "description": "Create a new wishlist for a logged in customer or extend the existing wishlist given a set of products.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * A customer can only have a single wishlist.\n * The wishlist feature has to be activated.", + "operationId": "mergeProductOnWishlist", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "productIds": { + "description": "List product id", + "type": "array", + "items": { + "description": "product id", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Returns a success response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/customer/wishlist/delete/{productId}": { + "delete": { + "tags": [ + "Wishlist" + ], + "summary": "Remove a product from a wishlist", + "description": "Removes a product from a customer's wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "deleteProductOnWishlist", + "parameters": [ + { + "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}$" @@ -19369,17 +19624,122 @@ ], "responses": { "200": { - "description": "Search result containing SeoUrl\\'s to be used as breadcrumb.", + "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": [] + } + ] + } + }, + "/context": { + "get": { + "tags": [ + "System & Context" + ], + "summary": "Fetch the current context", + "description": "Fetches the current context. This includes for example the `customerGroup`, `currency`, `taxRules` and many more.", + "operationId": "readContext", + "responses": { + "200": { + "description": "Returns the current context.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BreadcrumbCollection" + "$ref": "#/components/schemas/SalesChannelContext" } } } - }, - "400": { - "$ref": "#/components/responses/400" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + }, + "patch": { + "tags": [ + "System & Context" + ], + "summary": "Modify the current context", + "description": "Used for switching the context. A typical example would be changing the language or changing the currency.", + "operationId": "updateContext", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "currencyId": { + "description": "Currency", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "languageId": { + "description": "Language", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "billingAddressId": { + "description": "Billing Address", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingAddressId": { + "description": "Shipping Address", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "paymentMethodId": { + "description": "Payment Method", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingMethodId": { + "description": "Shipping Method", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryId": { + "description": "Country", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryStateId": { + "description": "Country State", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "$ref": "#/components/responses/ContextTokenResponse" } }, "security": [ @@ -19389,25 +19749,16 @@ ] } }, - "/country-state/{countryId}": { + "/salutation": { "post": { "tags": [ "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch the states of a country", - "description": "Perform a filtered search the states for a country", - "operationId": "readCountryState", + "summary": "Fetch salutations", + "description": "Fetches salutations with a criteria obj.", + "operationId": "readSalutation", "parameters": [ - { - "name": "countryId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, { "name": "sw-language-id", "in": "header", @@ -19435,7 +19786,7 @@ }, "responses": { "200": { - "description": "Entity search result containing countries.", + "description": "Entity search result containing salutations.", "content": { "application/json": { "schema": { @@ -19445,7 +19796,7 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/CountryState" + "$ref": "#/components/schemas/Salutation" } } }, @@ -19467,22 +19818,22 @@ ] } }, - "/product/{productId}/cross-selling": { + "/search-suggest": { "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", + "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": "productId", - "in": "path", - "description": "Product ID", - "required": true, + "name": "p", + "in": "query", + "description": "The page number to fetch.", + "required": false, "schema": { - "type": "string" + "type": "integer" } }, { @@ -19496,13 +19847,42 @@ } } ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "required": [ + "search" + ], + "properties": { + "search": { + "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/ProductListingCriteria" + }, + { + "$ref": "#/components/schemas/ProductListingFlags" + } + ] + } + } + } + }, "responses": { "200": { - "description": "Found cross sellings", + "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/CrossSellingElementCollection" + "$ref": "#/components/schemas/ProductListingResult" } } } @@ -19515,23 +19895,66 @@ ] } }, - "/product/{productId}": { - "post": { + "/_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-group-registration/config/{customerGroupId}": { + "get": { "tags": [ - "Product" + "Login & Registration" ], - "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", + "summary": "Fetch registration settings for customer group", + "operationId": "getCustomerGroupRegistrationInfo", "parameters": [ { - "name": "productId", + "name": "customerGroupId", "in": "path", - "description": "Product ID", + "description": "Customer group id", "required": true, "schema": { "type": "string", - "pattern": "^[0-9a-f]{32}$'" + "pattern": "^[0-9a-f]{32}$" } }, { @@ -19543,38 +19966,15 @@ "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" - } - ] - } - } } - }, + ], "responses": { "200": { - "description": "Product information along with variant groups and options", + "description": "Returns the customer group including registration settings.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductDetailResponse" + "$ref": "#/components/schemas/CustomerGroup" } } } @@ -19587,16 +19987,25 @@ ] } }, - "/product": { + "/country-state/{countryId}": { "post": { "tags": [ - "Product", + "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch a list of products", - "description": "List products that match the given criteria. For performance reasons a limit should always be set.", - "operationId": "readProduct", + "summary": "Fetch the states of a country", + "description": "Perform a filtered search the states for a country", + "operationId": "readCountryState", "parameters": [ + { + "name": "countryId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, { "name": "sw-language-id", "in": "header", @@ -19624,7 +20033,7 @@ }, "responses": { "200": { - "description": "Entity search result containing products", + "description": "Entity search result containing countries.", "content": { "application/json": { "schema": { @@ -19634,7 +20043,7 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Product" + "$ref": "#/components/schemas/CountryState" } } }, @@ -19656,25 +20065,16 @@ ] } }, - "/product/{productId}/reviews": { + "/shipping-method": { "post": { "tags": [ - "Product", + "Payment & Shipping", "Endpoints supporting Criteria " ], - "summary": "Fetch product reviews", - "description": "Perform a filtered search for product reviews.", - "operationId": "readProductReviews", + "summary": "Fetch shipping methods", + "description": "Perform a filtered search for shipping methods.", + "operationId": "readShippingMethod", "parameters": [ - { - "name": "productId", - "in": "path", - "description": "Identifier of the product.", - "required": true, - "schema": { - "type": "string" - } - }, { "name": "sw-language-id", "in": "header", @@ -19702,17 +20102,28 @@ }, "responses": { "200": { - "description": "Entity search result containing product reviews", + "description": "", "content": { "application/json": { "schema": { "allOf": [ { + "required": [ + "elements" + ], "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/ProductReview" + "$ref": "#/components/schemas/ShippingMethod" } } }, @@ -19734,25 +20145,54 @@ ] } }, - "/product/{productId}/review": { - "post": { + "/product-export/{accessKey}/{fileName}": { + "get": { "tags": [ "Product" ], - "summary": "Save a product review", - "description": "Saves a review for a product. Reviews have to be activated in the settings.", - "operationId": "saveProductReview", + "summary": "Export product export", + "operationId": "readProductExport", "parameters": [ { - "name": "productId", + "name": "accessKey", "in": "path", - "description": "Identifier of the product which is reviewed.", + "description": "Access Key", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } }, + { + "name": "fileName", + "in": "path", + "description": "File Name", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/sitemap": { + "get": { + "tags": [ + "Sitemap & Routes" + ], + "summary": "Fetch sitemaps", + "description": "Fetches a list of compressed sitemap files, which are often used by search engines.", + "operationId": "readSitemap", + "parameters": [ { "name": "sw-language-id", "in": "header", @@ -19764,72 +20204,45 @@ } } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "required": [ - "title", - "content", - "points" - ], - "properties": { - "name": { - "description": "The name of the review author. If not set, the first name of the customer is chosen.", - "type": "string" - }, - "email": { - "description": "The email address of the review author. If not set, the email of the customer is chosen.", - "type": "string" - }, - "title": { - "description": "The title of the review.", - "type": "string" - }, - "content": { - "description": "The content of review.", - "type": "string" - }, - "points": { - "description": "The review rating for the product.", - "type": "number", - "format": "double" + "responses": { + "200": { + "description": "Returns a list of available sitemaps.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Sitemap" } - }, - "type": "object" + } } } } }, - "responses": { - "200": { - "description": "Success response indicating the review was saved successfully." - } - }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/product/{productId}/find-variant": { - "post": { + "/sitemap/{filePath}": { + "get": { "tags": [ - "Product" + "Sitemap & Routes" ], - "summary": "Search for a matching variant by product options.", - "description": "Performs a search for product variants and returns the best matching variant.", - "operationId": "searchProductVariantIds", + "summary": "Download sitemap file", + "description": "Downloads the sitemap file from the configured sitemap storage.", + "operationId": "getSitemapFile", "parameters": [ { - "name": "productId", + "name": "filePath", "in": "path", - "description": "Product ID", + "description": "The path to the sitemap file", "required": true, "schema": { - "type": "string" + "type": "string", + "pattern": ".*\\.(xml|gz)$" } }, { @@ -19843,41 +20256,141 @@ } } ], + "responses": { + "200": { + "description": "Returns the blob to download.", + "content": { + "application/xml": { + "schema": { + "type": "string", + "format": "binary" + } + }, + "application/gzip": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/media": { + "post": { + "tags": [ + "Content" + ], + "summary": "Fetch and resolve Media Entities", + "description": "Fetch one or multiple Media Entities with the corresponding Identifier.", + "operationId": "readMedia", "requestBody": { "content": { "application/json": { "schema": { - "required": [ - "options" - ], "properties": { - "options": { - "description": "The options parameter for the variant to find.", + "ids": { + "description": "Identifier (UUID) of the media entity to be fetched.", "type": "array", "items": { - "type": "string" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } - }, - "switchedGroup": { - "description": "The id of the option group that has been switched.", - "type": "string" } }, - "type": "object" + "type": "object", + "required": [ + "ids" + ] + } + } + } + }, + "responses": { + "200": { + "description": "The loaded MediaCollection containing the requested Media Entities.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Media" + } + } } } + }, + "404": { + "$ref": "#/components/responses/404" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/script/{hook}": { + "get": { + "tags": [ + "API", + "Script", + "App" + ], + "summary": "Access point for different api logics which are provided by apps over script hooks", + "operationId": "getScriptStoreApiRoute", + "parameters": [ + { + "name": "hook", + "in": "path", + "description": "Dynamic hook which used to build the hook name", + "required": true, + "schema": { + "type": "string" + } } - }, + ], "responses": { "200": { - "description": "Returns an FoundCombination struct containing the ids matching the search.", + "description": "Returns different structures of results based on the called script.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/FindProductVariantRouteResponse" + "oneOf": [ + { + "type": "object", + "additionalProperties": true + }, + { + "type": "null" + } + ] + } + }, + "application/vnd.api+json": { + "schema": { + "oneOf": [ + { + "type": "object", + "additionalProperties": true + }, + { + "type": "null" + } + ] } } } + }, + "204": { + "description": "No data by default" } }, "security": [ @@ -19885,81 +20398,60 @@ "ApiKey": [] } ] - } - }, - "/product-listing/{categoryId}": { + }, "post": { "tags": [ - "Product" + "API", + "Script", + "App" ], - "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": "Access point for different api logics which are provided by apps over script hooks", + "operationId": "postScriptStoreApiRoute", "parameters": [ { - "name": "categoryId", + "name": "hook", "in": "path", - "description": "Identifier of a category.", + "description": "Dynamic hook which used to build the hook name", "required": true, "schema": { "type": "string" } - }, - { - "name": "p", - "in": "query", - "description": "The page number to fetch.", - "required": false, - "schema": { - "type": "integer" - } - }, - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Determines if the response must contain a SeoUrl entity for a product entity", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } } ], - "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.", + "description": "Returns different structures of results based on the called script.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "oneOf": [ + { + "type": "object", + "additionalProperties": true + }, + { + "type": "null" + } + ] + } + }, + "application/vnd.api+json": { + "schema": { + "oneOf": [ + { + "type": "object", + "additionalProperties": true + }, + { + "type": "null" + } + ] } } } + }, + "204": { + "description": "No data by default" } }, "security": [ @@ -19969,15 +20461,15 @@ ] } }, - "/country": { + "/seo-url": { "post": { "tags": [ - "System & Context", + "Sitemap & Routes", "Endpoints supporting Criteria " ], - "summary": "Fetch countries", - "description": "Perform a filtered search for countries", - "operationId": "readCountry", + "summary": "Fetch SEO routes", + "description": "Perform a filtered search for seo urls.", + "operationId": "readSeoUrl", "parameters": [ { "name": "sw-language-id", @@ -20006,7 +20498,7 @@ }, "responses": { "200": { - "description": "Entity search result containing countries.", + "description": "Entity search result containing seo urls.", "content": { "application/json": { "schema": { @@ -20016,11 +20508,14 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Country" + "$ref": "#/components/schemas/SeoUrl" } } }, - "type": "object" + "type": "object", + "required": [ + "elements" + ] }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -20029,6 +20524,9 @@ } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -20037,113 +20535,6 @@ } ] } - }, - "/handle-payment": { - "post": { - "tags": [ - "Payment & Shipping" - ], - "summary": "Initiate a payment for an order", - "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order.", - "operationId": "handlePaymentMethod", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "orderId" - ], - "properties": { - "orderId": { - "description": "Identifier of an order", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "finishUrl": { - "description": "URL to which the client should be redirected after successful payment", - "type": "string" - }, - "errorUrl": { - "description": "URL to which the client should be redirected after erroneous payment", - "type": "string" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Redirect to external payment provider", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "type": "string" - } - }, - "required": [ - "redirectUrl" - ] - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/_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" - } - } - } - } - } - } - } - } - } - } - } } }, "tags": [ From ca1234304387be4d05c4c966416ca03ad50ce13a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 2 Jul 2025 09:14:09 +0200 Subject: [PATCH 29/35] [create-pull-request] automated change (#336) Co-authored-by: shopwareBot --- storeapi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/storeapi.json b/storeapi.json index c0060c6..752941f 100644 --- a/storeapi.json +++ b/storeapi.json @@ -7,7 +7,7 @@ "name": "MIT", "url": "https://github.com/shopware/shopware/blob/trunk/LICENSE" }, - "version": "6.7.0.0" + "version": "6.7.0.1" }, "servers": [ { From 522d7afce3b6fbc6b144c72d4254f236b01d352c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 20 Aug 2025 16:45:00 +0200 Subject: [PATCH 30/35] [create-pull-request] automated change (#341) Co-authored-by: shopwareBot --- storeapi.json | 8749 ++++++++++++++++++++++++++----------------------- 1 file changed, 4645 insertions(+), 4104 deletions(-) diff --git a/storeapi.json b/storeapi.json index 752941f..dce1f00 100644 --- a/storeapi.json +++ b/storeapi.json @@ -7,7 +7,7 @@ "name": "MIT", "url": "https://github.com/shopware/shopware/blob/trunk/LICENSE" }, - "version": "6.7.0.1" + "version": "6.7.1.2" }, "servers": [ { @@ -779,6 +779,10 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "seoUrl": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "string" + }, "createdAt": { "type": "string", "format": "date-time", @@ -1143,6 +1147,10 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" }, + "seoUrl": { + "description": "Runtime field, cannot be used as part of the criteria.", + "type": "string" + }, "createdAt": { "type": "string", "format": "date-time", @@ -2964,6 +2972,12 @@ "type": "string", "format": "date-time", "readOnly": true + }, + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CustomerWishlistProduct" + } } }, "type": "object" @@ -4311,6 +4325,98 @@ }, "type": "object" }, + "MeasurementDisplayUnit": { + "description": "Added since version: 6.7.1.0", + "required": [ + "id", + "measurementSystemId", + "default", + "type", + "shortName", + "factor", + "precision" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "measurementSystemId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "default": { + "type": "boolean" + }, + "type": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "factor": { + "type": "number", + "format": "float" + }, + "precision": { + "type": "integer", + "format": "int64" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + }, + "measurementSystem": { + "$ref": "#/components/schemas/MeasurementSystem" + } + }, + "type": "object" + }, + "MeasurementSystem": { + "description": "Added since version: 6.7.1.0", + "required": [ + "id", + "technicalName" + ], + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "technicalName": { + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "readOnly": true + }, + "translated": { + "type": "object" + }, + "units": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MeasurementDisplayUnit" + } + } + }, + "type": "object" + }, "Media": { "description": "Added since version: 6.0.0.0", "required": [ @@ -4335,7 +4441,6 @@ }, "fileExtension": { "type": "string", - "readOnly": true, "description": "Type of file indication. For example: jpeg, png." }, "uploadedAt": { @@ -4828,6 +4933,22 @@ "pattern": "^[0-9a-f]{32}$", "description": "Unique identity of the billing address version." }, + "primaryOrderDeliveryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "primaryOrderDeliveryVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "primaryOrderTransactionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "primaryOrderTransactionVersionId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "currencyId": { "type": "string", "pattern": "^[0-9a-f]{32}$", @@ -5045,6 +5166,12 @@ "stateMachineState": { "$ref": "#/components/schemas/StateMachineState" }, + "primaryOrderDelivery": { + "$ref": "#/components/schemas/OrderDelivery" + }, + "primaryOrderTransaction": { + "$ref": "#/components/schemas/OrderTransaction" + }, "orderCustomer": { "$ref": "#/components/schemas/OrderCustomer" }, @@ -7148,6 +7275,9 @@ "sortedProperties": { "type": "object" }, + "measurements": { + "type": "object" + }, "createdAt": { "type": "string", "format": "date-time", @@ -8273,6 +8403,10 @@ "sortedProperties": { "type": "object" }, + "measurements": { + "type": "object", + "$ref": "#/components/schemas/ProductMeasurements" + }, "createdAt": { "type": "string", "format": "date-time", @@ -8850,7 +8984,6 @@ "ProductReview": { "description": "Added since version: 6.0.0.0", "required": [ - "points", "id", "productId", "salesChannelId", @@ -8884,6 +9017,9 @@ "pattern": "^[0-9a-f]{32}$", "description": "Unique identity of the language." }, + "externalUser": { + "type": "string" + }, "title": { "type": "string", "description": "Title of product review." @@ -8918,12 +9054,6 @@ "type": "string", "format": "date-time", "readOnly": true - }, - "customerId": { - "type": "string" - }, - "externalUser": { - "type": "string" } }, "type": "object" @@ -9550,6 +9680,9 @@ "pattern": "^[0-9a-f]{32}$", "description": "Unique identity of hreflangDefaultDomain." }, + "measurementUnits": { + "$ref": "#/components/schemas/MeasurementUnits" + }, "name": { "type": "string", "description": "Name of the sales channel." @@ -9692,6 +9825,9 @@ "pattern": "^[0-9a-f]{32}$", "description": "Unique identity of snippet set." }, + "measurementUnits": { + "$ref": "#/components/schemas/MeasurementUnits" + }, "hreflangUseOnlyLocale": { "type": "boolean", "description": "This is used to toggle the language configurations, say between DE and DE-DE for instance." @@ -11195,1674 +11331,1247 @@ }, "type": "object" }, - "ReferencePrice": { + "CartDeliveryInformation": { "type": "object", "properties": { - "purchaseUnit": { - "type": "number" - }, - "referenceUnit": { - "type": "number" - }, - "unitName": { - "type": "string" - }, - "price": { - "type": "number" - }, "apiAlias": { "type": "string", "enum": [ - "cart_price_reference" + "cart_delivery_information" ] }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/ListPrice" - }, - { - "type": "null" - } - ] + "freeDelivery": { + "type": "boolean" }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } + "deliveryTime": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - { - "type": "null" + "min": { + "type": "integer" + }, + "max": { + "type": "integer" + }, + "unit": { + "type": "string" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_time" + ] } - ] + } }, - "hasRange": { - "type": "boolean" + "height": { + "type": "integer" }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } - ] + "length": { + "type": "integer" + }, + "restockTime": { + "type": "integer" + }, + "stock": { + "type": "integer" + }, + "weight": { + "type": "integer" + }, + "width": { + "type": "integer" } }, "required": [ - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" + "apiAlias" ] }, - "OrderRouteResponse": { + "CartItems": { "type": "object", + "required": [ + "items" + ], "properties": { - "orders": { - "type": "object", - "allOf": [ - { - "type": "object", - "required": [ - "elements" - ], - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order" - } - } - } + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + }, + "properties": { + "id": { + "description": "Unique identity of cart item." }, - { - "$ref": "#/components/schemas/EntitySearchResult" + "modified": { + "description": "When boolean value is `true`, the cart is said to be modified." } - ] - }, - "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" - ] + } }, - "ProductListingCriteria": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - }, - { - "type": "object", - "description": "Additional search parameters for product listings", - "properties": { - "order": { - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "type": "string" - }, - "limit": { - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "type": "integer", - "minimum": 0 - }, - "p": { - "description": "Search result page", - "type": "integer", - "default": 1 - }, - "manufacturer": { - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", - "type": "string" - }, - "min-price": { - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 - }, - "max-price": { - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 - }, - "rating": { - "description": "Filter products with a minimum average rating.", - "type": "integer" - }, - "shipping-free": { - "description": "Filters products that are marked as shipping-free.", - "type": "boolean", - "default": false - }, - "properties": { - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", - "type": "string" - }, - "manufacturer-filter": { - "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "price-filter": { - "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "rating-filter": { - "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "shipping-free-filter": { - "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "property-filter": { - "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "property-whitelist": { - "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", - "type": "string" - }, - "reduce-aggregations": { - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - } - } - ], + "AccountNewsletterRecipient": { + "type": "object", "properties": { - "filter": { - "properties": { - "type": { - "description": "To filter the results and aggregations with filter types like ==, >=, etc." - }, - "field": { - "description": "To filter the results and aggregations by field like an property identifier." - }, - "value": { - "description": "To filter the results and aggregations by value." - } - } - }, - "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." - } - } + "status": { + "type": "string", + "enum": [ + "undefined", + "notSet", + "direct", + "optIn", + "optOut" + ] }, - "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." - } - } + "apiAlias": { + "type": "string", + "enum": [ + "account_newsletter_recipient" + ] } - } + }, + "required": [ + "status", + "apiAlias" + ] }, - "WishlistLoadRouteResponse": { + "AggregationEntity": { + "title": "AggregationEntity", "type": "object", - "required": [ - "products" - ], "properties": { - "wishlist": { - "type": "object", - "properties": { - "customerId": { - "type": "string", - "description": "Unique identity of the customer." - }, - "salesChannelId": { - "type": "string", - "description": "Unique identity of the sales channel." - } - } + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "products": { - "$ref": "#/components/schemas/ProductListingResult" + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "entity" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "definition": { + "description": "The entity definition e.g \"product_manufacturer\".", + "type": "string" } - } + }, + "required": [ + "name", + "type", + "field", + "definition" + ] }, - "EntitySearchResult": { + "AggregationFilter": { + "title": "AggregationFilter", "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": [ + "filter" + ] }, - "aggregations": { + "filter": { "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", "items": { - "type": "object" + "$ref": "#/components/schemas/Filters" } - }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." - }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." } - } + }, + "required": [ + "name", + "type", + "filter" + ] }, - "Criteria": { + "AggregationTerms": { + "title": "AggregationTerms", "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": [ + "terms" + ] }, - "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." - } - } + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "ids": { + "limit": { + "description": "The number of terms to return", + "type": "number" + }, + "sort": { "type": "array", - "description": "List of ids to search for", + "description": "Sorting the aggregation result.", "items": { - "type": "string" + "$ref": "#/components/schemas/Sort" } + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "AggregationHistogram": { + "title": "AggregationHistogram", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "query": { + "type": { + "description": "The type of aggregation", "type": "string", - "description": "The query string to search for" + "enum": [ + "histogram" + ] }, - "associations": { - "$ref": "#/components/schemas/Associations" + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "post-filter": { + "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", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", "items": { + "type": "object", "anyOf": [ { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" + "type": "object", + "title": "From and to", + "properties": { + "from": { + "type": "number", + "description": "The lower bound of the range" + }, + "to": { + "type": "number", + "description": "The upper bound of the range" + } + }, + "required": [ + "from", + "to" + ] }, { - "$ref": "#/components/schemas/MultiNotFilter" + "type": "object", + "title": "From only", + "properties": { + "from": { + "type": "string", + "description": "The lower bound of the range" + } + }, + "required": [ + "from" + ] }, { - "$ref": "#/components/schemas/RangeFilter" + "type": "object", + "title": "To only", + "properties": { + "to": { + "type": "string", + "description": "The upper bound of the range" + } + }, + "required": [ + "to" + ] } ] - }, + } + } + }, + "required": [ + "name", + "type", + "field", + "ranges" + ] + }, + "Association": { + "additionalProperties": { + "$ref": "#/components/schemas/Association" + } + }, + "CartDelivery": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { + "type": "object", "properties": { - "type": { - "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." - }, - "field": { - "description": "To filter only the results but not the aggregations by field like an property identifier." + "earliest": { + "type": "string", + "format": "date-time" }, - "value": { - "description": "To filter only the results but not the aggregations by value." + "latest": { + "type": "string", + "format": "date-time" } } }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" - }, + "location": { + "type": "object", "properties": { - "field": { - "description": "Sort the search results by field like an property identifier." + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] }, - "order": { - "description": "Sort the search results of orders by ascending or descending." + "country": { + "$ref": "#/components/schemas/Country" }, - "naturalSorting": { - "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." + "address": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "state": { + "$ref": "#/components/schemas/CountryState" } } }, - "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": { + "positions": { "type": "array", - "description": "Perform groupings over certain fields", "items": { - "type": "string", - "description": "Name of a field" + "$ref": "#/components/schemas/CartDeliveryPosition" } }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" + "shippingCosts": { + "$ref": "#/components/schemas/CalculatedPrice" }, - "includes": { - "$ref": "#/components/schemas/Includes" + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" } } }, - "NoneFieldsCriteria": { + "SuccessResponse": { "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "term": { - "description": "Search term", - "type": "string" - }, - "limit": { - "description": "Number of items per result page", - "type": "integer" - }, - "filter": { - "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" - } - }, - "query": { - "type": "string", - "description": "The query string to search for" - }, - "associations": { - "$ref": "#/components/schemas/Associations" - }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" - } - }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } - }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } - }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" - }, - "includes": { - "$ref": "#/components/schemas/Includes" + "success": { + "type": "boolean" } } }, - "Associations": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Criteria" - } - }, - "Includes": { + "Price": { "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "Aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" + "description": "Price object", + "properties": { + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - { - "title": "AggregationEntity", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "gross": { + "description": "", + "type": "number" }, - { - "title": "AggregationFilter", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "net": { + "description": "", + "type": "number" }, - { - "title": "AggregationTerms", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "linked": { + "description": "", + "type": "boolean" }, - { - "title": "AggregationHistogram", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationHistogram" + "listPrice": { + "description": "", + "type": "object", + "properties": { + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - { - "$ref": "#/components/schemas/SubAggregations" + "gross": { + "description": "", + "type": "number" + }, + "net": { + "description": "", + "type": "number" + }, + "linked": { + "description": "", + "type": "boolean" } + }, + "required": [ + "gross", + "net" ] }, - { - "title": "AggregationRange", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationRange" + "regulationPrice": { + "description": "", + "type": "object", + "properties": { + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - { - "$ref": "#/components/schemas/SubAggregations" + "gross": { + "description": "", + "type": "number" + }, + "net": { + "description": "", + "type": "number" + }, + "linked": { + "description": "", + "type": "boolean" } + }, + "required": [ + "gross", + "net" ] } + }, + "required": [ + "currencyId", + "gross", + "net" ] }, - "SubAggregations": { + "FindProductVariantRouteResponse": { "type": "object", "properties": { - "aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/AggregationHistogram" + "foundCombination": { + "type": "object", + "properties": { + "variantId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of a variant." }, - { - "$ref": "#/components/schemas/AggregationRange" + "options": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Available product variant options. For example, for variant `Size`, option would be `XS`, `S`, `M`, `L`, `XL`." } - ] + } } } }, - "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)", + "NavigationType": { "type": "string", - "default": "none", "enum": [ - "none", - "exact", - "next-pages" + "main-navigation", + "footer-navigation", + "service-navigation" ] }, - "Query": { + "Cart": { "type": "object", "properties": { - "score": { - "type": "number" + "name": { + "description": "Name of the cart - for example `guest-cart`", + "type": "string" }, - "query": { - "oneOf": [ + "token": { + "description": "Context token identifying the cart and the user session", + "type": "string" + }, + "price": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "lineItems": { + "description": "All items within the cart", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + }, + "errors": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "anyOf": [ { - "$ref": "#/components/schemas/SimpleFilter" + "type": "array", + "items": { + "$ref": "#/components/schemas/CartError" + } }, { - "$ref": "#/components/schemas/EqualsFilter" + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "code": { + "type": "number" + }, + "key": { + "type": "string" + }, + "level": { + "type": "number" + }, + "message": { + "type": "string" + }, + "messageKey": { + "type": "string" + } + }, + "required": [ + "code", + "key", + "level", + "message", + "messageKey" + ] + } + } + ], + "properties": { + "key": { + "description": "Unique key for every message." }, - { - "$ref": "#/components/schemas/MultiNotFilter" + "level": { + "description": "Types of level - Notice, warning and error. " }, - { - "$ref": "#/components/schemas/RangeFilter" + "message": { + "description": "A persistent error passed from the shopping cart calculation processes to the user end." } - ] - } - }, - "additionalProperties": true - }, - "Sort": { - "type": "object", - "properties": { - "field": { - "type": "string" - }, - "order": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] + } }, - "naturalSorting": { - "type": "boolean" + "deliveries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDelivery" + } }, - "type": { - "type": "string" - } - }, - "required": [ - "field", - "order" - ] - }, - "Filters": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" + "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" + } + } }, - { - "$ref": "#/components/schemas/RangeFilter" + "properties": { + "paymentMethodId": { + "description": "Unique identity of payment method." + } } - ] - } - }, - "SimpleFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "contains", - "equalsAny", - "prefix", - "suffix" - ] }, - "field": { - "type": "string" + "modified": { + "type": "boolean", + "description": "It signifies any changes to cart." }, - "value": { - "type": "string" - } - }, - "required": [ - "type", - "field", - "value" - ] - }, - "EqualsFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "equals" + "customerComment": { + "description": "A comment that can be added to the cart.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } ] }, - "field": { - "type": "string" - }, - "value": { + "affiliateCode": { + "description": "An affiliate tracking code", "oneOf": [ { "type": "string" }, { - "type": "number" - }, + "type": "null" + } + ] + }, + "campaignCode": { + "description": "A campaign tracking code", + "oneOf": [ { - "type": "boolean" + "type": "string" }, { "type": "null" } ] - } - }, - "required": [ - "type", - "field", - "value" - ] - }, - "MultiNotFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "multi", - "not" - ] }, - "operator": { + "apiAlias": { "type": "string", "enum": [ - "and", - "or", - "nor", - "nand" + "cart" ] }, - "queries": { - "$ref": "#/components/schemas/Filters" + "id": { + "description": "Unique identity of cart." } }, "required": [ - "type", - "operator", - "queries" + "price", + "apiAlias" ] }, - "RangeFilter": { + "CartError": { "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "type": { - "type": "string", - "enum": [ - "range" - ] - }, - "field": { + "key": { "type": "string" }, - "parameters": { - "type": "object", - "properties": { - "gte": { - "type": "number" - }, - "gt": { - "type": "number" - }, - "lte": { - "type": "number" - }, - "lt": { - "type": "number" - } - } + "level": { + "type": "number", + "enum": [ + 0, + 10, + 20 + ], + "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" + }, + "message": { + "type": "string" + }, + "messageKey": { + "type": "string" } }, "required": [ - "type", - "field", - "parameters" + "key", + "level", + "message", + "messageKey" ] }, - "SuccessResponse": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - } - } - }, - "SalesChannelContext": { + "CalculatedPrice": { "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "token": { - "description": "Context the user session", - "type": "string" + "unitPrice": { + "type": "number" }, - "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." - } - } + "quantity": { + "type": "number" }, - "fallbackCustomerGroup": { - "description": "Fallback group if the default customer group is not applicable", - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "displayGross": { - "type": "boolean" - } - } + "rawTotal": { + "type": "number" }, - "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." - } - } + "totalPrice": { + "type": "number" }, - "salesChannel": { - "$ref": "#/components/schemas/SalesChannel", - "properties": { - "typeId": { - "description": "Unique identity of a sales channel's type within a specific sales channel." - }, - "languageId": { - "description": "Unique identity of a sales channel's language within a specific sales channel." - }, - "currencyId": { - "description": "Unique identity of a sales channel's currency within a specific sales channel." - }, - "paymentMethodId": { - "description": "Unique identity of a sales channel's payment method within a specific sales channel." - }, - "shippingMethodId": { - "description": "Unique identity of a sales channel's shipping method within a specific sales channel." - }, - "countryId": { - "description": "Unique identity of a sales channel's country within a specific sales channel." - }, - "navigationCategoryId": { - "description": "Unique identity of a sales channel's navigation category within a specific sales channel." - }, - "navigationCategoryDepth": { - "description": "It determines the number of levels of subcategories in the storefront category menu within a specific sales channel." - }, - "footerCategoryId": { - "description": "Unique identity of a sales channel's footer category within a specific sales channel." - }, - "serviceCategoryId": { - "description": "Unique identity of a sales channel's service category within a specific sales channel." - }, - "name": { - "description": "Name of the sales channel." - }, - "shortName": { - "description": "A short name for sales channel." - }, - "accessKey": { - "description": "Access key to store api." - }, - "active": { - "description": "When `true`, the sales channel is enabled." - }, - "maintenance": { - "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." - }, - "maintenanceIpWhitelist": { - "description": "Array of IP address allowed to access the sales channel." - }, - "mailHeaderFooterId": { - "description": "Unique identity of a sales channel's mail header and footer within a specific sales channel." - }, - "customerGroupId": { - "description": "Unique identity of a sales channel's customer group within a specific sales channel." - }, - "hreflangActive": { - "description": "When `true`, the sales channel pages are available in different languages within a specific sales channel." - }, - "hreflangDefaultDomainId": { - "description": "Unique identity of a sales channel's hreflangDefaultDomain within a specific sales channel." - }, - "analyticsId": { - "description": "Unique identity of a sales channel's analytics within a specific sales channel." - } - } + "taxStatus": { + "type": "string", + "enum": [ + "net", + "tax-free" + ] }, - "taxRules": { + "calculatedTaxes": { "type": "array", - "description": "Currently active tax rules and/or rates", "items": { "type": "object", "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, "taxRate": { - "type": "number", - "format": "float" + "type": "number" }, - "name": { - "type": "string" + "price": { + "type": "number" } - } - }, - "properties": { - "taxRate": { - "description": "Rate of tax within a specific sales channel." }, - "name": { - "description": "Name defined for a Tax within a specific sales channel." - } + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] } }, - "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." - }, - "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." + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" }, - "salutationId": { - "description": "Unique identity of customer's default shipping address within a specific sales channel." + { + "type": "null" + } + ] + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" }, - "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." + { + "type": "null" } - } + ] }, - "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethod", - "properties": { - "pluginId": { - "description": "Unique identity of payment plugin within a specific sales channel." - }, - "handlerIdentifier": { - "description": "Internal field that contains system identifier details for payment methods like Paypal." - }, - "name": { - "description": "Name of the payment method within a specific sales channel." - }, - "description": { - "description": "A short description about the payment method within a specific sales channel." - }, - "position": { - "description": "The order of the tabs of your defined payment methods in the storefront by entering numerical values like 1,2,3, etc within a specific sales channel." - }, - "active": { - "description": "When `true`, the payment method is available for usage within a specific sales channel." - }, - "availabilityRuleId": { - "description": "Unique identity of the rule for the payment method." - }, - "mediaId": { - "description": "Unique identity of media used in payment method within a specific sales channel." - }, - "formattedHandlerIdentifier": { - "description": "Internal field that contains system identifier details for payment methods like Paypal." - } - } + "positionPrice": { + "type": "number" }, - "shippingLocation": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" - } - } + "netPrice": { + "type": "number" }, - "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." + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } }, - "mediaId": { - "description": "Unique identity of media used in shipping method within a specific sales channel." + { + "type": "null" } - } + ] }, - "context": { - "description": "Core context with general configuration values and state", - "type": "object", - "properties": { - "versionId": { - "type": "string", - "description": "Unique identity of context's version in a specific sales channel." - }, - "currencyId": { - "type": "string", - "description": "Unique identity of currency context in a specific sales channel." - }, - "currencyFactor": { - "type": "integer", - "description": "Unique identity of currency factor context in a specific sales channel." - }, - "currencyPrecision": { - "type": "integer", - "format": "int32", - "description": "It defines the round off value of currency to the nearest decimal point. If set to 2, it rounds off to two significant decimal points." - }, - "languageIdChain": { - "type": "array", - "items": { - "type": "string" - } - }, - "scope": { - "type": "string", - "description": "Scope defines if its related to system or user context." - }, - "source": { - "type": "string", - "description": "When context is related to user in the source, then there is userId." - }, - "taxState": { + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { "type": "string", - "description": "Tax state can either be `gross` or `net`." + "format": "^[0-9a-f]{32}$" }, - "useCache": { - "type": "boolean", - "description": "When boolean value is `true`, caching is used." + { + "type": "null" } - } + ] }, "apiAlias": { "type": "string", "enum": [ - "sales_channel_context" + "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": [ - "salesChannel", - "apiAlias" + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "referencePrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitPrice", + "positionPrice", + "netPrice", + "taxRules", + "rawTotal", + "taxStatus" ] }, - "ProductDetailResponse": { + "ReferencePrice": { "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." + "purchaseUnit": { + "type": "number" }, - "available": { - "description": "When boolean value is true, the product is available for purchase." + "referenceUnit": { + "type": "number" }, - "isCloseout": { - "description": "Boolean value to check if the product is still buyable when stock value is 0." + "unitName": { + "type": "string" }, - "displayGroup": { - "description": "Internal field." + "price": { + "type": "number" }, - "manufacturerNumber": { - "description": "Unique number of the product manufacturer." + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_reference" + ] }, - "stock": { - "description": "Quantity of product available." + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/ListPrice" + }, + { + "type": "null" + } + ] }, - "sortedProperties": { - "description": "Properties of the product that are sorted" - } - }, - "required": [ - "product" - ] - }, - "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.", + "regulationPrice": { "oneOf": [ { - "type": "string" + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } }, { "type": "null" } ] }, - "only-aggregations": { - "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", + "hasRange": { + "type": "boolean" + }, + "variantId": { "oneOf": [ { - "type": "string" + "type": "string", + "format": "^[0-9a-f]{32}$" }, { "type": "null" } ] } - } - }, - "LineItemType": { - "type": "string", - "enum": [ - "product", - "credit", - "custom", - "promotion", - "discount", - "container", - "quantity" + }, + "required": [ + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" ] }, - "LineItem": { + "CrossSellingElement": { "type": "object", "properties": { - "children": { + "crossSelling": { + "$ref": "#/components/schemas/ProductCrossSelling" + }, + "products": { "type": "array", "items": { - "$ref": "#/components/schemas/LineItem" + "$ref": "#/components/schemas/Product" } }, - "cover": { - "$ref": "#/components/schemas/ProductMedia" + "total": { + "type": "integer", + "format": "int32" }, - "dataContextHash": { + "streamId": { + "type": "string", + "format": "uuid" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cross_selling_element" + ] + } + }, + "required": [ + "crossSelling", + "products", + "total", + "apiAlias" + ] + }, + "AggregationMetrics": { + "type": "object", + "properties": { + "name": { "type": "string" }, - "dataTimestamp": { + "type": { + "type": "string", + "enum": [ + "avg", + "count", + "max", + "min", + "stats", + "sum" + ] + }, + "field": { "type": "string" + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "CartPriceReference": { + "type": "object", + "properties": { + "purchaseUnit": { + "type": "number" }, - "deliveryInformation": { - "$ref": "#/components/schemas/CartDeliveryInformation" + "referenceUnit": { + "type": "number" }, - "description": { - "type": "string", - "description": "Description of line items in an order." + "unitName": { + "type": "string" }, - "good": { - "type": "boolean", - "description": "When set to true, it indicates the line item is physical else it is virtual." + "price": { + "type": "number" }, - "id": { + "apiAlias": { "type": "string", - "description": "Unique identity of line item." + "enum": [ + "cart_price_reference" + ] }, - "label": { - "type": "string", - "description": "It is a typical product name given to the line item." + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] }, - "modified": { - "type": "boolean", - "description": "When boolean value is `true`, line items are said to be modified." + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] }, - "modifiedByApp": { + "hasRange": { "type": "boolean" }, - "payload": { - "$ref": "#/components/schemas/ProductJsonApi" - }, - "price": { - "type": "object", - "properties": { - "apiAlias": { + "variantId": { + "oneOf": [ + { "type": "string", - "enum": [ - "calculated_price" - ] + "format": "^[0-9a-f]{32}$" }, - "calculatedTaxes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] - }, - "quantity": { - "type": "number" - }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] - }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } - }, - { - "type": "null" - } - ] - }, - "totalPrice": { - "type": "number" - }, - "unitPrice": { - "type": "number" - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } + { + "type": "null" } - }, - "required": [ - "apiAlias", - "totalPrice", - "quantity", - "unitPrice" ] - }, - "priceDefinition": { - "$ref": "#/components/schemas/CartPriceQuantity" - }, - "quantity": { - "type": "number", - "description": "Number of items of product." - }, - "quantityInformation": { - "type": "object", - "properties": { - "maxPurchase": { - "type": "number" - }, - "minPurchase": { - "type": "number" - }, - "purchaseSteps": { - "type": "number" - } - } - }, - "referencedId": { - "type": "string", - "description": "Unique identity of type of entity." - }, - "removable": { - "type": "boolean", - "description": "Allows the line item to be removable from the cart when set to true." - }, - "stackable": { - "type": "boolean", - "description": "Allows to change the quantity of the line item when set to true." - }, - "states": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "is-physical", - "is-download" - ] - } - }, - "type": { - "$ref": "#/components/schemas/LineItemType", - "description": "Type refers to the entity type of an item whether it is product or promotion for instance." - }, - "uniqueIdentifier": { - "type": "string" } }, "required": [ - "id", - "type", - "deliveryInformation", - "payload", + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", "quantity", - "states" + "unitName" ] }, - "CalculatedPrice": { + "ProductListingFlags": { "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", + "description": "Additional flags for product listings", "properties": { - "unitPrice": { - "type": "number" - }, - "quantity": { - "type": "number" - }, - "rawTotal": { - "type": "number" - }, - "totalPrice": { - "type": "number" - }, - "taxStatus": { - "type": "string", - "enum": [ - "net", - "tax-free" - ] - }, - "calculatedTaxes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } - }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] - }, - "listPrice": { + "no-aggregations": { + "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", "oneOf": [ { - "$ref": "#/components/schemas/CartListPrice" + "type": "string" }, { "type": "null" } ] }, - "positionPrice": { - "type": "number" - }, - "netPrice": { - "type": "number" - }, - "regulationPrice": { + "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": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } + "type": "string" }, { "type": "null" } ] + } + } + }, + "ProductListingCriteria": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "^[0-9a-f]{32}$" + { + "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" }, - { - "type": "null" + "limit": { + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "type": "integer", + "minimum": 0 + }, + "p": { + "description": "Search result page", + "type": "integer", + "default": 1 + }, + "manufacturer": { + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "type": "string" + }, + "min-price": { + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "max-price": { + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "rating": { + "description": "Filter products with a minimum average rating.", + "type": "integer" + }, + "shipping-free": { + "description": "Filters products that are marked as shipping-free.", + "type": "boolean", + "default": false + }, + "properties": { + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "type": "string" + }, + "manufacturer-filter": { + "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "price-filter": { + "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "rating-filter": { + "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "shipping-free-filter": { + "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-filter": { + "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-whitelist": { + "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", + "type": "string" + }, + "reduce-aggregations": { + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] } - ] + } + } + ], + "properties": { + "filter": { + "properties": { + "type": { + "description": "To filter the results and aggregations with filter types like ==, >=, etc." + }, + "field": { + "description": "To filter the results and aggregations by field like an property identifier." + }, + "value": { + "description": "To filter the results and aggregations by value." + } + } + }, + "sort": { + "properties": { + "field": { + "description": "Sort the search results by field like an property identifier." + }, + "order": { + "description": "Sort the search results of orders by ascending or descending." + }, + "naturalSorting": { + "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." + } + } }, + "post-filter": { + "properties": { + "type": { + "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." + }, + "field": { + "description": "To filter only the results but not the aggregations by field like an property identifier." + }, + "value": { + "description": "To filter only the results but not the aggregations by value." + } + } + } + } + }, + "CartPriceQuantity": { + "type": "object", + "properties": { "apiAlias": { "type": "string", "enum": [ - "calculated_price" + "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", - "description": "Currently active tax rules and/or rates", "items": { "type": "object", "properties": { @@ -12875,416 +12584,319 @@ } } } + }, + "type": { + "type": "string" } }, "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "referencePrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitPrice", - "positionPrice", - "netPrice", - "taxRules", - "rawTotal", - "taxStatus" + "apiAlias" ] }, - "CartError": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "NavigationRouteResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + }, "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" + "id": { + "description": "Unique identity of navigation route response." } - }, - "required": [ - "key", - "level", - "message", - "messageKey" + } + }, + "LineItemType": { + "type": "string", + "enum": [ + "product", + "credit", + "custom", + "promotion", + "discount", + "container", + "quantity" ] }, - "CartItems": { + "LineItem": { "type": "object", - "required": [ - "items" - ], "properties": { - "items": { + "children": { "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." - } } - } - } - }, - "AggregationMetrics": { - "type": "object", - "properties": { - "name": { - "type": "string" }, - "type": { - "type": "string", - "enum": [ - "avg", - "count", - "max", - "min", - "stats", - "sum" - ] + "cover": { + "$ref": "#/components/schemas/ProductMedia" }, - "field": { + "dataContextHash": { "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "CrossSellingElement": { - "type": "object", - "properties": { - "crossSelling": { - "$ref": "#/components/schemas/ProductCrossSelling" }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } + "dataTimestamp": { + "type": "string" }, - "total": { - "type": "integer", - "format": "int32" + "deliveryInformation": { + "$ref": "#/components/schemas/CartDeliveryInformation" }, - "streamId": { + "description": { "type": "string", - "format": "uuid" + "description": "Description of line items in an order." }, - "apiAlias": { + "good": { + "type": "boolean", + "description": "When set to true, it indicates the line item is physical else it is virtual." + }, + "id": { "type": "string", - "enum": [ - "cross_selling_element" - ] - } - }, - "required": [ - "crossSelling", - "products", - "total", - "apiAlias" - ] - }, - "ProductListingResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EntitySearchResult" + "description": "Unique identity of line item." }, - { + "label": { + "type": "string", + "description": "It is a typical product name given to the line item." + }, + "modified": { + "type": "boolean", + "description": "When boolean value is `true`, line items are said to be modified." + }, + "modifiedByApp": { + "type": "boolean" + }, + "payload": { + "$ref": "#/components/schemas/ProductJsonApi" + }, + "price": { "type": "object", "properties": { - "currentFilters": { - "type": "object", - "description": "Contains the state of the filters. These can be used to create listing filters.", - "properties": { - "navigationId": { - "type": "string" - }, - "manufacturer": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "price": { - "type": "object", - "properties": { - "min": { - "type": "integer", - "default": 0 - }, - "max": { - "type": "integer", - "default": 0 - } - }, - "required": [ - "min", - "max" - ] - }, - "rating": { - "oneOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "shipping-free": { - "type": "boolean", - "default": false - }, - "properties": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "search": { - "type": "string" - } - }, - "required": [ - "manufacturer", - "navigationId", - "price", - "properties", - "rating", - "shipping-free" + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" ] }, - "availableSortings": { + "calculatedTaxes": { "type": "array", - "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", "items": { "type": "object", "properties": { - "label": { - "type": "string" - }, - "translated": { - "type": "object", - "properties": { - "label": { - "type": "string" - } - }, - "required": [ - "label" + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" ] }, - "key": { - "type": "string" + "tax": { + "type": "number" }, - "priority": { + "taxRate": { "type": "number" }, - "apiAlias": { - "type": "string", - "enum": [ - "product_sorting" - ] + "price": { + "type": "number" } }, "required": [ - "label", - "translated", - "key", - "priority", - "apiAlias" + "apiAlias", + "tax", + "taxRate", + "price" ] } }, - "sorting": { - "type": "string" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } + ] }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } + "quantity": { + "type": "number" }, - "entity": { - "type": "string", - "enum": [ - "product" + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" + }, + { + "type": "null" + } ] }, - "apiAlias": { - "type": "string", - "enum": [ - "product_listing" + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } ] + }, + "totalPrice": { + "type": "number" + }, + "unitPrice": { + "type": "number" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + } } }, "required": [ - "elements", - "availableSortings", - "currentFilters", - "apiAlias" + "apiAlias", + "totalPrice", + "quantity", + "unitPrice" ] - } - ] - }, - "NavigationRouteResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - }, - "properties": { - "id": { - "description": "Unique identity of navigation route response." - } - } - }, - "Price": { - "type": "object", - "description": "Price object", - "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "", - "type": "number" }, - "net": { - "description": "", - "type": "number" + "priceDefinition": { + "$ref": "#/components/schemas/CartPriceQuantity" }, - "linked": { - "description": "", - "type": "boolean" + "quantity": { + "type": "number", + "description": "Number of items of product." }, - "listPrice": { - "description": "", + "quantityInformation": { "type": "object", "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "", - "type": "number" - }, - "net": { - "description": "", + "maxPurchase": { "type": "number" }, - "linked": { - "description": "", - "type": "boolean" - } - }, - "required": [ - "gross", - "net" - ] - }, - "regulationPrice": { - "description": "", - "type": "object", - "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "", + "minPurchase": { "type": "number" }, - "net": { - "description": "", + "purchaseSteps": { "type": "number" - }, - "linked": { - "description": "", - "type": "boolean" } - }, - "required": [ - "gross", - "net" - ] + } + }, + "referencedId": { + "type": "string", + "description": "Unique identity of type of entity." + }, + "removable": { + "type": "boolean", + "description": "Allows the line item to be removable from the cart when set to true." + }, + "stackable": { + "type": "boolean", + "description": "Allows to change the quantity of the line item when set to true." + }, + "states": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "is-physical", + "is-download" + ] + } + }, + "type": { + "$ref": "#/components/schemas/LineItemType", + "description": "Type refers to the entity type of an item whether it is product or promotion for instance." + }, + "uniqueIdentifier": { + "type": "string" } }, "required": [ - "currencyId", - "gross", - "net" + "id", + "type", + "deliveryInformation", + "payload", + "quantity", + "states" ] }, - "Sitemap": { + "OrderRouteResponse": { "type": "object", "properties": { - "filename": { - "type": "string", - "description": "Name of the file which holds a list of all URL's." + "orders": { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "elements" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" + } + } + } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] }, - "created": { - "type": "string", - "format": "date-time" + "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": [ - "filename", - "created" + "orders" ] }, - "CartListPrice": { + "WishlistLoadRouteResponse": { "type": "object", - "description": "", + "required": [ + "products" + ], "properties": { - "discount": { - "type": "number" - }, - "percentage": { - "type": "number" - }, - "price": { - "type": "number" + "wishlist": { + "type": "object", + "properties": { + "customerId": { + "type": "string", + "description": "Unique identity of the customer." + }, + "salesChannelId": { + "type": "string", + "description": "Unique identity of the sales channel." + } + } }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_list_price" - ] + "products": { + "$ref": "#/components/schemas/ProductListingResult" } - }, - "required": [ - "apiAlias" - ] + } }, - "ListPrice": { + "CartListPrice": { "type": "object", "description": "", "properties": { @@ -13308,502 +12920,188 @@ "apiAlias" ] }, - "CartPriceReference": { + "ProductMeasurements": { "type": "object", + "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", "properties": { - "purchaseUnit": { - "type": "number" - }, - "referenceUnit": { - "type": "number" - }, - "unitName": { - "type": "string" - }, - "price": { - "type": "number" + "width": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" + }, + "value": { + "type": "number" + } + } }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_reference" - ] + "height": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" + }, + "value": { + "type": "number" + } + } }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" + "length": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" }, - { - "type": "null" + "value": { + "type": "number" } - ] + } }, - "regulationPrice": { - "oneOf": [ - { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } - }, - { - "type": "null" - } - ] - }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" - ] - }, - "FindProductVariantRouteResponse": { - "type": "object", - "properties": { - "foundCombination": { + "weight": { "type": "object", "properties": { - "variantId": { + "unit": { "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of a variant." + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg" }, - "options": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Available product variant options. For example, for variant `Size`, option would be `XS`, `S`, `M`, `L`, `XL`." + "value": { + "type": "number" } } } } }, - "Breadcrumb": { + "ContextMeasurementSystemInfo": { "type": "object", + "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", "properties": { - "name": { - "type": "string" - }, - "categoryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "type": { + "system": { "type": "string", "enum": [ - "page", - "link", - "folder" - ] + "metric", + "imperial" + ], + "default": "metric", + "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." }, - "translated": { + "units": { "type": "object", - "additionalProperties": true, + "description": "Units used in the measurement system.", "properties": { - "customFields": { - "type": "object" - }, - "slotConfig": { - "type": "object" - }, - "linkType": { + "length": { "type": "string", "enum": [ - "external", - "category", - "product", - "landing_page" - ] - }, - "internalLink": { - "type": "string" - }, - "externalLink": { - "type": "string" - }, - "linkNewTab": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "metaTitle": { - "type": "string" - }, - "metaDescription": { - "type": "string" + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Unit of length." }, - "keywords": { - "type": "string" + "weight": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." } } - }, - "path": { - "type": "string" - }, - "seoUrls": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } - }, - "apiAlias": { - "type": "string", - "enum": [ - "breadcrumb" - ] } - }, - "required": [ - "name", - "categoryId", - "type", - "translated", - "path", - "apiAlias" - ] + } }, - "AccountNewsletterRecipient": { + "Sitemap": { "type": "object", "properties": { - "status": { + "filename": { "type": "string", - "enum": [ - "undefined", - "notSet", - "direct", - "optIn", - "optOut" - ] + "description": "Name of the file which holds a list of all URL's." }, - "apiAlias": { + "created": { "type": "string", - "enum": [ - "account_newsletter_recipient" - ] + "format": "date-time" } }, "required": [ - "status", - "apiAlias" + "filename", + "created" ] }, - "CartDeliveryInformation": { + "EntitySearchResult": { "type": "object", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_information" - ] + "entity": { + "type": "string" }, - "freeDelivery": { - "type": "boolean" + "total": { + "type": "integer", + "description": "The total number of found entities" }, - "deliveryTime": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer" - }, - "max": { - "type": "integer" - }, - "unit": { - "type": "string" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_time" - ] - } + "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" } }, - "height": { - "type": "integer" - }, - "length": { - "type": "integer" - }, - "restockTime": { - "type": "integer" - }, - "stock": { - "type": "integer" - }, - "weight": { - "type": "integer" + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." }, - "width": { - "type": "integer" + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." } - }, - "required": [ - "apiAlias" - ] + } }, - "AggregationEntity": { - "title": "AggregationEntity", - "type": "object", + "CustomerAddressBody": { + "description": "Added since version: 6.0.0.0", + "required": [ + "countryId", + "firstName", + "lastName", + "city", + "street" + ], "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", + "countryId": { "type": "string", - "enum": [ - "entity" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "definition": { - "description": "The entity definition e.g \"product_manufacturer\".", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field", - "definition" - ] - }, - "AggregationFilter": { - "title": "AggregationFilter", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "filter" - ] - }, - "filter": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Filters" - } - } - }, - "required": [ - "name", - "type", - "filter" - ] - }, - "AggregationTerms": { - "title": "AggregationTerms", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "terms" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "limit": { - "description": "The number of terms to return", - "type": "number" - }, - "sort": { - "type": "array", - "description": "Sorting the aggregation result.", - "items": { - "$ref": "#/components/schemas/Sort" - } - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "AggregationHistogram": { - "title": "AggregationHistogram", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "histogram" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "interval": { - "description": "The interval of the histogram", - "type": "number" - }, - "format": { - "description": "The format of the histogram", - "type": "string" - }, - "timeZone": { - "description": "The timezone of the histogram", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "AggregationRange": { - "title": "AggregationRange", - "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "range" - ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "ranges": { - "description": "The ranges of the aggregation", - "type": "array", - "items": { - "type": "object", - "anyOf": [ - { - "type": "object", - "title": "From and to", - "properties": { - "from": { - "type": "number", - "description": "The lower bound of the range" - }, - "to": { - "type": "number", - "description": "The upper bound of the range" - } - }, - "required": [ - "from", - "to" - ] - }, - { - "type": "object", - "title": "From only", - "properties": { - "from": { - "type": "string", - "description": "The lower bound of the range" - } - }, - "required": [ - "from" - ] - }, - { - "type": "object", - "title": "To only", - "properties": { - "to": { - "type": "string", - "description": "The upper bound of the range" - } - }, - "required": [ - "to" - ] - } - ] - } - } - }, - "required": [ - "name", - "type", - "field", - "ranges" - ] - }, - "CustomerAddressBody": { - "description": "Added since version: 6.0.0.0", - "required": [ - "countryId", - "firstName", - "lastName", - "city", - "street" - ], - "properties": { - "countryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "pattern": "^[0-9a-f]{32}$" }, "countryStateId": { "type": "string", @@ -13861,161 +13159,789 @@ }, "type": "object" }, - "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" - } + "ProductListingResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EntitySearchResult" }, - "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" - } - }, - { + "properties": { + "currentFilters": { "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "code": { - "type": "number" + "description": "Contains the state of the filters. These can be used to create listing filters.", + "properties": { + "navigationId": { + "type": "string" + }, + "manufacturer": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "price": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "default": 0 + }, + "max": { + "type": "integer", + "default": 0 + } }, - "key": { + "required": [ + "min", + "max" + ] + }, + "rating": { + "oneOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "shipping-free": { + "type": "boolean", + "default": false + }, + "properties": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "search": { + "type": "string" + } + }, + "required": [ + "manufacturer", + "navigationId", + "price", + "properties", + "rating", + "shipping-free" + ] + }, + "availableSortings": { + "type": "array", + "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", + "items": { + "type": "object", + "properties": { + "label": { "type": "string" }, - "level": { - "type": "number" + "translated": { + "type": "object", + "properties": { + "label": { + "type": "string" + } + }, + "required": [ + "label" + ] }, - "message": { + "key": { "type": "string" }, - "messageKey": { - "type": "string" + "priority": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_sorting" + ] } }, "required": [ - "code", + "label", + "translated", "key", - "level", - "message", - "messageKey" + "priority", + "apiAlias" ] } - } - ], - "properties": { - "key": { - "description": "Unique key for every message." }, - "level": { - "description": "Types of level - Notice, warning and error. " + "sorting": { + "type": "string" }, - "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" + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" } + }, + "entity": { + "type": "string", + "enum": [ + "product" + ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_listing" + ] } }, + "required": [ + "elements", + "availableSortings", + "currentFilters", + "apiAlias" + ] + } + ] + }, + "SalesChannelContext": { + "type": "object", + "properties": { + "token": { + "description": "Context the user session", + "type": "string" + }, + "currentCustomerGroup": { + "type": "object", + "description": "Customer group of the current user", "properties": { - "paymentMethodId": { - "description": "Unique identity of payment method." + "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." } } }, - "modified": { - "type": "boolean", - "description": "It signifies any changes to cart." - }, - "customerComment": { - "description": "A comment that can be added to the cart.", - "oneOf": [ - { + "fallbackCustomerGroup": { + "description": "Fallback group if the default customer group is not applicable", + "type": "object", + "properties": { + "name": { "type": "string" }, - { - "type": "null" + "displayGross": { + "type": "boolean" } - ] + } }, - "affiliateCode": { - "description": "An affiliate tracking code", - "oneOf": [ - { - "type": "string" + "currency": { + "$ref": "#/components/schemas/Currency", + "properties": { + "isoCode": { + "description": "Standard international three digit code to represent currency in a given sales channel. For example, USD." }, - { - "type": "null" - } - ] - }, - "campaignCode": { - "description": "A campaign tracking code", - "oneOf": [ - { - "type": "string" + "factor": { + "description": "Currency exchange rate in a specific sales channel the customer is currently interacting with." }, - { - "type": "null" + "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." } - ] - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart" - ] + } }, - "id": { - "description": "Unique identity of cart." - } - }, - "required": [ - "price", - "apiAlias" - ] - }, - "Association": { - "additionalProperties": { - "$ref": "#/components/schemas/Association" + "salesChannel": { + "$ref": "#/components/schemas/SalesChannel", + "properties": { + "typeId": { + "description": "Unique identity of a sales channel's type within a specific sales channel." + }, + "languageId": { + "description": "Unique identity of a sales channel's language within a specific sales channel." + }, + "currencyId": { + "description": "Unique identity of a sales channel's currency within a specific sales channel." + }, + "paymentMethodId": { + "description": "Unique identity of a sales channel's payment method within a specific sales channel." + }, + "shippingMethodId": { + "description": "Unique identity of a sales channel's shipping method within a specific sales channel." + }, + "countryId": { + "description": "Unique identity of a sales channel's country within a specific sales channel." + }, + "navigationCategoryId": { + "description": "Unique identity of a sales channel's navigation category within a specific sales channel." + }, + "navigationCategoryDepth": { + "description": "It determines the number of levels of subcategories in the storefront category menu within a specific sales channel." + }, + "footerCategoryId": { + "description": "Unique identity of a sales channel's footer category within a specific sales channel." + }, + "serviceCategoryId": { + "description": "Unique identity of a sales channel's service category within a specific sales channel." + }, + "name": { + "description": "Name of the sales channel." + }, + "shortName": { + "description": "A short name for sales channel." + }, + "accessKey": { + "description": "Access key to store api." + }, + "active": { + "description": "When `true`, the sales channel is enabled." + }, + "maintenance": { + "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." + }, + "maintenanceIpWhitelist": { + "description": "Array of IP address allowed to access the sales channel." + }, + "mailHeaderFooterId": { + "description": "Unique identity of a sales channel's mail header and footer within a specific sales channel." + }, + "customerGroupId": { + "description": "Unique identity of a sales channel's customer group within a specific sales channel." + }, + "hreflangActive": { + "description": "When `true`, the sales channel pages are available in different languages within a specific sales channel." + }, + "hreflangDefaultDomainId": { + "description": "Unique identity of a sales channel's hreflangDefaultDomain within a specific sales channel." + }, + "analyticsId": { + "description": "Unique identity of a sales channel's analytics within a specific sales channel." + } + } + }, + "measurementSystem": { + "$ref": "#/components/schemas/ContextMeasurementSystemInfo" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } + }, + "properties": { + "taxRate": { + "description": "Rate of tax within a specific sales channel." + }, + "name": { + "description": "Name defined for a Tax within a specific sales channel." + } + } + }, + "customer": { + "oneOf": [ + { + "type": "null" + }, + { + "$ref": "#/components/schemas/Customer" + } + ], + "properties": { + "groupId": { + "description": "Unique identity of a customer's group within a specific sales channel." + }, + "defaultPaymentMethodId": { + "description": "Unique identity of a customer's default payment method within a specific sales channel." + }, + "salesChannelId": { + "description": "Unique identity of sales channel the customer is currently interacting with." + }, + "languageId": { + "description": "Unique identity of language within a specific sales channel the customer is interacting." + }, + "lastPaymentMethodId": { + "description": "Unique identity of customer's last payment method within a specific sales channel." + }, + "defaultBillingAddressId": { + "description": "Unique identity of customer's default billing address within a specific sales channel." + }, + "defaultShippingAddressId": { + "description": "Unique identity of customer's default shipping address within a specific sales channel." + }, + "customerNumber": { + "description": "Name of the customer within a specific sales channel the customer is interacting." + }, + "salutationId": { + "description": "Unique identity of customer's default shipping address within a specific sales channel." + }, + "firstName": { + "description": "First name of the customer within a specific sales channel." + }, + "lastName": { + "description": "Last name of the customer within a specific sales channel." + }, + "company": { + "description": "Company name of the customer within a specific sales channel." + }, + "password": { + "description": "Password of the customer within a specific sales channel." + }, + "email": { + "description": "Email of the customer within a specific sales channel." + }, + "title": { + "description": "Customer's title or honorifics like Mr, Mrs, etc within a specific sales channel." + }, + "affiliateCode": { + "description": "An affiliate code is an identification option with which website operators can mark outgoing links within a specific sales channel." + }, + "campaignCode": { + "description": "A unique identifier for a campaign within a specific sales channel." + }, + "active": { + "description": "When `true`, the status of the customer is set active within a specific sales channel." + }, + "doubleOptInRegistration": { + "description": "When `true`, user subscriptions to an email marketing list is allowed within a specific sales channel." + }, + "doubleOptInEmailSentDate": { + "description": "Date and time when the double opt-in email was sent within a specific sales channel." + }, + "doubleOptInConfirmDate": { + "description": "Date and time when the double opt-in email was confirmed within a specific sales channel." + }, + "hash": { + "description": "Password hash for account recovery within a specific sales channel." + }, + "guest": { + "description": "Boolean value is `true` for a guest account within a specific sales channel." + }, + "firstLogin": { + "description": "Captures date and time of customer's first login within a specific sales channel." + }, + "lastLogin": { + "description": "Captures date and time of customer's last login within a specific sales channel." + }, + "newsletter": { + "description": "When `true`, then the customer gets subscribe to the newsletter" + }, + "birthday": { + "description": "Captures customer's birthday details within a specific sales channel." + }, + "lastOrderDate": { + "description": "Captures customer's last order date within a specific sales channel." + }, + "orderCount": { + "description": "Captures the number of orders placed by a customer within a specific sales channel." + }, + "legacyEncoder": { + "description": "encapsulates shop credentials when needed to migrate shop system from old instance to new instance" + }, + "legacyPassword": { + "description": "Hashed password of the old shop system" + }, + "autoIncrement": { + "description": "Internal field. " + }, + "remoteAddress": { + "description": "Anonymous IP address of the customer for last session." + } + } + }, + "paymentMethod": { + "$ref": "#/components/schemas/PaymentMethod", + "properties": { + "pluginId": { + "description": "Unique identity of payment plugin within a specific sales channel." + }, + "handlerIdentifier": { + "description": "Internal field that contains system identifier details for payment methods like Paypal." + }, + "name": { + "description": "Name of the payment method within a specific sales channel." + }, + "description": { + "description": "A short description about the payment method within a specific sales channel." + }, + "position": { + "description": "The order of the tabs of your defined payment methods in the storefront by entering numerical values like 1,2,3, etc within a specific sales channel." + }, + "active": { + "description": "When `true`, the payment method is available for usage within a specific sales channel." + }, + "availabilityRuleId": { + "description": "Unique identity of the rule for the payment method." + }, + "mediaId": { + "description": "Unique identity of media used in payment method within a specific sales channel." + }, + "formattedHandlerIdentifier": { + "description": "Internal field that contains system identifier details for payment methods like Paypal." + } + } + }, + "shippingLocation": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + } + } + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod", + "properties": { + "name": { + "description": "Name of the shipping method within a specific sales channel." + }, + "active": { + "description": "When `true`, the shipping method is available for usage within a specific sales channel." + }, + "description": { + "description": "A short description about the shipping method within a specific sales channel." + }, + "trackingUrl": { + "description": "URL that allows to track packages for a specific sales channel." + }, + "deliveryTimeId": { + "description": "Unique identity of deliveryTime within a specific sales channel." + }, + "availabilityRuleId": { + "description": "Unique identity of the rule for the payment method." + }, + "mediaId": { + "description": "Unique identity of media used in shipping method within a specific sales channel." + } + } + }, + "context": { + "description": "Core context with general configuration values and state", + "type": "object", + "properties": { + "versionId": { + "type": "string", + "description": "Unique identity of context's version in a specific sales channel." + }, + "currencyId": { + "type": "string", + "description": "Unique identity of currency context in a specific sales channel." + }, + "currencyFactor": { + "type": "integer", + "description": "Unique identity of currency factor context in a specific sales channel." + }, + "currencyPrecision": { + "type": "integer", + "format": "int32", + "description": "It defines the round off value of currency to the nearest decimal point. If set to 2, it rounds off to two significant decimal points." + }, + "languageIdChain": { + "type": "array", + "items": { + "type": "string" + } + }, + "scope": { + "type": "string", + "description": "Scope defines if its related to system or user context." + }, + "source": { + "type": "object", + "required": [ + "salesChannelId", + "type" + ], + "properties": { + "type": { + "type": "string", + "enum": [ + "sales-channel", + "shop-api" + ] + }, + "salesChannelId": { + "type": "string" + } + }, + "description": "When context is related to user in the source, then there is userId." + }, + "taxState": { + "type": "string", + "description": "Tax state can either be `gross` or `net`." + }, + "useCache": { + "type": "boolean", + "description": "When boolean value is `true`, caching is used." + } + } + }, + "itemRounding": { + "type": "object", + "required": [ + "decimals", + "interval", + "roundForNet", + "apiAlias" + ], + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" + ] + }, + "decimals": { + "type": "integer", + "format": "int32" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" + } + } + }, + "totalRounding": { + "type": "object", + "required": [ + "decimals", + "interval", + "roundForNet", + "apiAlias" + ], + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config" + ] + }, + "decimals": { + "type": "integer", + "format": "int32" + }, + "interval": { + "type": "number", + "format": "float" + }, + "roundForNet": { + "type": "boolean" + } + } + }, + "languageInfo": { + "type": "object", + "required": [ + "localeCode", + "name" + ], + "properties": { + "name": { + "type": "string" + }, + "localeCode": { + "type": "string" + } + } + }, + "apiAlias": { + "type": "string", + "enum": [ + "sales_channel_context" + ] + } + }, + "required": [ + "salesChannel", + "apiAlias", + "itemRounding", + "totalRounding", + "languageInfo" + ] + }, + "ListPrice": { + "type": "object", + "description": "", + "properties": { + "discount": { + "type": "number" + }, + "percentage": { + "type": "number" + }, + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_list_price" + ] + } + }, + "required": [ + "apiAlias" + ] + }, + "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" + ] + }, + "MeasurementUnits": { + "type": "object", + "description": "Configuration of the measurement system", + "properties": { + "system": { + "type": "string", + "enum": [ + "metric", + "imperial" + ], + "default": "metric", + "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." + }, + "units": { + "type": "object", + "description": "Units used in the measurement system.", + "properties": { + "length": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Unit of length." + }, + "weight": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." + } + } + } + } + }, + "CartDeliveryPosition": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } + }, + "identifier": { + "type": "string" + }, + "lineItem": { + "$ref": "#/components/schemas/LineItem" + }, + "price": { + "$ref": "#/components/schemas/CalculatedPrice" + } } }, "ShippingMethodPageRouteResponse": { @@ -14464,391 +14390,870 @@ "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." + "active": { + "description": "When boolean value is `true`, the shipping methods are available for selection in the sales channel's storefront." + }, + "maintenance": { + "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." + }, + "maintenanceIpWhitelist": { + "description": "Array of IP address allowed to access the sales channel." + }, + "mailHeaderFooterId": { + "description": "Unique identity of mail header and footer." + }, + "customerGroupId": { + "description": "Unique identity of customer group." + }, + "hreflangActive": { + "description": "When boolean value is `true`, the sales channel pages are available in different languages." + }, + "hreflangDefaultDomainId": { + "description": "Unique identity of hreflangDefaultDomain." + } + } + }, + "salesChannels": { + "properties": { + "stateId": { + "description": "Unique identity of state." + }, + "languageId": { + "description": "Unique identity of language." + }, + "currencyId": { + "description": "Unique identity of currency." + }, + "paymentMethodId": { + "description": "Unique identity of payment method." + }, + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "countryId": { + "description": "Unique identity of country." + }, + "navigationCategoryId": { + "description": "Unique identity of navigation category." + }, + "navigationCategoryDepth": { + "description": "It determines the number of levels of subcategories in the storefront category menu." + }, + "footerCategoryId": { + "description": "Unique identity of footer category." + }, + "serviceCategoryId": { + "description": "Unique identity of service category." + }, + "name": { + "description": "Name of the sales channel." + }, + "shortName": { + "description": "A short name for sales channel." + }, + "accessKey": { + "description": "Access key to store api." + }, + "active": { + "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." + }, + "maintenance": { + "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." + }, + "maintenanceIpWhitelist": { + "description": "Array of IP address allowed to access the sales channel." + }, + "mailHeaderFooterId": { + "description": "Unique identity of mail header and footer." + }, + "customerGroupId": { + "description": "Unique identity of customer group." + }, + "hreflangActive": { + "description": "When boolean value is `true``, the sales channel pages are available in different languages." + }, + "hreflangDefaultDomainId": { + "description": "Unique identity of hreflangDefaultDomain." + } + } + }, + "availabilityRule": { + "properties": { + "name": { + "description": "Unique name for the rule." + }, + "description": { + "description": "A short description about the rule." + }, + "priority": { + "description": "A numerical value to prioritize one of the rules from the list." + }, + "invalid": { + "description": "When the boolean value is `true`, the rule is no more available for usage." + } + } + }, + "availabilityRuleId": { + "description": "Unique identity of availability rule." + }, + "prices": { + "properties": { + "shippingMethodId": { + "description": "Unique identity of shipping method." + }, + "currencyId": { + "description": "Unique identity of currency." }, - "maintenance": { - "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." + "ruleId": { + "description": "Unique identity of rule." }, - "maintenanceIpWhitelist": { - "description": "Array of IP address allowed to access the sales channel." + "calculation": { + "description": "Shipping price calculated based on quantity, price, weight or volume of items." }, - "mailHeaderFooterId": { - "description": "Unique identity of mail header and footer." + "quantityStart": { + "description": "Starting range of quantity of an item." }, - "customerGroupId": { - "description": "Unique identity of customer group." + "quantityEnd": { + "description": "Ending range of quantity of an item." }, - "hreflangActive": { - "description": "When boolean value is `true`, the sales channel pages are available in different languages." + "price": { + "description": "Shipping method price after applied rules." }, - "hreflangDefaultDomainId": { - "description": "Unique identity of hreflangDefaultDomain." + "calculationRuleId": { + "description": "Unique identity of calculation rule." } } }, - "salesChannels": { + "mediaId": { + "description": "Unique identity of media." + }, + "media": { "properties": { - "stateId": { - "description": "Unique identity of state." + "userId": { + "description": "Unique identity of user." }, - "languageId": { - "description": "Unique identity of language." + "mimeType": { + "description": "A string sent along with a file indicating the type of the file. For example: image/jpeg." }, - "currencyId": { - "description": "Unique identity of currency." + "fileExtension": { + "description": "Type of file indication. For example: jpeg, png." }, - "paymentMethodId": { - "description": "Unique identity of payment method." + "fileSize": { + "description": "Size of the file media file uploaded." }, - "shippingMethodId": { - "description": "Unique identity of shipping method." + "title": { + "description": "Title name give to the media." }, - "countryId": { - "description": "Unique identity of country." + "metaDataRaw": { + "description": "Details of the media file uploaded." }, - "navigationCategoryId": { - "description": "Unique identity of navigation category." + "alt": { + "description": "Alternate text for media." }, - "navigationCategoryDepth": { - "description": "It determines the number of levels of subcategories in the storefront category menu." + "url": { + "description": "Runtime field, cannot be used as part of the criteria." }, - "footerCategoryId": { - "description": "Unique identity of footer category." + "fileName": { + "description": "Name of the media file uploaded." }, - "serviceCategoryId": { - "description": "Unique identity of service category." + "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 sales channel." + "description": "Name of the tag." + } + } + } + } + }, + "ProductDetailResponse": { + "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", + "properties": { + "product": { + "$ref": "#/components/schemas/Product" + }, + "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" + ] + }, + "CrossSellingElementCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrossSellingElement" + }, + "properties": { + "total": { + "description": "Number of cross selling elements found." + } + } + }, + "Breadcrumb": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "categoryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "type": { + "type": "string", + "enum": [ + "page", + "link", + "folder" + ] + }, + "translated": { + "type": "object", + "additionalProperties": true, + "properties": { + "customFields": { + "type": "object" }, - "shortName": { - "description": "A short name for sales channel." + "slotConfig": { + "type": "object" }, - "accessKey": { - "description": "Access key to store api." + "linkType": { + "type": "string", + "enum": [ + "external", + "category", + "product", + "landing_page" + ] }, - "active": { - "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." + "internalLink": { + "type": "string" }, - "maintenance": { - "description": "When `true`, it indicates that the sales channel is undergoing maintenance, and shopping is temporarily unavailable during this period." + "externalLink": { + "type": "string" }, - "maintenanceIpWhitelist": { - "description": "Array of IP address allowed to access the sales channel." + "linkNewTab": { + "type": "boolean" }, - "mailHeaderFooterId": { - "description": "Unique identity of mail header and footer." + "description": { + "type": "string" }, - "customerGroupId": { - "description": "Unique identity of customer group." + "metaTitle": { + "type": "string" + }, + "metaDescription": { + "type": "string" + }, + "keywords": { + "type": "string" + } + } + }, + "path": { + "type": "string" + }, + "seoUrls": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" + } + }, + "apiAlias": { + "type": "string", + "enum": [ + "breadcrumb" + ] + } + }, + "required": [ + "name", + "categoryId", + "type", + "translated", + "path", + "apiAlias" + ] + }, + "Criteria": { + "type": "object", + "description": "Criteria to query entities.", + "properties": { + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", + "type": "string" + }, + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + }, + "properties": { + "type": { + "description": "To filter the results and aggregations with filter types like ==, >=, etc." }, - "hreflangActive": { - "description": "When boolean value is `true``, the sales channel pages are available in different languages." + "field": { + "description": "To filter the results and aggregations by field like an property identifier." }, - "hreflangDefaultDomainId": { - "description": "Unique identity of hreflangDefaultDomain." + "value": { + "description": "To filter the results and aggregations by value." } } }, - "availabilityRule": { + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } + }, + "query": { + "type": "string", + "description": "The query string to search for" + }, + "associations": { + "$ref": "#/components/schemas/Associations" + }, + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + }, "properties": { - "name": { - "description": "Unique name for the rule." - }, - "description": { - "description": "A short description about the rule." + "type": { + "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." }, - "priority": { - "description": "A numerical value to prioritize one of the rules from the list." + "field": { + "description": "To filter only the results but not the aggregations by field like an property identifier." }, - "invalid": { - "description": "When the boolean value is `true`, the rule is no more available for usage." + "value": { + "description": "To filter only the results but not the aggregations by value." } } }, - "availabilityRuleId": { - "description": "Unique identity of availability rule." - }, - "prices": { + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + }, "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." + "field": { + "description": "Sort the search results by field like an property identifier." }, - "quantityEnd": { - "description": "Ending range of quantity of an item." + "order": { + "description": "Sort the search results of orders by ascending or descending." }, - "price": { - "description": "Shipping method price after applied rules." + "naturalSorting": { + "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." + } + } + }, + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } + }, + "fields": { + "type": "array", + "description": "Fields which should be returned in the search result.", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" + } + } + }, + "NoneFieldsCriteria": { + "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", + "properties": { + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", + "type": "string" + }, + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } + }, + "query": { + "type": "string", + "description": "The query string to search for" + }, + "associations": { + "$ref": "#/components/schemas/Associations" + }, + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + }, + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } + }, + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" + } + } + }, + "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": [ + { + "$ref": "#/components/schemas/AggregationEntity" }, - "calculationRuleId": { - "description": "Unique identity of calculation rule." + { + "$ref": "#/components/schemas/SubAggregations" } - } - }, - "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." + { + "title": "AggregationFilter", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationFilter" }, - "fileExtension": { - "description": "Type of file indication. For example: jpeg, png." + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationTerms", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationTerms" }, - "fileSize": { - "description": "Size of the file media file uploaded." + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" }, - "title": { - "description": "Title name give to the media." + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationRange", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationRange" }, - "metaDataRaw": { - "description": "Details of the media file uploaded." + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + } + ] + }, + "SubAggregations": { + "type": "object", + "properties": { + "aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" }, - "alt": { - "description": "Alternate text for media." + { + "$ref": "#/components/schemas/AggregationEntity" }, - "url": { - "description": "Runtime field, cannot be used as part of the criteria." + { + "$ref": "#/components/schemas/AggregationFilter" }, - "fileName": { - "description": "Name of the media file uploaded." + { + "$ref": "#/components/schemas/AggregationTerms" }, - "mediaFolderId": { - "description": "Unique identity of media folder." + { + "$ref": "#/components/schemas/AggregationHistogram" }, - "private": { - "description": "Boolean value is `true` to keep the media display private." - } - } - }, - "tags": { - "properties": { - "name": { - "description": "Name of the tag." + { + "$ref": "#/components/schemas/AggregationRange" } - } + ] } } }, - "CartDelivery": { + "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", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" - } - } + "score": { + "type": "number" }, - "location": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] + "query": { + "oneOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "country": { - "$ref": "#/components/schemas/Country" + { + "$ref": "#/components/schemas/EqualsFilter" }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" + { + "$ref": "#/components/schemas/MultiNotFilter" }, - "state": { - "$ref": "#/components/schemas/CountryState" + { + "$ref": "#/components/schemas/RangeFilter" } - } + ] + } + }, + "additionalProperties": true + }, + "Sort": { + "type": "object", + "properties": { + "field": { + "type": "string" }, - "positions": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDeliveryPosition" - } + "order": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] }, - "shippingCosts": { - "$ref": "#/components/schemas/CalculatedPrice" + "naturalSorting": { + "type": "boolean" }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" + "type": { + "type": "string" } - } - }, - "NavigationType": { - "type": "string", - "enum": [ - "main-navigation", - "footer-navigation", - "service-navigation" + }, + "required": [ + "field", + "order" ] }, - "CrossSellingElementCollection": { + "Filters": { "type": "array", "items": { - "$ref": "#/components/schemas/CrossSellingElement" - }, - "properties": { - "total": { - "description": "Number of cross selling elements found." - } + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] } }, - "CartDeliveryPosition": { + "SimpleFilter": { "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" - } - } + "type": { + "type": "string", + "enum": [ + "contains", + "equalsAny", + "prefix", + "suffix" + ] }, - "identifier": { + "field": { "type": "string" }, - "lineItem": { - "$ref": "#/components/schemas/LineItem" - }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" + "value": { + "type": "string" } - } + }, + "required": [ + "type", + "field", + "value" + ] }, - "CustomerAddressRead": { + "EqualsFilter": { "type": "object", "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true - }, - "customerId": { + "type": { "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true + "enum": [ + "equals" + ] }, - "createdAt": { - "type": "string", - "format": "date-time" + "field": { + "type": "string" }, - "updatedAt": { + "value": { "oneOf": [ { - "type": "string", - "format": "date-time" + "type": "string" }, { - "type": "null" - } - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "oneOf": [ + "type": "number" + }, { - "$ref": "#/components/schemas/CountryState" + "type": "boolean" }, { "type": "null" } ] - }, - "salutation": { - "$ref": "#/components/schemas/Salutation" } }, "required": [ - "customerId", - "createdAt", - "updatedAt", - "country", - "salutation" + "type", + "field", + "value" ] }, - "CartPriceQuantity": { + "MultiNotFilter": { "type": "object", "properties": { - "apiAlias": { + "type": { "type": "string", "enum": [ - "cart_price_quantity" + "multi", + "not" ] }, - "isCalculated": { - "type": "boolean" - }, - "listPrice": { - "$ref": "#/components/schemas/CartListPrice" + "operator": { + "type": "string", + "enum": [ + "and", + "or", + "nor", + "nand" + ] }, - "price": { - "type": "number" + "queries": { + "$ref": "#/components/schemas/Filters" + } + }, + "required": [ + "type", + "operator", + "queries" + ] + }, + "RangeFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "range" + ] }, - "quantity": { - "type": "number" + "field": { + "type": "string" }, - "regulationPrice": { + "parameters": { + "type": "object", "properties": { - "price": { - "type": "number", - "format": "float" - } - }, - "type": "object" - }, - "taxRules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } + "gte": { + "type": "number" + }, + "gt": { + "type": "number" + }, + "lte": { + "type": "number" + }, + "lt": { + "type": "number" } } - }, - "type": { - "type": "string" } }, "required": [ - "apiAlias" + "type", + "field", + "parameters" ] }, "BreadcrumbCollection": { @@ -15772,22 +16177,65 @@ } ], "paths": { - "/search": { - "post": { + "/sitemap": { + "get": { "tags": [ - "Product" + "Sitemap & Routes" ], - "summary": "Search for products", - "description": "Performs a search for products which can be used to display a product listing.", - "operationId": "searchPage", + "summary": "Fetch sitemaps", + "description": "Fetches a list of compressed sitemap files, which are often used by search engines.", + "operationId": "readSitemap", "parameters": [ { - "name": "p", - "in": "query", - "description": "The page number to fetch.", + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", "required": false, "schema": { - "type": "integer" + "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" + } + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/sitemap/{filePath}": { + "get": { + "tags": [ + "Sitemap & Routes" + ], + "summary": "Download sitemap file", + "description": "Downloads the sitemap file from the configured sitemap storage.", + "operationId": "getSitemapFile", + "parameters": [ + { + "name": "filePath", + "in": "path", + "description": "The path to the sitemap file", + "required": true, + "schema": { + "type": "string", + "pattern": ".*\\.(xml|gz)$" } }, { @@ -15799,23 +16247,73 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + } + ], + "responses": { + "200": { + "description": "Returns the blob to download.", + "content": { + "application/xml": { + "schema": { + "type": "string", + "format": "binary" + } + }, + "application/gzip": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/search-suggest": { + "post": { + "tags": [ + "Product" + ], + "summary": "Search for products (suggest)", + "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", + "operationId": "searchSuggest", + "parameters": [ + { + "name": "p", + "in": "query", + "description": "The page number to fetch.", + "required": false, + "schema": { + "type": "integer" + } }, { - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "name": "sw-language-id", "in": "header", - "name": "sw-include-seo-urls", + "description": "Instructs Shopware to return the response in the given language.", "required": false, "schema": { - "type": "boolean" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } ], "requestBody": { + "required": true, "content": { "application/json": { "schema": { "allOf": [ { + "required": [ + "search" + ], "properties": { "search": { "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", @@ -15837,7 +16335,7 @@ }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", + "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", "content": { "application/json": { "schema": { @@ -16379,108 +16877,57 @@ ] } }, - "/navigation/{activeId}/{rootId}": { + "/handle-payment": { "post": { "tags": [ - "Category", - "Endpoints supporting Criteria " - ], - "summary": "Fetch a navigation menu", - "description": "This endpoint returns categories that can be used as a page navigation. You can either return them as a tree or as a flat list. You can also control the depth of the tree.\n\n Instead of passing uuids, you can also use one of the following aliases for the activeId and rootId parameters to get the respective navigations of your sales channel.\n\n * main-navigation\n * service-navigation\n * footer-navigation", - "operationId": "readNavigation", - "parameters": [ - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "activeId", - "in": "path", - "description": "Identifier of the active category in the navigation tree (if not used, just set to the same as rootId).", - "required": true, - "schema": { - "oneOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "$ref": "#/components/schemas/NavigationType" - } - ] - } - }, - { - "name": "rootId", - "in": "path", - "description": "Identifier of the root category for your desired navigation tree. You can use it to fetch sub-trees of your navigation tree.", - "required": true, - "schema": { - "oneOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "$ref": "#/components/schemas/NavigationType" - } - ] - } - } + "Payment & Shipping" ], + "summary": "Initiate a payment for an order", + "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order.", + "operationId": "handlePaymentMethod", "requestBody": { "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/NoneFieldsCriteria" + "required": [ + "orderId" + ], + "properties": { + "orderId": { + "description": "Identifier of an order", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - { - "properties": { - "depth": { - "description": "Determines the depth of fetched navigation levels.", - "type": "integer", - "format": "int32" - }, - "buildTree": { - "description": "Return the categories as a tree or as a flat list.", - "type": "array", - "items": { - "type": "object" - } - } - }, - "type": "object" + "finishUrl": { + "description": "URL to which the client should be redirected after successful payment", + "type": "string" + }, + "errorUrl": { + "description": "URL to which the client should be redirected after erroneous payment", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "All available navigations", + "description": "Redirect to external payment provider", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/NavigationRouteResponse" + "type": "object", + "properties": { + "redirectUrl": { + "type": "string" + } + }, + "required": [ + "redirectUrl" + ] } } } @@ -16493,15 +16940,64 @@ ] } }, - "/contact-form": { + "/product-export/{accessKey}/{fileName}": { + "get": { + "tags": [ + "Product" + ], + "summary": "Export product export", + "operationId": "readProductExport", + "parameters": [ + { + "name": "accessKey", + "in": "path", + "description": "Access Key", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "fileName", + "in": "path", + "description": "File Name", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/cms/{id}": { "post": { "tags": [ "Content" ], - "summary": "Submit a contact form message", - "description": "Used for submitting contact forms. Be aware that there can be more required fields, depending on the system settings.", - "operationId": "sendContactMail", + "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", @@ -16514,72 +17010,40 @@ } ], "requestBody": { - "required": true, "content": { "application/json": { "schema": { - "required": [ - "email", - "subject", - "comment" - ], - "properties": { - "salutationId": { - "description": "Identifier of the salutation. Use `/api/salutation` endpoint to fetch possible values.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "description": "Firstname. This field may be required depending on the system settings.", - "type": "string" - }, - "lastName": { - "description": "Lastname. This field may be required depending on the system settings.", - "type": "string" - }, - "email": { - "description": "Email address", - "type": "string" - }, - "phone": { - "description": "Phone. This field may be required depending on the system settings.", - "type": "string" - }, - "subject": { - "description": "The subject of the contact form.", - "type": "string" - }, - "comment": { - "description": "The message of the contact form", - "type": "string" - }, - "navigationId": { - "description": "Identifier of the navigation page. Can be used to override the configuration.\nTake a look at the settings of a category containing a concat form in the administration.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "slotId": { - "description": "Identifier of the cms element", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "cmsPageType": { - "description": "Type of the content management page", - "type": "string" + "allOf": [ + { + "properties": { + "slots": { + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", + "type": "string" + } + }, + "type": "object" }, - "entityName": { - "description": "Entity name for slot config", - "type": "string" + { + "$ref": "#/components/schemas/ProductListingCriteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Message sent successful." + "description": "The loaded cms page", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CmsPage" + } + } + } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -16589,20 +17053,43 @@ ] } }, - "/category": { - "post": { + "/breadcrumb/{id}": { + "get": { "tags": [ - "Category", - "Endpoints supporting Criteria " + "Experimental", + "Breadcrumb" ], - "summary": "Fetch a list of categories", - "description": "Perform a filtered search for categories.", - "operationId": "readCategoryList", + "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": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", + "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", @@ -16610,45 +17097,19 @@ } } ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } - } - } - }, "responses": { "200": { - "description": "Entity search result containing categories.", + "description": "Search result containing SeoUrl\\'s to be used as breadcrumb.", "content": { "application/json": { "schema": { - "allOf": [ - { - "type": "object", - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - } - } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/BreadcrumbCollection" } } } + }, + "400": { + "$ref": "#/components/responses/400" } }, "security": [ @@ -16658,15 +17119,15 @@ ] } }, - "/category/{navigationId}": { + "/navigation/{activeId}/{rootId}": { "post": { "tags": [ "Category", "Endpoints supporting Criteria " ], - "summary": "Fetch a single category", - "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.", - "operationId": "readCategory", + "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", @@ -16688,34 +17149,65 @@ } }, { - "name": "navigationId", + "name": "activeId", "in": "path", - "description": "Identifier of the category to be fetched", + "description": "Identifier of the active category in the navigation tree (if not used, just set to the same as rootId).", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "oneOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "$ref": "#/components/schemas/NavigationType" + } + ] } }, { - "name": "slots", - "in": "query", - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", + "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": { - "type": "string" + "oneOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "$ref": "#/components/schemas/NavigationType" + } + ] } } ], "requestBody": { + "required": true, "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/Criteria" + "$ref": "#/components/schemas/NoneFieldsCriteria" }, { - "$ref": "#/components/schemas/ProductListingCriteria" + "properties": { + "depth": { + "description": "Determines the depth of fetched navigation levels.", + "type": "integer", + "format": "int32" + }, + "buildTree": { + "description": "Return the categories as a tree or as a flat list.", + "type": "array", + "items": { + "type": "object" + } + } + }, + "type": "object" } ] } @@ -16724,11 +17216,11 @@ }, "responses": { "200": { - "description": "The loaded category with cms page", + "description": "All available navigations", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Category" + "$ref": "#/components/schemas/NavigationRouteResponse" } } } @@ -16741,76 +17233,77 @@ ] } }, - "/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", - "required": [ - "orderId" - ] - } - } - } - }, + "/_info/routes": { + "get": { + "summary": "Get API routes", + "operationId": "getRoutes", "responses": { "200": { - "description": "Returns the state of the state machine\n\n example: More information about the state machine can be found in the corresponding guide: [Using the state machine](https://developer.shopware.com/docs/guides/plugins/plugins/checkout/order/using-the-state-machine)", + "description": "Successful operation", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/StateMachineState" + "type": "object", + "required": [ + "endpoints" + ], + "properties": { + "endpoints": { + "type": "array", + "items": { + "type": "object", + "required": [ + "methods", + "path" + ], + "properties": { + "methods": { + "type": "array", + "items": { + "type": "string" + } + }, + "path": { + "type": "string" + } + } + } + } + } } } } } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] + } } }, - "/order": { + "/document/download/{documentId}/{deepLinkCode}": { "post": { "tags": [ - "Order", + "Document", "Endpoints supporting Criteria " ], - "summary": "Fetch a list of orders", - "description": "List orders of a customer.", - "operationId": "readOrder", + "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", @@ -16823,22 +17316,13 @@ } ], "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/NoneFieldsCriteria" - }, - { - "properties": { - "checkPromotion": { - "description": "Check if the payment method of the order is still changeable.", - "type": "boolean" - } - }, - "type": "object" + "$ref": "#/components/schemas/Criteria" } ] } @@ -16847,11 +17331,11 @@ }, "responses": { "200": { - "description": "An array of orders and an indicator if the payment of the order can be changed.", + "description": "Returns the document information and blob to download.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OrderRouteResponse" + "$ref": "#/components/schemas/Document" } } } @@ -16865,14 +17349,15 @@ ] } }, - "/order/payment": { + "/salutation": { "post": { "tags": [ - "Order" + "System & Context", + "Endpoints supporting Criteria " ], - "summary": "Update the payment method of an order", - "description": "Changes the payment method of a specific order. You can use the /order route to find out if the payment method of an order can be changed - take a look at the `paymentChangeable`- array in the response.", - "operationId": "orderSetPayment", + "summary": "Fetch salutations", + "description": "Fetches salutations with a criteria obj.", + "operationId": "readSalutation", "parameters": [ { "name": "sw-language-id", @@ -16886,38 +17371,41 @@ } ], "requestBody": { - "required": true, + "required": false, "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}$" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Successfully updated the payment method of the order.", + "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" + } + ] } } } @@ -16925,39 +17413,20 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/order/download/{orderId}/{downloadId}": { + "/checkout/cart": { "get": { "tags": [ - "Order" + "Cart" ], - "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 or create a cart", + "description": "Used to fetch the current cart or for creating a new one.", + "operationId": "readCart", "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", @@ -16971,12 +17440,11 @@ ], "responses": { "200": { - "description": "An arbitrary binary file.", + "description": "Cart", "content": { - "application/octet-stream": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/Cart" } } } @@ -16984,39 +17452,45 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] + } + ] + }, + "delete": { + "tags": [ + "Cart" + ], + "summary": "Delete a cart", + "description": "This route deletes the cart of the customer.", + "operationId": "deleteCart", + "responses": { + "204": { + "description": "Successfully deleted the cart", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] } ] } }, - "/document/download/{documentId}/{deepLinkCode}": { + "/checkout/cart/line-item": { "post": { "tags": [ - "Document", - "Endpoints supporting Criteria " + "Cart" ], - "summary": "Download generated document", - "description": "Returns blob file of a generated document to download.", - "operationId": "download", + "summary": "Add items to the cart", + "description": "This route adds items to the cart. An item can be a product or promotion for example. They are referenced by the `referencedId`-parameter.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#adding-new-items-to-the-cart)", + "operationId": "addLineItem", "parameters": [ - { - "name": "documentId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "deepLinkCode", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, { "name": "sw-language-id", "in": "header", @@ -17029,26 +17503,21 @@ } ], "requestBody": { - "required": false, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] + "$ref": "#/components/schemas/CartItems" } } } }, "responses": { "200": { - "description": "Returns the document information and blob to download.", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Document" + "$ref": "#/components/schemas/Cart" } } } @@ -17056,21 +17525,32 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] - } - }, - "/payment-method": { - "post": { + }, + "delete": { "tags": [ - "Payment Method", - "Endpoints supporting Criteria " + "Cart" ], - "summary": "Loads all available payment methods", - "operationId": "readPaymentMethod", + "summary": "Remove items from the cart", + "description": "DEPRECATED: use removeLineItem instead. This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", + "operationId": "removeLineItemDeprecated", + "deprecated": true, "parameters": [ + { + "name": "ids", + "in": "query", + "description": "A list of product identifiers.", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + }, { "name": "sw-language-id", "in": "header", @@ -17082,43 +17562,13 @@ } } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } - } - } - }, "responses": { "200": { - "description": "", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/PaymentMethod" - } - } - }, - "type": "object" + "$ref": "#/components/schemas/Cart" } } } @@ -17129,17 +17579,14 @@ "ApiKey": [] } ] - } - }, - "/language": { - "post": { + }, + "patch": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Cart" ], - "summary": "Fetch languages", - "description": "Perform a filtered search for languages.", - "operationId": "readLanguages", + "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", @@ -17153,44 +17600,21 @@ } ], "requestBody": { - "required": false, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] + "$ref": "#/components/schemas/CartItems" } } } }, "responses": { "200": { - "description": "Entity search result containing languages.", + "description": "The updated 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/Cart" } } } @@ -17203,43 +17627,19 @@ ] } }, - "/breadcrumb/{id}": { - "get": { + "/checkout/cart/line-item/delete": { + "post": { "tags": [ - "Experimental", - "Breadcrumb" + "Cart" ], - "summary": "Fetch a breadcrumb", - "description": "Perform search to get category or product breadcrumb. \n\nExperimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", - "operationId": "readBreadcrumb", + "summary": "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": "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", + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", "required": false, "schema": { "type": "string", @@ -17247,19 +17647,40 @@ } } ], + "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": "Search result containing SeoUrl\\'s to be used as breadcrumb.", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BreadcrumbCollection" + "$ref": "#/components/schemas/Cart" } } } - }, - "400": { - "$ref": "#/components/responses/400" } }, "security": [ @@ -17269,15 +17690,14 @@ ] } }, - "/country": { + "/checkout/order": { "post": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Order" ], - "summary": "Fetch countries", - "description": "Perform a filtered search for countries", - "operationId": "readCountry", + "summary": "Create an order from a cart", + "description": "Creates a new order from the current cart and deletes the cart.\n\nIf you are using the [prepared payment flow](https://developer.shopware.com/docs/concepts/commerce/checkout-concept/payments#2.1-prepare-payment-optional), this endpoint also receives additional transaction details. The exact name of the parameters depends on the implementation of the corresponding *payment handler*.", + "operationId": "createOrder", "parameters": [ { "name": "sw-language-id", @@ -17291,41 +17711,122 @@ } ], "requestBody": { - "required": false, + "description": "Contains additional metadata which is stored together with the order. It can also contain payment transaction details.", "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "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": "Entity search result containing countries.", + "description": "Order", "content": { "application/json": { "schema": { - "allOf": [ - { + "$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/Country" + "$ref": "#/components/schemas/PaymentMethod" } } }, "type": "object" }, - { - "$ref": "#/components/schemas/EntitySearchResult" + "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" + } + } + } } - ] + } } } } @@ -17338,22 +17839,24 @@ ] } }, - "/app-system/{name}/generate-token": { + "/currency": { "post": { "tags": [ - "App system" + "System & Context", + "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 currencies", + "description": "Perform a filtered search for currencies.", + "operationId": "readCurrency", "parameters": [ { - "in": "path", - "name": "name", - "required": true, - "description": "Name of the app", + "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}$" } } ], @@ -17362,29 +17865,24 @@ "content": { "application/json": { "schema": { - "type": "object" + "allOf": [ + { + "$ref": "#/components/schemas/NoneFieldsCriteria" + } + ] } } } }, "responses": { "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "token": { - "type": "string" - }, - "expires": { - "type": "string", - "format": "date-time" - }, - "shopId": { - "type": "string" - } + "description": "Entity search result containing currencies.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Currency" } } } @@ -17398,25 +17896,16 @@ ] } }, - "/landing-page/{landingPageId}": { + "/seo-url": { "post": { "tags": [ - "Content", + "Sitemap & Routes", "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", + "summary": "Fetch SEO routes", + "description": "Perform a filtered search for seo urls.", + "operationId": "readSeoUrl", "parameters": [ - { - "name": "landingPageId", - "in": "path", - "description": "Identifier of the landing page.", - "required": true, - "schema": { - "type": "string" - } - }, { "name": "sw-language-id", "in": "header", @@ -17429,28 +17918,13 @@ } ], "requestBody": { + "required": false, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Criteria" - }, - { - "allOf": [ - { - "properties": { - "slots": { - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/ProductListingCriteria" - } - ] } ] } @@ -17459,11 +17933,29 @@ }, "responses": { "200": { - "description": "The loaded landing page with cms page", + "description": "Entity search result containing seo urls.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/LandingPage" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" + } + } + }, + "type": "object", + "required": [ + "elements" + ] + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -17479,128 +17971,77 @@ ] } }, - "/newsletter/confirm": { + "/shipping-method": { "post": { "tags": [ - "Newsletter" + "Payment & Shipping", + "Endpoints supporting Criteria " ], - "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": [ + "summary": "Fetch shipping methods", + "description": "Perform a filtered search for shipping methods.", + "operationId": "readShippingMethod", + "parameters": [ { - "ApiKey": [] + "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}$" + } } - ] - } - }, - "/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, + "required": false, "content": { "application/json": { "schema": { - "required": [ - "email", - "option", - "storefrontUrl" - ], - "properties": { - "email": { - "description": "Email address that will receive the confirmation and the newsletter.", - "type": "string" - }, - "option": { - "description": "Defines what should be done.", - "type": "string" - }, - "storefrontUrl": { - "description": "Url of the storefront of the shop. This will be used for generating the link to the /newsletter/confirm inside the confirm email.", - "type": "string" - }, - "salutationId": { - "description": "Identifier of the salutation.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "description": "First name", - "type": "string" - }, - "lastName": { - "description": "Last name", - "type": "string" - }, - "street": { - "description": "Street", - "type": "string" - }, - "city": { - "description": "City", - "type": "string" - }, - "zipCode": { - "description": "Zip code", - "type": "string" - }, - "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" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Success" + "description": "", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "required": [ + "elements" + ], + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingMethod" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } } }, "security": [ @@ -17610,28 +18051,30 @@ ] } }, - "/newsletter/unsubscribe": { + "/app-system/{name}/generate-token": { "post": { "tags": [ - "Newsletter" + "App system" ], - "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" - } - }, + "summary": "Generate JWT token for app system backend", + "description": "Generate JWT token for authenticated communication with the app server", + "operationId": "generateJWTAppSystemAppServer", + "parameters": [ + { + "in": "path", + "name": "name", + "required": true, + "description": "Name of the app", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { "type": "object" } } @@ -17639,7 +18082,26 @@ }, "responses": { "200": { - "description": "Unsubscribing was successful." + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "token": { + "type": "string" + }, + "expires": { + "type": "string", + "format": "date-time" + }, + "shopId": { + "type": "string" + } + } + } + } + } } }, "security": [ @@ -17649,19 +18111,19 @@ ] } }, - "/cms/{id}": { + "/country-state/{countryId}": { "post": { "tags": [ - "Content" + "System & Context", + "Endpoints supporting Criteria " ], - "summary": "Fetch and resolve a CMS page", - "description": "Loads a content management page by its identifier and resolve the slot data. This could be media files, product listing and so on.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.", - "operationId": "readCms", + "summary": "Fetch the states of a country", + "description": "Perform a filtered search the states for a country", + "operationId": "readCountryState", "parameters": [ { - "name": "id", + "name": "countryId", "in": "path", - "description": "Identifier of the CMS page to be resolved", "required": true, "schema": { "type": "string", @@ -17680,21 +18142,13 @@ } ], "requestBody": { + "required": false, "content": { "application/json": { "schema": { "allOf": [ { - "properties": { - "slots": { - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/ProductListingCriteria" + "$ref": "#/components/schemas/Criteria" } ] } @@ -17703,17 +18157,29 @@ }, "responses": { "200": { - "description": "The loaded cms page", + "description": "Entity search result containing countries.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CmsPage" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CountryState" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } - }, - "404": { - "$ref": "#/components/responses/404" } }, "security": [ @@ -17723,34 +18189,82 @@ ] } }, - "/handle-payment": { + "/contact-form": { "post": { "tags": [ - "Payment & Shipping" + "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": "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" + "email", + "subject", + "comment" ], "properties": { - "orderId": { - "description": "Identifier of an order", + "salutationId": { + "description": "Identifier of the salutation. Use `/api/salutation` endpoint to fetch possible values.", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "finishUrl": { - "description": "URL to which the client should be redirected after successful payment", + "firstName": { + "description": "Firstname. This field may be required depending on the system settings.", "type": "string" }, - "errorUrl": { - "description": "URL to which the client should be redirected after erroneous payment", + "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" } }, @@ -17761,22 +18275,62 @@ }, "responses": { "200": { - "description": "Redirect to external payment provider", + "description": "Message sent successful." + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/media": { + "post": { + "tags": [ + "Content" + ], + "summary": "Fetch and resolve Media Entities", + "description": "Fetch one or multiple Media Entities with the corresponding Identifier.", + "operationId": "readMedia", + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "ids": { + "description": "Identifier (UUID) of the media entity to be fetched.", + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + }, + "type": "object", + "required": [ + "ids" + ] + } + } + } + }, + "responses": { + "200": { + "description": "The loaded MediaCollection containing the requested Media Entities.", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "type": "string" - } - }, - "required": [ - "redirectUrl" - ] + "type": "array", + "items": { + "$ref": "#/components/schemas/Media" + } } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -18074,16 +18628,63 @@ ], "properties": { "password": { - "description": "Current password of the customer", - "type": "string" - }, - "newPassword": { + "description": "Current password of the customer", + "type": "string" + }, + "newPassword": { + "description": "New Password for the customer", + "type": "string" + }, + "newPasswordConfirm": { + "description": "Confirmation of the new password", + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Returns a success response indicating a successful update.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/account/convert-guest": { + "post": { + "tags": [ + "Profile" + ], + "summary": "Convert a guest customer to a registered customer", + "description": "Takes a password to convert a guest customer to a registered customer. The customer can then log in with the provided password in the future.", + "operationId": "convertGuest", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "password" + ], + "properties": { + "password": { "description": "New Password for the customer", "type": "string" - }, - "newPasswordConfirm": { - "description": "Confirmation of the new password", - "type": "string" } }, "type": "object" @@ -18951,44 +19552,24 @@ ] } }, - "/_info/openapi3.json": { + "/customer-group-registration/config/{customerGroupId}": { "get": { "tags": [ - "System Info & Health Check" + "Login & Registration" ], - "summary": "Get OpenAPI Specification", - "description": "Get information about the store API in OpenAPI format.", - "operationId": "api-info", + "summary": "Fetch registration settings for customer group", + "operationId": "getCustomerGroupRegistrationInfo", "parameters": [ { - "name": "type", - "in": "query", - "description": "Type of the api", + "name": "customerGroupId", + "in": "path", + "description": "Customer group id", + "required": true, "schema": { "type": "string", - "enum": [ - "jsonapi", - "json" - ] + "pattern": "^[0-9a-f]{32}$" } - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/OpenApi3" - } - } - } - }, - "/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", @@ -19002,36 +19583,11 @@ ], "responses": { "200": { - "description": "Cart", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Cart" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Cart" - ], - "summary": "Delete a cart", - "description": "This route deletes the cart of the customer.", - "operationId": "deleteCart", - "responses": { - "204": { - "description": "Successfully deleted the cart", + "description": "Returns the customer group including registration settings.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/CustomerGroup" } } } @@ -19044,14 +19600,15 @@ ] } }, - "/checkout/cart/line-item": { + "/country": { "post": { "tags": [ - "Cart" + "System & Context", + "Endpoints supporting Criteria " ], - "summary": "Add items to the cart", - "description": "This route adds items to the cart. An item can be a product or promotion for example. They are referenced by the `referencedId`-parameter.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#adding-new-items-to-the-cart)", - "operationId": "addLineItem", + "summary": "Fetch countries", + "description": "Perform a filtered search for countries", + "operationId": "readCountry", "parameters": [ { "name": "sw-language-id", @@ -19065,21 +19622,41 @@ } ], "requestBody": { + "required": false, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CartItems" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] } } } }, "responses": { "200": { - "description": "The updated cart.", + "description": "Entity search result containing countries.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Country" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -19090,93 +19667,52 @@ "ApiKey": [] } ] - }, - "delete": { + } + }, + "/_info/openapi3.json": { + "get": { "tags": [ - "Cart" + "System Info & Health Check" ], - "summary": "Remove items from the cart", - "description": "DEPRECATED: use removeLineItem instead. This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", - "operationId": "removeLineItemDeprecated", - "deprecated": true, + "summary": "Get OpenAPI Specification", + "description": "Get information about the store API in OpenAPI format.", + "operationId": "api-info", "parameters": [ { - "name": "ids", + "name": "type", "in": "query", - "description": "A list of product identifiers.", - "required": true, - "schema": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "description": "Type of the api", "schema": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "enum": [ + "jsonapi", + "json" + ] } } ], "responses": { "200": { - "description": "The updated cart.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Cart" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] + "$ref": "#/components/responses/OpenApi3" } - ] - }, - "patch": { + } + } + }, + "/context": { + "get": { "tags": [ - "Cart" - ], - "summary": "Update items in the cart", - "description": "This route updates items in the cart. A typical example is updating the quantity of an item.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#updating-items-in-the-cart)", - "operationId": "updateLineItem", - "parameters": [ - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } + "System & Context" ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CartItems" - } - } - } - }, + "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 updated cart.", + "description": "Returns the current context.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "$ref": "#/components/schemas/SalesChannelContext" } } } @@ -19187,45 +19723,59 @@ "ApiKey": [] } ] - } - }, - "/checkout/cart/line-item/delete": { - "post": { + }, + "patch": { "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, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } + "System & Context" ], + "summary": "Modify the current context", + "description": "Used for switching the context. A typical example would be changing the language or changing the currency.", + "operationId": "updateContext", "requestBody": { "required": true, "content": { "application/json": { "schema": { - "required": [ - "ids" - ], "properties": { - "ids": { - "description": "A list of product identifiers.", - "type": "array", - "minItems": 1, - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "currencyId": { + "description": "Currency", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "languageId": { + "description": "Language", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "billingAddressId": { + "description": "Billing Address", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingAddressId": { + "description": "Shipping Address", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "paymentMethodId": { + "description": "Payment Method", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingMethodId": { + "description": "Shipping Method", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryId": { + "description": "Country", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryStateId": { + "description": "Country State", + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, "type": "object" @@ -19235,14 +19785,7 @@ }, "responses": { "200": { - "description": "The updated cart.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Cart" - } - } - } + "$ref": "#/components/responses/ContextTokenResponse" } }, "security": [ @@ -19252,43 +19795,22 @@ ] } }, - "/checkout/order": { + "/context/gateway": { "post": { - "tags": [ - "Order" - ], - "summary": "Create an order from a cart", - "description": "Creates a new order from the current cart and deletes the cart.\n\nIf you are using the [prepared payment flow](https://developer.shopware.com/docs/concepts/commerce/checkout-concept/payments#2.1-prepare-payment-optional), this endpoint also receives additional transaction details. The exact name of the parameters depends on the implementation of the corresponding *payment handler*.", - "operationId": "createOrder", - "parameters": [ - { - "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": { - "description": "Contains additional metadata which is stored together with the order. It can also contain payment transaction details.", + "required": true, "content": { "application/json": { "schema": { + "required": [ + "appName" + ], "properties": { - "customerComment": { - "description": "Adds a comment from the customer to the order.", + "appName": { "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" + "data": { + "type": "object" } }, "type": "object" @@ -19296,102 +19818,21 @@ } } }, - "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", + "summary": "Call the context gateway", + "description": "Call the context gateway, which is used to manipulate certain aspects of context (e.g. selected payment methods, register customer, etc.).", + "operationId": "contextGateway", "responses": { "200": { - "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" - } - } - } - } - } - } - } - } + "$ref": "#/components/responses/ContextTokenResponse" + }, + "400": { + "description": "App server communication error" + }, + "422": { + "description": "Error provided by App Server with message to show customer" } }, "security": [ @@ -19401,15 +19842,15 @@ ] } }, - "/currency": { + "/category": { "post": { "tags": [ - "System & Context", + "Category", "Endpoints supporting Criteria " ], - "summary": "Fetch currencies", - "description": "Perform a filtered search for currencies.", - "operationId": "readCurrency", + "summary": "Fetch a list of categories", + "description": "Perform a filtered search for categories.", + "operationId": "readCategoryList", "parameters": [ { "name": "sw-language-id", @@ -19429,7 +19870,7 @@ "schema": { "allOf": [ { - "$ref": "#/components/schemas/NoneFieldsCriteria" + "$ref": "#/components/schemas/Criteria" } ] } @@ -19438,14 +19879,26 @@ }, "responses": { "200": { - "description": "Entity search result containing currencies.", + "description": "Entity search result containing categories.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Currency" - } + "allOf": [ + { + "type": "object", + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + } + } + } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] } } } @@ -19458,56 +19911,25 @@ ] } }, - "/customer/wishlist/add/{productId}": { + "/category/{navigationId}": { "post": { "tags": [ - "Wishlist" + "Category", + "Endpoints supporting Criteria " ], - "summary": "Add a product to a wishlist", - "description": "Adds a product to a customers wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "addProductOnWishlist", + "summary": "Fetch a single category", + "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.", + "operationId": "readCategory", "parameters": [ { - "name": "productId", - "in": "path", - "description": "Identifier of the product to be added.", - "required": true, + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - ], - "responses": { - "200": { - "description": "Returns a success response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } + "type": "boolean" } - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/customer/wishlist": { - "post": { - "tags": [ - "Wishlist", - "Endpoints supporting Criteria " - ], - "summary": "Fetch a wishlist", - "description": "Fetch a customer's wishlist. Products on the wishlist can be filtered using a criteria object.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "readCustomerWishlist", - "parameters": [ + }, { "name": "sw-language-id", "in": "header", @@ -19517,16 +19939,36 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "name": "navigationId", + "in": "path", + "description": "Identifier of the category to be fetched", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "slots", + "in": "query", + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", + "schema": { + "type": "string" + } } ], "requestBody": { - "required": false, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Criteria" + }, + { + "$ref": "#/components/schemas/ProductListingCriteria" } ] } @@ -19535,11 +19977,11 @@ }, "responses": { "200": { - "description": "", + "description": "The loaded category with cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WishlistLoadRouteResponse" + "$ref": "#/components/schemas/Category" } } } @@ -19547,48 +19989,68 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/customer/wishlist/merge": { + "/payment-method": { "post": { "tags": [ - "Wishlist" + "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}$" + } + } ], - "summary": "Create a wishlist for a customer", - "description": "Create a new wishlist for a logged in customer or extend the existing wishlist given a set of products.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * A customer can only have a single wishlist.\n * The wishlist feature has to be activated.", - "operationId": "mergeProductOnWishlist", "requestBody": { "required": true, "content": { "application/json": { "schema": { - "properties": { - "productIds": { - "description": "List product id", - "type": "array", - "items": { - "description": "product id", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Returns a success response.", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentMethod" + } + } + }, + "type": "object" } } } @@ -19596,150 +20058,165 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/customer/wishlist/delete/{productId}": { - "delete": { + "/landing-page/{landingPageId}": { + "post": { "tags": [ - "Wishlist" + "Content", + "Endpoints supporting Criteria " ], - "summary": "Remove a product from a wishlist", - "description": "Removes a product from a customer's wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "deleteProductOnWishlist", + "summary": "Fetch 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": "productId", + "name": "landingPageId", "in": "path", - "description": "The identifier of the product to be removed from the wishlist.", + "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}$" } } ], + "requestBody": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + }, + { + "allOf": [ + { + "properties": { + "slots": { + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/ProductListingCriteria" + } + ] + } + ] + } + } + } + }, "responses": { "200": { - "description": "Returns a success response indicating a successful removal.", + "description": "The loaded landing page with cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/LandingPage" } } } }, "404": { - "description": "The removal of the product failed. Probably because the product could not be found on the wishlist.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - } - } - } + "$ref": "#/components/responses/404" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/context": { - "get": { + "/search": { + "post": { "tags": [ - "System & Context" + "Product" ], - "summary": "Fetch the current context", - "description": "Fetches the current context. This includes for example the `customerGroup`, `currency`, `taxRules` and many more.", - "operationId": "readContext", - "responses": { - "200": { - "description": "Returns the current context.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SalesChannelContext" - } - } + "summary": "Search for products", + "description": "Performs a search for products which can be used to display a product listing.", + "operationId": "searchPage", + "parameters": [ + { + "name": "p", + "in": "query", + "description": "The page number to fetch.", + "required": false, + "schema": { + "type": "integer" } - } - }, - "security": [ + }, { - "ApiKey": [] + "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" + } } - ] - }, - "patch": { - "tags": [ - "System & Context" ], - "summary": "Modify the current context", - "description": "Used for switching the context. A typical example would be changing the language or changing the currency.", - "operationId": "updateContext", "requestBody": { - "required": true, "content": { "application/json": { "schema": { - "properties": { - "currencyId": { - "description": "Currency", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "languageId": { - "description": "Language", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "billingAddressId": { - "description": "Billing Address", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shippingAddressId": { - "description": "Shipping Address", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "paymentMethodId": { - "description": "Payment Method", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shippingMethodId": { - "description": "Shipping Method", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "allOf": [ + { + "properties": { + "search": { + "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", + "type": "string" + } + }, + "type": "object" }, - "countryId": { - "description": "Country", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + { + "$ref": "#/components/schemas/ProductListingCriteria" }, - "countryStateId": { - "description": "Country State", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + { + "$ref": "#/components/schemas/ProductListingFlags" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" + "description": "Returns a product listing containing all products and additional fields to display a listing.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + } } }, "security": [ @@ -19749,15 +20226,15 @@ ] } }, - "/salutation": { + "/language": { "post": { "tags": [ "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch salutations", - "description": "Fetches salutations with a criteria obj.", - "operationId": "readSalutation", + "summary": "Fetch languages", + "description": "Perform a filtered search for languages.", + "operationId": "readLanguages", "parameters": [ { "name": "sw-language-id", @@ -19786,7 +20263,7 @@ }, "responses": { "200": { - "description": "Entity search result containing salutations.", + "description": "Entity search result containing languages.", "content": { "application/json": { "schema": { @@ -19796,10 +20273,13 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Salutation" + "$ref": "#/components/schemas/Language" } } }, + "required": [ + "elements" + ], "type": "object" }, { @@ -19818,74 +20298,41 @@ ] } }, - "/search-suggest": { + "/newsletter/confirm": { "post": { "tags": [ - "Product" - ], - "summary": "Search for products (suggest)", - "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", - "operationId": "searchSuggest", - "parameters": [ - { - "name": "p", - "in": "query", - "description": "The page number to fetch.", - "required": false, - "schema": { - "type": "integer" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } + "Newsletter" ], + "summary": "Confirm a newsletter registration", + "description": "You have to use the hash from the link sent out via email to confirm the user registration.", + "operationId": "confirmNewsletter", "requestBody": { "required": true, "content": { "application/json": { "schema": { - "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" + "required": [ + "hash", + "em" + ], + "properties": { + "hash": { + "description": "Hash parameter from link the in the confirmation mail", + "type": "string" }, - { - "$ref": "#/components/schemas/ProductListingFlags" + "em": { + "description": "Email hash parameter from the link in the confirmation mail", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/ProductListingResult" - } - } - } + "description": "The newsletter confirmation was successful." } }, "security": [ @@ -19895,91 +20342,125 @@ ] } }, - "/_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" - } - } - } - } + "/newsletter/subscribe": { + "post": { + "tags": [ + "Newsletter" + ], + "summary": "Create or remove a newsletter subscription", + "description": "This route is used to create/remove/confirm a newsletter subscription.\n\nThe `option` property controls what should happen:\n* `direct`: The subscription is directly active and does not need a confirmation.\n* `subscribe`: An email will be send to the provided email address containing a link to the /newsletter/confirm route.\nThe subscription is only successful, if the /newsletter/confirm route is called with the generated hashes.\n* `unsubscribe`: The email address will be removed from the newsletter subscriptions.\n* `confirmSubscribe`: Confirms the newsletter subscription for the provided email address.", + "operationId": "subscribeToNewsletter", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "email", + "option", + "storefrontUrl" + ], + "properties": { + "email": { + "description": "Email address that will receive the confirmation and the newsletter.", + "type": "string" + }, + "option": { + "description": "Defines what should be done.", + "type": "string" + }, + "storefrontUrl": { + "description": "Url of the storefront of the shop. This will be used for generating the link to the /newsletter/confirm inside the confirm email.", + "type": "string" + }, + "salutationId": { + "description": "Identifier of the salutation.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "firstName": { + "description": "First name", + "type": "string" + }, + "lastName": { + "description": "Last name", + "type": "string" + }, + "street": { + "description": "Street", + "type": "string" + }, + "city": { + "description": "City", + "type": "string" + }, + "zipCode": { + "description": "Zip code", + "type": "string" + }, + "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" } } } - } - } - }, - "/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}$" - } - }, - { - "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": "Success" + } + }, + "security": [ + { + "ApiKey": [] } + ] + } + }, + "/newsletter/unsubscribe": { + "post": { + "tags": [ + "Newsletter" ], - "responses": { - "200": { - "description": "Returns the customer group including registration settings.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomerGroup" - } + "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": [] @@ -19987,25 +20468,15 @@ ] } }, - "/country-state/{countryId}": { + "/order/state/cancel": { "post": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Order" ], - "summary": "Fetch the states of a country", - "description": "Perform a filtered search the states for a country", - "operationId": "readCountryState", + "summary": "Cancel an order", + "description": "Cancels an order. The order state will be set to 'cancelled'.", + "operationId": "cancelOrder", "parameters": [ - { - "name": "countryId", - "in": "path", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, { "name": "sw-language-id", "in": "header", @@ -20018,14 +20489,20 @@ } ], "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "properties": { + "orderId": { + "description": "The identifier of the order to be canceled.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" } + }, + "type": "object", + "required": [ + "orderId" ] } } @@ -20033,26 +20510,11 @@ }, "responses": { "200": { - "description": "Entity search result containing countries.", + "description": "Returns the state of the state machine\n\n example: More information about the state machine can be found in the corresponding guide: [Using the state machine](https://developer.shopware.com/docs/guides/plugins/plugins/checkout/order/using-the-state-machine)", "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CountryState" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/StateMachineState" } } } @@ -20060,20 +20522,21 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/shipping-method": { + "/order": { "post": { "tags": [ - "Payment & Shipping", + "Order", "Endpoints supporting Criteria " ], - "summary": "Fetch shipping methods", - "description": "Perform a filtered search for shipping methods.", - "operationId": "readShippingMethod", + "summary": "Fetch a list of orders", + "description": "List orders of a customer.", + "operationId": "readOrder", "parameters": [ { "name": "sw-language-id", @@ -20087,13 +20550,64 @@ } ], "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/Criteria" + "$ref": "#/components/schemas/NoneFieldsCriteria" + }, + { + "properties": { + "checkPromotion": { + "description": "Check if the payment method of the order is still changeable.", + "type": "boolean" + }, + "filter": { + "type": "array", + "description": "Pass the deepLinkCode criteria filter to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "equals" + ] + }, + "field": { + "type": "string", + "enum": [ + "deepLinkCode" + ] + }, + "value": { + "type": "string" + } + }, + "required": [ + "type", + "field", + "value" + ] + } + ] + } + }, + "email": { + "description": "The email address of the customer. Pass this value to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", + "type": "string", + "format": "email" + }, + "zipcode": { + "description": "The zip/postal code of the billing address of the customer. Pass this value to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", + "type": "string" + } + }, + "type": "object" } ] } @@ -20102,37 +20616,11 @@ }, "responses": { "200": { - "description": "", + "description": "An array of orders and an indicator if the payment of the order can be changed.", "content": { "application/json": { "schema": { - "allOf": [ - { - "required": [ - "elements" - ], - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/OrderRouteResponse" } } } @@ -20140,58 +20628,20 @@ }, "security": [ { - "ApiKey": [] - } - ] - } - }, - "/product-export/{accessKey}/{fileName}": { - "get": { - "tags": [ - "Product" - ], - "summary": "Export product export", - "operationId": "readProductExport", - "parameters": [ - { - "name": "accessKey", - "in": "path", - "description": "Access Key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "fileName", - "in": "path", - "description": "File Name", - "required": true, - "schema": { - "type": "string" - } - } - ], - "responses": { - "200": { - "description": "" - } - }, - "security": [ - { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/sitemap": { - "get": { + "/order/payment": { + "post": { "tags": [ - "Sitemap & Routes" + "Order" ], - "summary": "Fetch sitemaps", - "description": "Fetches a list of compressed sitemap files, which are often used by search engines.", - "operationId": "readSitemap", + "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", @@ -20204,16 +20654,39 @@ } } ], + "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": "Returns a list of available sitemaps.", + "description": "Successfully updated the payment method of the order.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Sitemap" - } + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -20221,28 +20694,37 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/sitemap/{filePath}": { + "/order/download/{orderId}/{downloadId}": { "get": { "tags": [ - "Sitemap & Routes" + "Order" ], - "summary": "Download sitemap file", - "description": "Downloads the sitemap file from the configured sitemap storage.", - "operationId": "getSitemapFile", + "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": "filePath", + "name": "orderId", "in": "path", - "description": "The path to the sitemap file", "required": true, "schema": { "type": "string", - "pattern": ".*\\.(xml|gz)$" + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "downloadId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, { @@ -20258,15 +20740,9 @@ ], "responses": { "200": { - "description": "Returns the blob to download.", + "description": "An arbitrary binary file.", "content": { - "application/xml": { - "schema": { - "type": "string", - "format": "binary" - } - }, - "application/gzip": { + "application/octet-stream": { "schema": { "type": "string", "format": "binary" @@ -20277,62 +20753,8 @@ }, "security": [ { - "ApiKey": [] - } - ] - } - }, - "/media": { - "post": { - "tags": [ - "Content" - ], - "summary": "Fetch and resolve Media Entities", - "description": "Fetch one or multiple Media Entities with the corresponding Identifier.", - "operationId": "readMedia", - "requestBody": { - "content": { - "application/json": { - "schema": { - "properties": { - "ids": { - "description": "Identifier (UUID) of the media entity to be fetched.", - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - }, - "type": "object", - "required": [ - "ids" - ] - } - } - } - }, - "responses": { - "200": { - "description": "The loaded MediaCollection containing the requested Media Entities.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Media" - } - } - } - } - }, - "404": { - "$ref": "#/components/responses/404" - } - }, - "security": [ - { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } @@ -20461,15 +20883,55 @@ ] } }, - "/seo-url": { + "/customer/wishlist/add/{productId}": { "post": { "tags": [ - "Sitemap & Routes", + "Wishlist" + ], + "summary": "Add a product to a wishlist", + "description": "Adds a product to a customers wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "addProductOnWishlist", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Identifier of the product to be added.", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "responses": { + "200": { + "description": "Returns a success response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/customer/wishlist": { + "post": { + "tags": [ + "Wishlist", "Endpoints supporting Criteria " ], - "summary": "Fetch SEO routes", - "description": "Perform a filtered search for seo urls.", - "operationId": "readSeoUrl", + "summary": "Fetch a wishlist", + "description": "Fetch a customer's wishlist. Products on the wishlist can be filtered using a criteria object.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "readCustomerWishlist", "parameters": [ { "name": "sw-language-id", @@ -20498,40 +20960,119 @@ }, "responses": { "200": { - "description": "Entity search result containing seo urls.", + "description": "", "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } - } - }, - "type": "object", - "required": [ - "elements" - ] - }, - { - "$ref": "#/components/schemas/EntitySearchResult" + "$ref": "#/components/schemas/WishlistLoadRouteResponse" + } + } + } + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/customer/wishlist/merge": { + "post": { + "tags": [ + "Wishlist" + ], + "summary": "Create a wishlist for a customer", + "description": "Create a new wishlist for a logged in customer or extend the existing wishlist given a set of products.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * A customer can only have a single wishlist.\n * The wishlist feature has to be activated.", + "operationId": "mergeProductOnWishlist", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "properties": { + "productIds": { + "description": "List product id", + "type": "array", + "items": { + "description": "product id", + "type": "string", + "pattern": "^[0-9a-f]{32}$" } - ] + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Returns a success response.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/customer/wishlist/delete/{productId}": { + "delete": { + "tags": [ + "Wishlist" + ], + "summary": "Remove a product from a wishlist", + "description": "Removes a product from a customer's wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "deleteProductOnWishlist", + "parameters": [ + { + "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": { - "$ref": "#/components/responses/404" + "description": "The removal of the product failed. Probably because the product could not be found on the wishlist.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + } + } + } } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } From 452454ab1328113fba706030afb0a9dfe8ac4d35 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 14 Oct 2025 10:54:54 +0200 Subject: [PATCH 31/35] [create-pull-request] automated change (#345) Co-authored-by: shopwareBot --- storeapi.json | 14862 ++++++++++++++++++++++++++++-------------------- 1 file changed, 8645 insertions(+), 6217 deletions(-) diff --git a/storeapi.json b/storeapi.json index dce1f00..c008f6f 100644 --- a/storeapi.json +++ b/storeapi.json @@ -7,7 +7,7 @@ "name": "MIT", "url": "https://github.com/shopware/shopware/blob/trunk/LICENSE" }, - "version": "6.7.1.2" + "version": "6.7.3.0" }, "servers": [ { @@ -1218,6 +1218,7 @@ "required": [ "apiAlias", "slots", + "id", "position", "type", "sectionId" @@ -1434,6 +1435,7 @@ "required": [ "apiAlias", "blocks", + "id", "position", "type", "pageId" @@ -3750,6 +3752,9 @@ "name": { "type": "string" }, + "active": { + "type": "boolean" + }, "customFields": { "type": "object" }, @@ -3923,6 +3928,9 @@ "type": "string", "description": "Name of the language." }, + "active": { + "type": "boolean" + }, "customFields": { "type": "object", "description": "Additional fields that offer a possibility to add own fields for the different program-areas." @@ -4650,6 +4658,10 @@ "pattern": "^[0-9a-f]{32}$", "description": "Unique identity of media." }, + "mediaThumbnailSizeId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, "width": { "type": "integer", "format": "int64", @@ -5956,6 +5968,9 @@ "cover": { "$ref": "#/components/schemas/Media" }, + "product": { + "$ref": "#/components/schemas/Product" + }, "orderDeliveryPositions": { "type": "array", "items": { @@ -11331,605 +11346,675 @@ }, "type": "object" }, - "CartDeliveryInformation": { + "BreadcrumbCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Breadcrumb" + } + }, + "EntitySearchResult": { "type": "object", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_information" - ] + "entity": { + "type": "string" }, - "freeDelivery": { - "type": "boolean" + "total": { + "type": "integer", + "description": "The total number of found entities" }, - "deliveryTime": { + "aggregations": { + "type": "array", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", + "items": { + "type": "object" + } + }, + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." + }, + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." + } + } + }, + "CartDelivery": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { "type": "object", "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer" - }, - "max": { - "type": "integer" - }, - "unit": { - "type": "string" + "earliest": { + "type": "string", + "format": "date-time" }, + "latest": { + "type": "string", + "format": "date-time" + } + } + }, + "location": { + "type": "object", + "properties": { "apiAlias": { "type": "string", "enum": [ - "cart_delivery_time" + "cart_delivery_shipping_location" ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "state": { + "$ref": "#/components/schemas/CountryState" } } }, - "height": { - "type": "integer" - }, - "length": { - "type": "integer" - }, - "restockTime": { - "type": "integer" - }, - "stock": { - "type": "integer" - }, - "weight": { - "type": "integer" - }, - "width": { - "type": "integer" - } - }, - "required": [ - "apiAlias" - ] - }, - "CartItems": { - "type": "object", - "required": [ - "items" - ], - "properties": { - "items": { + "positions": { "type": "array", "items": { - "$ref": "#/components/schemas/LineItem" - }, - "properties": { - "id": { - "description": "Unique identity of cart item." - }, - "modified": { - "description": "When boolean value is `true`, the cart is said to be modified." - } + "$ref": "#/components/schemas/CartDeliveryPosition" } + }, + "shippingCosts": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" } } }, - "AccountNewsletterRecipient": { + "CookieGroupCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CookieGroup" + } + }, + "OrderRouteResponse": { "type": "object", "properties": { - "status": { - "type": "string", - "enum": [ - "undefined", - "notSet", - "direct", - "optIn", - "optOut" + "orders": { + "type": "object", + "allOf": [ + { + "type": "object", + "required": [ + "elements" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" + } + } + } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } ] }, - "apiAlias": { - "type": "string", - "enum": [ - "account_newsletter_recipient" - ] + "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": [ - "status", - "apiAlias" + "orders" ] }, - "AggregationEntity": { - "title": "AggregationEntity", + "ReferencePrice": { "type": "object", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", + "purchaseUnit": { + "type": "number" + }, + "referenceUnit": { + "type": "number" + }, + "unitName": { "type": "string" }, - "type": { - "description": "The type of aggregation", + "price": { + "type": "number" + }, + "apiAlias": { "type": "string", "enum": [ - "entity" + "cart_price_reference" ] }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/ListPrice" + }, + { + "type": "null" + } + ] }, - "definition": { - "description": "The entity definition e.g \"product_manufacturer\".", - "type": "string" + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } + }, + { + "type": "null" + } + ] + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" + }, + { + "type": "null" + } + ] } }, "required": [ - "name", - "type", - "field", - "definition" + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" ] }, - "AggregationFilter": { - "title": "AggregationFilter", + "SuccessResponse": { "type": "object", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "filter" - ] - }, - "filter": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Filters" - } + "success": { + "type": "boolean" } - }, - "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" + } + }, + "errors": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartError" + } + }, + { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "code": { + "type": "number" + }, + "key": { + "type": "string" + }, + "level": { + "type": "number" + }, + "message": { + "type": "string" + }, + "messageKey": { + "type": "string" + } + }, + "required": [ + "code", + "key", + "level", + "message", + "messageKey" + ] + } + } + ], + "properties": { + "key": { + "description": "Unique key for every message." + }, + "level": { + "description": "Types of level - Notice, warning and error. " + }, + "message": { + "description": "A persistent error passed from the shopping cart calculation processes to the user end." + } + } + }, + "deliveries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDelivery" + } + }, + "transactions": { + "description": "A list of all payment transactions associated with the current cart.", + "type": "array", + "items": { + "type": "object", + "properties": { + "paymentMethodId": { + "type": "string" + }, + "amount": { + "$ref": "#/components/schemas/CalculatedPrice" + } + } + }, + "properties": { + "paymentMethodId": { + "description": "Unique identity of payment method." + } } + }, + "modified": { + "type": "boolean", + "description": "It signifies any changes to cart." + }, + "customerComment": { + "description": "A comment that can be added to the cart.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "affiliateCode": { + "description": "An affiliate tracking code", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "campaignCode": { + "description": "A campaign tracking code", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart" + ] + }, + "id": { + "description": "Unique identity of cart." } }, "required": [ - "name", - "type", - "field" + "price", + "apiAlias" ] }, - "AggregationHistogram": { - "title": "AggregationHistogram", + "CookieEntryCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CookieEntry" + } + }, + "CrossSellingElement": { "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" - ] + "crossSelling": { + "$ref": "#/components/schemas/ProductCrossSelling" }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } }, - "interval": { - "description": "The interval of the histogram", - "type": "number" + "total": { + "type": "integer", + "format": "int32" }, - "format": { - "description": "The format of the histogram", - "type": "string" + "streamId": { + "type": "string", + "format": "uuid" }, - "timeZone": { - "description": "The timezone of the histogram", - "type": "string" + "apiAlias": { + "type": "string", + "enum": [ + "cross_selling_element" + ] } }, "required": [ - "name", - "type", - "field" + "crossSelling", + "products", + "total", + "apiAlias" ] }, - "AggregationRange": { - "title": "AggregationRange", - "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", + "CalculatedPrice": { "type": "object", + "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" + "unitPrice": { + "type": "number" }, - "type": { - "description": "The type of aggregation", + "quantity": { + "type": "number" + }, + "rawTotal": { + "type": "number" + }, + "totalPrice": { + "type": "number" + }, + "taxStatus": { "type": "string", "enum": [ - "range" + "net", + "tax-free" ] }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "ranges": { - "description": "The ranges of the aggregation", + "calculatedTaxes": { "type": "array", "items": { "type": "object", - "anyOf": [ - { - "type": "object", - "title": "From and to", - "properties": { - "from": { - "type": "number", - "description": "The lower bound of the range" - }, - "to": { - "type": "number", - "description": "The upper bound of the range" - } - }, - "required": [ - "from", - "to" + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" ] }, - { - "type": "object", - "title": "From only", - "properties": { - "from": { - "type": "string", - "description": "The lower bound of the range" - } - }, - "required": [ - "from" - ] + "tax": { + "type": "number" }, - { - "type": "object", - "title": "To only", - "properties": { - "to": { - "type": "string", - "description": "The upper bound of the range" - } - }, - "required": [ - "to" - ] + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" } + }, + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" ] } - } - }, - "required": [ - "name", - "type", - "field", - "ranges" - ] - }, - "Association": { - "additionalProperties": { - "$ref": "#/components/schemas/Association" - } - }, - "CartDelivery": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" + }, + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" }, - "latest": { - "type": "string", - "format": "date-time" + { + "type": "null" } - } + ] }, - "location": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" }, - "country": { - "$ref": "#/components/schemas/Country" + { + "type": "null" + } + ] + }, + "positionPrice": { + "type": "number" + }, + "netPrice": { + "type": "number" + }, + "regulationPrice": { + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" + { + "type": "null" + } + ] + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" }, - "state": { - "$ref": "#/components/schemas/CountryState" + { + "type": "null" } - } + ] }, - "positions": { + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] + }, + "taxRules": { "type": "array", + "description": "Currently active tax rules and/or rates", "items": { - "$ref": "#/components/schemas/CartDeliveryPosition" + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } + } } - }, - "shippingCosts": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "SuccessResponse": { - "type": "object", - "properties": { - "success": { - "type": "boolean" } - } + }, + "required": [ + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "referencePrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitPrice", + "positionPrice", + "netPrice", + "taxRules", + "rawTotal", + "taxStatus" + ] }, - "Price": { + "CartPriceReference": { "type": "object", - "description": "Price object", "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "", + "purchaseUnit": { "type": "number" }, - "net": { - "description": "", + "referenceUnit": { "type": "number" }, - "linked": { - "description": "", - "type": "boolean" + "unitName": { + "type": "string" }, - "listPrice": { - "description": "", - "type": "object", - "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "", - "type": "number" - }, - "net": { - "description": "", - "type": "number" + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_price_reference" + ] + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" }, - "linked": { - "description": "", - "type": "boolean" + { + "type": "null" } - }, - "required": [ - "gross", - "net" ] }, "regulationPrice": { - "description": "", - "type": "object", - "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "", - "type": "number" + "oneOf": [ + { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + } }, - "net": { - "description": "", - "type": "number" + { + "type": "null" + } + ] + }, + "hasRange": { + "type": "boolean" + }, + "variantId": { + "oneOf": [ + { + "type": "string", + "format": "^[0-9a-f]{32}$" }, - "linked": { - "description": "", - "type": "boolean" + { + "type": "null" } - }, - "required": [ - "gross", - "net" ] } }, "required": [ - "currencyId", - "gross", - "net" + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" ] }, - "FindProductVariantRouteResponse": { + "CartDeliveryPosition": { "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "foundCombination": { + "deliveryDate": { "type": "object", "properties": { - "variantId": { + "earliest": { "type": "string", - "pattern": "^[0-9a-f]{32}$", - "description": "Unique identity of a variant." + "format": "date-time" }, - "options": { - "type": "array", - "items": { - "type": "string" - }, - "description": "Available product variant options. For example, for variant `Size`, option would be `XS`, `S`, `M`, `L`, `XL`." + "latest": { + "type": "string", + "format": "date-time" } } - } - } - }, - "NavigationType": { - "type": "string", - "enum": [ - "main-navigation", - "footer-navigation", - "service-navigation" - ] - }, - "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", + "identifier": { "type": "string" }, + "lineItem": { + "$ref": "#/components/schemas/LineItem" + }, "price": { "$ref": "#/components/schemas/CalculatedPrice" - }, - "lineItems": { - "description": "All items within the cart", - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - }, - "errors": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "anyOf": [ - { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartError" - } - }, - { - "type": "object", - "additionalProperties": { - "type": "object", - "properties": { - "code": { - "type": "number" - }, - "key": { - "type": "string" - }, - "level": { - "type": "number" - }, - "message": { - "type": "string" - }, - "messageKey": { - "type": "string" - } - }, - "required": [ - "code", - "key", - "level", - "message", - "messageKey" - ] - } - } - ], - "properties": { - "key": { - "description": "Unique key for every message." - }, - "level": { - "description": "Types of level - Notice, warning and error. " - }, - "message": { - "description": "A persistent error passed from the shopping cart calculation processes to the user end." - } - } - }, - "deliveries": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDelivery" - } - }, - "transactions": { - "description": "A list of all payment transactions associated with the current cart.", - "type": "array", - "items": { - "type": "object", - "properties": { - "paymentMethodId": { - "type": "string" - }, - "amount": { - "$ref": "#/components/schemas/CalculatedPrice" - } - } - }, - "properties": { - "paymentMethodId": { - "description": "Unique identity of payment method." - } - } - }, - "modified": { - "type": "boolean", - "description": "It signifies any changes to cart." - }, - "customerComment": { - "description": "A comment that can be added to the cart.", + } + } + }, + "ProductListingFlags": { + "type": "object", + "description": "Additional flags for product listings", + "properties": { + "no-aggregations": { + "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", "oneOf": [ { "type": "string" @@ -11939,8 +12024,8 @@ } ] }, - "affiliateCode": { - "description": "An affiliate tracking code", + "only-aggregations": { + "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", "oneOf": [ { "type": "string" @@ -11949,719 +12034,963 @@ "type": "null" } ] + } + } + }, + "CartListPrice": { + "type": "object", + "description": "", + "properties": { + "discount": { + "type": "number" }, - "campaignCode": { - "description": "A campaign tracking code", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] + "percentage": { + "type": "number" + }, + "price": { + "type": "number" }, "apiAlias": { "type": "string", "enum": [ - "cart" + "cart_list_price" ] - }, - "id": { - "description": "Unique identity of cart." } }, "required": [ - "price", "apiAlias" ] }, - "CartError": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "NavigationRouteResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + }, "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" + "id": { + "description": "Unique identity of navigation route response." } - }, - "required": [ - "key", - "level", - "message", - "messageKey" - ] + } }, - "CalculatedPrice": { - "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", - "properties": { - "unitPrice": { - "type": "number" - }, - "quantity": { - "type": "number" - }, - "rawTotal": { - "type": "number" - }, - "totalPrice": { - "type": "number" - }, - "taxStatus": { - "type": "string", - "enum": [ - "net", - "tax-free" - ] - }, - "calculatedTaxes": { - "type": "array", - "items": { + "ShippingMethodPageRouteResponse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "deliveryTimeId": { + "type": "string" + }, + "deliveryTime": { "type": "object", "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] + "name": { + "type": "string" }, - "tax": { - "type": "number" + "min": { + "type": "integer", + "format": "int32" }, - "taxRate": { - "type": "number" + "max": { + "type": "integer", + "format": "int32" }, - "price": { - "type": "number" + "unit": { + "type": "string" } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } - }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" } - ] - }, - "positionPrice": { - "type": "number" - }, - "netPrice": { - "type": "number" - }, - "regulationPrice": { - "oneOf": [ - { + }, + "translations": { + "type": "array", + "items": { "type": "object", "properties": { - "price": { - "type": "number" + "shippingMethodId": { + "type": "string" }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] + "name": { + "type": "string" + }, + "description": { + "type": "string" } } - }, - { - "type": "null" - } - ] - }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "^[0-9a-f]{32}$" - }, - { - "type": "null" } - ] - }, - "apiAlias": { - "type": "string", - "enum": [ - "calculated_price" - ] - }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" + }, + "orderDeliveries": { + "type": "array", + "items": { + "type": "object", + "properties": { + "orderId": { + "type": "string" + }, + "shippingOrderAddressId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "shippingDateEarliest": { + "type": "string", + "format": "date-time" + }, + "shippingDateLatest": { + "type": "string", + "format": "date-time" + }, + "stateId": { + "type": "string" + } } } - } - } - }, - "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "referencePrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitPrice", - "positionPrice", - "netPrice", - "taxRules", - "rawTotal", - "taxStatus" - ] - }, - "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": [ - { + }, + "salesChannelDefaultAssignments": { + "type": "array", + "items": { "type": "object", "properties": { - "price": { - "type": "number" + "typeId": { + "type": "string" }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" } } - }, - { - "type": "null" - } - ] - }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "^[0-9a-f]{32}$" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" - ] - }, - "CrossSellingElement": { - "type": "object", - "properties": { - "crossSelling": { - "$ref": "#/components/schemas/ProductCrossSelling" - }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - }, - "total": { - "type": "integer", - "format": "int32" - }, - "streamId": { - "type": "string", - "format": "uuid" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cross_selling_element" - ] - } - }, - "required": [ - "crossSelling", - "products", - "total", - "apiAlias" - ] - }, - "AggregationMetrics": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "avg", - "count", - "max", - "min", - "stats", - "sum" - ] - }, - "field": { - "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "CartPriceReference": { - "type": "object", - "properties": { - "purchaseUnit": { - "type": "number" - }, - "referenceUnit": { - "type": "number" - }, - "unitName": { - "type": "string" - }, - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_reference" - ] - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" } - ] - }, - "regulationPrice": { - "oneOf": [ - { + }, + "salesChannels": { + "type": "array", + "items": { "type": "object", "properties": { - "price": { - "type": "number" + "typeId": { + "type": "string" }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - } - }, - { - "type": "null" - } - ] - }, - "hasRange": { - "type": "boolean" - }, - "variantId": { - "oneOf": [ - { - "type": "string", - "format": "^[0-9a-f]{32}$" - }, - { - "type": "null" + "languageId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "paymentMethodId": { + "type": "string" + }, + "shippingMethodId": { + "type": "string" + }, + "countryId": { + "type": "string" + }, + "navigationCategoryId": { + "type": "string" + }, + "navigationCategoryDepth": { + "type": "integer", + "format": "int32" + }, + "footerCategoryId": { + "type": "string" + }, + "serviceCategoryId": { + "type": "string" + }, + "name": { + "type": "string" + }, + "shortName": { + "type": "string" + }, + "accessKey": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "maintenance": { + "type": "boolean" + }, + "maintenanceIpWhitelist": { + "type": "string" + }, + "mailHeaderFooterId": { + "type": "string" + }, + "customerGroupId": { + "type": "string" + }, + "hreflangActive": { + "type": "boolean" + }, + "hreflangDefaultDomainId": { + "type": "string" + } + } } - ] + }, + "availabilityRule": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "priority": { + "type": "integer", + "format": "int32" + }, + "invalid": { + "type": "boolean" + } + } + }, + "availabilityRuleId": { + "type": "string" + }, + "prices": { + "type": "array", + "items": { + "type": "object", + "properties": { + "shippingMethodId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "ruleId": { + "type": "string" + }, + "calculation": { + "type": "integer", + "format": "int32" + }, + "quantityStart": { + "type": "number", + "format": "float" + }, + "quantityEnd": { + "type": "number", + "format": "float" + }, + "price": { + "type": "number", + "format": "float" + }, + "calculationRuleId": { + "type": "string" + } + } + } + }, + "mediaId": { + "type": "string" + }, + "media": { + "type": "object", + "properties": { + "userId": { + "type": "string" + }, + "mimeType": { + "type": "string" + }, + "fileExtension": { + "type": "string" + }, + "fileSize": { + "type": "integer", + "format": "int32" + }, + "title": { + "type": "string" + }, + "metaDataRaw": { + "type": "string" + }, + "mediaTypeRaw": { + "type": "string" + }, + "uploadedAt": { + "type": "string", + "format": "date-time" + }, + "alt": { + "type": "string" + }, + "url": { + "type": "string" + }, + "fileName": { + "type": "string" + }, + "mediaFolderId": { + "type": "string" + }, + "private": { + "type": "boolean" + }, + "thumbnailsRo": { + "type": "string" + } + } + }, + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + } + } + } + } } }, - "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" - ] - }, - "ProductListingFlags": { - "type": "object", - "description": "Additional flags for product listings", "properties": { - "no-aggregations": { - "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] + "name": { + "description": "Name of the shipping method." }, - "only-aggregations": { - "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - } - }, - "ProductListingCriteria": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "active": { + "description": "When boolean value is `true`, the shipping methods are available for selection in the storefront." }, - { - "type": "object", - "description": "Additional search parameters for product listings", + "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": { - "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" + "name": { + "description": "Name given to delivery time." }, - "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 + "min": { + "description": "Minimum delivery time taken." }, - "p": { - "description": "Search result page", - "type": "integer", - "default": 1 + "max": { + "description": "Maximum delivery time taken." }, - "manufacturer": { - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", - "type": "string" + "unit": { + "description": "Unit in which the delivery time is defined. For example, days or hours." + } + } + }, + "translations": { + "properties": { + "shippingMethodId": { + "description": "Unique identity of shipping method." }, - "min-price": { - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 + "name": { + "description": "Name of the shipping method." }, - "max-price": { - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 + "description": { + "description": "A short description of the shipping method." + } + } + }, + "orderDeliveries": { + "properties": { + "orderId": { + "description": "Unique identity of order." }, - "rating": { - "description": "Filter products with a minimum average rating.", - "type": "integer" + "shippingOrderAddressId": { + "description": "Unique identity of shipping order address." }, - "shipping-free": { - "description": "Filters products that are marked as shipping-free.", - "type": "boolean", - "default": false + "shippingMethodId": { + "description": "Unique identity of shipping method." }, - "properties": { - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", - "type": "string" + "shippingDateEarliest": { + "description": "Date and time of earliest delivery of products." }, - "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 + "shippingDateLatest": { + "description": "Date and time of latest delivery of products." }, - "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 + "stateId": { + "description": "Unique identity of state." + } + } + }, + "salesChannelDefaultAssignments": { + "properties": { + "stateId": { + "description": "Unique identity of state." }, - "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 + "languageId": { + "description": "Unique identity of language." }, - "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 + "currencyId": { + "description": "Unique identity of currency." }, - "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 + "paymentMethodId": { + "description": "Unique identity of payment method." }, - "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" + "shippingMethodId": { + "description": "Unique identity of shipping method." }, - "reduce-aggregations": { - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", - "oneOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ] - } - } - } - ], - "properties": { - "filter": { - "properties": { - "type": { - "description": "To filter the results and aggregations with filter types like ==, >=, etc." + "countryId": { + "description": "Unique identity of country." }, - "field": { - "description": "To filter the results and aggregations by field like an property identifier." + "navigationCategoryId": { + "description": "Unique identity of navigation category." }, - "value": { - "description": "To filter the results and aggregations by value." + "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." } } }, - "sort": { + "salesChannels": { "properties": { - "field": { - "description": "Sort the search results by field like an property identifier." + "stateId": { + "description": "Unique identity of state." }, - "order": { - "description": "Sort the search results of orders by ascending or descending." + "languageId": { + "description": "Unique identity of language." }, - "naturalSorting": { - "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." + "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." } } }, - "post-filter": { + "availabilityRule": { "properties": { - "type": { - "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." + "name": { + "description": "Unique name for the rule." }, - "field": { - "description": "To filter only the results but not the aggregations by field like an property identifier." + "description": { + "description": "A short description about the rule." }, - "value": { - "description": "To filter only the results but not the aggregations by value." + "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." } } - } - } - }, - "CartPriceQuantity": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_price_quantity" - ] - }, - "isCalculated": { - "type": "boolean" }, - "listPrice": { - "$ref": "#/components/schemas/CartListPrice" + "availabilityRuleId": { + "description": "Unique identity of availability rule." }, - "price": { - "type": "number" + "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." + } + } }, - "quantity": { - "type": "number" + "mediaId": { + "description": "Unique identity of media." }, - "regulationPrice": { + "media": { "properties": { - "price": { - "type": "number", - "format": "float" + "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." } - }, - "type": "object" + } }, - "taxRules": { - "type": "array", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } + "tags": { + "properties": { + "name": { + "description": "Name of the tag." } } + } + } + }, + "Sitemap": { + "type": "object", + "properties": { + "filename": { + "type": "string", + "description": "Name of the file which holds a list of all URL's." }, - "type": { - "type": "string" + "created": { + "type": "string", + "format": "date-time" } }, "required": [ - "apiAlias" + "filename", + "created" ] }, - "NavigationRouteResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - }, + "AggregationEntity": { + "title": "AggregationEntity", + "type": "object", "properties": { - "id": { - "description": "Unique identity of navigation route response." + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "entity" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "definition": { + "description": "The entity definition e.g \"product_manufacturer\".", + "type": "string" } - } - }, - "LineItemType": { - "type": "string", - "enum": [ - "product", - "credit", - "custom", - "promotion", - "discount", - "container", - "quantity" + }, + "required": [ + "name", + "type", + "field", + "definition" ] }, - "LineItem": { + "AggregationFilter": { + "title": "AggregationFilter", "type": "object", "properties": { - "children": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "filter" + ] + }, + "filter": { "type": "array", "items": { - "$ref": "#/components/schemas/LineItem" + "$ref": "#/components/schemas/Filters" } - }, - "cover": { - "$ref": "#/components/schemas/ProductMedia" - }, - "dataContextHash": { + } + }, + "required": [ + "name", + "type", + "filter" + ] + }, + "AggregationTerms": { + "title": "AggregationTerms", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", "type": "string" }, - "dataTimestamp": { - "type": "string" + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "terms" + ] }, - "deliveryInformation": { - "$ref": "#/components/schemas/CartDeliveryInformation" + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "description": { - "type": "string", - "description": "Description of line items in an order." + "limit": { + "description": "The number of terms to return", + "type": "number" }, - "good": { - "type": "boolean", - "description": "When set to true, it indicates the line item is physical else it is virtual." + "sort": { + "type": "array", + "description": "Sorting the aggregation result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "AggregationHistogram": { + "title": "AggregationHistogram", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "id": { + "type": { + "description": "The type of aggregation", "type": "string", - "description": "Unique identity of line item." + "enum": [ + "histogram" + ] }, - "label": { - "type": "string", - "description": "It is a typical product name given to the line item." + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "modified": { - "type": "boolean", - "description": "When boolean value is `true`, line items are said to be modified." + "interval": { + "description": "The interval of the histogram", + "type": "number" }, - "modifiedByApp": { - "type": "boolean" + "format": { + "description": "The format of the histogram", + "type": "string" }, - "payload": { - "$ref": "#/components/schemas/ProductJsonApi" + "timeZone": { + "description": "The timezone of the histogram", + "type": "string" + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "AggregationRange": { + "title": "AggregationRange", + "description": "For more information, see [Aggregations Reference > Range Aggregation](https://developer.shopware.com/docs/resources/references/core-reference/dal-reference/aggregations-reference.html#range-aggregations)", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "range" + ] + }, + "field": { + "description": "The field you want to aggregate over.", + "type": "string" + }, + "ranges": { + "description": "The ranges of the aggregation", + "type": "array", + "items": { + "type": "object", + "anyOf": [ + { + "type": "object", + "title": "From and to", + "properties": { + "from": { + "type": "number", + "description": "The lower bound of the range" + }, + "to": { + "type": "number", + "description": "The upper bound of the range" + } + }, + "required": [ + "from", + "to" + ] + }, + { + "type": "object", + "title": "From only", + "properties": { + "from": { + "type": "string", + "description": "The lower bound of the range" + } + }, + "required": [ + "from" + ] + }, + { + "type": "object", + "title": "To only", + "properties": { + "to": { + "type": "string", + "description": "The upper bound of the range" + } + }, + "required": [ + "to" + ] + } + ] + } + } + }, + "required": [ + "name", + "type", + "field", + "ranges" + ] + }, + "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": { + "type": "string" + }, + "dataTimestamp": { + "type": "string" + }, + "deliveryInformation": { + "$ref": "#/components/schemas/CartDeliveryInformation" + }, + "description": { + "type": "string", + "description": "Description of line items in an order." + }, + "good": { + "type": "boolean", + "description": "When set to true, it indicates the line item is physical else it is virtual." + }, + "id": { + "type": "string", + "description": "Unique identity of line item." + }, + "label": { + "type": "string", + "description": "It is a typical product name given to the line item." + }, + "modified": { + "type": "boolean", + "description": "When boolean value is `true`, line items are said to be modified." + }, + "modifiedByApp": { + "type": "boolean" + }, + "payload": { + "$ref": "#/components/schemas/ProductJsonApi" }, "price": { "type": "object", @@ -12835,486 +13164,440 @@ "states" ] }, - "OrderRouteResponse": { - "type": "object", - "properties": { - "orders": { - "type": "object", - "allOf": [ - { - "type": "object", - "required": [ - "elements" - ], - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order" - } - } - } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - }, - "paymentChangeable": { - "type": "object", - "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", - "additionalProperties": { - "type": "boolean" - } - } + "CrossSellingElementCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrossSellingElement" }, - "required": [ - "orders" - ] - }, - "WishlistLoadRouteResponse": { - "type": "object", - "required": [ - "products" - ], "properties": { - "wishlist": { - "type": "object", - "properties": { - "customerId": { - "type": "string", - "description": "Unique identity of the customer." - }, - "salesChannelId": { - "type": "string", - "description": "Unique identity of the sales channel." - } - } - }, - "products": { - "$ref": "#/components/schemas/ProductListingResult" + "total": { + "description": "Number of cross selling elements found." } } }, - "CartListPrice": { + "CartError": { "type": "object", - "description": "", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "discount": { - "type": "number" + "key": { + "type": "string" }, - "percentage": { - "type": "number" + "level": { + "type": "number", + "enum": [ + 0, + 10, + 20 + ], + "description": "* `0` - notice,\n* `10` - warning,\n* `20` - error" }, - "price": { - "type": "number" + "message": { + "type": "string" }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_list_price" - ] + "messageKey": { + "type": "string" } }, "required": [ - "apiAlias" + "key", + "level", + "message", + "messageKey" ] }, - "ProductMeasurements": { + "FindProductVariantRouteResponse": { "type": "object", - "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", "properties": { - "width": { + "foundCombination": { "type": "object", "properties": { - "unit": { + "variantId": { "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" + "pattern": "^[0-9a-f]{32}$", + "description": "Unique identity of a variant." }, - "value": { - "type": "number" + "options": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Available product variant options. For example, for variant `Size`, option would be `XS`, `S`, `M`, `L`, `XL`." } } + } + } + }, + "ProductListingCriteria": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" }, - "height": { + { "type": "object", + "description": "Additional search parameters for product listings", "properties": { - "unit": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" + "order": { + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "type": "string" + }, + "limit": { + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "type": "integer", + "minimum": 0 + }, + "p": { + "description": "Search result page", + "type": "integer", + "default": 1 + }, + "manufacturer": { + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "type": "string" + }, + "min-price": { + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "max-price": { + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "rating": { + "description": "Filter products with a minimum average rating.", + "type": "integer" + }, + "shipping-free": { + "description": "Filters products that are marked as shipping-free.", + "type": "boolean", + "default": false + }, + "properties": { + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "type": "string" + }, + "manufacturer-filter": { + "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "price-filter": { + "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "rating-filter": { + "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "shipping-free-filter": { + "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-filter": { + "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-whitelist": { + "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", + "type": "string" + }, + "reduce-aggregations": { + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + } + } + ], + "properties": { + "filter": { + "properties": { + "type": { + "description": "To filter the results and aggregations with filter types like ==, >=, etc." + }, + "field": { + "description": "To filter the results and aggregations by field like an property identifier." }, "value": { - "type": "number" + "description": "To filter the results and aggregations by value." } } }, - "length": { - "type": "object", + "sort": { "properties": { - "unit": { - "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm" + "field": { + "description": "Sort the search results by field like an property identifier." }, - "value": { - "type": "number" + "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." } } }, - "weight": { - "type": "object", + "post-filter": { "properties": { - "unit": { - "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg" + "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": { - "type": "number" + "description": "To filter only the results but not the aggregations by value." } } } } }, - "ContextMeasurementSystemInfo": { + "NavigationType": { + "type": "string", + "enum": [ + "main-navigation", + "footer-navigation", + "service-navigation" + ] + }, + "WishlistLoadRouteResponse": { "type": "object", - "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", + "required": [ + "products" + ], "properties": { - "system": { - "type": "string", - "enum": [ - "metric", - "imperial" - ], - "default": "metric", - "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." - }, - "units": { + "wishlist": { "type": "object", - "description": "Units used in the measurement system.", "properties": { - "length": { + "customerId": { "type": "string", - "enum": [ - "mm", - "cm", - "m", - "in", - "ft" - ], - "default": "mm", - "description": "Unit of length." + "description": "Unique identity of the customer." }, - "weight": { + "salesChannelId": { "type": "string", - "enum": [ - "g", - "kg", - "oz", - "lb" - ], - "default": "kg", - "description": "Unit of weight." + "description": "Unique identity of the sales channel." } } + }, + "products": { + "$ref": "#/components/schemas/ProductListingResult" } } }, - "Sitemap": { + "AggregationMetrics": { "type": "object", "properties": { - "filename": { - "type": "string", - "description": "Name of the file which holds a list of all URL's." + "name": { + "type": "string" }, - "created": { + "type": { "type": "string", - "format": "date-time" + "enum": [ + "avg", + "count", + "max", + "min", + "stats", + "sum" + ] + }, + "field": { + "type": "string" } }, "required": [ - "filename", - "created" + "name", + "type", + "field" ] }, - "EntitySearchResult": { + "CartDeliveryInformation": { "type": "object", "properties": { - "entity": { - "type": "string" - }, - "total": { - "type": "integer", - "description": "The total number of found entities" + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_information" + ] }, - "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" + "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" + ] + } } }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." + "height": { + "type": "integer" }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." + "length": { + "type": "integer" + }, + "restockTime": { + "type": "integer" + }, + "stock": { + "type": "integer" + }, + "weight": { + "type": "integer" + }, + "width": { + "type": "integer" } - } + }, + "required": [ + "apiAlias" + ] }, - "CustomerAddressBody": { - "description": "Added since version: 6.0.0.0", + "CartItems": { + "type": "object", "required": [ - "countryId", - "firstName", - "lastName", - "city", - "street" + "items" ], "properties": { - "countryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "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." + } + } + } + } + }, + "Breadcrumb": { + "type": "object", + "properties": { + "name": { + "type": "string" }, - "countryStateId": { + "categoryId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "salutationId": { + "type": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "type": "string" - }, - "lastName": { - "type": "string" - }, - "zipcode": { - "type": "string" - }, - "city": { - "type": "string" - }, - "company": { - "type": "string" - }, - "street": { - "type": "string" - }, - "department": { - "type": "string" - }, - "title": { - "type": "string" - }, - "phoneNumber": { - "type": "string" + "enum": [ + "page", + "link", + "folder" + ] }, - "additionalAddressLine1": { - "type": "string" + "translated": { + "type": "object", + "additionalProperties": true, + "properties": { + "customFields": { + "type": "object" + }, + "slotConfig": { + "type": "object" + }, + "linkType": { + "type": "string", + "enum": [ + "external", + "category", + "product", + "landing_page" + ] + }, + "internalLink": { + "type": "string" + }, + "externalLink": { + "type": "string" + }, + "linkNewTab": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "metaTitle": { + "type": "string" + }, + "metaDescription": { + "type": "string" + }, + "keywords": { + "type": "string" + } + } }, - "additionalAddressLine2": { + "path": { "type": "string" }, - "customFields": { - "type": "object" - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "countryState": { - "$ref": "#/components/schemas/CountryState" + "seoUrls": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" + } }, - "salutation": { - "$ref": "#/components/schemas/Salutation" + "apiAlias": { + "type": "string", + "enum": [ + "breadcrumb" + ] } }, - "type": "object" + "required": [ + "name", + "categoryId", + "type", + "translated", + "path", + "apiAlias" + ] }, - "ProductListingResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EntitySearchResult" + "SalesChannelContext": { + "type": "object", + "properties": { + "token": { + "description": "Context the user session", + "type": "string" }, - { + "currentCustomerGroup": { "type": "object", - "properties": { - "currentFilters": { - "type": "object", - "description": "Contains the state of the filters. These can be used to create listing filters.", - "properties": { - "navigationId": { - "type": "string" - }, - "manufacturer": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "price": { - "type": "object", - "properties": { - "min": { - "type": "integer", - "default": 0 - }, - "max": { - "type": "integer", - "default": 0 - } - }, - "required": [ - "min", - "max" - ] - }, - "rating": { - "oneOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ] - }, - "shipping-free": { - "type": "boolean", - "default": false - }, - "properties": { - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "search": { - "type": "string" - } - }, - "required": [ - "manufacturer", - "navigationId", - "price", - "properties", - "rating", - "shipping-free" - ] - }, - "availableSortings": { - "type": "array", - "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", - "items": { - "type": "object", - "properties": { - "label": { - "type": "string" - }, - "translated": { - "type": "object", - "properties": { - "label": { - "type": "string" - } - }, - "required": [ - "label" - ] - }, - "key": { - "type": "string" - }, - "priority": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_sorting" - ] - } - }, - "required": [ - "label", - "translated", - "key", - "priority", - "apiAlias" - ] - } - }, - "sorting": { - "type": "string" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } - }, - "entity": { - "type": "string", - "enum": [ - "product" - ] - }, - "apiAlias": { - "type": "string", - "enum": [ - "product_listing" - ] - } - }, - "required": [ - "elements", - "availableSortings", - "currentFilters", - "apiAlias" - ] - } - ] - }, - "SalesChannelContext": { - "type": "object", - "properties": { - "token": { - "description": "Context the user session", - "type": "string" - }, - "currentCustomerGroup": { - "type": "object", - "description": "Customer group of the current user", + "description": "Customer group of the current user", "properties": { "name": { "type": "string", @@ -13795,86 +14078,14 @@ "languageInfo" ] }, - "ListPrice": { - "type": "object", - "description": "", - "properties": { - "discount": { - "type": "number" - }, - "percentage": { - "type": "number" - }, - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_list_price" - ] - } - }, - "required": [ - "apiAlias" - ] - }, - "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" - ] + "Association": { + "additionalProperties": { + "$ref": "#/components/schemas/Association" + } }, - "MeasurementUnits": { + "ContextMeasurementSystemInfo": { "type": "object", - "description": "Configuration of the measurement system", + "description": "Configuration of the measurement system used in the store, by default including units for length and weight.", "properties": { "system": { "type": "string", @@ -13916,2297 +14127,3304 @@ } } }, - "CartDeliveryPosition": { + "ListPrice": { "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "description": "", "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" - } - } - }, - "identifier": { - "type": "string" + "discount": { + "type": "number" }, - "lineItem": { - "$ref": "#/components/schemas/LineItem" + "percentage": { + "type": "number" }, "price": { - "$ref": "#/components/schemas/CalculatedPrice" + "type": "number" + }, + "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" - } + "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" } }, - "translations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "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" } }, - "orderDeliveries": { - "type": "array", - "items": { + "required": [ + "gross", + "net" + ] + } + }, + "required": [ + "currencyId", + "gross", + "net" + ] + }, + "ProductListingResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EntitySearchResult" + }, + { + "type": "object", + "properties": { + "currentFilters": { "type": "object", + "description": "Contains the state of the filters. These can be used to create listing filters.", "properties": { - "orderId": { + "navigationId": { "type": "string" }, - "shippingOrderAddressId": { - "type": "string" + "manufacturer": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } }, - "shippingMethodId": { - "type": "string" + "price": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "default": 0 + }, + "max": { + "type": "integer", + "default": 0 + } + }, + "required": [ + "min", + "max" + ] }, - "shippingDateEarliest": { - "type": "string", - "format": "date-time" + "rating": { + "oneOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] }, - "shippingDateLatest": { - "type": "string", - "format": "date-time" + "shipping-free": { + "type": "boolean", + "default": false }, - "stateId": { + "properties": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "search": { "type": "string" } + }, + "required": [ + "manufacturer", + "navigationId", + "price", + "properties", + "rating", + "shipping-free" + ] + }, + "availableSortings": { + "type": "array", + "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", + "items": { + "type": "object", + "properties": { + "label": { + "type": "string" + }, + "translated": { + "type": "object", + "properties": { + "label": { + "type": "string" + } + }, + "required": [ + "label" + ] + }, + "key": { + "type": "string" + }, + "priority": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_sorting" + ] + } + }, + "required": [ + "label", + "translated", + "key", + "priority", + "apiAlias" + ] + } + }, + "sorting": { + "type": "string" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" } + }, + "entity": { + "type": "string", + "enum": [ + "product" + ] + }, + "apiAlias": { + "type": "string", + "enum": [ + "product_listing" + ] } }, - "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": [ + "elements", + "availableSortings", + "currentFilters", + "apiAlias" + ] + } + ] + }, + "CookieGroup": { + "type": "object", + "properties": { + "isRequired": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "cookie": { + "type": "string" + }, + "value": { + "type": "string" + }, + "expiration": { + "type": "integer" + }, + "entries": { + "$ref": "#/components/schemas/CookieEntryCollection" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cookie_group" + ] + } + }, + "not": { + "allOf": [ + { + "required": [ + "cookie" + ] + }, + { + "required": [ + "entries" + ] + } + ] + }, + "required": [ + "name", + "isRequired", + "apiAlias" + ] + }, + "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" + }, + "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" + ] + }, + "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" + ] + }, + "MeasurementUnits": { + "type": "object", + "description": "Configuration of the measurement system", + "properties": { + "system": { + "type": "string", + "enum": [ + "metric", + "imperial" + ], + "default": "metric", + "description": "The measurement system used in the store. 'metric' for metric system, 'imperial' for imperial system." + }, + "units": { + "type": "object", + "description": "Units used in the measurement system.", + "properties": { + "length": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm", + "description": "Unit of length." + }, + "weight": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg", + "description": "Unit of weight." + } + } + } + } + }, + "CookieEntry": { + "type": "object", + "properties": { + "cookie": { + "type": "string" + }, + "value": { + "type": "string" + }, + "expiration": { + "type": "integer" + }, + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "hidden": { + "type": "boolean" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cookie_entry" + ] + } + }, + "required": [ + "cookie", + "hidden", + "apiAlias" + ] + }, + "CookieRouteResponse": { + "type": "object", + "description": "Response containing cookie groups and their configuration hash.", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cookie_groups_hash" + ] + }, + "elements": { + "type": "array", + "description": "Collection of cookie groups", + "items": { + "$ref": "#/components/schemas/CookieGroup" + } + }, + "hash": { + "type": "string", + "description": "Hash of the current cookie configuration. Can be used to detect changes in cookie configuration.", + "example": "f86b6a872cb83dbd22d838ceda1aa3d4" + } + }, + "required": [ + "elements", + "hash", + "apiAlias" + ], + "example": { + "apiAlias": "cookie_groups_hash", + "elements": [ + { + "isRequired": true, + "description": "Cookies required for this shop to function:", + "name": "Technically required", + "entries": [ + { + "name": "Session", + "hidden": false, + "cookie": "session-", + "apiAlias": "cookie_entry" + }, + { + "name": "Timezone", + "hidden": false, + "cookie": "timezone", + "apiAlias": "cookie_entry" + }, + { + "value": "1", + "expiration": 30, + "name": "Cookie preferences", + "hidden": true, + "cookie": "cookie-preference", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" }, - "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" - } + { + "isRequired": false, + "description": "Cookies used for statistics and shop performance metrics.", + "name": "Statistics", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "Google Analytics", + "hidden": false, + "cookie": "google-analytics-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "description": "Allows Google to collect personal data for online advertising and marketing.", + "name": "Marketing", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "Google Advertising", + "hidden": false, + "cookie": "google-ads-enabled", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + }, + { + "isRequired": false, + "name": "Comfort features", + "entries": [ + { + "value": "1", + "expiration": 30, + "name": "YouTube video", + "hidden": false, + "cookie": "youtube-video", + "apiAlias": "cookie_entry" + } + ], + "apiAlias": "cookie_group" + } + ], + "hash": "f86b6a872cb83dbd22d838ceda1aa3d4" + } + }, + "Criteria": { + "type": "object", + "description": "Criteria to query entities.", + "properties": { + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", + "type": "string" + }, + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + }, + "properties": { + "type": { + "description": "To filter the results and aggregations with filter types like ==, >=, etc." + }, + "field": { + "description": "To filter the results and aggregations by field like an property identifier." + }, + "value": { + "description": "To filter the results and aggregations by value." + } + } + }, + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } + }, + "query": { + "type": "string", + "description": "The query string to search for" + }, + "associations": { + "$ref": "#/components/schemas/Associations" + }, + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } + ] + }, + "properties": { + "type": { + "description": "To filter only the results but not the aggregations with filter types like ==, >=, etc." + }, + "field": { + "description": "To filter only the results but not the aggregations by field like an property identifier." + }, + "value": { + "description": "To filter only the results but not the aggregations by value." } + } + }, + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" }, - "availabilityRule": { - "type": "object", - "properties": { - "name": { - "type": "string" + "properties": { + "field": { + "description": "Sort the search results by field like an property identifier." + }, + "order": { + "description": "Sort the search results of orders by ascending or descending." + }, + "naturalSorting": { + "description": "Sorting for special cases such as German letters with umlauts and similar characters etc." + } + } + }, + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } + }, + "fields": { + "type": "array", + "description": "Fields which should be returned in the search result.", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" + }, + "excludes": { + "$ref": "#/components/schemas/Excludes" + } + } + }, + "NoneFieldsCriteria": { + "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", + "properties": { + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", + "type": "string" + }, + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "description": { - "type": "string" + { + "$ref": "#/components/schemas/EqualsFilter" }, - "priority": { - "type": "integer", - "format": "int32" + { + "$ref": "#/components/schemas/MultiNotFilter" }, - "invalid": { - "type": "boolean" + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } + }, + "query": { + "type": "string", + "description": "The query string to search for" + }, + "associations": { + "$ref": "#/components/schemas/Associations" + }, + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } + ] + } + }, + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + } + }, + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } + }, + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" + }, + "excludes": { + "$ref": "#/components/schemas/Excludes" + } + } + }, + "Associations": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Criteria" + } + }, + "Includes": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "Excludes": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "Aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" + }, + { + "title": "AggregationEntity", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationEntity" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationFilter", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationFilter" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationTerms", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationRange", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationRange" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + } + ] + }, + "SubAggregations": { + "type": "object", + "properties": { + "aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" + }, + { + "$ref": "#/components/schemas/AggregationEntity" + }, + { + "$ref": "#/components/schemas/AggregationFilter" + }, + { + "$ref": "#/components/schemas/AggregationTerms" + }, + { + "$ref": "#/components/schemas/AggregationHistogram" + }, + { + "$ref": "#/components/schemas/AggregationRange" } - }, - "availabilityRuleId": { - "type": "string" - }, - "prices": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "ruleId": { - "type": "string" - }, - "calculation": { - "type": "integer", - "format": "int32" - }, - "quantityStart": { - "type": "number", - "format": "float" - }, - "quantityEnd": { - "type": "number", - "format": "float" - }, - "price": { - "type": "number", - "format": "float" - }, - "calculationRuleId": { - "type": "string" - } - } + ] + } + } + }, + "TotalCountMode": { + "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", + "type": "string", + "default": "none", + "enum": [ + "none", + "exact", + "next-pages" + ] + }, + "Query": { + "type": "object", + "properties": { + "score": { + "type": "number" + }, + "query": { + "oneOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } + ] + } + }, + "additionalProperties": true + }, + "Sort": { + "type": "object", + "properties": { + "field": { + "type": "string" + }, + "order": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] + }, + "naturalSorting": { + "type": "boolean" + }, + "type": { + "type": "string" + } + }, + "required": [ + "field", + "order" + ] + }, + "Filters": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "mediaId": { - "type": "string" + { + "$ref": "#/components/schemas/EqualsFilter" }, - "media": { - "type": "object", - "properties": { - "userId": { - "type": "string" - }, - "mimeType": { - "type": "string" - }, - "fileExtension": { - "type": "string" - }, - "fileSize": { - "type": "integer", - "format": "int32" - }, - "title": { - "type": "string" - }, - "metaDataRaw": { - "type": "string" - }, - "mediaTypeRaw": { - "type": "string" - }, - "uploadedAt": { - "type": "string", - "format": "date-time" - }, - "alt": { - "type": "string" - }, - "url": { - "type": "string" - }, - "fileName": { - "type": "string" - }, - "mediaFolderId": { - "type": "string" - }, - "private": { - "type": "boolean" - }, - "thumbnailsRo": { - "type": "string" - } - } + { + "$ref": "#/components/schemas/MultiNotFilter" }, - "tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - } - } - } + { + "$ref": "#/components/schemas/RangeFilter" } + ] + } + }, + "SimpleFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "contains", + "equalsAny", + "prefix", + "suffix" + ] + }, + "field": { + "type": "string" + }, + "value": { + "type": "string" + } + }, + "required": [ + "type", + "field", + "value" + ] + }, + "EqualsFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "equals" + ] + }, + "field": { + "type": "string" + }, + "value": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "type", + "field", + "value" + ] + }, + "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": { - "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." + "type": { + "type": "string", + "enum": [ + "range" + ] }, - "deliveryTimeId": { - "description": "Unique identity of the delivery time." + "field": { + "type": "string" }, - "deliveryTime": { + "parameters": { + "type": "object", "properties": { - "name": { - "description": "Name given to delivery time." + "gte": { + "type": "number" }, - "min": { - "description": "Minimum delivery time taken." + "gt": { + "type": "number" }, - "max": { - "description": "Maximum delivery time taken." + "lte": { + "type": "number" }, - "unit": { - "description": "Unit in which the delivery time is defined. For example, days or hours." + "lt": { + "type": "number" } } + } + }, + "required": [ + "type", + "field", + "parameters" + ] + }, + "CustomerAddressRead": { + "type": "object", + "properties": { + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true }, - "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." - } - } + "customerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true }, - "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." + "createdAt": { + "type": "string", + "format": "date-time" + }, + "updatedAt": { + "oneOf": [ + { + "type": "string", + "format": "date-time" }, - "stateId": { - "description": "Unique identity of state." + { + "type": "null" } - } + ] }, - "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." + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "oneOf": [ + { + "$ref": "#/components/schemas/CountryState" }, - "hreflangDefaultDomainId": { - "description": "Unique identity of hreflangDefaultDomain." + { + "type": "null" } - } + ] }, - "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." + "salutation": { + "$ref": "#/components/schemas/Salutation" + } + }, + "required": [ + "customerId", + "createdAt", + "updatedAt", + "country", + "salutation" + ] + }, + "ProductMeasurements": { + "type": "object", + "description": "Runtime field, cannot be used as part of the criteria. Measurements of a product, including dimensions and weight.", + "properties": { + "width": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" }, - "hreflangDefaultDomainId": { - "description": "Unique identity of hreflangDefaultDomain." + "value": { + "type": "number" } } }, - "availabilityRule": { + "height": { + "type": "object", "properties": { - "name": { - "description": "Unique name for the rule." + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" }, - "description": { - "description": "A short description about the rule." + "value": { + "type": "number" + } + } + }, + "length": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "mm", + "cm", + "m", + "in", + "ft" + ], + "default": "mm" }, - "priority": { - "description": "A numerical value to prioritize one of the rules from the list." + "value": { + "type": "number" + } + } + }, + "weight": { + "type": "object", + "properties": { + "unit": { + "type": "string", + "enum": [ + "g", + "kg", + "oz", + "lb" + ], + "default": "kg" }, - "invalid": { - "description": "When the boolean value is `true`, the rule is no more available for usage." + "value": { + "type": "number" } } + } + } + }, + "AccountNewsletterRecipient": { + "type": "object", + "properties": { + "status": { + "type": "string", + "enum": [ + "undefined", + "notSet", + "direct", + "optIn", + "optOut" + ] }, - "availabilityRuleId": { - "description": "Unique identity of availability rule." + "apiAlias": { + "type": "string", + "enum": [ + "account_newsletter_recipient" + ] + } + }, + "required": [ + "status", + "apiAlias" + ] + }, + "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." }, - "prices": { + "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": { - "shippingMethodId": { - "description": "Unique identity of shipping method." - }, - "currencyId": { - "description": "Unique identity of currency." + "netPrice": { + "description": "Net price of the product." }, - "ruleId": { - "description": "Unique identity of rule." + "totalPrice": { + "description": "Gross price of the product." }, - "calculation": { - "description": "Shipping price calculated based on quantity, price, weight or volume of items." + "calculatedTaxes": { + "description": "Contains calculated tax on order delivery price." }, - "quantityStart": { - "description": "Starting range of quantity of an item." + "taxRules": { + "description": "Pricing based on multiple taxes." }, - "quantityEnd": { - "description": "Ending range of quantity of an item." + "positionPrice": { + "description": "Price of each line item in the cart multiplied by its quantity excluding charges like shipping cost, rules, taxes etc." }, - "price": { - "description": "Shipping method price after applied rules." + "rawTotal": { + "description": "The total value before rounding off." }, - "calculationRuleId": { - "description": "Unique identity of calculation rule." + "taxStatus": { + "description": "TaxStatus takes `Free`, `Net` or `Gross` as values." } } }, - "mediaId": { - "description": "Unique identity of media." - }, - "media": { + "shippingCosts": { "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." + "unitPrice": { + "description": "Shipping cost of product per item (where, quantity=1)." }, - "title": { - "description": "Title name give to the media." + "totalPrice": { + "description": "Shipping cost of product based on quantity." }, - "metaDataRaw": { - "description": "Details of the media file uploaded." + "quantity": { + "description": "Number of items of each product." }, - "alt": { - "description": "Alternate text for media." + "calculatedTaxes": { + "description": "Contains calculated taxes based on shipping costs/methods." }, - "url": { - "description": "Runtime field, cannot be used as part of the criteria." + "taxRules": { + "description": "Pricing based on multiple taxes." }, - "fileName": { - "description": "Name of the media file uploaded." + "referencePrice": { + "description": "Original cost price of the product." }, - "mediaFolderId": { - "description": "Unique identity of media folder." + "listPrice": { + "properties": { + "price": { + "description": "Price of each line item." + }, + "discount": { + "description": "Absolute discount on each line item." + }, + "percentage": { + "description": "Discount in percentage." + } + } }, - "private": { - "description": "Boolean value is `true` to keep the media display private." + "regulationPrice": { + "properties": { + "price": { + "description": "Contains cheapest price from last 30 days as per EU law." + } + } } } }, - "tags": { - "properties": { - "name": { - "description": "Name of the tag." - } - } + "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." } } }, - "ProductDetailResponse": { - "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", + "OrderReturnLineItemReason": { "properties": { - "product": { - "$ref": "#/components/schemas/Product" + "id": { + "description": "Unique identity for reason of return." }, - "configurator": { - "type": "array", - "description": "List of property groups with their corresponding options and information on how to display them.", - "items": { - "$ref": "#/components/schemas/PropertyGroup" - } + "reasonKey": { + "description": "Unique key associated with reason for the order return. " }, - "id": { - "description": "Unique identity of product detail response." + "content": { + "description": "Description of the reason of return." }, - "available": { - "description": "When boolean value is true, the product is available for purchase." + "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." }, - "isCloseout": { - "description": "Boolean value to check if the product is still buyable when stock value is 0." + "productId": { + "description": "Unique identity of products." }, - "displayGroup": { - "description": "Internal field." + "salesChannelId": { + "description": "Unique identity of sales channel." }, - "manufacturerNumber": { - "description": "Unique number of the product manufacturer." + "summary": { + "description": "Unique identity of products's review summary." }, - "stock": { - "description": "Quantity of product available." + "visible": { + "description": "When boolean value is `true`, the review is displayed to the customer." }, - "sortedProperties": { - "description": "Properties of the product that are sorted" + "translated": { + "description": "Contains the translations of all translated fields." } - }, - "required": [ - "product" - ] + } }, - "CrossSellingElementCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CrossSellingElement" - }, + "ProductWarehouse": { "properties": { - "total": { - "description": "Number of cross selling elements found." + "id": { + "description": "Unique identity of warehouse of product." } } }, - "Breadcrumb": { - "type": "object", + "Subscription": { "properties": { - "name": { - "type": "string" + "id": { + "description": "Unique identity of subscription." }, - "categoryId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "convertedOrder": { + "description": "An array loaded with persistent information related to cart data." }, - "type": { - "type": "string", - "enum": [ - "page", - "link", - "folder" - ] + "subscriptionNumber": { + "description": "Unique number associated with subscription." }, - "translated": { - "type": "object", - "additionalProperties": true, - "properties": { - "customFields": { - "type": "object" - }, - "slotConfig": { - "type": "object" - }, - "linkType": { - "type": "string", - "enum": [ - "external", - "category", - "product", - "landing_page" - ] - }, - "internalLink": { - "type": "string" - }, - "externalLink": { - "type": "string" - }, - "linkNewTab": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "metaTitle": { - "type": "string" - }, - "metaDescription": { - "type": "string" - }, - "keywords": { - "type": "string" - } - } + "nextSchedule": { + "description": "Date and time of next scheduled subscription for example: `yyyy-mm-dd hh:mm:ss` - `2023-08-15 15:25:32`." }, - "path": { - "type": "string" + "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." }, - "seoUrls": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } + "customFields": { + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." }, - "apiAlias": { - "type": "string", - "enum": [ - "breadcrumb" - ] + "email": { + "description": "Last name of the subscribed customer. " } - }, - "required": [ - "name", - "categoryId", - "type", - "translated", - "path", - "apiAlias" - ] + } }, - "Criteria": { - "type": "object", - "description": "Criteria to query entities.", + "SubscriptionCustomer": { "properties": { - "page": { - "description": "Search result page", - "type": "integer" + "id": { + "description": "Unique identity of subscription customer." }, - "term": { - "description": "Search term", - "type": "string" + "customerId": { + "description": "Unique identity of the customer." }, - "limit": { - "description": "Number of items per result page", - "type": "integer" + "salutationId": { + "description": "Unique identity of salutation." }, - "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." - } - } + "firstName": { + "description": "Email address of the subscribed customer." }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" - } + "lastName": { + "description": "Last name of the subscribed customer. " }, - "query": { - "type": "string", - "description": "The query string to search for" + "company": { + "description": "Name of the customer's company." }, - "associations": { - "$ref": "#/components/schemas/Associations" + "title": { + "description": "Title name given to customer's order address." }, - "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." - } - } + "customerNumber": { + "description": "Unique number for subscribed customer." }, - "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." - } - } + "vatId": { + "description": "Unique identity of VAT." }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } + "customFields": { + "description": "Additional fields that offer a possibility to add own fields for the different program-areas." + } + } + }, + "SubscriptionInterval": { + "properties": { + "id": { + "description": "Unique identity of subscription interval." }, - "fields": { - "type": "array", - "description": "Fields which should be returned in the search result.", - "items": { - "type": "string", - "description": "Name of a field" - } + "name": { + "description": "Name of the subscription interval." }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } + "active": { + "description": "When `true`, the defined subscription interval is available for selection in storefront." }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" + "dateInterval": { + "description": "Relative interval data. For example, `every 3 days`, `every 2 months`, etc." }, - "includes": { - "$ref": "#/components/schemas/Includes" + "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." } } }, - "NoneFieldsCriteria": { - "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", + "SubscriptionPlan": { "properties": { - "page": { - "description": "Search result page", - "type": "integer" + "id": { + "description": "Unique identity of subscription plan." }, - "term": { - "description": "Search term", - "type": "string" + "name": { + "description": "Name of the subscription plan." }, - "limit": { - "description": "Number of items per result page", - "type": "integer" + "description": { + "description": "A short description about the subscription plan." }, - "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" - } - ] - } + "active": { + "description": "When `true`, the subscription plan is available for selection in storefront." }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" - } + "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." }, - "query": { - "type": "string", - "description": "The query string to search for" + "subscriptionPlanId": { + "description": "Unique identity of subscription plan." + } + } + }, + "SubscriptionPlanProductMapping": { + "properties": { + "id": { + "description": "Unique identity of subscription plan for product mapping." }, - "associations": { - "$ref": "#/components/schemas/Associations" + "productId": { + "description": "Unique identity of product." }, - "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" - } - ] - } + "productVersionId": { + "description": "Unique identity of product's version." }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" - } + "subscriptionPlanId": { + "description": "Unique identity of subscription plan." + } + } + }, + "SubscriptionTagMapping": { + "properties": { + "id": { + "description": "Unique identity of subscription tag." }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } + "subscriptionId": { + "description": "Unique identity of subscription." }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } + "tagId": { + "description": "Unique identity of subscription tag." + } + } + }, + "SwagDelayAction": { + "properties": { + "id": { + "description": "Unique identity of swag delay action for flow builder" }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" + "orderId": { + "description": "Unique identity of order." }, - "includes": { - "$ref": "#/components/schemas/Includes" + "customerId": { + "description": "Unique identity of customer." } } }, - "Associations": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Criteria" + "Warehouse": { + "properties": { + "id": { + "description": "Unique identity of warehouse." + } } }, - "Includes": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { - "type": "string" + "WarehouseGroup": { + "properties": { + "id": { + "description": "Unique identity of warehouse group." } } }, - "Aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" + "CustomPrice": { + "properties": { + "id": { + "description": "Unique identity of the custom price." }, - { - "title": "AggregationEntity", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "productId": { + "description": "Unique identity of the product." }, - { - "title": "AggregationFilter", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "productVersionId": { + "description": "Unique identity of the product's version." }, - { - "title": "AggregationTerms", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "customerId": { + "description": "Unique identity of the customer." }, - { - "title": "AggregationHistogram", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "customerGroupId": { + "description": "Unique identity of the customer's group." }, - { - "title": "AggregationRange", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationRange" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "price": { + "description": "Detailed information of price." } - ] + } }, - "SubAggregations": { - "type": "object", + "CustomerSpecificFeatures": { "properties": { - "aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/AggregationRange" - } - ] + "id": { + "description": "Unique identity of the customer specific features." + }, + "customerId": { + "description": "Unique identity of the customer." } } }, - "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", + "MediaAiTag": { "properties": { - "score": { - "type": "number" + "id": { + "description": "Unique identity of the AI media tag." }, - "query": { - "oneOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] + "tag": { + "description": "Tag that indicates if the media is made by AI or not." + }, + "translated": { + "description": "Contains the translations of all translated fields." + } + } + } + }, + "responses": { + "404": { + "description": "Not Found", + "content": { + "application/vnd.api+json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "404", + "title": "Not Found", + "description": "Resource with given parameter was not found." + } + ] + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "404", + "title": "Not Found", + "description": "Resource with given parameter was not found." + } + ] + } } - }, - "additionalProperties": true + } }, - "Sort": { - "type": "object", - "properties": { - "field": { - "type": "string" - }, - "order": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - }, - "naturalSorting": { - "type": "boolean" + "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." + } + ] + } }, - "type": { - "type": "string" + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" + }, + "example": { + "errors": [ + { + "status": "403", + "title": "Forbidden", + "description": "This operation is restricted to logged in users." + } + ] + } } - }, - "required": [ - "field", - "order" - ] + } }, - "Filters": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" + "401": { + "description": "Unauthorized", + "content": { + "application/vnd.api+json": { + "schema": { + "$ref": "#/components/schemas/failure" }, - { - "$ref": "#/components/schemas/MultiNotFilter" + "example": { + "errors": [ + { + "status": "401", + "title": "Unauthorized", + "description": "Authorization information is missing or invalid." + } + ] + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/failure" }, - { - "$ref": "#/components/schemas/RangeFilter" + "example": { + "errors": [ + { + "status": "401", + "title": "Unauthorized", + "description": "Authorization information is missing or invalid." + } + ] } - ] + } } }, - "SimpleFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "contains", - "equalsAny", - "prefix", - "suffix" - ] - }, - "field": { - "type": "string" + "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." + } + ] + } }, - "value": { - "type": "string" + "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." + } + ] + } } - }, - "required": [ - "type", - "field", - "value" - ] + } }, - "EqualsFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "equals" - ] - }, - "field": { - "type": "string" - }, - "value": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "type": "null" - } - ] + "204": { + "description": "No Content" + }, + "ProductListResponse": { + "description": "Entity search result containing products", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "required": [ + "elements" + ], + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } } - }, - "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" + "CategoryListResponse": { + "description": "Entity search result containing categories.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "type": "object", + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" + } + } + } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } } - }, - "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" + "OpenApi3": { + "description": "Returns information about the store API.", + "content": { + "application/json": { + "schema": { + "properties": { + "openapi": { + "type": "string" + }, + "info": { + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "description": { + "type": "string" + }, + "termsOfService": { + "type": "string", + "format": "uri" + }, + "contact": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + }, + "email": { + "type": "string", + "format": "email" + } + } + }, + "license": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "identifier": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "name" + ] + }, + "version": { + "type": "string" + } + }, + "required": [ + "title", + "version" + ] + }, + "jsonSchemaDialect": { + "type": "string" + }, + "webhooks": { + "type": "object" + }, + "servers": { + "type": "array", + "items": { + "type": "object", + "properties": { + "url": { + "type": "string" + } + }, + "required": [ + "url" + ] + } + }, + "components": { + "type": "object", + "properties": { + "schemas": { + "type": "object" + }, + "responses": { + "type": "object" + }, + "parameters": { + "type": "object" + }, + "examples": { + "type": "object" + }, + "requestBodies": { + "type": "object" + }, + "headers": { + "type": "object" + }, + "securitySchemes": { + "type": "object" + }, + "links": { + "type": "object" + }, + "callbacks": { + "type": "object" + }, + "pathItems": { + "type": "object" + } + } + }, + "security": { + "type": "array", + "items": { + "type": "object" + } + }, + "paths": { + "type": "object" + }, + "tags": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "description": { + "type": "string" + }, + "externalDocs": { + "type": "object", + "properties": { + "description": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "url" + ] + } + }, + "required": [ + "name" + ] + } + }, + "externalDocs": { + "type": "object", + "properties": { + "description": { + "type": "string" + }, + "url": { + "type": "string", + "format": "uri" + } + }, + "required": [ + "url" + ] + } }, - "lt": { - "type": "number" - } + "type": "object", + "required": [ + "openapi", + "info" + ] } } - }, - "required": [ - "type", - "field", - "parameters" - ] - }, - "BreadcrumbCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Breadcrumb" } }, - "AccountNewsletterRecipientResult": { - "properties": { - "status": { - "description": "Status indicates if the customer has subscribed to the news letter or not." + "CountryStateListResponse": { + "description": "Entity search result containing countries.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CountryState" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } } } }, - "OrderProductWarehouse": { - "properties": { - "id": { - "description": "Unique identity of order's product warehouse." + "CurrencyListResponse": { + "description": "Entity search result containing currencies.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Currency" + } + } } } }, - "OrderReturn": { - "properties": { - "id": { - "description": "Unique identity of order return." - }, - "versionId": { - "description": "Unique identity of order return's version." - }, - "orderId": { - "description": "Unique identity of order." - }, - "orderVersionId": { - "description": "Unique identity of order return version." - }, - "price": { - "properties": { - "netPrice": { - "description": "Net price of the product." - }, - "totalPrice": { - "description": "Gross price of the product." - }, - "calculatedTaxes": { - "description": "Contains calculated tax on order delivery price." - }, - "taxRules": { - "description": "Pricing based on multiple taxes." - }, - "positionPrice": { - "description": "Price of each line item in the cart multiplied by its quantity excluding charges like shipping cost, rules, taxes etc." - }, - "rawTotal": { - "description": "The total value before rounding off." - }, - "taxStatus": { - "description": "TaxStatus takes `Free`, `Net` or `Gross` as values." - } - } - }, - "shippingCosts": { - "properties": { - "unitPrice": { - "description": "Shipping cost of product per item (where, quantity=1)." - }, - "totalPrice": { - "description": "Shipping cost of product based on quantity." - }, - "quantity": { - "description": "Number of items of each product." - }, - "calculatedTaxes": { - "description": "Contains calculated taxes based on shipping costs/methods." - }, - "taxRules": { - "description": "Pricing based on multiple taxes." - }, - "referencePrice": { - "description": "Original cost price of the product." - }, - "listPrice": { - "properties": { - "price": { - "description": "Price of each line item." - }, - "discount": { - "description": "Absolute discount on each line item." + "SeoUrlListResponse": { + "description": "Entity search result containing seo urls.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" + } + } }, - "percentage": { - "description": "Discount in percentage." - } + "type": "object", + "required": [ + "elements" + ] + }, + { + "$ref": "#/components/schemas/EntitySearchResult" } - }, - "regulationPrice": { - "properties": { - "price": { - "description": "Contains cheapest price from last 30 days as per EU law." + ] + } + } + } + }, + "PaymentMethodListResponse": { + "description": "", + "content": { + "application/json": { + "schema": { + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentMethod" } } - } + }, + "type": "object" } - }, - "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." + "ShippingMethodListResponse": { + "description": "Entity search result containing shipping methods.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "required": [ + "elements" + ], + "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ShippingMethod" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } } } }, - "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." + "SalutationListResponse": { + "description": "Entity search result containing salutations.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Salutation" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } } } }, - "OrderWarehouseGroup": { - "properties": { - "id": { - "description": "Unique identity of order warehouse group." + "ContextTokenResponse": { + "description": "Returns the context token. Use that as your `sw-context-token` header for subsequent requests. Redirect if getRedirectUrl is set.", + "headers": { + "sw-context-token": { + "description": "Contains sw-context-token value", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "redirectUrl": { + "description": "Define the URL which browser will be redirected to", + "type": "string" + } + } + } } } }, - "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." + "CountryListResponse": { + "description": "Entity search result containing countries.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Country" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } } } }, - "ProductWarehouse": { - "properties": { - "id": { - "description": "Unique identity of warehouse of product." + "LanguageListResponse": { + "description": "Entity search result containing languages.", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Language" + } + } + }, + "required": [ + "elements" + ], + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } } } + } + }, + "parameters": { + "contentType": { + "name": "Content-Type", + "in": "header", + "description": "Content type of the request", + "required": true, + "schema": { + "type": "string", + "default": "application/json" + } }, - "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." - } + "accept": { + "name": "Accept", + "in": "header", + "description": "Accepted response content types", + "required": true, + "schema": { + "type": "string", + "default": "application/json" } }, - "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. " - } + "criteriaPage": { + "name": "page", + "in": "query", + "description": "Search result page", + "schema": { + "type": "integer" } }, - "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." - } + "criteriaLimit": { + "name": "limit", + "in": "query", + "description": "Number of items per result page", + "schema": { + "type": "integer" } }, - "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." + "criteriaTerm": { + "name": "term", + "in": "query", + "description": "Search term", + "schema": { + "type": "string" + } + }, + "criteriaFilter": { + "name": "filter[]", + "in": "query", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "schema": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] } } }, - "SubscriptionPlan": { - "properties": { - "id": { - "description": "Unique identity of subscription plan." - }, - "name": { - "description": "Name of the subscription plan." - }, - "description": { - "description": "A short description about the subscription plan." - }, - "active": { - "description": "When `true`, the subscription plan is available for selection in storefront." - }, - "activeStorefrontLabel": { - "description": "When boolean value id `true`, the label overrides the plan name." - }, - "availabilityRuleId": { - "description": "Unique identity of rule." - }, - "label": { - "description": "Label that can overwrite the active plan name. " - }, - "translated": { - "description": "Contains the translations of all translated fields." + "criteriaIds": { + "name": "ids[]", + "in": "query", + "description": "List of ids to search for", + "schema": { + "type": "array", + "items": { + "type": "string" } } }, - "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." - } + "criteriaQuery": { + "name": "query", + "in": "query", + "description": "The query string to search for", + "schema": { + "type": "string" } }, - "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." + "criteriaAssociations": { + "name": "associations", + "in": "query", + "description": "", + "schema": { + "$ref": "#/components/schemas/Associations" + }, + "style": "deepObject", + "explode": true + }, + "criteriaPostFilter": { + "name": "post-filter[]", + "in": "query", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "schema": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] } } }, - "SubscriptionTagMapping": { - "properties": { - "id": { - "description": "Unique identity of subscription tag." - }, - "subscriptionId": { - "description": "Unique identity of subscription." - }, - "tagId": { - "description": "Unique identity of subscription tag." + "criteriaSort": { + "name": "sort[]", + "in": "query", + "description": "Sorting in the search result.", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Sort" } } }, - "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." + "criteriaAggregations": { + "name": "aggregations[]", + "in": "query", + "description": "", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" } } }, - "Warehouse": { - "properties": { - "id": { - "description": "Unique identity of warehouse." + "criteriaFields": { + "name": "fields[]", + "in": "query", + "description": "Fields which should be returned in the search result.", + "schema": { + "type": "array", + "items": { + "type": "string", + "description": "Name of a field" } } }, - "WarehouseGroup": { - "properties": { - "id": { - "description": "Unique identity of warehouse group." + "criteriaGrouping": { + "name": "grouping[]", + "in": "query", + "description": "Perform groupings over certain fields", + "schema": { + "type": "array", + "items": { + "type": "string", + "description": "Name of a field" } } }, - "CustomPrice": { - "properties": { - "id": { - "description": "Unique identity of the custom price." + "criteriaTotalCountMode": { + "name": "total-count-mode", + "in": "query", + "description": "", + "schema": { + "$ref": "#/components/schemas/TotalCountMode" + } + }, + "criteriaIncludes": { + "name": "includes", + "in": "query", + "description": "Specify the fields that should be returned for the given entities. Object key needs to be the entity name, and the list of fields needs to be the value. Fields will not be included, if they are also specified in the excludes. Note that the include fields will only be stripped on the API-Level, consider using the `fields` parameter for performance reasons.", + "schema": { + "$ref": "#/components/schemas/Includes" + }, + "style": "deepObject", + "explode": true + }, + "criteriaExcludes": { + "name": "excludes", + "in": "query", + "description": "Specify the fields that should be excluded from the response for the given entities. Object key needs to be the entity name, and the list of fields needs to be the value. Note that the exclude fields will only be stripped on the API-Level, consider using the `fields` parameter for performance reasons.", + "schema": { + "$ref": "#/components/schemas/Excludes" + }, + "style": "deepObject", + "explode": true + } + }, + "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": { + "/currency": { + "post": { + "tags": [ + "System & Context", + "Endpoints supporting Criteria " + ], + "summary": "Fetch currencies", + "description": "Perform a filtered search for currencies.", + "operationId": "readCurrency", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } }, - "productId": { - "description": "Unique identity of the product." + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/NoneFieldsCriteria" + } + ] + } + } + } + }, + "responses": { + "200": { + "$ref": "#/components/responses/CurrencyListResponse" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + }, + "get": { + "tags": [ + "System & Context", + "Endpoints supporting Criteria " + ], + "summary": "Fetch currencies", + "description": "Perform a filtered search for currencies.", + "operationId": "readCurrencyGet", + "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}$" + } }, - "productVersionId": { - "description": "Unique identity of the product's version." + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" }, - "customerId": { - "description": "Unique identity of the customer." + { + "$ref": "#/components/parameters/criteriaSort" }, - "customerGroupId": { - "description": "Unique identity of the customer's group." + { + "$ref": "#/components/parameters/criteriaAggregations" }, - "price": { - "description": "Detailed information of price." - } - } - }, - "CustomerSpecificFeatures": { - "properties": { - "id": { - "description": "Unique identity of the customer specific features." + { + "$ref": "#/components/parameters/criteriaGrouping" }, - "customerId": { - "description": "Unique identity of the customer." - } - } - }, - "MediaAiTag": { - "properties": { - "id": { - "description": "Unique identity of the AI media tag." + { + "$ref": "#/components/parameters/criteriaTotalCountMode" }, - "tag": { - "description": "Tag that indicates if the media is made by AI or not." + { + "$ref": "#/components/parameters/criteriaIncludes" }, - "translated": { - "description": "Contains the translations of all translated fields." + { + "$ref": "#/components/parameters/criteriaExcludes" } - } + ], + "responses": { + "200": { + "$ref": "#/components/responses/CurrencyListResponse" + } + }, + "security": [ + { + "ApiKey": [] + } + ] } }, - "responses": { - "404": { - "description": "Not Found", - "content": { - "application/vnd.api+json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "404", - "title": "Not Found", - "description": "Resource with given parameter was not found." - } - ] - } - }, - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "404", - "title": "Not Found", - "description": "Resource with given parameter was not found." - } - ] - } - } - } - }, - "403": { - "description": "Forbidden", - "content": { - "application/vnd.api+json": { + "/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": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "403", - "title": "Forbidden", - "description": "This operation is restricted to logged in users." - } - ] + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, - "application/json": { + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "403", - "title": "Forbidden", - "description": "This operation is restricted to logged in users." - } - ] + "type": "string", + "pattern": "^[0-9a-f]{32}$" } } - } - }, - "401": { - "description": "Unauthorized", - "content": { - "application/vnd.api+json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "401", - "title": "Unauthorized", - "description": "Authorization information is missing or invalid." - } - ] - } - }, - "application/json": { - "schema": { - "$ref": "#/components/schemas/failure" - }, - "example": { - "errors": [ - { - "status": "401", - "title": "Unauthorized", - "description": "Authorization information is missing or invalid." + ], + "responses": { + "200": { + "description": "Returns the customer group including registration settings.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomerGroup" } - ] + } } } - } - }, - "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." - } - ] - } + }, + "security": [ + { + "ApiKey": [] } - } - }, - "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", + ] + } + }, + "/script/{hook}": { + "get": { + "tags": [ + "API", + "Script", + "App" + ], + "summary": "Access point for different api logics which are provided by apps over script hooks", + "operationId": "getScriptStoreApiRoute", + "parameters": [ + { + "name": "hook", + "in": "path", + "description": "Dynamic hook which used to build the hook name", + "required": true, "schema": { "type": "string" } } - }, - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "redirectUrl": { - "description": "Define the URL which browser will be redirected to", - "type": "string" + ], + "responses": { + "200": { + "description": "Returns different structures of results based on the called script.", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "type": "object", + "additionalProperties": true + }, + { + "type": "null" + } + ] + } + }, + "application/vnd.api+json": { + "schema": { + "oneOf": [ + { + "type": "object", + "additionalProperties": true + }, + { + "type": "null" + } + ] } } } + }, + "204": { + "description": "No data by default" } - } + }, + "security": [ + { + "ApiKey": [] + } + ] }, - "OpenApi3": { - "description": "Returns information about the store API.", - "content": { - "application/json": { + "post": { + "tags": [ + "API", + "Script", + "App" + ], + "summary": "Access point for different api logics which are provided by apps over script hooks", + "operationId": "postScriptStoreApiRoute", + "parameters": [ + { + "name": "hook", + "in": "path", + "description": "Dynamic hook which used to build the hook name", + "required": true, "schema": { - "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": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns different structures of results based on the called script.", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { "type": "object", - "properties": { - "name": { - "type": "string" - }, - "identifier": { - "type": "string" - }, - "url": { - "type": "string", - "format": "uri" - } - }, - "required": [ - "name" - ] + "additionalProperties": true }, - "version": { - "type": "string" + { + "type": "null" } - }, - "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" + } + }, + "application/vnd.api+json": { + "schema": { + "oneOf": [ + { + "type": "object", + "additionalProperties": true }, - "pathItems": { - "type": "object" + { + "type": "null" } + ] + } + } + } + }, + "204": { + "description": "No data by default" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/account/newsletter-recipient": { + "post": { + "tags": [ + "Profile", + "Newsletter", + "Endpoints supporting Criteria" + ], + "summary": "Fetch newsletter recipients", + "description": "Perform a filtered search for newsletter recipients.", + "operationId": "readNewsletterRecipient", + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "security": { - "type": "array", - "items": { - "type": "object" + ] + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/AccountNewsletterRecipient" + } + } + } + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ], + "parameters": [ + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + } + ] + } + }, + "/account/change-profile": { + "post": { + "tags": [ + "Profile" + ], + "summary": "Change the customer's information", + "description": "Make changes to a customer's account, like changing their name, salutation or title.", + "operationId": "changeProfile", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "required": [ + "firstName", + "lastName" + ], + "properties": { + "salutationId": { + "description": "Id of the salutation for the customer account. Fetch options using `salutation` endpoint.", + "type": "string" + }, + "title": { + "description": "(Academic) title of the customer", + "type": "string" + }, + "firstName": { + "description": "Customer first name. Value will be reused for shipping and billing address if not provided explicitly.", + "type": "string" + }, + "lastName": { + "description": "Customer last name. Value will be reused for shipping and billing address if not provided explicitly.", + "type": "string" + }, + "birthdayDay": { + "description": "Birthday day", + "type": "integer" + }, + "birthdayMonth": { + "description": "Birthday month", + "type": "integer" + }, + "birthdayYear": { + "description": "Birthday year", + "type": "integer" } }, - "paths": { - "type": "object" - }, - "tags": { - "type": "array", - "items": { - "type": "object", + "oneOf": [ + { "properties": { - "name": { - "type": "string" + "accountType": { + "description": "Type of the customer account. Default value is 'private'.", + "type": "string", + "enum": [ + "private" + ], + "default": "private" }, - "description": { + "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" }, - "externalDocs": { - "type": "object", - "properties": { - "description": { - "type": "string" - }, - "url": { - "type": "string", - "format": "uri" - } + "vatIds": { + "description": "VAT IDs of the customer's company. Only valid when `accountType` is `business`.", + "type": "array", + "items": { + "type": "string" }, - "required": [ - "url" - ] + "minItems": 1 } - }, - "required": [ - "name" - ] - } - }, - "externalDocs": { - "type": "object", - "properties": { - "description": { - "type": "string" - }, - "url": { - "type": "string", - "format": "uri" } - }, - "required": [ - "url" - ] + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Returns a success response indicating a successful update", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" } - }, - "type": "object", - "required": [ - "openapi", - "info" - ] + } } } - } - } - }, - "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" - } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] } }, - "securitySchemes": { - "ApiKey": { - "type": "apiKey", - "description": "Identifies the sales channel you want to access the API through", - "name": "sw-access-key", - "in": "header" - }, - "ContextToken": { - "type": "apiKey", - "description": "Identifies an anonymous or identified user session", - "name": "sw-context-token", - "in": "header" - } - } - }, - "security": [ - { - "ApiKey": [] - } - ], - "paths": { - "/sitemap": { - "get": { + "/account/change-email": { + "post": { "tags": [ - "Sitemap & Routes" + "Profile" ], - "summary": "Fetch sitemaps", - "description": "Fetches a list of compressed sitemap files, which are often used by search engines.", - "operationId": "readSitemap", - "parameters": [ + "summary": "Change the customer's email address", + "description": "Changes a customer's email address to a new email address, using their current password as a validation.", + "operationId": "changeEmail", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "email", + "emailConfirmation", + "password" + ], + "properties": { + "email": { + "description": "New email address. Has to be unique amongst all customers", + "type": "string" + }, + "emailConfirmation": { + "description": "Confirmation of the new email address.", + "type": "string" + }, + "password": { + "description": "Customer's current password", + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Returns a success response indicating a successful update", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } + } + }, + "security": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/account/change-language": { + "post": { + "tags": [ + "Profile" + ], + "summary": "Change the customer's language.", + "description": "Changes the language of the logged in customer", + "operationId": "changeLanguage", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "languageId" + ], + "properties": { + "language": { + "description": "New languageId", + "type": "string" + } + }, + "type": "object" + } } } - ], + }, "responses": { "200": { - "description": "Returns a list of available sitemaps.", + "description": "Returns a success response indicating a successful update", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Sitemap" - } + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -16214,55 +17432,56 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/sitemap/{filePath}": { - "get": { + "/account/change-password": { + "post": { "tags": [ - "Sitemap & Routes" + "Profile" ], - "summary": "Download sitemap file", - "description": "Downloads the sitemap file from the configured sitemap storage.", - "operationId": "getSitemapFile", - "parameters": [ - { - "name": "filePath", - "in": "path", - "description": "The path to the sitemap file", - "required": true, - "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}$" + "summary": "Change the customer's password", + "description": "Changes a customer's password using their current password as a validation.", + "operationId": "changePassword", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "password", + "newPassword", + "newPasswordConfirm" + ], + "properties": { + "password": { + "description": "Current password of the customer", + "type": "string" + }, + "newPassword": { + "description": "New Password for the customer", + "type": "string" + }, + "newPasswordConfirm": { + "description": "Confirmation of the new password", + "type": "string" + } + }, + "type": "object" + } } } - ], + }, "responses": { "200": { - "description": "Returns the blob to download.", + "description": "Returns a success response indicating a successful update.", "content": { - "application/xml": { - "schema": { - "type": "string", - "format": "binary" - } - }, - "application/gzip": { + "application/json": { "schema": { - "type": "string", - "format": "binary" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -16270,63 +17489,144 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/search-suggest": { + "/account/convert-guest": { "post": { "tags": [ - "Product" + "Profile" ], - "summary": "Search for products (suggest)", - "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", - "operationId": "searchSuggest", - "parameters": [ - { - "name": "p", - "in": "query", - "description": "The page number to fetch.", - "required": false, - "schema": { - "type": "integer" + "summary": "Convert a guest customer to a registered customer", + "description": "Takes a password to convert a guest customer to a registered customer. The customer can then log in with the provided password in the future.", + "operationId": "convertGuest", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "password" + ], + "properties": { + "password": { + "description": "New Password for the customer", + "type": "string" + } + }, + "type": "object" + } } - }, - { - "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 success response indicating a successful update.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } } } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + } + }, + "/account/customer-recovery-is-expired": { + "post": { + "tags": [ + "Profile" ], + "summary": "Checks if the customer recovery entry for a given hash is expired.", + "description": "This can be used to validate a provided hash has a valid and not expired customer recovery hash.", + "operationId": "getCustomerRecoveryIsExpired", "requestBody": { "required": true, "content": { "application/json": { "schema": { - "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" + "required": [ + "hash" + ], + "properties": { + "hash": { + "description": "Parameter from the link in the confirmation mail sent in Step 1", + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "Returns a CustomerRecoveryIsExpiredResponse that indicates if the hash is expired or not.", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "isExpired": { + "type": "boolean" + } + }, + "required": [ + "isExpired" + ] } }, - "type": "object" - }, - { - "$ref": "#/components/schemas/ProductListingCriteria" - }, + "apiAlias": { + "enum": [ + "array_struct" + ], + "type": "string" + } + } + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/account/customer": { + "post": { + "tags": [ + "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": { + "allOf": [ { - "$ref": "#/components/schemas/ProductListingFlags" + "$ref": "#/components/schemas/NoneFieldsCriteria" } ] } @@ -16335,11 +17635,11 @@ }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", + "description": "Returns the logged in customer, also for guest sessions. Check for the value of `guest` field to see whether the customer is a guest.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "$ref": "#/components/schemas/Customer" } } } @@ -16347,128 +17647,122 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } - ] - } - }, - "/product/{productId}/cross-selling": { - "post": { - "tags": [ - "Product" ], - "summary": "Fetch cross-selling groups of a product", - "description": "This route is used to load the cross sellings for a product. A product has several cross selling definitions in which several products are linked. The route returns the cross sellings together with the linked products", - "operationId": "readProductCrossSellings", "parameters": [ { - "name": "productId", - "in": "path", - "description": "Product ID", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "sw-language-id", + "name": "sw-include-search-info", "in": "header", - "description": "Instructs Shopware to return the response in the given language.", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", "required": false, "schema": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "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" + "enum": [ + "0", + "1" + ], + "default": "1" } } + ] + }, + "delete": { + "tags": [ + "Profile" ], + "summary": "Delete the customer's profile", + "description": "Deletes a customer profile along with their addresses, wishlists and associated data. Created orders and their payment/shipping information (addresses) and reviews are not deleted.", + "operationId": "deleteCustomer", "responses": { - "200": { - "description": "Found cross sellings", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CrossSellingElementCollection" - } - } - } + "204": { + "description": "Returns a no content response indicating a successful removal of the customer profile" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/product/{productId}": { - "post": { + "/account/address/{addressId}": { + "delete": { "tags": [ - "Product" + "Address" ], - "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", + "summary": "Delete an address of a customer", + "description": "Delete an address of customer.\n\n Only addresses which are not set as default addresses for shipping or billing can be deleted. You can check the current default addresses of your customer using the profile information endpoint and change them using the default address endpoint.\n\n **A customer must have at least one address (which can be used for shipping and billing).**\n\n An automatic fallback is not applied.", + "operationId": "deleteCustomerAddress", "parameters": [ { - "name": "productId", + "name": "addressId", "in": "path", - "description": "Product ID", + "description": "ID of the address to be deleted.", "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$'" + "type": "string" } + } + ], + "responses": { + "204": { + "description": "No Content response, when the address has been deleted" }, + "400": { + "description": "Response containing a list of errors, most likely due to the address being in use" + } + }, + "security": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, + "ApiKey": [], + "ContextToken": [] + } + ] + }, + "patch": { + "tags": [ + "Address" + ], + "summary": "Modify an address of a customer", + "description": "Modifies an existing address of a customer.", + "operationId": "updateCustomerAddress", + "parameters": [ { - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "in": "header", - "name": "sw-include-seo-urls", - "required": false, + "name": "addressId", + "in": "path", + "description": "Address ID", + "required": true, "schema": { - "type": "boolean" + "type": "string" } } ], "requestBody": { - "required": false, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/NoneFieldsCriteria" - } - ] + "$ref": "#/components/schemas/CustomerAddressBody" } } } }, "responses": { "200": { - "description": "Product information along with variant groups and options", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductDetailResponse" + "allOf": [ + { + "$ref": "#/components/schemas/CustomerAddress" + }, + { + "$ref": "#/components/schemas/CustomerAddressRead" + } + ] } } } @@ -16476,32 +17770,21 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/product": { + "/account/list-address": { "post": { "tags": [ - "Product", + "Address", "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}$" - } - } - ], + "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": { @@ -16518,12 +17801,13 @@ }, "responses": { "200": { - "description": "Entity search result containing products", + "description": "", "content": { "application/json": { "schema": { "allOf": [ { + "type": "object", "required": [ "elements" ], @@ -16531,11 +17815,10 @@ "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Product" + "$ref": "#/components/schemas/CustomerAddress" } } - }, - "type": "object" + } }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -16548,77 +17831,129 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] + } + ], + "parameters": [ + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } } ] } }, - "/product/{productId}/reviews": { + "/account/login": { "post": { "tags": [ - "Product", - "Endpoints supporting Criteria " + "Login & Registration" ], - "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" + "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" }, - { - "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}$" + "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": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "token", + "customerId", + "userId" + ], + "properties": { + "token": { + "description": "Generated customer impersonation token", + "type": "string" + }, + "customerId": { + "description": "ID of the customer", + "type": "string" + }, + "userId": { + "description": "ID of the user who generated the token", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "Entity search result containing product reviews", + "$ref": "#/components/responses/ContextTokenResponse" + }, + "400": { + "description": "If the token is incorrect an error is returned", "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ProductReview" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/failure" } } } @@ -16631,66 +17966,55 @@ ] } }, - "/product/{productId}/review": { + "/account/logout": { "post": { "tags": [ - "Product" + "Login & Registration" ], - "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}$" - } + "summary": "Log out a customer", + "description": "Logs out a customer.", + "operationId": "logoutCustomer", + "responses": { + "200": { + "$ref": "#/components/responses/ContextTokenResponse" }, + "403": { + "$ref": "#/components/responses/403" + } + }, + "security": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "ApiKey": [], + "ContextToken": [] } + ] + } + }, + "/account/register-confirm": { + "post": { + "tags": [ + "Login & Registration" ], + "summary": "Confirm a customer registration", + "description": "Confirms a customer registration when double opt-in is activated.\n\nLearn more about double opt-in registration in our guide \"Register a customer\".", + "operationId": "registerConfirm", "requestBody": { + "required": true, "content": { "application/json": { "schema": { "required": [ - "title", - "content", - "points" + "hash", + "em" ], "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.", + "hash": { + "description": "Hash from the email received", "type": "string" }, - "content": { - "description": "The content of review.", + "em": { + "description": "Email hash from the email received", "type": "string" - }, - "points": { - "description": "The review rating for the product.", - "type": "number", - "format": "double" } }, "type": "object" @@ -16700,77 +18024,157 @@ }, "responses": { "200": { - "description": "Success response indicating the review was saved successfully." + "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": [] } ] } }, - "/product/{productId}/find-variant": { + "/account/register": { "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}$" - } - } + "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": [ - "options" + "email", + "password", + "firstName", + "lastName", + "acceptedDataProtection", + "storefrontUrl", + "billingAddress" ], - "properties": { - "options": { - "oneOf": [ - { - "description": "The options parameter for the variant to find.", + "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" - } - }, - { - "description": "The options parameter as a map of groupId => optionId.", - "type": "object", - "additionalProperties": { - "type": "string" - } + }, + "minItems": 1 } - ] - }, - "switchedGroup": { - "description": "The id of the option group that has been switched.", - "type": "string" + } } - }, + ], "type": "object" } } @@ -16778,11 +18182,11 @@ }, "responses": { "200": { - "description": "Returns an FoundCombination struct containing the ids matching the search.", + "description": "Success", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/FindProductVariantRouteResponse" + "$ref": "#/components/schemas/Customer" } } } @@ -16795,76 +18199,50 @@ ] } }, - "/product-listing/{categoryId}": { + "/account/recovery-password-confirm": { "post": { "tags": [ - "Product" - ], - "summary": "Fetch a product listing by category", - "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.", - "operationId": "readProductListing", - "parameters": [ - { - "name": "categoryId", - "in": "path", - "description": "Identifier of a category.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "p", - "in": "query", - "description": "The page number to fetch.", - "required": false, - "schema": { - "type": "integer" - } - }, - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Determines if the response must contain a SeoUrl entity for a product entity", - "required": false, - "schema": { - "type": "boolean" - } - }, - { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } + "Profile" ], + "summary": "Reset a password with recovery credentials", + "description": "This operation is Step 2 of the password reset flow. It is required to conduct Step 1 \"Send a password recovery mail\" in order to obtain the required credentials for this step.Resets a customer's password using credentials from a password recovery mail as a validation.", + "operationId": "recoveryPassword", "requestBody": { + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/ProductListingCriteria" + "required": [ + "hash", + "newPassword", + "newPasswordConfirm" + ], + "properties": { + "hash": { + "description": "Parameter from the link in the confirmation mail sent in Step 1", + "type": "string" }, - { - "$ref": "#/components/schemas/ProductListingFlags" + "newPassword": { + "description": "New password for the customer", + "type": "string" + }, + "newPasswordConfirm": { + "description": "Confirmation of the new password", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", + "description": "Returns a success response indicating a successful update.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/ProductListingResult" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -16877,34 +18255,30 @@ ] } }, - "/handle-payment": { + "/account/recovery-password": { "post": { "tags": [ - "Payment & Shipping" + "Profile" ], - "summary": "Initiate a payment for an order", - "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order.", - "operationId": "handlePaymentMethod", + "summary": "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": [ - "orderId" + "email", + "storefrontUrl" ], "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", + "email": { + "description": "E-Mail address to identify the customer", "type": "string" }, - "errorUrl": { - "description": "URL to which the client should be redirected after erroneous payment", + "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" } }, @@ -16915,19 +18289,11 @@ }, "responses": { "200": { - "description": "Redirect to external payment provider", + "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": { - "type": "object", - "properties": { - "redirectUrl": { - "type": "string" - } - }, - "required": [ - "redirectUrl" - ] + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -16940,27 +18306,19 @@ ] } }, - "/product-export/{accessKey}/{fileName}": { - "get": { + "/account/address/default-shipping/{addressId}": { + "patch": { "tags": [ - "Product" + "Address" ], - "summary": "Export product export", - "operationId": "readProductExport", + "summary": "Change a customer's default shipping address", + "description": "Updates the default (preselected) shipping addresses of a customer.", + "operationId": "defaultShippingAddress", "parameters": [ { - "name": "accessKey", - "in": "path", - "description": "Access Key", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "fileName", + "name": "addressId", "in": "path", - "description": "File Name", + "description": "Address ID", "required": true, "schema": { "type": "string" @@ -16974,170 +18332,98 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/cms/{id}": { - "post": { + "/account/address/default-billing/{addressId}": { + "patch": { "tags": [ - "Content" + "Address" ], - "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": "Change a customer's default billing address", + "description": "Updates the default (preselected) billing addresses of a customer.", + "operationId": "defaultBillingAddress", "parameters": [ { - "name": "id", + "name": "addressId", "in": "path", - "description": "Identifier of the CMS page to be resolved", + "description": "Address 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}$" - } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "slots": { - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/ProductListingCriteria" - } - ] - } + "type": "string" } } - }, + ], "responses": { "200": { - "description": "The loaded cms page", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CmsPage" - } - } - } - }, - "404": { - "$ref": "#/components/responses/404" + "description": "" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/breadcrumb/{id}": { - "get": { + "/account/address": { + "post": { "tags": [ - "Experimental", - "Breadcrumb" + "Address" ], - "summary": "Fetch a breadcrumb", - "description": "Perform search to get category or product breadcrumb. \n\nExperimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", - "operationId": "readBreadcrumb", - "parameters": [ - { - "name": "id", - "in": "path", - "description": "UUID for product or category", - "required": true, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "type", - "in": "query", - "description": "Type: category or product (optional - default: product)", - "required": false, - "schema": { - "type": "string", - "enum": [ - "product", - "category" - ] - } - }, - { - "name": "referrerCategoryId", - "in": "query", - "description": "UUID for referrer category only used for product breadcrumb", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "summary": "Create a new address for a customer", + "description": "Creates a new address for a customer.", + "operationId": "createCustomerAddress", + "requestBody": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CustomerAddressBody" + } } } - ], + }, "responses": { "200": { - "description": "Search result containing SeoUrl\\'s to be used as breadcrumb.", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/BreadcrumbCollection" + "allOf": [ + { + "$ref": "#/components/schemas/CustomerAddress" + }, + { + "$ref": "#/components/schemas/CustomerAddressRead" + } + ] } } } - }, - "400": { - "$ref": "#/components/responses/400" } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/navigation/{activeId}/{rootId}": { + "/language": { "post": { "tags": [ - "Category", + "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch a navigation menu", - "description": "This endpoint returns categories that can be used as a page navigation. You can either return them as a tree or as a flat list. You can also control the depth of the tree.\n\n Instead of passing uuids, you can also use one of the following aliases for the activeId and rootId parameters to get the respective navigations of your sales channel.\n\n * main-navigation\n * service-navigation\n * footer-navigation", - "operationId": "readNavigation", + "summary": "Fetch languages", + "description": "Perform a filtered search for languages.", + "operationId": "readLanguages", "parameters": [ - { - "name": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, - "schema": { - "type": "boolean" - } - }, { "name": "sw-language-id", "in": "header", @@ -17149,65 +18435,28 @@ } }, { - "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, + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, "schema": { - "oneOf": [ - { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - { - "$ref": "#/components/schemas/NavigationType" - } - ] + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" } } ], "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/NoneFieldsCriteria" - }, - { - "properties": { - "depth": { - "description": "Determines the depth of fetched navigation levels.", - "type": "integer", - "format": "int32" - }, - "buildTree": { - "description": "Return the categories as a tree or as a flat list.", - "type": "array", - "items": { - "type": "object" - } - } - }, - "type": "object" + "$ref": "#/components/schemas/Criteria" } ] } @@ -17216,14 +18465,7 @@ }, "responses": { "200": { - "description": "All available navigations", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/NavigationRouteResponse" - } - } - } + "$ref": "#/components/responses/LanguageListResponse" } }, "security": [ @@ -17231,98 +18473,135 @@ "ApiKey": [] } ] - } - }, - "/_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" - } - } - } - } - } - } - } + "tags": [ + "System & Context", + "Endpoints supporting Criteria " + ], + "summary": "Fetch languages", + "description": "Perform a filtered search for languages.", + "operationId": "readLanguagesGet", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + } + ], + "responses": { + "200": { + "$ref": "#/components/responses/LanguageListResponse" } - } + }, + "security": [ + { + "ApiKey": [] + } + ] } }, - "/document/download/{documentId}/{deepLinkCode}": { + "/payment-method": { "post": { "tags": [ - "Document", + "Payment Method", "Endpoints supporting Criteria " ], - "summary": "Download generated document", - "description": "Returns blob file of a generated document to download.", - "operationId": "download", + "summary": "Loads all available payment methods", + "operationId": "readPaymentMethod", "parameters": [ { - "name": "documentId", - "in": "path", - "required": true, + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } }, { - "name": "deepLinkCode", - "required": true, - "in": "path", - "schema": { - "type": "string" - } - }, - { - "name": "sw-language-id", + "name": "sw-include-search-info", "in": "header", - "description": "Instructs Shopware to return the response in the given language.", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", "required": false, "schema": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "enum": [ + "0", + "1" + ], + "default": "1" } } ], "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { "allOf": [ { "$ref": "#/components/schemas/Criteria" + }, + { + "properties": { + "onlyAvailable": { + "description": "List only available", + "type": "boolean" + } + }, + "type": "object" } ] } @@ -17331,33 +18610,100 @@ }, "responses": { "200": { - "description": "Returns the document information and blob to download.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Document" - } - } + "$ref": "#/components/responses/PaymentMethodListResponse" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + }, + "get": { + "tags": [ + "Payment Method", + "Endpoints supporting Criteria " + ], + "summary": "Loads all available payment methods", + "operationId": "readPaymentMethodGet", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + } + ], + "responses": { + "200": { + "$ref": "#/components/responses/PaymentMethodListResponse" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/salutation": { + "/category": { "post": { "tags": [ - "System & Context", + "Category", "Endpoints supporting Criteria " ], - "summary": "Fetch salutations", - "description": "Fetches salutations with a criteria obj.", - "operationId": "readSalutation", + "summary": "Fetch a list of categories", + "description": "Perform a filtered search for categories.", + "operationId": "readCategoryList", "parameters": [ { "name": "sw-language-id", @@ -17368,6 +18714,20 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } } ], "requestBody": { @@ -17386,29 +18746,83 @@ }, "responses": { "200": { - "description": "Entity search result containing salutations.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Salutation" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } + "$ref": "#/components/responses/CategoryListResponse" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + }, + "get": { + "tags": [ + "Category", + "Endpoints supporting Criteria " + ], + "summary": "Fetch a list of categories", + "description": "Perform a filtered search for categories.", + "operationId": "readCategoryListGet", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + } + ], + "responses": { + "200": { + "$ref": "#/components/responses/CategoryListResponse" } }, "security": [ @@ -17418,15 +18832,25 @@ ] } }, - "/checkout/cart": { - "get": { + "/category/{navigationId}": { + "post": { "tags": [ - "Cart" + "Category", + "Endpoints supporting Criteria " ], - "summary": "Fetch or create a cart", - "description": "Used to fetch the current cart or for creating a new one.", - "operationId": "readCart", + "summary": "Fetch a single category", + "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.", + "operationId": "readCategory", "parameters": [ + { + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, + "schema": { + "type": "boolean" + } + }, { "name": "sw-language-id", "in": "header", @@ -17436,40 +18860,60 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, + { + "name": "navigationId", + "in": "path", + "description": "Identifier of the category to be fetched", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "slots", + "in": "query", + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", + "schema": { + "type": "string" + } } ], - "responses": { - "200": { - "description": "Cart", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/Cart" - } + "requestBody": { + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/ProductListingCriteria" + } + ] } } } }, - "security": [ - { - "ApiKey": [] - } - ] - }, - "delete": { - "tags": [ - "Cart" - ], - "summary": "Delete a cart", - "description": "This route deletes the cart of the customer.", - "operationId": "deleteCart", "responses": { - "204": { - "description": "Successfully deleted the cart", + "200": { + "description": "The loaded category with cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/Category" } } } @@ -17480,17 +18924,25 @@ "ApiKey": [] } ] - } - }, - "/checkout/cart/line-item": { - "post": { + }, + "get": { "tags": [ - "Cart" + "Category", + "Endpoints supporting Criteria " ], - "summary": "Add items to the cart", - "description": "This route adds items to the cart. An item can be a product or promotion for example. They are referenced by the `referencedId`-parameter.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#adding-new-items-to-the-cart)", - "operationId": "addLineItem", + "summary": "Fetch a single category", + "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.", + "operationId": "readCategoryGet", "parameters": [ + { + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, + "schema": { + "type": "boolean" + } + }, { "name": "sw-language-id", "in": "header", @@ -17500,24 +18952,222 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CartItems" - } + }, + { + "name": "navigationId", + "in": "path", + "description": "Identifier of the category to be fetched", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "slots", + "in": "query", + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "name": "limit", + "in": "query", + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "schema": { + "type": "integer", + "minimum": 0 + } + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "name": "order", + "in": "query", + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "schema": { + "type": "string" + } + }, + { + "name": "p", + "in": "query", + "description": "Search result page", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "manufacturer", + "in": "query", + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "min-price", + "in": "query", + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "max-price", + "in": "query", + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "rating", + "in": "query", + "description": "Filter products with a minimum average rating.", + "schema": { + "type": "integer" + } + }, + { + "name": "shipping-free", + "in": "query", + "description": "Filters products that are marked as shipping-free.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "properties", + "in": "query", + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "manufacturer-filter", + "in": "query", + "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.", + "schema": { + "type": "boolean", + "default": true + } + }, + { + "name": "price-filter", + "in": "query", + "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.", + "schema": { + "type": "boolean", + "default": true + } + }, + { + "name": "rating-filter", + "in": "query", + "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.", + "schema": { + "type": "boolean", + "default": true + } + }, + { + "name": "shipping-free-filter", + "in": "query", + "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.", + "schema": { + "type": "boolean", + "default": true + } + }, + { + "name": "property-filter", + "in": "query", + "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.", + "schema": { + "type": "boolean", + "default": true + } + }, + { + "name": "property-whitelist", + "in": "query", + "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.", + "schema": { + "type": "string" + } + }, + { + "name": "reduce-aggregations", + "in": "query", + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] } } - }, + ], "responses": { "200": { - "description": "The updated cart.", + "description": "The loaded category with cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "$ref": "#/components/schemas/Category" } } } @@ -17528,34 +19178,22 @@ "ApiKey": [] } ] - }, - "delete": { + } + }, + "/customer/wishlist/add/{productId}": { + "post": { "tags": [ - "Cart" + "Wishlist" ], - "summary": "Remove items from the cart", - "description": "DEPRECATED: use removeLineItem instead. This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", - "operationId": "removeLineItemDeprecated", - "deprecated": true, + "summary": "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": "ids", - "in": "query", - "description": "A list of product identifiers.", + "name": "productId", + "in": "path", + "description": "Identifier of the product to be added.", "required": true, - "schema": { - "type": "array", - "items": { - "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}$" @@ -17564,11 +19202,11 @@ ], "responses": { "200": { - "description": "The updated cart.", + "description": "Returns a success response.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -17576,17 +19214,21 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] - }, - "patch": { + } + }, + "/customer/wishlist": { + "post": { "tags": [ - "Cart" + "Wishlist", + "Endpoints supporting Criteria " ], - "summary": "Update items in the cart", - "description": "This route updates items in the cart. A typical example is updating the quantity of an item.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#updating-items-in-the-cart)", - "operationId": "updateLineItem", + "summary": "Fetch a wishlist", + "description": "Fetch a customer's wishlist. Products on the wishlist can be filtered using a criteria object.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", + "operationId": "readCustomerWishlist", "parameters": [ { "name": "sw-language-id", @@ -17597,24 +19239,43 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } } ], "requestBody": { + "required": false, "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CartItems" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] } } } }, "responses": { "200": { - "description": "The updated cart.", + "description": "", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "$ref": "#/components/schemas/WishlistLoadRouteResponse" } } } @@ -17622,45 +19283,31 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/checkout/cart/line-item/delete": { + "/customer/wishlist/merge": { "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, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } + "Wishlist" ], + "summary": "Create a wishlist for a customer", + "description": "Create a new wishlist for a logged in customer or extend the existing wishlist given a set of products.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * A customer can only have a single wishlist.\n * The wishlist feature has to be activated.", + "operationId": "mergeProductOnWishlist", "requestBody": { "required": true, "content": { "application/json": { "schema": { - "required": [ - "ids" - ], "properties": { - "ids": { - "description": "A list of product identifiers.", + "productIds": { + "description": "List product id", "type": "array", - "minItems": 1, "items": { + "description": "product id", "type": "string", "pattern": "^[0-9a-f]{32}$" } @@ -17673,11 +19320,11 @@ }, "responses": { "200": { - "description": "The updated cart.", + "description": "Returns a success response.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Cart" + "$ref": "#/components/schemas/SuccessResponse" } } } @@ -17685,62 +19332,49 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/checkout/order": { - "post": { + "/customer/wishlist/delete/{productId}": { + "delete": { "tags": [ - "Order" + "Wishlist" ], - "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": "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": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "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}$" } } ], - "requestBody": { - "description": "Contains additional metadata which is stored together with the order. It can also contain payment transaction details.", - "content": { - "application/json": { - "schema": { - "properties": { - "customerComment": { - "description": "Adds a comment from the customer to the order.", - "type": "string" - }, - "affiliateCode": { - "description": "The affiliate code can be used to track which referrer the customer came through. An example could be `Price-comparison-company-XY`.", - "type": "string" - }, - "campaignCode": { - "description": "The campaign code is used to track which action the customer came from. An example could be `Summer-Deals`", - "type": "string" - } - }, - "type": "object" - } - } - } - }, "responses": { "200": { - "description": "Order", + "description": "Returns a success response indicating a successful removal.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Order" + "$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" } } } @@ -17754,82 +19388,52 @@ ] } }, - "/checkout/gateway": { - "get": { + "/media": { + "post": { "tags": [ - "Gateway" + "Content" ], - "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", + "summary": "Fetch and resolve Media Entities", + "description": "Fetch one or multiple Media Entities with the corresponding Identifier.", + "operationId": "readMedia", + "requestBody": { + "content": { + "application/json": { + "schema": { + "properties": { + "ids": { + "description": "Identifier (UUID) of the media entity to be fetched.", + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + }, + "type": "object", + "required": [ + "ids" + ] + } + } + } + }, "responses": { "200": { - "description": "Checkout gateway response", + "description": "The loaded MediaCollection containing the requested Media Entities.", "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" - } - } - } - } + "type": "array", + "items": { + "$ref": "#/components/schemas/Media" } } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -17839,24 +19443,47 @@ ] } }, - "/currency": { + "/country-state/{countryId}": { "post": { "tags": [ "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch currencies", - "description": "Perform a filtered search for currencies.", - "operationId": "readCurrency", + "summary": "Fetch the states of a country", + "description": "Perform a filtered search the states for a country", + "operationId": "readCountryState", "parameters": [ { - "name": "sw-language-id", + "name": "countryId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "sw-include-search-info", "in": "header", - "description": "Instructs Shopware to return the response in the given language.", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", "required": false, "schema": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "enum": [ + "0", + "1" + ], + "default": "1" } } ], @@ -17867,7 +19494,7 @@ "schema": { "allOf": [ { - "$ref": "#/components/schemas/NoneFieldsCriteria" + "$ref": "#/components/schemas/Criteria" } ] } @@ -17876,17 +19503,7 @@ }, "responses": { "200": { - "description": "Entity search result containing currencies.", - "content": { - "application/json": { - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Currency" - } - } - } - } + "$ref": "#/components/responses/CountryStateListResponse" } }, "security": [ @@ -17894,18 +19511,25 @@ "ApiKey": [] } ] - } - }, - "/seo-url": { - "post": { + }, + "get": { "tags": [ - "Sitemap & Routes", + "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch SEO routes", - "description": "Perform a filtered search for seo urls.", - "operationId": "readSeoUrl", + "summary": "Fetch the states of a country", + "description": "Perform a filtered search the states for a country", + "operationId": "readCountryStateGet", "parameters": [ + { + "name": "countryId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, { "name": "sw-language-id", "in": "header", @@ -17915,53 +19539,100 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + } + ], + "responses": { + "200": { + "$ref": "#/components/responses/CountryStateListResponse" + } + }, + "security": [ + { + "ApiKey": [] } + ] + } + }, + "/newsletter/confirm": { + "post": { + "tags": [ + "Newsletter" ], + "summary": "Confirm a newsletter registration", + "description": "You have to use the hash from the link sent out via email to confirm the user registration.", + "operationId": "confirmNewsletter", "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "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": "Entity search result containing seo urls.", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } - } - }, - "type": "object", - "required": [ - "elements" - ] - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } - }, - "404": { - "$ref": "#/components/responses/404" + "description": "The newsletter confirmation was successful." } }, "security": [ @@ -17971,77 +19642,84 @@ ] } }, - "/shipping-method": { + "/newsletter/subscribe": { "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", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, - "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } + "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": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "email", + "option", + "storefrontUrl" + ], + "properties": { + "email": { + "description": "Email address that will receive the confirmation and the newsletter.", + "type": "string" + }, + "option": { + "description": "Defines what should be done.", + "type": "string" + }, + "storefrontUrl": { + "description": "Url of the storefront of the shop. This will be used for generating the link to the /newsletter/confirm inside the confirm email.", + "type": "string" + }, + "salutationId": { + "description": "Identifier of the salutation.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "firstName": { + "description": "First name", + "type": "string" + }, + "lastName": { + "description": "Last name", + "type": "string" + }, + "street": { + "description": "Street", + "type": "string" + }, + "city": { + "description": "City", + "type": "string" + }, + "zipCode": { + "description": "Zip code", + "type": "string" + }, + "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" } } } }, "responses": { "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "required": [ - "elements" - ], - "properties": { - "total": { - "description": "Total amount", - "type": "integer" - }, - "aggregations": { - "description": "aggregation result", - "type": "object" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] - } - } - } + "description": "Success" } }, "security": [ @@ -18051,30 +19729,28 @@ ] } }, - "/app-system/{name}/generate-token": { + "/newsletter/unsubscribe": { "post": { "tags": [ - "App system" - ], - "summary": "Generate JWT token for app system backend", - "description": "Generate JWT token for authenticated communication with the app server", - "operationId": "generateJWTAppSystemAppServer", - "parameters": [ - { - "in": "path", - "name": "name", - "required": true, - "description": "Name of the app", - "schema": { - "type": "string" - } - } + "Newsletter" ], + "summary": "Remove a newsletter subscription", + "description": "Removes a newsletter recipient from the mailing lists.", + "operationId": "unsubscribeToNewsletter", "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { + "required": [ + "email" + ], + "properties": { + "email": { + "description": "Email address that should be removed from the mailing lists.", + "type": "string" + } + }, "type": "object" } } @@ -18082,26 +19758,7 @@ }, "responses": { "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "type": "object", - "properties": { - "token": { - "type": "string" - }, - "expires": { - "type": "string", - "format": "date-time" - }, - "shopId": { - "type": "string" - } - } - } - } - } + "description": "Unsubscribing was successful." } }, "security": [ @@ -18111,33 +19768,38 @@ ] } }, - "/country-state/{countryId}": { + "/seo-url": { "post": { "tags": [ - "System & Context", + "Sitemap & Routes", "Endpoints supporting Criteria " ], - "summary": "Fetch the states of a country", - "description": "Perform a filtered search the states for a country", - "operationId": "readCountryState", + "summary": "Fetch SEO routes", + "description": "Perform a filtered search for seo urls.", + "operationId": "readSeoUrl", "parameters": [ { - "name": "countryId", - "in": "path", - "required": true, + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } }, { - "name": "sw-language-id", + "name": "sw-include-search-info", "in": "header", - "description": "Instructs Shopware to return the response in the given language.", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", "required": false, "schema": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "enum": [ + "0", + "1" + ], + "default": "1" } } ], @@ -18157,29 +19819,89 @@ }, "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" - } - ] - } - } + "$ref": "#/components/responses/SeoUrlListResponse" + }, + "404": { + "$ref": "#/components/responses/404" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + }, + "get": { + "tags": [ + "Sitemap & Routes", + "Endpoints supporting Criteria " + ], + "summary": "Fetch SEO routes", + "description": "Perform a filtered search for seo urls.", + "operationId": "readSeoUrlGet", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + } + ], + "responses": { + "200": { + "$ref": "#/components/responses/SeoUrlListResponse" + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -18189,14 +19911,14 @@ ] } }, - "/contact-form": { - "post": { + "/checkout/cart": { + "get": { "tags": [ - "Content" + "Cart" ], - "summary": "Submit a contact form message", - "description": "Used for submitting contact forms. Be aware that there can be more required fields, depending on the system settings.", - "operationId": "sendContactMail", + "summary": "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", @@ -18209,75 +19931,43 @@ } } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "email", - "subject", - "comment" - ], - "properties": { - "salutationId": { - "description": "Identifier of the salutation. Use `/api/salutation` endpoint to fetch possible values.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "firstName": { - "description": "Firstname. This field may be required depending on the system settings.", - "type": "string" - }, - "lastName": { - "description": "Lastname. This field may be required depending on the system settings.", - "type": "string" - }, - "email": { - "description": "Email address", - "type": "string" - }, - "phone": { - "description": "Phone. This field may be required depending on the system settings.", - "type": "string" - }, - "subject": { - "description": "The subject of the contact form.", - "type": "string" - }, - "comment": { - "description": "The message of the contact form", - "type": "string" - }, - "navigationId": { - "description": "Identifier of the navigation page. Can be used to override the configuration.\nTake a look at the settings of a category containing a concat form in the administration.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "slotId": { - "description": "Identifier of the cms element", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "cmsPageType": { - "description": "Type of the content management page", - "type": "string" - }, - "entityName": { - "description": "Entity name for slot config", - "type": "string" - } - }, - "type": "object" + "responses": { + "200": { + "description": "Cart", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Cart" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + }, + "delete": { + "tags": [ + "Cart" + ], + "summary": "Delete a cart", + "description": "This route deletes the cart of the customer.", + "operationId": "deleteCart", + "responses": { + "204": { + "description": "Successfully deleted the cart", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } } } } }, - "responses": { - "200": { - "description": "Message sent successful." - } - }, "security": [ { "ApiKey": [] @@ -18285,52 +19975,96 @@ ] } }, - "/media": { + "/checkout/cart/line-item": { "post": { "tags": [ - "Content" + "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, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } ], - "summary": "Fetch and resolve Media Entities", - "description": "Fetch one or multiple Media Entities with the corresponding Identifier.", - "operationId": "readMedia", "requestBody": { "content": { "application/json": { "schema": { - "properties": { - "ids": { - "description": "Identifier (UUID) of the media entity to be fetched.", - "type": "array", - "items": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - } - }, - "type": "object", - "required": [ - "ids" - ] + "$ref": "#/components/schemas/CartItems" } } } }, "responses": { "200": { - "description": "The loaded MediaCollection containing the requested Media Entities.", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Media" - } + "$ref": "#/components/schemas/Cart" } } } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + }, + "delete": { + "tags": [ + "Cart" + ], + "summary": "Remove items from the cart", + "description": "DEPRECATED: use removeLineItem instead. This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", + "operationId": "removeLineItemDeprecated", + "deprecated": true, + "parameters": [ + { + "name": "ids", + "in": "query", + "description": "A list of product identifiers.", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } }, - "404": { - "$ref": "#/components/responses/404" + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], + "responses": { + "200": { + "description": "The updated cart.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Cart" + } + } + } } }, "security": [ @@ -18338,39 +20072,42 @@ "ApiKey": [] } ] - } - }, - "/account/newsletter-recipient": { - "post": { + }, + "patch": { "tags": [ - "Profile", - "Newsletter", - "Endpoints supporting Criteria" + "Cart" + ], + "summary": "Update items in the cart", + "description": "This route updates items in the cart. A typical example is updating the quantity of an item.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#updating-items-in-the-cart)", + "operationId": "updateLineItem", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } ], - "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" - } - ] + "$ref": "#/components/schemas/CartItems" } } } }, "responses": { "200": { - "description": "", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/AccountNewsletterRecipient" + "$ref": "#/components/schemas/Cart" } } } @@ -18378,119 +20115,62 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/change-profile": { + "/checkout/cart/line-item/delete": { "post": { "tags": [ - "Profile" + "Cart" + ], + "summary": "Remove items from the cart", + "description": "This route removes items from the cart and recalculates it.\n\nExample: [Working with the cart - Guide](https://developer.shopware.com/docs/guides/integrations-api/store-api-guide/work-with-the-cart#deleting-items-in-the-cart)", + "operationId": "removeLineItem", + "parameters": [ + { + "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" + "ids" ], "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 - } + "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 success response indicating a successful update", + "description": "The updated cart.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/Cart" } } } @@ -18498,41 +20178,47 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/change-email": { + "/checkout/order": { "post": { "tags": [ - "Profile" + "Order" + ], + "summary": "Create an order from a cart", + "description": "Creates a new order from the current cart and deletes the cart.\n\nIf you are using the [prepared payment flow](https://developer.shopware.com/docs/concepts/commerce/checkout-concept/payments#2.1-prepare-payment-optional), this endpoint also receives additional transaction details. The exact name of the parameters depends on the implementation of the corresponding *payment handler*.", + "operationId": "createOrder", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } ], - "summary": "Change the customer's email address", - "description": "Changes a customer's email address to a new email address, using their current password as a validation.", - "operationId": "changeEmail", "requestBody": { - "required": true, + "description": "Contains additional metadata which is stored together with the order. It can also contain payment transaction details.", "content": { "application/json": { "schema": { - "required": [ - "email", - "emailConfirmation", - "password" - ], "properties": { - "email": { - "description": "New email address. Has to be unique amongst all customers", + "customerComment": { + "description": "Adds a comment from the customer to the order.", "type": "string" }, - "emailConfirmation": { - "description": "Confirmation of the new email address.", + "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" }, - "password": { - "description": "Customer's current password", + "campaignCode": { + "description": "The campaign code is used to track which action the customer came from. An example could be `Summer-Deals`", "type": "string" } }, @@ -18543,11 +20229,11 @@ }, "responses": { "200": { - "description": "Returns a success response indicating a successful update", + "description": "Order", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/Order" } } } @@ -18561,40 +20247,79 @@ ] } }, - "/account/change-language": { - "post": { + "/checkout/gateway": { + "get": { "tags": [ - "Profile" + "Gateway" ], - "summary": "Change the customer's language.", - "description": "Changes the language of the logged in customer", - "operationId": "changeLanguage", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "languageId" - ], - "properties": { - "language": { - "description": "New languageId", - "type": "string" - } - }, - "type": "object" - } - } - } - }, + "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 a success response indicating a successful update", + "description": "Checkout gateway response", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "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" + } + } + } + } + } } } } @@ -18602,41 +20327,87 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/change-password": { + "/contact-form": { "post": { "tags": [ - "Profile" + "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": "Change the customer's password", - "description": "Changes a customer's password using their current password as a validation.", - "operationId": "changePassword", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "password", - "newPassword", - "newPasswordConfirm" + "email", + "subject", + "comment" ], "properties": { - "password": { - "description": "Current password of the customer", + "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" }, - "newPassword": { - "description": "New Password for the customer", + "lastName": { + "description": "Lastname. This field may be required depending on the system settings.", "type": "string" }, - "newPasswordConfirm": { - "description": "Confirmation of the new password", + "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" } }, @@ -18644,133 +20415,411 @@ } } } - }, + }, + "responses": { + "200": { + "description": "Message sent successful." + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/breadcrumb/{id}": { + "get": { + "tags": [ + "Experimental", + "Breadcrumb" + ], + "summary": "Fetch a breadcrumb", + "description": "Perform search to get category or product breadcrumb. \n\nExperimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", + "operationId": "readBreadcrumb", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "UUID for product or category", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "type", + "in": "query", + "description": "Type: category or product (optional - default: product)", + "required": false, + "schema": { + "type": "string", + "enum": [ + "product", + "category" + ] + } + }, + { + "name": "referrerCategoryId", + "in": "query", + "description": "UUID for referrer category only used for product breadcrumb", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + ], "responses": { "200": { - "description": "Returns a success response indicating a successful update.", + "description": "Search result containing SeoUrl\\'s to be used as breadcrumb.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/BreadcrumbCollection" } } } + }, + "400": { + "$ref": "#/components/responses/400" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/convert-guest": { + "/cms/{id}": { "post": { "tags": [ - "Profile" + "Content" + ], + "summary": "Fetch and resolve a CMS page", + "description": "Loads a content management page by its identifier and resolve the slot data. This could be media files, product listing and so on.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.", + "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", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + } ], - "summary": "Convert a guest customer to a registered customer", - "description": "Takes a password to convert a guest customer to a registered customer. The customer can then log in with the provided password in the future.", - "operationId": "convertGuest", "requestBody": { - "required": true, "content": { "application/json": { "schema": { - "required": [ - "password" - ], - "properties": { - "password": { - "description": "New Password for the customer", - "type": "string" + "allOf": [ + { + "properties": { + "slots": { + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/ProductListingCriteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Returns a success response indicating a successful update.", + "description": "The loaded cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "$ref": "#/components/schemas/CmsPage" } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] - } - }, - "/account/customer-recovery-is-expired": { - "post": { + }, + "get": { "tags": [ - "Profile" + "Content" ], - "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" - } + "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": "readCmsGet", + "parameters": [ + { + "name": "id", + "in": "path", + "description": "Identifier of the CMS page to be resolved", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "slots", + "in": "query", + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "name": "limit", + "in": "query", + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "schema": { + "type": "integer", + "minimum": 0 + } + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "name": "order", + "in": "query", + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "schema": { + "type": "string" + } + }, + { + "name": "p", + "in": "query", + "description": "Search result page", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "manufacturer", + "in": "query", + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "min-price", + "in": "query", + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "max-price", + "in": "query", + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "rating", + "in": "query", + "description": "Filter products with a minimum average rating.", + "schema": { + "type": "integer" + } + }, + { + "name": "shipping-free", + "in": "query", + "description": "Filters products that are marked as shipping-free.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "properties", + "in": "query", + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "manufacturer-filter", + "in": "query", + "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.", + "schema": { + "type": "boolean", + "default": true + } + }, + { + "name": "price-filter", + "in": "query", + "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.", + "schema": { + "type": "boolean", + "default": true + } + }, + { + "name": "rating-filter", + "in": "query", + "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.", + "schema": { + "type": "boolean", + "default": true + } + }, + { + "name": "shipping-free-filter", + "in": "query", + "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.", + "schema": { + "type": "boolean", + "default": true + } + }, + { + "name": "property-filter", + "in": "query", + "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.", + "schema": { + "type": "boolean", + "default": true + } + }, + { + "name": "property-whitelist", + "in": "query", + "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.", + "schema": { + "type": "string" + } + }, + { + "name": "reduce-aggregations", + "in": "query", + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "schema": { + "oneOf": [ + { + "type": "string" }, - "type": "object" - } + { + "type": "null" + } + ] } } - }, + ], "responses": { "200": { - "description": "Returns a CustomerRecoveryIsExpiredResponse that indicates if the hash is expired or not.", + "description": "The loaded cms page", "content": { "application/json": { "schema": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "isExpired": { - "type": "boolean" - } - }, - "required": [ - "isExpired" - ] - } - }, - "apiAlias": { - "enum": [ - "array_struct" - ], - "type": "string" - } - } + "$ref": "#/components/schemas/CmsPage" } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -18780,23 +20829,77 @@ ] } }, - "/account/customer": { + "/search": { "post": { "tags": [ - "Profile", - "Endpoints supporting Criteria " + "Product" + ], + "summary": "Search for products", + "description": "Performs a search for products which can be used to display a product listing.", + "operationId": "searchPage", + "parameters": [ + { + "name": "p", + "in": "query", + "description": "The page number to fetch.", + "required": false, + "schema": { + "type": "integer" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "in": "header", + "name": "sw-include-seo-urls", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + } ], - "summary": "Get information about current customer", - "description": "Returns information about the current customer.", - "operationId": "readCustomer", "requestBody": { - "required": false, "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/NoneFieldsCriteria" + "properties": { + "search": { + "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/ProductListingCriteria" + }, + { + "$ref": "#/components/schemas/ProductListingFlags" } ] } @@ -18805,11 +20908,11 @@ }, "responses": { "200": { - "description": "Returns the logged in customer, also for guest sessions. Check for the value of `guest` field to see whether the customer is a guest.", + "description": "Returns a product listing containing all products and additional fields to display a listing.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Customer" + "$ref": "#/components/schemas/ProductListingResult" } } } @@ -18817,136 +20920,82 @@ }, "security": [ { - "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": [] + "ApiKey": [] } ] } }, - "/account/address/{addressId}": { - "delete": { + "/product-listing/{categoryId}": { + "post": { "tags": [ - "Address" + "Product" ], - "summary": "Delete an address of a customer", - "description": "Delete an address of customer.\n\n Only addresses which are not set as default addresses for shipping or billing can be deleted. You can check the current default addresses of your customer using the profile information endpoint and change them using the default address endpoint.\n\n **A customer must have at least one address (which can be used for shipping and billing).**\n\n An automatic fallback is not applied.", - "operationId": "deleteCustomerAddress", + "summary": "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": "addressId", + "name": "categoryId", "in": "path", - "description": "ID of the address to be deleted.", + "description": "Identifier of a category.", "required": true, "schema": { "type": "string" } - } - ], - "responses": { - "204": { - "description": "No Content response, when the address has been deleted" }, - "400": { - "description": "Response containing a list of errors, most likely due to the address being in use" - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - }, - "patch": { - "tags": [ - "Address" - ], - "summary": "Modify an address of a customer", - "description": "Modifies an existing address of a customer.", - "operationId": "updateCustomerAddress", - "parameters": [ { - "name": "addressId", - "in": "path", - "description": "Address ID", - "required": true, + "name": "p", + "in": "query", + "description": "The page number to fetch.", + "required": false, "schema": { - "type": "string" + "type": "integer" } - } - ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomerAddressBody" - } + }, + { + "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" } - } - }, - "responses": { - "200": { - "description": "", - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/CustomerAddress" - }, - { - "$ref": "#/components/schemas/CustomerAddressRead" - } - ] - } - } + }, + { + "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}$" } - } - }, - "security": [ + }, { - "ApiKey": [], - "ContextToken": [] + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } } - ] - } - }, - "/account/list-address": { - "post": { - "tags": [ - "Address", - "Endpoints supporting Criteria " ], - "summary": "Fetch addresses of a customer", - "description": "Lists all addresses of the current customer and allows filtering them based on a criteria.", - "operationId": "listAddress", "requestBody": { - "required": false, "content": { "application/json": { "schema": { "allOf": [ { - "$ref": "#/components/schemas/Criteria" + "$ref": "#/components/schemas/ProductListingCriteria" + }, + { + "$ref": "#/components/schemas/ProductListingFlags" } ] } @@ -18955,29 +21004,11 @@ }, "responses": { "200": { - "description": "", + "description": "Returns a product listing containing all products and additional fields to display a listing.", "content": { "application/json": { "schema": { - "allOf": [ - { - "type": "object", - "required": [ - "elements" - ], - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CustomerAddress" - } - } - } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/ProductListingResult" } } } @@ -18985,54 +21016,127 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/login": { + "/navigation/{activeId}/{rootId}": { "post": { "tags": [ - "Login & Registration" + "Category", + "Endpoints supporting Criteria " + ], + "summary": "Fetch a navigation menu", + "description": "This endpoint returns categories that can be used as a page navigation. You can either return them as a tree or as a flat list. You can also control the depth of the tree.\n\n Instead of passing uuids, you can also use one of the following aliases for the activeId and rootId parameters to get the respective navigations of your sales channel.\n\n * main-navigation\n * service-navigation\n * footer-navigation", + "operationId": "readNavigation", + "parameters": [ + { + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, + { + "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" + } + ] + } + } ], - "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" + "allOf": [ + { + "$ref": "#/components/schemas/NoneFieldsCriteria" }, - "password": { - "description": "Password", - "type": "string" + { + "properties": { + "depth": { + "description": "Determines the depth of fetched navigation levels.", + "type": "integer", + "format": "int32" + }, + "buildTree": { + "description": "Return the categories as a tree or as a flat list.", + "type": "array", + "items": { + "type": "object" + } + } + }, + "type": "object" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "401": { - "description": "If credentials are incorrect an error is returned", + "description": "All available navigations", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/failure" + "$ref": "#/components/schemas/NavigationRouteResponse" } } } @@ -19043,55 +21147,143 @@ "ApiKey": [] } ] - } - }, - "/account/login/imitate-customer": { - "post": { + }, + "get": { "tags": [ - "Login & Registration" + "Category", + "Endpoints supporting Criteria " ], - "summary": "Imitate the log in as a customer", - "description": "Imitate the log in as a customer given a generated token.", - "operationId": "imitateCustomerLogin", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "token", - "customerId", - "userId" - ], - "properties": { - "token": { - "description": "Generated customer impersonation token", - "type": "string" - }, - "customerId": { - "description": "ID of the customer", - "type": "string" - }, - "userId": { - "description": "ID of the user who generated the token", - "type": "string" - } + "summary": "Fetch a navigation menu", + "description": "This endpoint returns categories that can be used as a page navigation. You can either return them as a tree or as a flat list. You can also control the depth of the tree.\n\n Instead of passing uuids, you can also use one of the following aliases for the activeId and rootId parameters to get the respective navigations of your sales channel.\n\n * main-navigation\n * service-navigation\n * footer-navigation", + "operationId": "readNavigationGet", + "parameters": [ + { + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "activeId", + "in": "path", + "description": "Identifier of the active category in the navigation tree (if not used, just set to the same as rootId).", + "required": true, + "schema": { + "oneOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + { + "$ref": "#/components/schemas/NavigationType" + } + ] + } + }, + { + "name": "rootId", + "in": "path", + "description": "Identifier of the root category for your desired navigation tree. You can use it to fetch sub-trees of your navigation tree.", + "required": true, + "schema": { + "oneOf": [ + { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, + { + "$ref": "#/components/schemas/NavigationType" + } + ] + } + }, + { + "name": "depth", + "in": "query", + "description": "Determines the depth of fetched navigation levels.", + "required": false, + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "buildTree", + "in": "query", + "description": "Return the categories as a tree or as a flat list.", + "required": false, + "schema": { + "type": "array", + "items": { "type": "object" } - } + }, + "style": "deepObject", + "explode": true + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" } - }, + ], "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "400": { - "description": "If the token is incorrect an error is returned", + "description": "All available navigations", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/failure" + "$ref": "#/components/schemas/NavigationRouteResponse" } } } @@ -19104,227 +21296,158 @@ ] } }, - "/account/logout": { - "post": { - "tags": [ - "Login & Registration" - ], - "summary": "Log out a customer", - "description": "Logs out a customer.", - "operationId": "logoutCustomer", - "responses": { - "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "403": { - "$ref": "#/components/responses/403" - } - }, - "security": [ - { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/account/register-confirm": { + "/salutation": { "post": { "tags": [ - "Login & Registration" + "System & Context", + "Endpoints supporting Criteria " ], - "summary": "Confirm a customer registration", - "description": "Confirms a customer registration when double opt-in is activated.\n\nLearn more about double opt-in registration in our guide \"Register a customer\".", - "operationId": "registerConfirm", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "hash", - "em" - ], - "properties": { - "hash": { - "description": "Hash from the email received", - "type": "string" - }, - "em": { - "description": "Email hash from the email received", - "type": "string" - } - }, - "type": "object" - } - } - } - }, - "responses": { - "200": { - "description": "Returns the logged in customer. The customer is automatically logged in with the `sw-context-token` header provided, which can be reused for subsequent requests." - }, - "404": { - "description": "No hash provided" - }, - "412": { - "description": "The customer has already been confirmed" - } - }, - "security": [ + "summary": "Fetch salutations", + "description": "Fetches salutations with a criteria obj.", + "operationId": "readSalutation", + "parameters": [ { - "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", - "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 - } - } + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - ], - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Success", + "$ref": "#/components/responses/SalutationListResponse" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + }, + "get": { + "tags": [ + "System & Context", + "Endpoints supporting Criteria " + ], + "summary": "Fetch salutations", + "description": "Perform a filtered search for salutations.", + "operationId": "readSalutationGet", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + } + ], + "responses": { + "200": { + "$ref": "#/components/responses/SalutationListResponse" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/context": { + "get": { + "tags": [ + "System & Context" + ], + "summary": "Fetch the current context", + "description": "Fetches the current context. This includes for example the `customerGroup`, `currency`, `taxRules` and many more.", + "operationId": "readContext", + "responses": { + "200": { + "description": "Returns the current context.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Customer" + "$ref": "#/components/schemas/SalesChannelContext" } } } @@ -19335,38 +21458,59 @@ "ApiKey": [] } ] - } - }, - "/account/recovery-password-confirm": { - "post": { + }, + "patch": { "tags": [ - "Profile" + "System & Context" ], - "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", + "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": [ - "hash", - "newPassword", - "newPasswordConfirm" - ], "properties": { - "hash": { - "description": "Parameter from the link in the confirmation mail sent in Step 1", - "type": "string" + "currencyId": { + "description": "Currency", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "newPassword": { - "description": "New password for the customer", - "type": "string" + "languageId": { + "description": "Language", + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "newPasswordConfirm": { - "description": "Confirmation of the new password", - "type": "string" + "billingAddressId": { + "description": "Billing Address", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingAddressId": { + "description": "Shipping Address", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "paymentMethodId": { + "description": "Payment Method", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "shippingMethodId": { + "description": "Shipping Method", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryId": { + "description": "Country", + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "countryStateId": { + "description": "Country State", + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, "type": "object" @@ -19376,14 +21520,7 @@ }, "responses": { "200": { - "description": "Returns a success response indicating a successful update.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } + "$ref": "#/components/responses/ContextTokenResponse" } }, "security": [ @@ -19393,31 +21530,22 @@ ] } }, - "/account/recovery-password": { + "/context/gateway": { "post": { - "tags": [ - "Profile" - ], - "summary": "Send a password recovery mail", - "description": "This operation is Step 1 of the password reset flow. Make sure to implement Step 2 \"Reset password with recovery credentials\" in order to allow for the complete flow in your application. Sends a recovery mail containing a link with credentials that allows a customer to reset their password.", - "operationId": "sendRecoveryMail", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "email", - "storefrontUrl" + "appName" ], "properties": { - "email": { - "description": "E-Mail address to identify the customer", + "appName": { "type": "string" }, - "storefrontUrl": { - "description": "URL of the storefront to use for the generated reset link. It has to be a domain that is configured in the sales channel domain settings.", - "type": "string" + "data": { + "type": "object" } }, "type": "object" @@ -19425,120 +21553,102 @@ } } }, - "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.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } - } - }, - "security": [ - { - "ApiKey": [] - } - ] - } - }, - "/account/address/default-shipping/{addressId}": { - "patch": { "tags": [ - "Address" - ], - "summary": "Change a customer's default shipping address", - "description": "Updates the default (preselected) shipping addresses of a customer.", - "operationId": "defaultShippingAddress", - "parameters": [ - { - "name": "addressId", - "in": "path", - "description": "Address ID", - "required": true, - "schema": { - "type": "string" - } - } + "Gateway" ], + "summary": "Call the context gateway", + "description": "Call the context gateway, which is used to manipulate certain aspects of context (e.g. selected payment methods, register customer, etc.).", + "operationId": "contextGateway", "responses": { "200": { - "description": "" + "$ref": "#/components/responses/ContextTokenResponse" + }, + "400": { + "description": "App server communication error" + }, + "422": { + "description": "Error provided by App Server with message to show customer" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] - } - ] - } - }, - "/account/address/default-billing/{addressId}": { - "patch": { + "ApiKey": [] + } + ] + }, + "get": { "tags": [ - "Address" + "Gateway" ], - "summary": "Change a customer's default billing address", - "description": "Updates the default (preselected) billing addresses of a customer.", - "operationId": "defaultBillingAddress", + "summary": "Call the context gateway", + "description": "Call the context gateway, which is used to manipulate certain aspects of context (e.g. selected payment methods, register customer, etc.). Please prefer using the POST version of this endpoint.", + "operationId": "contextGatewayGet", "parameters": [ { - "name": "addressId", - "in": "path", - "description": "Address ID", + "name": "appName", + "in": "query", "required": true, "schema": { "type": "string" } + }, + { + "name": "data", + "in": "query", + "schema": { + "type": "object" + }, + "style": "deepObject" } ], "responses": { "200": { - "description": "" + "$ref": "#/components/responses/ContextTokenResponse" + }, + "400": { + "description": "App server communication error" + }, + "422": { + "description": "Error provided by App Server with message to show customer" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/account/address": { - "post": { + "/sitemap": { + "get": { "tags": [ - "Address" + "Sitemap & Routes" ], - "summary": "Create a new address for a customer", - "description": "Creates a new address for a customer.", - "operationId": "createCustomerAddress", - "requestBody": { - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/CustomerAddressBody" - } + "summary": "Fetch 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": "", + "description": "Returns a list of available sitemaps.", "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/CustomerAddress" - }, - { - "$ref": "#/components/schemas/CustomerAddressRead" - } - ] + "type": "array", + "items": { + "$ref": "#/components/schemas/Sitemap" + } } } } @@ -19546,28 +21656,28 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/customer-group-registration/config/{customerGroupId}": { + "/sitemap/{filePath}": { "get": { "tags": [ - "Login & Registration" + "Sitemap & Routes" ], - "summary": "Fetch registration settings for customer group", - "operationId": "getCustomerGroupRegistrationInfo", + "summary": "Download sitemap file", + "description": "Downloads the sitemap file from the configured sitemap storage.", + "operationId": "getSitemapFile", "parameters": [ { - "name": "customerGroupId", + "name": "filePath", "in": "path", - "description": "Customer group id", + "description": "The path to the sitemap file", "required": true, "schema": { "type": "string", - "pattern": "^[0-9a-f]{32}$" + "pattern": ".*\\.(xml|gz)$" } }, { @@ -19583,11 +21693,18 @@ ], "responses": { "200": { - "description": "Returns the customer group including registration settings.", + "description": "Returns the blob to download.", "content": { - "application/json": { + "application/xml": { "schema": { - "$ref": "#/components/schemas/CustomerGroup" + "type": "string", + "format": "binary" + } + }, + "application/gzip": { + "schema": { + "type": "string", + "format": "binary" } } } @@ -19600,239 +21717,229 @@ ] } }, - "/country": { - "post": { + "/product-export/{accessKey}/{fileName}": { + "get": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Product" ], - "summary": "Fetch countries", - "description": "Perform a filtered search for countries", - "operationId": "readCountry", + "summary": "Export product export", + "operationId": "readProductExport", "parameters": [ { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "name": "accessKey", + "in": "path", + "description": "Access Key", + "required": true, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" + } + }, + { + "name": "fileName", + "in": "path", + "description": "File Name", + "required": true, + "schema": { + "type": "string" } } ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - } - ] - } - } + "responses": { + "200": { + "description": "" } }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/_info/routes": { + "get": { + "summary": "Get API routes", + "operationId": "getRoutes", + "tags": [ + "System Info & Health Check" + ], "responses": { "200": { - "description": "Entity search result containing countries.", + "description": "Successful operation", "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Country" + "type": "object", + "required": [ + "endpoints" + ], + "properties": { + "endpoints": { + "type": "array", + "items": { + "type": "object", + "required": [ + "methods", + "path" + ], + "properties": { + "methods": { + "type": "array", + "items": { + "type": "string" + } + }, + "path": { + "type": "string" } } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" + } } - ] + } } } } } - }, - "security": [ - { - "ApiKey": [] - } - ] + } } }, - "/_info/openapi3.json": { - "get": { + "/document/download/{documentId}/{deepLinkCode}": { + "post": { "tags": [ - "System Info & Health Check" + "Document", + "Endpoints supporting Criteria " ], - "summary": "Get OpenAPI Specification", - "description": "Get information about the store API in OpenAPI format.", - "operationId": "api-info", + "summary": "Download generated document", + "description": "Returns blob file of a generated document to download.", + "operationId": "download", "parameters": [ { - "name": "type", - "in": "query", - "description": "Type of the api", + "name": "documentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "deepLinkCode", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, "schema": { "type": "string", "enum": [ - "jsonapi", - "json" - ] - } - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/OpenApi3" - } - } - } - }, - "/context": { - "get": { - "tags": [ - "System & Context" - ], - "summary": "Fetch the current context", - "description": "Fetches the current context. This includes for example the `customerGroup`, `currency`, `taxRules` and many more.", - "operationId": "readContext", - "responses": { - "200": { - "description": "Returns the current context.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SalesChannelContext" - } - } + "0", + "1" + ], + "default": "1" } } - }, - "security": [ - { - "ApiKey": [] - } - ] - }, - "patch": { - "tags": [ - "System & Context" ], - "summary": "Modify the current context", - "description": "Used for switching the context. A typical example would be changing the language or changing the currency.", - "operationId": "updateContext", "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "properties": { - "currencyId": { - "description": "Currency", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "languageId": { - "description": "Language", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "billingAddressId": { - "description": "Billing Address", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shippingAddressId": { - "description": "Shipping Address", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "paymentMethodId": { - "description": "Payment Method", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "shippingMethodId": { - "description": "Shipping Method", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryId": { - "description": "Country", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "countryStateId": { - "description": "Country State", - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" + "description": "Returns the document information and blob to download.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Document" + } + } + } } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/context/gateway": { + "/app-system/{name}/generate-token": { "post": { + "tags": [ + "App system" + ], + "summary": "Generate JWT token for app system backend", + "description": "Generate JWT token for authenticated communication with the app server", + "operationId": "generateJWTAppSystemAppServer", + "parameters": [ + { + "in": "path", + "name": "name", + "required": true, + "description": "Name of the app", + "schema": { + "type": "string" + } + } + ], "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { - "required": [ - "appName" - ], - "properties": { - "appName": { - "type": "string" - }, - "data": { - "type": "object" - } - }, "type": "object" } } } }, - "tags": [ - "Gateway" - ], - "summary": "Call the context gateway", - "description": "Call the context gateway, which is used to manipulate certain aspects of context (e.g. selected payment methods, register customer, etc.).", - "operationId": "contextGateway", "responses": { "200": { - "$ref": "#/components/responses/ContextTokenResponse" - }, - "400": { - "description": "App server communication error" - }, - "422": { - "description": "Error provided by App Server with message to show customer" + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "token": { + "type": "string" + }, + "expires": { + "type": "string", + "format": "date-time" + }, + "shopId": { + "type": "string" + } + } + } + } + } } }, "security": [ @@ -19842,15 +21949,15 @@ ] } }, - "/category": { + "/shipping-method": { "post": { "tags": [ - "Category", + "Payment & Shipping", "Endpoints supporting Criteria " ], - "summary": "Fetch a list of categories", - "description": "Perform a filtered search for categories.", - "operationId": "readCategoryList", + "summary": "Fetch shipping methods", + "description": "Perform a filtered search for shipping methods.", + "operationId": "readShippingMethod", "parameters": [ { "name": "sw-language-id", @@ -19861,6 +21968,28 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, + { + "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": { @@ -19879,21 +22008,32 @@ }, "responses": { "200": { - "description": "Entity search result containing categories.", + "description": "", "content": { "application/json": { "schema": { "allOf": [ { - "type": "object", + "required": [ + "elements" + ], "properties": { + "total": { + "description": "Total amount", + "type": "integer" + }, + "aggregations": { + "description": "aggregation result", + "type": "object" + }, "elements": { "type": "array", "items": { - "$ref": "#/components/schemas/Category" + "$ref": "#/components/schemas/ShippingMethod" } } - } + }, + "type": "object" }, { "$ref": "#/components/schemas/EntitySearchResult" @@ -19909,25 +22049,101 @@ "ApiKey": [] } ] + }, + "get": { + "tags": [ + "Payment & Shipping", + "Endpoints supporting Criteria " + ], + "summary": "Fetch shipping methods", + "description": "Perform a filtered search for shipping methods.", + "operationId": "readShippingMethodGet", + "parameters": [ + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + } + ], + "responses": { + "200": { + "$ref": "#/components/responses/ShippingMethodListResponse" + } + }, + "security": [ + { + "ApiKey": [] + } + ] } }, - "/category/{navigationId}": { + "/landing-page/{landingPageId}": { "post": { "tags": [ - "Category", + "Content", "Endpoints supporting Criteria " ], - "summary": "Fetch a single category", - "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.", - "operationId": "readCategory", + "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": "sw-include-seo-urls", - "in": "header", - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", - "required": false, + "name": "landingPageId", + "in": "path", + "description": "Identifier of the landing page.", + "required": true, "schema": { - "type": "boolean" + "type": "string" } }, { @@ -19941,21 +22157,17 @@ } }, { - "name": "navigationId", - "in": "path", - "description": "Identifier of the category to be fetched", - "required": true, + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, "schema": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - { - "name": "slots", - "in": "query", - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a '|' character", - "schema": { - "type": "string" + "enum": [ + "0", + "1" + ], + "default": "1" } } ], @@ -19968,7 +22180,20 @@ "$ref": "#/components/schemas/Criteria" }, { - "$ref": "#/components/schemas/ProductListingCriteria" + "allOf": [ + { + "properties": { + "slots": { + "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/ProductListingCriteria" + } + ] } ] } @@ -19977,14 +22202,17 @@ }, "responses": { "200": { - "description": "The loaded category with cms page", + "description": "The loaded landing page with cms page", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Category" + "$ref": "#/components/schemas/LandingPage" } } } + }, + "404": { + "$ref": "#/components/responses/404" } }, "security": [ @@ -19994,14 +22222,46 @@ ] } }, - "/payment-method": { + "/cookie-groups": { + "get": { + "tags": [ + "Experimental", + "Cookies" + ], + "summary": "Fetch all cookie groups", + "description": "Fetch all cookie groups available in the system with configuration hash. Experimental API, not part of our backwards compatibility promise, thus this API can introduce breaking changes at any time.", + "operationId": "readCookieGroups", + "responses": { + "200": { + "description": "Successful response with a collection of cookie groups and their configuration hash.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CookieRouteResponse" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/country": { "post": { "tags": [ - "Payment Method", + "System & Context", "Endpoints supporting Criteria " ], - "summary": "Loads all available payment methods", - "operationId": "readPaymentMethod", + "summary": "Fetch countries", + "description": "Perform a filtered search for countries", + "operationId": "readCountry", "parameters": [ { "name": "sw-language-id", @@ -20012,10 +22272,24 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } } ], "requestBody": { - "required": true, + "required": false, "content": { "application/json": { "schema": { @@ -20030,30 +22304,7 @@ }, "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" - } - } - } + "$ref": "#/components/responses/CountryListResponse" } }, "security": [ @@ -20061,27 +22312,16 @@ "ApiKey": [] } ] - } - }, - "/landing-page/{landingPageId}": { - "post": { + }, + "get": { "tags": [ - "Content", + "System & Context", "Endpoints supporting Criteria " ], - "summary": "Fetch a landing page with the resolved CMS page", - "description": "Loads a landing page by its identifier and resolves the CMS page.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.", - "operationId": "readLandingPage", + "summary": "Fetch countries", + "description": "Perform a filtered search for countries", + "operationId": "readCountryGet", "parameters": [ - { - "name": "landingPageId", - "in": "path", - "description": "Identifier of the landing page.", - "required": true, - "schema": { - "type": "string" - } - }, { "name": "sw-language-id", "in": "header", @@ -20091,67 +22331,102 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" } ], - "requestBody": { - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - }, - { - "allOf": [ - { - "properties": { - "slots": { - "description": "Resolves only the given slot identifiers. The identifiers have to be seperated by a `|` character.", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/ProductListingCriteria" - } - ] - } - ] - } - } - } - }, "responses": { "200": { - "description": "The loaded landing page with cms page", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/LandingPage" - } - } - } - }, - "404": { - "$ref": "#/components/responses/404" + "$ref": "#/components/responses/CountryListResponse" } }, "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" + } + } } }, - "/search": { + "/search-suggest": { "post": { "tags": [ "Product" ], - "summary": "Search for products", - "description": "Performs a search for products which can be used to display a product listing.", - "operationId": "searchPage", + "summary": "Search for products (suggest)", + "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", + "operationId": "searchSuggest", "parameters": [ { "name": "p", @@ -20173,21 +22448,30 @@ } }, { - "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "name": "sw-include-search-info", "in": "header", - "name": "sw-include-seo-urls", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", "required": false, "schema": { - "type": "boolean" + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" } } ], "requestBody": { + "required": true, "content": { "application/json": { "schema": { "allOf": [ { + "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.", @@ -20209,7 +22493,7 @@ }, "responses": { "200": { - "description": "Returns a product listing containing all products and additional fields to display a listing.", + "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", "content": { "application/json": { "schema": { @@ -20226,15 +22510,14 @@ ] } }, - "/language": { + "/order/state/cancel": { "post": { "tags": [ - "System & Context", - "Endpoints supporting Criteria " + "Order" ], - "summary": "Fetch languages", - "description": "Perform a filtered search for languages.", - "operationId": "readLanguages", + "summary": "Cancel an order", + "description": "Cancels an order. The order state will be set to 'cancelled'.", + "operationId": "cancelOrder", "parameters": [ { "name": "sw-language-id", @@ -20248,14 +22531,20 @@ } ], "requestBody": { - "required": false, + "required": true, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "properties": { + "orderId": { + "description": "The identifier of the order to be canceled.", + "type": "string", + "pattern": "^[0-9a-f]{32}$" } + }, + "type": "object", + "required": [ + "orderId" ] } } @@ -20263,29 +22552,11 @@ }, "responses": { "200": { - "description": "Entity search result containing languages.", + "description": "Returns the state of the state machine\n\n example: More information about the state machine can be found in the corresponding guide: [Using the state machine](https://developer.shopware.com/docs/guides/plugins/plugins/checkout/order/using-the-state-machine)", "content": { "application/json": { "schema": { - "allOf": [ - { - "properties": { - "elements": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Language" - } - } - }, - "required": [ - "elements" - ], - "type": "object" - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } - ] + "$ref": "#/components/schemas/StateMachineState" } } } @@ -20293,123 +22564,183 @@ }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/newsletter/confirm": { + "/order": { "post": { "tags": [ - "Newsletter" + "Order", + "Endpoints supporting Criteria " + ], + "summary": "Fetch a list of orders", + "description": "List orders of a customer.", + "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}$" + } + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + } ], - "summary": "Confirm a newsletter registration", - "description": "You have to use the hash from the link sent out via email to confirm the user registration.", - "operationId": "confirmNewsletter", "requestBody": { "required": true, "content": { "application/json": { "schema": { - "required": [ - "hash", - "em" - ], - "properties": { - "hash": { - "description": "Hash parameter from link the in the confirmation mail", - "type": "string" + "allOf": [ + { + "$ref": "#/components/schemas/NoneFieldsCriteria" }, - "em": { - "description": "Email hash parameter from the link in the confirmation mail", - "type": "string" + { + "properties": { + "checkPromotion": { + "description": "Check if the payment method of the order is still changeable.", + "type": "boolean" + }, + "filter": { + "type": "array", + "description": "Pass the deepLinkCode criteria filter to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", + "items": { + "allOf": [ + { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "equals" + ] + }, + "field": { + "type": "string", + "enum": [ + "deepLinkCode" + ] + }, + "value": { + "type": "string" + } + }, + "required": [ + "type", + "field", + "value" + ] + } + ] + } + }, + "email": { + "description": "The email address of the customer. Pass this value to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", + "type": "string", + "format": "email" + }, + "zipcode": { + "description": "The zip/postal code of the billing address of the customer. Pass this value to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", + "type": "string" + }, + "login": { + "description": "If set and when handling a guest order, a context token will be returned in the response header with a logged-in session.", + "type": "boolean" + } + }, + "type": "object" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "The newsletter confirmation was successful." + "description": "An array of orders and an indicator if the payment of the order can be changed.", + "headers": { + "sw-context-token": { + "description": "Contains sw-context-token value, if login parameter is set to true and a guest order was found and the correct credentials were provided.", + "schema": { + "type": "string" + } + } + }, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrderRouteResponse" + } + } + } } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/newsletter/subscribe": { + "/order/payment": { "post": { "tags": [ - "Newsletter" + "Order" + ], + "summary": "Update the payment method of an order", + "description": "Changes the payment method of a specific order. You can use the /order route to find out if the payment method of an order can be changed - take a look at the `paymentChangeable`- array in the response.", + "operationId": "orderSetPayment", + "parameters": [ + { + "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 or remove a newsletter subscription", - "description": "This route is used to create/remove/confirm a newsletter subscription.\n\nThe `option` property controls what should happen:\n* `direct`: The subscription is directly active and does not need a confirmation.\n* `subscribe`: An email will be send to the provided email address containing a link to the /newsletter/confirm route.\nThe subscription is only successful, if the /newsletter/confirm route is called with the generated hashes.\n* `unsubscribe`: The email address will be removed from the newsletter subscriptions.\n* `confirmSubscribe`: Confirms the newsletter subscription for the provided email address.", - "operationId": "subscribeToNewsletter", "requestBody": { "required": true, "content": { "application/json": { "schema": { "required": [ - "email", - "option", - "storefrontUrl" + "paymentMethodId", + "orderId" ], "properties": { - "email": { - "description": "Email address that will receive the confirmation and the newsletter.", - "type": "string" - }, - "option": { - "description": "Defines what should be done.", - "type": "string" - }, - "storefrontUrl": { - "description": "Url of the storefront of the shop. This will be used for generating the link to the /newsletter/confirm inside the confirm email.", - "type": "string" - }, - "salutationId": { - "description": "Identifier of the salutation.", + "paymentMethodId": { + "description": "The identifier of the paymentMethod to be set", "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "firstName": { - "description": "First name", - "type": "string" - }, - "lastName": { - "description": "Last name", - "type": "string" - }, - "street": { - "description": "Street", - "type": "string" - }, - "city": { - "description": "City", - "type": "string" - }, - "zipCode": { - "description": "Zip code", - "type": "string" - }, - "tags": { - "description": "Zip code", - "type": "string" - }, - "languageId": { - "description": "Identifier of the language.", + "orderId": { + "description": "The identifier of the order.", "type": "string", "pattern": "^[0-9a-f]{32}$" - }, - "customFields": { - "description": "Custom field data that should be added to the subscription.", - "type": "string" } }, "type": "object" @@ -20419,64 +22750,101 @@ }, "responses": { "200": { - "description": "Success" + "description": "Successfully updated the payment method of the order.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SuccessResponse" + } + } + } } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/newsletter/unsubscribe": { - "post": { + "/order/download/{orderId}/{downloadId}": { + "get": { "tags": [ - "Newsletter" + "Order" ], - "summary": "Remove a newsletter subscription", - "description": "Removes a newsletter recipient from the mailing lists.", - "operationId": "unsubscribeToNewsletter", - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "required": [ - "email" - ], - "properties": { - "email": { - "description": "Email address that should be removed from the mailing lists.", - "type": "string" - } - }, - "type": "object" - } + "summary": "Download a purchased file", + "description": "Download a file included in the given order and with the given id. Access must be granted.", + "operationId": "orderDownloadFile", + "parameters": [ + { + "name": "orderId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "downloadId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "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": "Unsubscribing was successful." + "description": "An arbitrary binary file.", + "content": { + "application/octet-stream": { + "schema": { + "type": "string", + "format": "binary" + } + } + } } }, "security": [ { - "ApiKey": [] + "ApiKey": [], + "ContextToken": [] } ] } }, - "/order/state/cancel": { + "/product/{productId}/cross-selling": { "post": { "tags": [ - "Order" + "Product" ], - "summary": "Cancel an order", - "description": "Cancels an order. The order state will be set to 'cancelled'.", - "operationId": "cancelOrder", + "summary": "Fetch cross-selling groups of a product", + "description": "This route is used to load the cross sellings for a product. A product has several cross selling definitions in which several products are linked. The route returns the cross sellings together with the linked products", + "operationId": "readProductCrossSellings", "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Product ID", + "required": true, + "schema": { + "type": "string" + } + }, { "name": "sw-language-id", "in": "header", @@ -20486,35 +22854,24 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "properties": { - "orderId": { - "description": "The identifier of the order to be canceled.", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } - }, - "type": "object", - "required": [ - "orderId" - ] - } + }, + { + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, + "schema": { + "type": "boolean" } } - }, + ], "responses": { "200": { - "description": "Returns the state of the state machine\n\n example: More information about the state machine can be found in the corresponding guide: [Using the state machine](https://developer.shopware.com/docs/guides/plugins/plugins/checkout/order/using-the-state-machine)", + "description": "Found cross sellings", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/StateMachineState" + "$ref": "#/components/schemas/CrossSellingElementCollection" } } } @@ -20522,22 +22879,30 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/order": { + "/product/{productId}": { "post": { "tags": [ - "Order", - "Endpoints supporting Criteria " + "Product" ], - "summary": "Fetch a list of orders", - "description": "List orders of a customer.", - "operationId": "readOrder", + "summary": "Fetch a single product", + "description": "This route is used to load a single product with the corresponding details. In addition to loading the data, the best variant of the product is determined when a parent id is passed.", + "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", @@ -20547,67 +22912,57 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } - } - ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/NoneFieldsCriteria" - }, - { - "properties": { - "checkPromotion": { - "description": "Check if the payment method of the order is still changeable.", - "type": "boolean" - }, - "filter": { - "type": "array", - "description": "Pass the deepLinkCode criteria filter to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", - "items": { - "allOf": [ - { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "equals" - ] - }, - "field": { - "type": "string", - "enum": [ - "deepLinkCode" - ] - }, - "value": { - "type": "string" - } - }, - "required": [ - "type", - "field", - "value" - ] - } - ] - } - }, - "email": { - "description": "The email address of the customer. Pass this value to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", - "type": "string", - "format": "email" - }, - "zipcode": { - "description": "The zip/postal code of the billing address of the customer. Pass this value to allow for guest user authentification. Not required, if a user (guest or not) is already logged in.", - "type": "string" - } - }, - "type": "object" + }, + { + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "in": "header", + "name": "sw-include-seo-urls", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, + { + "description": "Instructs Shopware to skip loading the configurator data", + "in": "query", + "name": "skipConfigurator", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Instructs Shopware to skip loading the CMS page data", + "in": "query", + "name": "skipCmsPage", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/NoneFieldsCriteria" } ] } @@ -20616,11 +22971,11 @@ }, "responses": { "200": { - "description": "An array of orders and an indicator if the payment of the order can be changed.", + "description": "Product information along with variant groups and options", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/OrderRouteResponse" + "$ref": "#/components/schemas/ProductDetailResponse" } } } @@ -20628,20 +22983,20 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/order/payment": { + "/product": { "post": { "tags": [ - "Order" + "Product", + "Endpoints supporting Criteria " ], - "summary": "Update the payment method of an order", - "description": "Changes the payment method of a specific order. You can use the /order route to find out if the payment method of an order can be changed - take a look at the `paymentChangeable`- array in the response.", - "operationId": "orderSetPayment", + "summary": "Fetch a 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", @@ -20652,81 +23007,56 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } } ], "requestBody": { - "required": true, + "required": false, "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}$" + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" } - }, - "type": "object" + ] } } } }, "responses": { "200": { - "description": "Successfully updated the payment method of the order.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } + "$ref": "#/components/responses/ProductListResponse" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] - } - }, - "/order/download/{orderId}/{downloadId}": { + }, "get": { "tags": [ - "Order" + "Product", + "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 list of products", + "description": "List products that match the given criteria. For performance reasons a limit should always be set.", + "operationId": "readProductGet", "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", @@ -20736,144 +23066,148 @@ "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" } ], "responses": { "200": { - "description": "An arbitrary binary file.", - "content": { - "application/octet-stream": { - "schema": { - "type": "string", - "format": "binary" - } - } - } + "$ref": "#/components/responses/ProductListResponse" } }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/script/{hook}": { - "get": { + "/product/{productId}/reviews": { + "post": { "tags": [ - "API", - "Script", - "App" + "Product", + "Endpoints supporting Criteria " ], - "summary": "Access point for different api logics which are provided by apps over script hooks", - "operationId": "getScriptStoreApiRoute", + "summary": "Fetch product reviews", + "description": "Perform a filtered search for product reviews.", + "operationId": "readProductReviews", "parameters": [ { - "name": "hook", + "name": "productId", "in": "path", - "description": "Dynamic hook which used to build the hook name", + "description": "Identifier of the product.", "required": true, "schema": { "type": "string" } - } - ], - "responses": { - "200": { - "description": "Returns different structures of results based on the called script.", - "content": { - "application/json": { - "schema": { - "oneOf": [ - { - "type": "object", - "additionalProperties": true - }, - { - "type": "null" - } - ] - } - }, - "application/vnd.api+json": { - "schema": { - "oneOf": [ - { - "type": "object", - "additionalProperties": true - }, - { - "type": "null" - } - ] - } - } - } }, - "204": { - "description": "No data by default" - } - }, - "security": [ { - "ApiKey": [] - } - ] - }, - "post": { - "tags": [ - "API", - "Script", - "App" - ], - "summary": "Access point for different api logics which are provided by apps over script hooks", - "operationId": "postScriptStoreApiRoute", - "parameters": [ + "name": "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": "hook", - "in": "path", - "description": "Dynamic hook which used to build the hook name", - "required": true, + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, "schema": { - "type": "string" + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" } } ], - "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": { + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Entity search result containing product reviews", + "content": { + "application/json": { "schema": { - "oneOf": [ + "allOf": [ { - "type": "object", - "additionalProperties": true + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductReview" + } + } + }, + "type": "object" }, { - "type": "null" + "$ref": "#/components/schemas/EntitySearchResult" } ] } } } - }, - "204": { - "description": "No data by default" } }, "security": [ @@ -20883,38 +23217,78 @@ ] } }, - "/customer/wishlist/add/{productId}": { + "/product/{productId}/review": { "post": { "tags": [ - "Wishlist" + "Product" ], - "summary": "Add a product to a wishlist", - "description": "Adds a product to a customers wishlist.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * The wishlist feature has to be activated.", - "operationId": "addProductOnWishlist", + "summary": "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 to be added.", + "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}$" + } } ], - "responses": { - "200": { - "description": "Returns a success response.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } + "requestBody": { + "content": { + "application/json": { + "schema": { + "required": [ + "title", + "content", + "points" + ], + "properties": { + "name": { + "description": "The name of the review author. If not set, the first name of the customer is chosen.", + "type": "string" + }, + "email": { + "description": "The email address of the review author. If not set, the email of the customer is chosen.", + "type": "string" + }, + "title": { + "description": "The title of the review.", + "type": "string" + }, + "content": { + "description": "The content of review.", + "type": "string" + }, + "points": { + "description": "The review rating for the product.", + "type": "number", + "format": "double" + } + }, + "type": "object" } } } }, + "responses": { + "200": { + "description": "Success response indicating the review was saved successfully." + } + }, "security": [ { "ApiKey": [], @@ -20923,16 +23297,24 @@ ] } }, - "/customer/wishlist": { + "/product/{productId}/find-variant": { "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 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", @@ -20945,26 +23327,48 @@ } ], "requestBody": { - "required": false, "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "required": [ + "options" + ], + "properties": { + "options": { + "oneOf": [ + { + "description": "The options parameter for the variant to find.", + "type": "array", + "items": { + "type": "string" + } + }, + { + "description": "The options parameter as a map of groupId => optionId.", + "type": "object", + "additionalProperties": { + "type": "string" + } + } + ] + }, + "switchedGroup": { + "description": "The id of the option group that has been switched.", + "type": "string" } - ] + }, + "type": "object" } } } }, "responses": { "200": { - "description": "", + "description": "Returns an FoundCombination struct containing the ids matching the search.", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/WishlistLoadRouteResponse" + "$ref": "#/components/schemas/FindProductVariantRouteResponse" } } } @@ -20972,34 +23376,40 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } }, - "/customer/wishlist/merge": { + "/handle-payment": { "post": { "tags": [ - "Wishlist" + "Payment & Shipping" ], - "summary": "Create a wishlist for a customer", - "description": "Create a new wishlist for a logged in customer or extend the existing wishlist given a set of products.\n\n **Important constraints**\n\n * Anonymous (not logged-in) customers can not have wishlists.\n * A customer can only have a single wishlist.\n * The wishlist feature has to be activated.", - "operationId": "mergeProductOnWishlist", + "summary": "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": { - "productIds": { - "description": "List product id", - "type": "array", - "items": { - "description": "product id", - "type": "string", - "pattern": "^[0-9a-f]{32}$" - } + "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" @@ -21009,11 +23419,19 @@ }, "responses": { "200": { - "description": "Returns a success response.", + "description": "Redirect to external payment provider", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/SuccessResponse" + "type": "object", + "properties": { + "redirectUrl": { + "type": "string" + } + }, + "required": [ + "redirectUrl" + ] } } } @@ -21021,49 +23439,60 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] - } - }, - "/customer/wishlist/delete/{productId}": { - "delete": { + }, + "get": { "tags": [ - "Wishlist" + "Payment & Shipping" ], - "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": "Initiate a payment for an order", + "description": "This generic endpoint is should be called to initiate a payment flow after an order has been created. The details of the payment flow can differ depending on the payment integration and might require calling additional operations or the setup of webhooks.\n\nThe endpoint internally calls the payment handler of the payment method currently set for the order. Please prefer the POST version of this endpoint.", + "operationId": "handlePaymentMethodGet", "parameters": [ { - "name": "productId", - "in": "path", - "description": "The identifier of the product to be removed from the wishlist.", + "name": "orderId", + "in": "query", "required": true, + "description": "Identifier of an order", "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } + }, + { + "name": "finishUrl", + "in": "query", + "description": "URL to which the client should be redirected after successful payment", + "schema": { + "type": "string" + } + }, + { + "name": "errorUrl", + "in": "query", + "description": "URL to which the client should be redirected after erroneous payment", + "schema": { + "type": "string" + } } ], "responses": { "200": { - "description": "Returns a success response indicating a successful removal.", - "content": { - "application/json": { - "schema": { - "$ref": "#/components/schemas/SuccessResponse" - } - } - } - }, - "404": { - "description": "The removal of the product failed. Probably because the product could not be found on the wishlist.", + "description": "Redirect to external payment provider", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/failure" + "type": "object", + "properties": { + "redirectUrl": { + "type": "string" + } + }, + "required": [ + "redirectUrl" + ] } } } @@ -21071,8 +23500,7 @@ }, "security": [ { - "ApiKey": [], - "ContextToken": [] + "ApiKey": [] } ] } From 9fd12c7a67a4caca0938b916461714ea97d70a86 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 21 Nov 2025 09:56:34 +0100 Subject: [PATCH 32/35] [create-pull-request] automated change (#349) Co-authored-by: shopwareBot --- storeapi.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/storeapi.json b/storeapi.json index c008f6f..3b5c216 100644 --- a/storeapi.json +++ b/storeapi.json @@ -7,7 +7,7 @@ "name": "MIT", "url": "https://github.com/shopware/shopware/blob/trunk/LICENSE" }, - "version": "6.7.3.0" + "version": "6.7.4.2" }, "servers": [ { @@ -20014,6 +20014,9 @@ } } } + }, + "400": { + "$ref": "#/components/responses/400" } }, "security": [ From 38441eb0574f4e17750be96139f139cc01493621 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 21 Nov 2025 09:57:34 +0100 Subject: [PATCH 33/35] [create-pull-request] automated change (#348) Co-authored-by: shopwareBot --- SwagGuidedShopping-storeapi.json | 4289 +++++++++++++++--------------- 1 file changed, 2146 insertions(+), 2143 deletions(-) diff --git a/SwagGuidedShopping-storeapi.json b/SwagGuidedShopping-storeapi.json index a373dc6..29bcee7 100644 --- a/SwagGuidedShopping-storeapi.json +++ b/SwagGuidedShopping-storeapi.json @@ -7,7 +7,7 @@ "name": "MIT", "url": "https://github.com/shopware/shopware/blob/trunk/LICENSE" }, - "version": "6.6.10.5" + "version": "6.6.10.9" }, "servers": [ { @@ -4570,6 +4570,9 @@ "source": { "type": "string" }, + "taxCalculationType": { + "type": "string" + }, "customFields": { "type": "object" }, @@ -10117,6 +10120,223 @@ }, "type": "object" }, + "EntitySearchResult": { + "type": "object", + "properties": { + "entity": { + "type": "string" + }, + "total": { + "type": "integer", + "description": "The total number of found entities" + }, + "aggregations": { + "type": "array", + "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", + "items": { + "type": "object" + } + }, + "page": { + "type": "integer", + "description": "The actual page. This can be used for pagination." + }, + "limit": { + "type": "integer", + "description": "The actual limit. This is used for pagination and goes together with the page." + } + } + }, + "CartDelivery": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } + }, + "location": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_shipping_location" + ] + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + }, + "state": { + "$ref": "#/components/schemas/CountryState" + } + } + }, + "positions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDeliveryPosition" + } + }, + "shippingCosts": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + } + } + }, + "OrderRouteResponse": { + "type": "object", + "properties": { + "orders": { + "allOf": [ + { + "type": "array", + "items": { + "$ref": "#/components/schemas/Order" + } + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + }, + "paymentChangeable": { + "type": "object", + "description": "The key-value pairs contain the uuid of the order as key and a boolean as value, indicating that the payment method can still be changed.", + "additionalProperties": { + "type": "boolean" + } + } + }, + "required": [ + "orders" + ] + }, + "SuccessResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean" + } + } + }, + "Cart": { + "type": "object", + "properties": { + "name": { + "description": "Name of the cart - for example `guest-cart`", + "type": "string" + }, + "token": { + "description": "Context token identifying the cart and the user session", + "type": "string" + }, + "price": { + "$ref": "#/components/schemas/CalculatedPrice" + }, + "lineItems": { + "description": "All items within the cart", + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } + }, + "errors": { + "type": "array", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "items": { + "$ref": "#/components/schemas/CartError" + } + }, + "deliveries": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CartDelivery" + } + }, + "transactions": { + "description": "A list of all payment transactions associated with the current cart.", + "type": "array", + "items": { + "type": "object", + "properties": { + "paymentMethodId": { + "type": "string" + }, + "amount": { + "$ref": "#/components/schemas/CalculatedPrice" + } + } + } + }, + "modified": { + "type": "boolean" + }, + "customerComment": { + "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 + } + } + }, + "CrossSellingElement": { + "type": "object", + "properties": { + "crossSelling": { + "$ref": "#/components/schemas/ProductCrossSelling" + }, + "products": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } + }, + "total": { + "type": "integer", + "format": "int32" + }, + "streamId": { + "type": "string", + "format": "uuid" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cross_selling_element" + ] + } + }, + "required": [ + "crossSelling", + "products", + "total", + "apiAlias" + ] + }, "CalculatedPrice": { "type": "object", "description": "Represents a product along with detailed information required to display a variant selection.", @@ -10249,1705 +10469,1281 @@ "taxRules" ] }, - "CrossSellingElement": { + "CartPriceReference": { "type": "object", "properties": { - "crossSelling": { - "$ref": "#/components/schemas/ProductCrossSelling" + "purchaseUnit": { + "type": "number" }, - "products": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Product" - } + "referenceUnit": { + "type": "number" }, - "total": { - "type": "integer", - "format": "int32" + "unitName": { + "type": "string" }, - "streamId": { - "type": "string", - "format": "uuid" + "price": { + "type": "number" }, "apiAlias": { "type": "string", "enum": [ - "cross_selling_element" + "cart_price_reference" ] - } - }, - "required": [ - "crossSelling", - "products", - "total", - "apiAlias" - ] - }, - "AggregationEntity": { - "title": "AggregationEntity", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "entity" + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" + }, + { + "type": "null" + } ] }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" + "regulationPrice": { + "type": "object", + "properties": { + "price": { + "type": "number" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + }, + "nullable": true }, - "definition": { - "description": "The entity definition e.g \"product_manufacturer\".", - "type": "string" - } - }, - "required": [ - "name", - "type", - "field", - "definition" - ] - }, - "AggregationFilter": { - "title": "AggregationFilter", - "type": "object", - "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" + "hasRange": { + "type": "boolean" }, - "type": { - "description": "The type of aggregation", + "variantId": { "type": "string", - "enum": [ - "filter" - ] - }, - "filter": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Filters" - } + "format": "^[0-9a-f]{32}$", + "nullable": true } }, "required": [ - "name", - "type", - "filter" + "apiAlias", + "hasRange", + "regulationPrice", + "listPrice", + "calculatedTaxes", + "totalPrice", + "quantity", + "unitName" ] }, - "AggregationTerms": { - "title": "AggregationTerms", + "CartDeliveryPosition": { "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" - }, - "type": { - "description": "The type of aggregation", - "type": "string", - "enum": [ - "terms" - ] + "deliveryDate": { + "type": "object", + "properties": { + "earliest": { + "type": "string", + "format": "date-time" + }, + "latest": { + "type": "string", + "format": "date-time" + } + } }, - "field": { - "description": "The field you want to aggregate over.", + "identifier": { "type": "string" }, - "limit": { - "description": "The number of terms to return", - "type": "number" + "lineItem": { + "$ref": "#/components/schemas/LineItem" }, - "sort": { - "type": "array", - "description": "Sorting the aggregation result.", - "items": { - "$ref": "#/components/schemas/Sort" - } + "price": { + "$ref": "#/components/schemas/CalculatedPrice" } - }, - "required": [ - "name", - "type", - "field" - ] + } }, - "AggregationHistogram": { - "title": "AggregationHistogram", + "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", + "no-aggregations": { + "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", "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" + "nullable": true }, - "timeZone": { - "description": "The timezone of the histogram", - "type": "string" + "only-aggregations": { + "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", + "type": "string", + "nullable": true } - }, - "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)", + "CartListPrice": { "type": "object", + "description": "", "properties": { - "name": { - "description": "Give your aggregation an identifier, so you can find it easier", - "type": "string" + "discount": { + "type": "number" }, - "type": { - "description": "The type of aggregation", + "percentage": { + "type": "number" + }, + "price": { + "type": "number" + }, + "apiAlias": { "type": "string", "enum": [ - "range" + "cart_list_price" ] - }, - "field": { - "description": "The field you want to aggregate over.", - "type": "string" - }, - "ranges": { - "description": "The ranges of the aggregation", - "type": "array", - "items": { - "type": "object", - "anyOf": [ - { - "type": "object", - "title": "From and to", - "properties": { - "from": { - "type": "number", - "description": "The lower bound of the range" - }, - "to": { - "type": "number", - "description": "The upper bound of the range" - } - }, - "required": [ - "from", - "to" - ] - }, - { - "type": "object", - "title": "From only", - "properties": { - "from": { - "type": "string", - "description": "The lower bound of the range" - } - }, - "required": [ - "from" - ] - }, - { - "type": "object", - "title": "To only", - "properties": { - "to": { - "type": "string", - "description": "The upper bound of the range" - } - }, - "required": [ - "to" - ] - } - ] - } } }, "required": [ - "name", - "type", - "field", - "ranges" + "apiAlias" ] }, - "SuccessResponse": { - "type": "object", - "properties": { - "success": { - "type": "boolean" - } - } - }, - "CartItems": { - "type": "object", - "properties": { - "items": { - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } - } + "NavigationRouteResponse": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Category" } }, - "ProductListingResult": { - "allOf": [ - { - "$ref": "#/components/schemas/EntitySearchResult" - }, - { - "type": "object", - "properties": { - "currentFilters": { + "ShippingMethodPageRouteResponse": { + "type": "array", + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "active": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "deliveryTimeId": { + "type": "string" + }, + "deliveryTime": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "min": { + "type": "integer", + "format": "int32" + }, + "max": { + "type": "integer", + "format": "int32" + }, + "unit": { + "type": "string" + } + } + }, + "translations": { + "type": "array", + "items": { "type": "object", - "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" - ] - } - ] - }, - "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" - } - } - } - } - }, - "EntitySearchResult": { - "type": "object", - "properties": { - "entity": { - "type": "string" - }, - "total": { - "type": "integer", - "description": "The total number of found entities" - }, - "aggregations": { - "type": "array", - "description": "Contains aggregated data. A simple example is the determination of the average price from a product search query.", - "items": { - "type": "object" - } - }, - "page": { - "type": "integer", - "description": "The actual page. This can be used for pagination." - }, - "limit": { - "type": "integer", - "description": "The actual limit. This is used for pagination and goes together with the page." - } - } - }, - "CartDeliveryPosition": { - "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" + "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" + } + } } - } - }, - "identifier": { - "type": "string" - }, - "lineItem": { - "$ref": "#/components/schemas/LineItem" - }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" - } - } - }, - "CartListPrice": { - "type": "object", - "description": "", - "properties": { - "discount": { - "type": "number" - }, - "percentage": { - "type": "number" - }, - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_list_price" - ] - } - }, - "required": [ - "apiAlias" - ] - }, - "Criteria": { - "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", - "properties": { - "page": { - "description": "Search result page", - "type": "integer" - }, - "term": { - "description": "Search term", - "type": "string" - }, - "limit": { - "description": "Number of items per result page", - "type": "integer" - }, - "filter": { - "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" + }, + "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" }, - { - "$ref": "#/components/schemas/EqualsFilter" + "description": { + "type": "string" }, - { - "$ref": "#/components/schemas/MultiNotFilter" + "priority": { + "type": "integer", + "format": "int32" }, - { - "$ref": "#/components/schemas/RangeFilter" + "invalid": { + "type": "boolean" } - ] - } - }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { + } + }, + "availabilityRuleId": { "type": "string" - } - }, - "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" - } - }, - "associations": { - "$ref": "#/components/schemas/Associations" - }, - "post-filter": { - "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" + }, + "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" }, - { - "$ref": "#/components/schemas/EqualsFilter" + "mimeType": { + "type": "string" }, - { - "$ref": "#/components/schemas/MultiNotFilter" + "fileExtension": { + "type": "string" }, - { - "$ref": "#/components/schemas/RangeFilter" + "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" + } + } + } } + } + } + }, + "Sitemap": { + "type": "object", + "properties": { + "filename": { + "type": "string" }, - "sort": { - "type": "array", - "description": "Sorting in the search result.", - "items": { - "$ref": "#/components/schemas/Sort" - } + "created": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "filename", + "created" + ] + }, + "AggregationEntity": { + "title": "AggregationEntity", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "entity" + ] }, - "fields": { - "type": "array", - "description": "Fields which should be returned in the search result.", - "items": { - "type": "string", - "description": "Name of a field" - } + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "grouping": { + "definition": { + "description": "The entity definition e.g \"product_manufacturer\".", + "type": "string" + } + }, + "required": [ + "name", + "type", + "field", + "definition" + ] + }, + "AggregationFilter": { + "title": "AggregationFilter", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" + }, + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "filter" + ] + }, + "filter": { "type": "array", - "description": "Perform groupings over certain fields", "items": { - "type": "string", - "description": "Name of a field" + "$ref": "#/components/schemas/Filters" } - }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" - }, - "includes": { - "$ref": "#/components/schemas/Includes" } - } + }, + "required": [ + "name", + "type", + "filter" + ] }, - "NoneFieldsCriteria": { + "AggregationTerms": { + "title": "AggregationTerms", "type": "object", - "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "page": { - "description": "Search result page", - "type": "integer" + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "term": { - "description": "Search term", + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "terms" + ] + }, + "field": { + "description": "The field you want to aggregate over.", "type": "string" }, "limit": { - "description": "Number of items per result page", - "type": "integer" + "description": "The number of terms to return", + "type": "number" }, - "filter": { + "sort": { "type": "array", - "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "description": "Sorting the aggregation result.", "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] + "$ref": "#/components/schemas/Sort" } + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "AggregationHistogram": { + "title": "AggregationHistogram", + "type": "object", + "properties": { + "name": { + "description": "Give your aggregation an identifier, so you can find it easier", + "type": "string" }, - "ids": { - "type": "array", - "description": "List of ids to search for", - "items": { - "type": "string" - } + "type": { + "description": "The type of aggregation", + "type": "string", + "enum": [ + "histogram" + ] }, - "query": { + "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", - "description": "The query string to search for" + "enum": [ + "range" + ] }, - "associations": { - "$ref": "#/components/schemas/Associations" + "field": { + "description": "The field you want to aggregate over.", + "type": "string" }, - "post-filter": { + "ranges": { + "description": "The ranges of the aggregation", "type": "array", - "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", "items": { + "type": "object", "anyOf": [ { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" + "type": "object", + "title": "From and to", + "properties": { + "from": { + "type": "number", + "description": "The lower bound of the range" + }, + "to": { + "type": "number", + "description": "The upper bound of the range" + } + }, + "required": [ + "from", + "to" + ] }, { - "$ref": "#/components/schemas/MultiNotFilter" + "type": "object", + "title": "From only", + "properties": { + "from": { + "type": "string", + "description": "The lower bound of the range" + } + }, + "required": [ + "from" + ] }, { - "$ref": "#/components/schemas/RangeFilter" + "type": "object", + "title": "To only", + "properties": { + "to": { + "type": "string", + "description": "The upper bound of the range" + } + }, + "required": [ + "to" + ] } ] } - }, - "sort": { + } + }, + "required": [ + "name", + "type", + "field", + "ranges" + ] + }, + "LineItemType": { + "type": "string", + "enum": [ + "product", + "credit", + "custom", + "promotion", + "discount", + "container", + "quantity" + ] + }, + "LineItem": { + "type": "object", + "properties": { + "children": { "type": "array", - "description": "Sorting in the search result.", "items": { - "$ref": "#/components/schemas/Sort" + "$ref": "#/components/schemas/LineItem" } }, - "aggregations": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Aggregation" - } + "cover": { + "$ref": "#/components/schemas/ProductMedia" }, - "grouping": { - "type": "array", - "description": "Perform groupings over certain fields", - "items": { - "type": "string", - "description": "Name of a field" - } + "dataContextHash": { + "type": "string" }, - "total-count-mode": { - "$ref": "#/components/schemas/TotalCountMode" + "dataTimestamp": { + "type": "string" }, - "includes": { - "$ref": "#/components/schemas/Includes" - } - } - }, - "Associations": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Criteria" - } - }, - "Includes": { - "type": "object", - "additionalProperties": { - "type": "array", - "items": { + "deliveryInformation": { + "$ref": "#/components/schemas/CartDeliveryInformation" + }, + "description": { "type": "string" - } - } - }, - "Aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" }, - { - "title": "AggregationEntity", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "good": { + "type": "boolean" }, - { - "title": "AggregationFilter", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "id": { + "type": "string" }, - { - "title": "AggregationTerms", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "label": { + "type": "string" }, - { - "title": "AggregationHistogram", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] + "modified": { + "type": "boolean" }, - { - "title": "AggregationRange", - "allOf": [ - { - "$ref": "#/components/schemas/AggregationRange" - }, - { - "$ref": "#/components/schemas/SubAggregations" - } - ] - } - ] - }, - "SubAggregations": { - "type": "object", - "properties": { - "aggregation": { - "anyOf": [ - { - "$ref": "#/components/schemas/AggregationMetrics" - }, - { - "$ref": "#/components/schemas/AggregationEntity" - }, - { - "$ref": "#/components/schemas/AggregationFilter" - }, - { - "$ref": "#/components/schemas/AggregationTerms" - }, - { - "$ref": "#/components/schemas/AggregationHistogram" - }, - { - "$ref": "#/components/schemas/AggregationRange" - } - ] - } - } - }, - "TotalCountMode": { - "description": "Whether the total for the total number of hits should be determined for the search query. none = disabled total count, exact = calculate exact total amount (slow), next-pages = calculate only for next page (fast)", - "type": "string", - "default": "none", - "enum": [ - "none", - "exact", - "next-pages" - ] - }, - "Query": { - "type": "object", - "properties": { - "score": { - "type": "number" - }, - "query": { - "oneOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "additionalProperties": true - }, - "Sort": { - "type": "object", - "properties": { - "field": { - "type": "string" - }, - "order": { - "type": "string", - "enum": [ - "ASC", - "DESC" - ] - }, - "naturalSorting": { + "modifiedByApp": { "type": "boolean" }, - "type": { - "type": "string" - } - }, - "required": [ - "field", - "order" - ] - }, - "Filters": { - "type": "array", - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/SimpleFilter" - }, - { - "$ref": "#/components/schemas/EqualsFilter" - }, - { - "$ref": "#/components/schemas/MultiNotFilter" - }, - { - "$ref": "#/components/schemas/RangeFilter" - } - ] - } - }, - "SimpleFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "contains", - "equalsAny", - "prefix", - "suffix" - ] - }, - "field": { - "type": "string" - }, - "value": { - "type": "string" - } - }, - "required": [ - "type", - "field", - "value" - ] - }, - "EqualsFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "equals" - ] - }, - "field": { - "type": "string" - }, - "value": { - "oneOf": [ - { - "type": "string" - }, - { - "type": "number" - }, - { - "type": "boolean" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "type", - "field", - "value" - ] - }, - "MultiNotFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "multi", - "not" - ] - }, - "operator": { - "type": "string", - "enum": [ - "and", - "or", - "nor", - "nand" - ] - }, - "queries": { - "$ref": "#/components/schemas/Filters" - } - }, - "required": [ - "type", - "operator", - "queries" - ] - }, - "RangeFilter": { - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "range" - ] - }, - "field": { - "type": "string" + "payload": { + "$ref": "#/components/schemas/ProductJsonApi" }, - "parameters": { + "price": { "type": "object", "properties": { - "gte": { - "type": "number" - }, - "gt": { - "type": "number" - }, - "lte": { - "type": "number" + "apiAlias": { + "type": "string", + "enum": [ + "calculated_price" + ] }, - "lt": { - "type": "number" - } - } - } - }, - "required": [ - "type", - "field", - "parameters" - ] - }, - "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 - } - } - }, - "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" - }, - "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" - ] - }, - "AggregationMetrics": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "type": { - "type": "string", - "enum": [ - "avg", - "count", - "max", - "min", - "stats", - "sum" - ] - }, - "field": { - "type": "string" - } - }, - "required": [ - "name", - "type", - "field" - ] - }, - "ProductDetailResponse": { - "type": "object", - "description": "Represents a product along with detailed information required to display a variant selection.", - "properties": { - "product": { - "$ref": "#/components/schemas/Product" - }, - "configurator": { - "type": "array", - "description": "List of property groups with their corresponding options and information on how to display them.", - "items": { - "$ref": "#/components/schemas/PropertyGroup" - } - } - }, - "required": [ - "product" - ] - }, - "NavigationRouteResponse": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Category" - } - }, - "ShippingMethodPageRouteResponse": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "deliveryTimeId": { - "type": "string" - }, - "deliveryTime": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer", - "format": "int32" - }, - "max": { - "type": "integer", - "format": "int32" - }, - "unit": { - "type": "string" - } - } - }, - "translations": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "description": { - "type": "string" - } - } - } - }, - "orderDeliveries": { - "type": "array", - "items": { - "type": "object", - "properties": { - "orderId": { - "type": "string" - }, - "shippingOrderAddressId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "shippingDateEarliest": { - "type": "string", - "format": "date-time" - }, - "shippingDateLatest": { - "type": "string", - "format": "date-time" - }, - "stateId": { - "type": "string" - } - } - } - }, - "salesChannelDefaultAssignments": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" - }, - "hreflangDefaultDomainId": { - "type": "string" - } - } - } - }, - "salesChannels": { - "type": "array", - "items": { - "type": "object", - "properties": { - "typeId": { - "type": "string" - }, - "languageId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "paymentMethodId": { - "type": "string" - }, - "shippingMethodId": { - "type": "string" - }, - "countryId": { - "type": "string" - }, - "navigationCategoryId": { - "type": "string" - }, - "navigationCategoryDepth": { - "type": "integer", - "format": "int32" - }, - "footerCategoryId": { - "type": "string" - }, - "serviceCategoryId": { - "type": "string" - }, - "name": { - "type": "string" - }, - "shortName": { - "type": "string" - }, - "accessKey": { - "type": "string" - }, - "active": { - "type": "boolean" - }, - "maintenance": { - "type": "boolean" - }, - "maintenanceIpWhitelist": { - "type": "string" - }, - "mailHeaderFooterId": { - "type": "string" - }, - "customerGroupId": { - "type": "string" - }, - "hreflangActive": { - "type": "boolean" - }, - "hreflangDefaultDomainId": { - "type": "string" - } - } - } - }, - "availabilityRule": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "description": { - "type": "string" - }, - "priority": { - "type": "integer", - "format": "int32" - }, - "invalid": { - "type": "boolean" - } - } - }, - "availabilityRuleId": { - "type": "string" - }, - "prices": { - "type": "array", - "items": { - "type": "object", - "properties": { - "shippingMethodId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "ruleId": { - "type": "string" - }, - "calculation": { - "type": "integer", - "format": "int32" + "calculatedTaxes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_tax_calculated" + ] + }, + "tax": { + "type": "number" + }, + "taxRate": { + "type": "number" + }, + "price": { + "type": "number" + } }, - "quantityStart": { - "type": "number", - "format": "float" + "required": [ + "apiAlias", + "tax", + "taxRate", + "price" + ] + } + }, + "listPrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartListPrice" }, - "quantityEnd": { - "type": "number", - "format": "float" + { + "type": "null" + } + ] + }, + "quantity": { + "type": "number" + }, + "referencePrice": { + "oneOf": [ + { + "$ref": "#/components/schemas/CartPriceReference" }, + { + "type": "null" + } + ] + }, + "regulationPrice": { + "type": "object", + "properties": { "price": { - "type": "number", - "format": "float" + "type": "number" }, - "calculationRuleId": { - "type": "string" + "apiAlias": { + "type": "string", + "enum": [ + "cart_regulation_price" + ] + } + }, + "nullable": true + }, + "totalPrice": { + "type": "number" + }, + "unitPrice": { + "type": "number" + }, + "taxRules": { + "type": "array", + "description": "Currently active tax rules and/or rates", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } } } } }, - "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": { + "required": [ + "apiAlias", + "totalPrice", + "quantity", + "unitPrice" + ] + }, + "priceDefinition": { + "$ref": "#/components/schemas/CartPriceQuantity" + }, + "quantity": { + "type": "number" + }, + "quantityInformation": { + "type": "object", + "properties": { + "maxPurchase": { + "type": "number" + }, + "minPurchase": { + "type": "number" + }, + "purchaseSteps": { + "type": "number" + } + } + }, + "referencedId": { + "type": "string" + }, + "removable": { + "type": "boolean" + }, + "stackable": { + "type": "boolean" + }, + "states": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "is-physical", + "is-download" + ] + } + }, + "type": { + "$ref": "#/components/schemas/LineItemType" + }, + "uniqueIdentifier": { + "type": "string" + } + }, + "required": [ + "id", + "type" + ] + }, + "CrossSellingElementCollection": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CrossSellingElement" + } + }, + "CartError": { + "type": "object", + "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "properties": { + "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" + } + } + } + } + }, + "FindProductVariantRouteResponse": { + "type": "object", + "properties": { + "foundCombination": { + "type": "object", + "properties": { + "variantId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "options": { + "type": "array", + "items": { "type": "string" } } - }, - "tags": { - "type": "array", - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - } - } + } + } + } + }, + "ProductListingCriteria": { + "allOf": [ + { + "$ref": "#/components/schemas/Criteria" + }, + { + "type": "object", + "description": "Additional search parameters for product listings", + "properties": { + "order": { + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "type": "string" + }, + "limit": { + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "type": "integer", + "minimum": 0 + }, + "p": { + "description": "Search result page", + "type": "integer", + "default": 1 + }, + "manufacturer": { + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "type": "string" + }, + "min-price": { + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "max-price": { + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "type": "integer", + "minimum": 0, + "default": 0 + }, + "rating": { + "description": "Filter products with a minimum average rating.", + "type": "integer" + }, + "shipping-free": { + "description": "Filters products that are marked as shipping-free.", + "type": "boolean", + "default": false + }, + "properties": { + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "type": "string" + }, + "manufacturer-filter": { + "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "price-filter": { + "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "rating-filter": { + "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "shipping-free-filter": { + "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-filter": { + "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", + "type": "boolean", + "default": true + }, + "property-whitelist": { + "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", + "type": "string" + }, + "reduce-aggregations": { + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "type": "string", + "nullable": true + } + } + } + ] + }, + "NavigationType": { + "type": "string", + "enum": [ + "main-navigation", + "footer-navigation", + "service-navigation" + ] + }, + "WishlistLoadRouteResponse": { + "type": "object", + "properties": { + "wishlist": { + "type": "object", + "properties": { + "customerId": { + "type": "string" + }, + "salesChannelId": { + "type": "string" } } + }, + "products": { + "$ref": "#/components/schemas/ProductListingResult" } } }, - "Cart": { + "AggregationMetrics": { "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" + "type": { + "type": "string", + "enum": [ + "avg", + "count", + "max", + "min", + "stats", + "sum" + ] }, - "price": { - "$ref": "#/components/schemas/CalculatedPrice" + "field": { + "type": "string" + } + }, + "required": [ + "name", + "type", + "field" + ] + }, + "CartDeliveryInformation": { + "type": "object", + "properties": { + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_information" + ] }, - "lineItems": { - "description": "All items within the cart", - "type": "array", - "items": { - "$ref": "#/components/schemas/LineItem" - } + "freeDelivery": { + "type": "boolean" }, - "errors": { - "type": "array", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", - "items": { - "$ref": "#/components/schemas/CartError" + "deliveryTime": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "min": { + "type": "integer" + }, + "max": { + "type": "integer" + }, + "unit": { + "type": "string" + }, + "apiAlias": { + "type": "string", + "enum": [ + "cart_delivery_time" + ] + } } }, - "deliveries": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CartDelivery" - } + "height": { + "type": "integer" }, - "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" - } - } - } + "length": { + "type": "integer" }, - "modified": { - "type": "boolean" + "restockTime": { + "type": "integer" }, - "customerComment": { - "type": "string", - "description": "A comment that can be added to the cart.", - "nullable": true + "stock": { + "type": "integer" }, - "affiliateCode": { - "type": "string", - "description": "An affiliate tracking code", - "nullable": true + "weight": { + "type": "integer" }, - "campaignCode": { - "type": "string", - "description": "A campaign tracking code", - "nullable": true + "width": { + "type": "integer" + } + }, + "required": [ + "apiAlias" + ] + }, + "CartItems": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/LineItem" + } } } }, - "CartPriceReference": { + "Breadcrumb": { "type": "object", "properties": { - "purchaseUnit": { - "type": "number" - }, - "referenceUnit": { - "type": "number" - }, - "unitName": { + "name": { "type": "string" }, - "price": { - "type": "number" - }, - "apiAlias": { + "categoryId": { "type": "string", - "enum": [ - "cart_price_reference" - ] - }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } + "pattern": "^[0-9a-f]{32}$" + }, + "type": { + "type": "string", + "enum": [ + "page", + "link", + "folder" ] }, - "regulationPrice": { + "translated": { "type": "object", + "additionalProperties": true, "properties": { - "price": { - "type": "number" + "customFields": { + "type": "object" }, - "apiAlias": { + "slotConfig": { + "type": "object" + }, + "linkType": { "type": "string", "enum": [ - "cart_regulation_price" + "external", + "category", + "product", + "landing_page" ] + }, + "internalLink": { + "type": "string" + }, + "externalLink": { + "type": "string" + }, + "linkNewTab": { + "type": "boolean" + }, + "description": { + "type": "string" + }, + "metaTitle": { + "type": "string" + }, + "metaDescription": { + "type": "string" + }, + "keywords": { + "type": "string" } - }, - "nullable": true + } }, - "hasRange": { - "type": "boolean" + "path": { + "type": "string" }, - "variantId": { + "seoUrls": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SeoUrl" + } + }, + "apiAlias": { "type": "string", - "format": "^[0-9a-f]{32}$", - "nullable": true + "enum": [ + "breadcrumb" + ] } }, "required": [ - "apiAlias", - "hasRange", - "regulationPrice", - "listPrice", - "calculatedTaxes", - "totalPrice", - "quantity", - "unitName" + "name", + "categoryId", + "type", + "translated", + "path", + "apiAlias" ] }, "SalesChannelContext": { @@ -12085,791 +11881,998 @@ "cart_delivery_shipping_location" ] }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" - } - } - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" - }, - "context": { - "description": "Core context with general configuration values and state", - "type": "object", - "properties": { - "versionId": { - "type": "string" - }, - "currencyId": { - "type": "string" - }, - "currencyFactor": { - "type": "integer" - }, - "currencyPrecision": { - "type": "integer", - "format": "int32" - }, - "languageIdChain": { + "country": { + "$ref": "#/components/schemas/Country" + }, + "address": { + "$ref": "#/components/schemas/CustomerAddress" + } + } + }, + "shippingMethod": { + "$ref": "#/components/schemas/ShippingMethod" + }, + "context": { + "description": "Core context with general configuration values and state", + "type": "object", + "properties": { + "versionId": { + "type": "string" + }, + "currencyId": { + "type": "string" + }, + "currencyFactor": { + "type": "integer" + }, + "currencyPrecision": { + "type": "integer", + "format": "int32" + }, + "languageIdChain": { + "type": "array", + "items": { + "type": "string" + } + }, + "scope": { + "type": "string" + }, + "source": { + "type": "string" + }, + "taxState": { + "type": "string" + }, + "useCache": { + "type": "boolean" + } + } + } + } + }, + "Price": { + "type": "object", + "description": "Price object", + "properties": { + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "gross": { + "description": "", + "type": "number" + }, + "net": { + "description": "", + "type": "number" + }, + "linked": { + "description": "", + "type": "boolean" + }, + "listPrice": { + "description": "", + "type": "object", + "properties": { + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "gross": { + "description": "", + "type": "number" + }, + "net": { + "description": "", + "type": "number" + }, + "linked": { + "description": "", + "type": "boolean" + } + }, + "required": [ + "gross", + "net" + ] + }, + "regulationPrice": { + "description": "", + "type": "object", + "properties": { + "currencyId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + }, + "gross": { + "description": "", + "type": "number" + }, + "net": { + "description": "", + "type": "number" + }, + "linked": { + "description": "", + "type": "boolean" + } + }, + "required": [ + "gross", + "net" + ] + } + }, + "required": [ + "currencyId", + "gross", + "net" + ] + }, + "ProductListingResult": { + "allOf": [ + { + "$ref": "#/components/schemas/EntitySearchResult" + }, + { + "type": "object", + "properties": { + "currentFilters": { + "type": "object", + "description": "Contains the state of the filters. These can be used to create listing filters.", + "properties": { + "navigationId": { + "type": "string" + }, + "manufacturer": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "price": { + "type": "object", + "properties": { + "min": { + "type": "integer", + "default": 0 + }, + "max": { + "type": "integer", + "default": 0 + } + }, + "required": [ + "min", + "max" + ] + }, + "rating": { + "type": "integer", + "nullable": true + }, + "shipping-free": { + "type": "boolean", + "default": false + }, + "properties": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + "search": { + "type": "string" + } + }, + "required": [ + "manufacturer", + "navigationId", + "price", + "properties", + "rating", + "shipping-free" + ] + }, + "availableSortings": { "type": "array", + "description": "Contains the available sorting. These can be used to show a sorting select-box in the product listing.", "items": { - "type": "string" + "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" + ] } }, - "scope": { + "sorting": { "type": "string" }, - "source": { - "type": "string" + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Product" + } }, - "taxState": { - "type": "string" + "entity": { + "type": "string", + "enum": [ + "product" + ] }, - "useCache": { - "type": "boolean" + "apiAlias": { + "type": "string", + "enum": [ + "product_listing" + ] } - } + }, + "required": [ + "elements", + "availableSortings", + "currentFilters", + "apiAlias" + ] } - } - }, - "NavigationType": { - "type": "string", - "enum": [ - "main-navigation", - "footer-navigation", - "service-navigation" ] }, - "Breadcrumb": { - "type": "object", + "CustomerAddressBody": { + "description": "Added since version: 6.0.0.0", + "required": [ + "countryId", + "firstName", + "lastName", + "city", + "street" + ], "properties": { - "name": { - "type": "string" + "countryId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" }, - "categoryId": { + "countryStateId": { "type": "string", "pattern": "^[0-9a-f]{32}$" }, - "type": { + "salutationId": { "type": "string", - "enum": [ - "page", - "link", - "folder" - ] + "pattern": "^[0-9a-f]{32}$" }, - "translated": { - "type": "object", - "additionalProperties": true, - "properties": { - "customFields": { - "type": "object" - }, - "slotConfig": { - "type": "object" - }, - "linkType": { - "type": "string", - "enum": [ - "external", - "category", - "product", - "landing_page" - ] - }, - "internalLink": { - "type": "string" - }, - "externalLink": { - "type": "string" - }, - "linkNewTab": { - "type": "boolean" - }, - "description": { - "type": "string" - }, - "metaTitle": { - "type": "string" - }, - "metaDescription": { - "type": "string" - }, - "keywords": { - "type": "string" - } - } + "firstName": { + "type": "string" }, - "path": { + "lastName": { "type": "string" }, - "seoUrls": { - "type": "array", - "items": { - "$ref": "#/components/schemas/SeoUrl" - } + "zipcode": { + "type": "string" }, - "apiAlias": { - "type": "string", - "enum": [ - "breadcrumb" - ] - } - }, - "required": [ - "name", - "categoryId", - "type", - "translated", - "path", - "apiAlias" - ] - }, - "CustomerAddressRead": { - "type": "object", - "properties": { - "id": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true + "city": { + "type": "string" }, - "customerId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$", - "readOnly": true + "company": { + "type": "string" }, - "createdAt": { - "type": "string", - "format": "date-time" + "street": { + "type": "string" }, - "updatedAt": { - "type": "string", - "format": "date-time", - "nullable": true + "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", - "nullable": true + "$ref": "#/components/schemas/CountryState" }, "salutation": { "$ref": "#/components/schemas/Salutation" } }, - "required": [ - "customerId", - "createdAt", - "updatedAt", - "country", - "salutation" - ] + "type": "object" }, - "CartDelivery": { + "ProductDetailResponse": { "type": "object", - "description": "A list of all cart errors, such as insufficient stocks, invalid addresses or vouchers.", + "description": "Represents a product along with detailed information required to display a variant selection.", "properties": { - "deliveryDate": { - "type": "object", - "properties": { - "earliest": { - "type": "string", - "format": "date-time" - }, - "latest": { - "type": "string", - "format": "date-time" - } - } - }, - "location": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_shipping_location" - ] - }, - "country": { - "$ref": "#/components/schemas/Country" - }, - "address": { - "$ref": "#/components/schemas/CustomerAddress" - }, - "state": { - "$ref": "#/components/schemas/CountryState" - } - } + "product": { + "$ref": "#/components/schemas/Product" }, - "positions": { + "configurator": { "type": "array", + "description": "List of property groups with their corresponding options and information on how to display them.", "items": { - "$ref": "#/components/schemas/CartDeliveryPosition" - } - }, - "shippingCosts": { - "$ref": "#/components/schemas/CalculatedPrice" - }, - "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" - } - } - }, - "ProductListingCriteria": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" - }, - { - "type": "object", - "description": "Additional search parameters for product listings", - "properties": { - "order": { - "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", - "type": "string" - }, - "limit": { - "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", - "type": "integer", - "minimum": 0 - }, - "p": { - "description": "Search result page", - "type": "integer", - "default": 1 - }, - "manufacturer": { - "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", - "type": "string" - }, - "min-price": { - "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 - }, - "max-price": { - "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", - "type": "integer", - "minimum": 0, - "default": 0 - }, - "rating": { - "description": "Filter products with a minimum average rating.", - "type": "integer" - }, - "shipping-free": { - "description": "Filters products that are marked as shipping-free.", - "type": "boolean", - "default": false - }, - "properties": { - "description": "Filters products by their properties. List of property identifiers separated by a `|`.", - "type": "string" - }, - "manufacturer-filter": { - "description": "Enables/disabled filtering by manufacturer. If set to false, the `manufacturer` filter will be ignored. Also the `aggregations[manufacturer]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "price-filter": { - "description": "Enables/disabled filtering by price. If set to false, the `min-price` and `max-price` filter will be ignored. Also the `aggregations[price]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "rating-filter": { - "description": "Enables/disabled filtering by rating. If set to false, the `rating` filter will be ignored. Also the `aggregations[rating]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "shipping-free-filter": { - "description": "Enables/disabled filtering by shipping-free products. If set to false, the `shipping-free` filter will be ignored. Also the `aggregations[shipping-free]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "property-filter": { - "description": "Enables/disabled filtering by properties products. If set to false, the `properties` filter will be ignored. Also the `aggregations[properties]` key will be removed from the response.", - "type": "boolean", - "default": true - }, - "property-whitelist": { - "description": "A whitelist of property identifiers which can be used for filtering. List of property identifiers separated by a `|`. The `property-filter` must be `true`, otherwise the whitelist has no effect.", - "type": "string" - }, - "reduce-aggregations": { - "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", - "type": "string", - "nullable": true - } + "$ref": "#/components/schemas/PropertyGroup" } } + }, + "required": [ + "product" ] }, - "CartDeliveryInformation": { + "CartPriceQuantity": { "type": "object", "properties": { "apiAlias": { "type": "string", "enum": [ - "cart_delivery_information" + "cart_price_quantity" ] }, - "freeDelivery": { + "isCalculated": { "type": "boolean" }, - "deliveryTime": { - "type": "object", + "listPrice": { + "$ref": "#/components/schemas/CartListPrice" + }, + "price": { + "type": "number" + }, + "quantity": { + "type": "number" + }, + "regulationPrice": { "properties": { - "name": { - "type": "string" - }, - "min": { - "type": "integer" - }, - "max": { - "type": "integer" - }, - "unit": { - "type": "string" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_delivery_time" - ] + "price": { + "type": "number", + "format": "float" + } + }, + "type": "object" + }, + "taxRules": { + "type": "array", + "items": { + "type": "object", + "properties": { + "taxRate": { + "type": "number", + "format": "float" + }, + "name": { + "type": "string" + } } } }, - "height": { - "type": "integer" + "type": { + "type": "string" + } + }, + "required": [ + "apiAlias" + ] + }, + "Criteria": { + "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", + "properties": { + "page": { + "description": "Search result page", + "type": "integer" + }, + "term": { + "description": "Search term", + "type": "string" + }, + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { + "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } + }, + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } }, - "length": { - "type": "integer" + "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" + } }, - "restockTime": { - "type": "integer" + "associations": { + "$ref": "#/components/schemas/Associations" }, - "stock": { - "type": "integer" + "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" + } + ] + } }, - "weight": { - "type": "integer" + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + } }, - "width": { - "type": "integer" - } - }, - "required": [ - "apiAlias" - ] - }, - "WishlistLoadRouteResponse": { - "type": "object", - "properties": { - "wishlist": { - "type": "object", - "properties": { - "customerId": { - "type": "string" - }, - "salesChannelId": { - "type": "string" - } + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" } }, - "products": { - "$ref": "#/components/schemas/ProductListingResult" + "fields": { + "type": "array", + "description": "Fields which should be returned in the search result.", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } + }, + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" + }, + "includes": { + "$ref": "#/components/schemas/Includes" } } }, - "AccountNewsletterRecipient": { + "NoneFieldsCriteria": { "type": "object", + "description": "Search parameters. For more information, see our documentation on [Search Queries](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#structure)", "properties": { - "status": { - "type": "string", - "enum": [ - "undefined", - "notSet", - "direct", - "optIn", - "optOut" - ] + "page": { + "description": "Search result page", + "type": "integer" }, - "apiAlias": { - "type": "string", - "enum": [ - "account_newsletter_recipient" - ] - } - }, - "required": [ - "status", - "apiAlias" - ] - }, - "LineItemType": { - "type": "string", - "enum": [ - "product", - "credit", - "custom", - "promotion", - "discount", - "container", - "quantity" - ] - }, - "LineItem": { - "type": "object", - "properties": { - "children": { + "term": { + "description": "Search term", + "type": "string" + }, + "limit": { + "description": "Number of items per result page", + "type": "integer" + }, + "filter": { "type": "array", + "description": "List of filters to restrict the search result. For more information, see [Search Queries > Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#filter)", "items": { - "$ref": "#/components/schemas/LineItem" + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] } }, - "cover": { - "$ref": "#/components/schemas/ProductMedia" + "ids": { + "type": "array", + "description": "List of ids to search for", + "items": { + "type": "string" + } }, - "dataContextHash": { - "type": "string" + "query": { + "type": "string", + "description": "The query string to search for" }, - "dataTimestamp": { - "type": "string" + "associations": { + "$ref": "#/components/schemas/Associations" }, - "deliveryInformation": { - "$ref": "#/components/schemas/CartDeliveryInformation" + "post-filter": { + "type": "array", + "description": "Filters that applied without affecting aggregations. For more information, see [Search Queries > Post Filter](https://shopware.stoplight.io/docs/store-api/docs/concepts/search-queries.md#post-filter)", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" + } + ] + } }, - "description": { - "type": "string" + "sort": { + "type": "array", + "description": "Sorting in the search result.", + "items": { + "$ref": "#/components/schemas/Sort" + } }, - "good": { - "type": "boolean" + "aggregations": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Aggregation" + } }, - "id": { - "type": "string" + "grouping": { + "type": "array", + "description": "Perform groupings over certain fields", + "items": { + "type": "string", + "description": "Name of a field" + } }, - "label": { - "type": "string" + "total-count-mode": { + "$ref": "#/components/schemas/TotalCountMode" }, - "modified": { - "type": "boolean" + "includes": { + "$ref": "#/components/schemas/Includes" + } + } + }, + "Associations": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Criteria" + } + }, + "Includes": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "Aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" }, - "modifiedByApp": { - "type": "boolean" + { + "title": "AggregationEntity", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationEntity" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] }, - "payload": { - "$ref": "#/components/schemas/ProductJsonApi" + { + "title": "AggregationFilter", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationFilter" + }, + { + "$ref": "#/components/schemas/SubAggregations" + } + ] }, - "price": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "calculated_price" - ] + { + "title": "AggregationTerms", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationTerms" }, - "calculatedTaxes": { - "type": "array", - "items": { - "type": "object", - "properties": { - "apiAlias": { - "type": "string", - "enum": [ - "cart_tax_calculated" - ] - }, - "tax": { - "type": "number" - }, - "taxRate": { - "type": "number" - }, - "price": { - "type": "number" - } - }, - "required": [ - "apiAlias", - "tax", - "taxRate", - "price" - ] - } + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationHistogram", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationHistogram" }, - "listPrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartListPrice" - }, - { - "type": "null" - } - ] + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + }, + { + "title": "AggregationRange", + "allOf": [ + { + "$ref": "#/components/schemas/AggregationRange" }, - "quantity": { - "type": "number" + { + "$ref": "#/components/schemas/SubAggregations" + } + ] + } + ] + }, + "SubAggregations": { + "type": "object", + "properties": { + "aggregation": { + "anyOf": [ + { + "$ref": "#/components/schemas/AggregationMetrics" }, - "referencePrice": { - "oneOf": [ - { - "$ref": "#/components/schemas/CartPriceReference" - }, - { - "type": "null" - } - ] + { + "$ref": "#/components/schemas/AggregationEntity" }, - "regulationPrice": { - "type": "object", - "properties": { - "price": { - "type": "number" - }, - "apiAlias": { - "type": "string", - "enum": [ - "cart_regulation_price" - ] - } - }, - "nullable": true + { + "$ref": "#/components/schemas/AggregationFilter" }, - "totalPrice": { - "type": "number" + { + "$ref": "#/components/schemas/AggregationTerms" }, - "unitPrice": { - "type": "number" + { + "$ref": "#/components/schemas/AggregationHistogram" }, - "taxRules": { - "type": "array", - "description": "Currently active tax rules and/or rates", - "items": { - "type": "object", - "properties": { - "taxRate": { - "type": "number", - "format": "float" - }, - "name": { - "type": "string" - } - } - } + { + "$ref": "#/components/schemas/AggregationRange" } - }, - "required": [ - "apiAlias", - "totalPrice", - "quantity", - "unitPrice" ] - }, - "priceDefinition": { - "$ref": "#/components/schemas/CartPriceQuantity" - }, - "quantity": { + } + } + }, + "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" }, - "quantityInformation": { - "type": "object", - "properties": { - "maxPurchase": { - "type": "number" + "query": { + "oneOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" }, - "minPurchase": { - "type": "number" + { + "$ref": "#/components/schemas/EqualsFilter" }, - "purchaseSteps": { - "type": "number" + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } - } - }, - "referencedId": { + ] + } + }, + "additionalProperties": true + }, + "Sort": { + "type": "object", + "properties": { + "field": { "type": "string" }, - "removable": { - "type": "boolean" + "order": { + "type": "string", + "enum": [ + "ASC", + "DESC" + ] }, - "stackable": { + "naturalSorting": { "type": "boolean" }, - "states": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "is-physical", - "is-download" - ] + "type": { + "type": "string" + } + }, + "required": [ + "field", + "order" + ] + }, + "Filters": { + "type": "array", + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/SimpleFilter" + }, + { + "$ref": "#/components/schemas/EqualsFilter" + }, + { + "$ref": "#/components/schemas/MultiNotFilter" + }, + { + "$ref": "#/components/schemas/RangeFilter" } - }, + ] + } + }, + "SimpleFilter": { + "type": "object", + "properties": { "type": { - "$ref": "#/components/schemas/LineItemType" + "type": "string", + "enum": [ + "contains", + "equalsAny", + "prefix", + "suffix" + ] }, - "uniqueIdentifier": { + "field": { + "type": "string" + }, + "value": { "type": "string" } }, "required": [ - "id", - "type" + "type", + "field", + "value" ] }, - "Price": { + "EqualsFilter": { "type": "object", - "description": "Price object", "properties": { - "currencyId": { + "type": { "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "", - "type": "number" - }, - "net": { - "description": "", - "type": "number" + "enum": [ + "equals" + ] }, - "linked": { - "description": "", - "type": "boolean" + "field": { + "type": "string" }, - "listPrice": { - "description": "", - "type": "object", - "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "", - "type": "number" + "value": { + "oneOf": [ + { + "type": "string" }, - "net": { - "description": "", + { "type": "number" }, - "linked": { - "description": "", + { "type": "boolean" - } - }, - "required": [ - "gross", - "net" - ] - }, - "regulationPrice": { - "description": "", - "type": "object", - "properties": { - "currencyId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" - }, - "gross": { - "description": "", - "type": "number" - }, - "net": { - "description": "", - "type": "number" }, - "linked": { - "description": "", - "type": "boolean" + { + "type": "null" } - }, - "required": [ - "gross", - "net" ] } }, "required": [ - "currencyId", - "gross", - "net" + "type", + "field", + "value" ] }, - "CrossSellingElementCollection": { - "type": "array", - "items": { - "$ref": "#/components/schemas/CrossSellingElement" - } + "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" + ] }, - "FindProductVariantRouteResponse": { + "RangeFilter": { "type": "object", "properties": { - "foundCombination": { + "type": { + "type": "string", + "enum": [ + "range" + ] + }, + "field": { + "type": "string" + }, + "parameters": { "type": "object", "properties": { - "variantId": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "gte": { + "type": "number" }, - "options": { - "type": "array", - "items": { - "type": "string" - } + "gt": { + "type": "number" + }, + "lte": { + "type": "number" + }, + "lt": { + "type": "number" } } } - } + }, + "required": [ + "type", + "field", + "parameters" + ] }, - "Sitemap": { + "CustomerAddressRead": { "type": "object", "properties": { - "filename": { - "type": "string" + "id": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true }, - "created": { + "customerId": { + "type": "string", + "pattern": "^[0-9a-f]{32}$", + "readOnly": true + }, + "createdAt": { "type": "string", "format": "date-time" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "country": { + "$ref": "#/components/schemas/Country" + }, + "countryState": { + "$ref": "#/components/schemas/CountryState", + "nullable": true + }, + "salutation": { + "$ref": "#/components/schemas/Salutation" } }, "required": [ - "filename", - "created" + "customerId", + "createdAt", + "updatedAt", + "country", + "salutation" ] }, - "OrderRouteResponse": { + "AccountNewsletterRecipient": { "type": "object", "properties": { - "orders": { - "allOf": [ - { - "type": "array", - "items": { - "$ref": "#/components/schemas/Order" - } - }, - { - "$ref": "#/components/schemas/EntitySearchResult" - } + "status": { + "type": "string", + "enum": [ + "undefined", + "notSet", + "direct", + "optIn", + "optOut" ] }, - "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" - } + "apiAlias": { + "type": "string", + "enum": [ + "account_newsletter_recipient" + ] } }, "required": [ - "orders" + "status", + "apiAlias" ] } }, From 08117438364f139134e76c261e59510b4e406a65 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 16 Dec 2025 16:16:09 +0100 Subject: [PATCH 34/35] [create-pull-request] automated change (#355) Co-authored-by: shopwareBot --- SwagGuidedShopping-storeapi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SwagGuidedShopping-storeapi.json b/SwagGuidedShopping-storeapi.json index 29bcee7..c9e1ba1 100644 --- a/SwagGuidedShopping-storeapi.json +++ b/SwagGuidedShopping-storeapi.json @@ -7,7 +7,7 @@ "name": "MIT", "url": "https://github.com/shopware/shopware/blob/trunk/LICENSE" }, - "version": "6.6.10.9" + "version": "6.6.10.10" }, "servers": [ { From ff75ed57510b0e2b0efe7fe330b1d6b3233894ee Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 22 Jan 2026 15:32:38 +0100 Subject: [PATCH 35/35] [create-pull-request] automated change (#360) Co-authored-by: shopwareBot --- storeapi.json | 1887 ++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 1541 insertions(+), 346 deletions(-) diff --git a/storeapi.json b/storeapi.json index 3b5c216..9fcd251 100644 --- a/storeapi.json +++ b/storeapi.json @@ -7,7 +7,7 @@ "name": "MIT", "url": "https://github.com/shopware/shopware/blob/trunk/LICENSE" }, - "version": "6.7.4.2" + "version": "6.7.6.2" }, "servers": [ { @@ -828,6 +828,7 @@ "type": "object" }, "children": { + "description": "Child categories within this category for hierarchical navigation", "properties": { "links": { "type": "object", @@ -859,6 +860,7 @@ "type": "object" }, "media": { + "description": "Category image or banner", "properties": { "links": { "type": "object", @@ -888,6 +890,7 @@ "type": "object" }, "tags": { + "description": "Tags for organizing and filtering categories", "properties": { "links": { "type": "object", @@ -919,6 +922,7 @@ "type": "object" }, "cmsPage": { + "description": "CMS page layout for the category", "properties": { "links": { "type": "object", @@ -948,6 +952,7 @@ "type": "object" }, "seoUrls": { + "description": "SEO-friendly URLs for the category across different sales channels", "properties": { "links": { "type": "object", @@ -1181,24 +1186,29 @@ "$ref": "#/components/schemas/Category" }, "children": { + "description": "Child categories within this category for hierarchical navigation", "type": "array", "items": { "$ref": "#/components/schemas/Category" } }, "media": { - "$ref": "#/components/schemas/Media" + "$ref": "#/components/schemas/Media", + "description": "Category image or banner" }, "tags": { + "description": "Tags for organizing and filtering categories", "type": "array", "items": { "$ref": "#/components/schemas/Tag" } }, "cmsPage": { - "$ref": "#/components/schemas/CmsPage" + "$ref": "#/components/schemas/CmsPage", + "description": "CMS page layout for the category" }, "seoUrls": { + "description": "SEO-friendly URLs for the category across different sales channels", "type": "array", "items": { "$ref": "#/components/schemas/SeoUrl" @@ -1407,15 +1417,18 @@ "description": "Contains the translations of all translated fields." }, "sections": { + "description": "Content sections within the CMS page (layout blocks containing slots)", "type": "array", "items": { "$ref": "#/components/schemas/CmsSection" } }, "previewMedia": { - "$ref": "#/components/schemas/Media" + "$ref": "#/components/schemas/Media", + "description": "Preview image for the CMS page in admin panel and page selection" }, "landingPages": { + "description": "Landing pages using this CMS layout", "type": "array", "items": { "$ref": "#/components/schemas/LandingPage" @@ -1768,6 +1781,7 @@ "relationships": { "properties": { "states": { + "description": "States/provinces/regions within the country", "properties": { "links": { "type": "object", @@ -1956,6 +1970,7 @@ "description": "Contains the translations of all translated fields." }, "states": { + "description": "States/provinces/regions within the country", "type": "array", "items": { "$ref": "#/components/schemas/CountryState" @@ -2605,36 +2620,46 @@ "readOnly": true }, "group": { - "$ref": "#/components/schemas/CustomerGroup" + "$ref": "#/components/schemas/CustomerGroup", + "description": "Customer group determining pricing and permissions" }, "language": { - "$ref": "#/components/schemas/Language" + "$ref": "#/components/schemas/Language", + "description": "Preferred language for customer communication" }, "lastPaymentMethod": { - "$ref": "#/components/schemas/PaymentMethod" + "$ref": "#/components/schemas/PaymentMethod", + "description": "Last used payment method by the customer" }, "defaultBillingAddress": { - "$ref": "#/components/schemas/CustomerAddress" + "$ref": "#/components/schemas/CustomerAddress", + "description": "Default billing address for the customer" }, "activeBillingAddress": { - "$ref": "#/components/schemas/CustomerAddress" + "$ref": "#/components/schemas/CustomerAddress", + "description": "Currently active billing address in the session" }, "defaultShippingAddress": { - "$ref": "#/components/schemas/CustomerAddress" + "$ref": "#/components/schemas/CustomerAddress", + "description": "Default shipping address for the customer" }, "activeShippingAddress": { - "$ref": "#/components/schemas/CustomerAddress" + "$ref": "#/components/schemas/CustomerAddress", + "description": "Currently active shipping address in the session" }, "salutation": { - "$ref": "#/components/schemas/Salutation" + "$ref": "#/components/schemas/Salutation", + "description": "Customer salutation (e.g., Mr., Mrs., Ms.)" }, "addresses": { + "description": "All addresses saved for the customer", "type": "array", "items": { "$ref": "#/components/schemas/CustomerAddress" } }, "tags": { + "description": "Tags assigned to the customer for organization and segmentation", "type": "array", "items": { "$ref": "#/components/schemas/Tag" @@ -3561,6 +3586,7 @@ "relationships": { "properties": { "cmsPage": { + "description": "CMS page layout for the landing page", "properties": { "links": { "type": "object", @@ -3590,6 +3616,7 @@ "type": "object" }, "seoUrls": { + "description": "SEO-friendly URLs for the landing page across different sales channels", "properties": { "links": { "type": "object", @@ -3703,9 +3730,11 @@ "description": "Contains the translations of all translated fields." }, "cmsPage": { - "$ref": "#/components/schemas/CmsPage" + "$ref": "#/components/schemas/CmsPage", + "description": "CMS page layout for the landing page" }, "seoUrls": { + "description": "SEO-friendly URLs for the landing page across different sales channels", "type": "array", "items": { "$ref": "#/components/schemas/SeoUrl" @@ -3800,6 +3829,7 @@ "type": "object" }, "locale": { + "description": "Locale defining regional settings (date, time, number formats)", "properties": { "links": { "type": "object", @@ -3829,6 +3859,7 @@ "type": "object" }, "translationCode": { + "description": "Locale used for translating content", "properties": { "links": { "type": "object", @@ -3858,6 +3889,7 @@ "type": "object" }, "children": { + "description": "Child languages inheriting from this parent language", "properties": { "links": { "type": "object", @@ -3949,12 +3981,15 @@ "$ref": "#/components/schemas/Language" }, "locale": { - "$ref": "#/components/schemas/Locale" + "$ref": "#/components/schemas/Locale", + "description": "Locale defining regional settings (date, time, number formats)" }, "translationCode": { - "$ref": "#/components/schemas/Locale" + "$ref": "#/components/schemas/Locale", + "description": "Locale used for translating content" }, "children": { + "description": "Child languages inheriting from this parent language", "type": "array", "items": { "$ref": "#/components/schemas/Language" @@ -4527,6 +4562,7 @@ "description": "Contains the translations of all translated fields." }, "thumbnails": { + "description": "Generated thumbnail images in various sizes", "type": "array", "items": { "$ref": "#/components/schemas/MediaThumbnail" @@ -5176,57 +5212,70 @@ "readOnly": true }, "stateMachineState": { - "$ref": "#/components/schemas/StateMachineState" + "$ref": "#/components/schemas/StateMachineState", + "description": "Current order state (e.g., open, in_progress, completed, cancelled)" }, "primaryOrderDelivery": { - "$ref": "#/components/schemas/OrderDelivery" + "$ref": "#/components/schemas/OrderDelivery", + "description": "Primary delivery information for the order" }, "primaryOrderTransaction": { - "$ref": "#/components/schemas/OrderTransaction" + "$ref": "#/components/schemas/OrderTransaction", + "description": "Primary payment transaction for the order" }, "orderCustomer": { - "$ref": "#/components/schemas/OrderCustomer" + "$ref": "#/components/schemas/OrderCustomer", + "description": "Customer information associated with the order" }, "currency": { - "$ref": "#/components/schemas/Currency" + "$ref": "#/components/schemas/Currency", + "description": "Currency used for the order" }, "language": { - "$ref": "#/components/schemas/Language" + "$ref": "#/components/schemas/Language", + "description": "Language used when placing the order" }, "addresses": { + "description": "All addresses associated with the order (billing and shipping)", "type": "array", "items": { "$ref": "#/components/schemas/OrderAddress" } }, "billingAddress": { - "$ref": "#/components/schemas/OrderAddress" + "$ref": "#/components/schemas/OrderAddress", + "description": "Billing address for the order" }, "deliveries": { + "description": "Delivery information including shipping address and tracking", "type": "array", "items": { "$ref": "#/components/schemas/OrderDelivery" } }, "lineItems": { + "description": "Order line items (products, discounts, fees)", "type": "array", "items": { "$ref": "#/components/schemas/OrderLineItem" } }, "transactions": { + "description": "Payment transactions for the order", "type": "array", "items": { "$ref": "#/components/schemas/OrderTransaction" } }, "documents": { + "description": "Generated documents (invoices, delivery notes, credit notes)", "type": "array", "items": { "$ref": "#/components/schemas/Document" } }, "tags": { + "description": "Tags assigned to the order for organization and filtering", "type": "array", "items": { "$ref": "#/components/schemas/Tag" @@ -5573,15 +5622,19 @@ "readOnly": true }, "stateMachineState": { - "$ref": "#/components/schemas/StateMachineState" + "$ref": "#/components/schemas/StateMachineState", + "description": "Current delivery state (e.g., open, shipped, delivered, cancelled)" }, "shippingOrderAddress": { - "$ref": "#/components/schemas/OrderAddress" + "$ref": "#/components/schemas/OrderAddress", + "description": "Shipping address for this delivery" }, "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" + "$ref": "#/components/schemas/ShippingMethod", + "description": "Shipping method used for this delivery" }, "positions": { + "description": "Line items included in this delivery", "type": "array", "items": { "$ref": "#/components/schemas/OrderDeliveryPosition" @@ -5966,18 +6019,22 @@ "readOnly": true }, "cover": { - "$ref": "#/components/schemas/Media" + "$ref": "#/components/schemas/Media", + "description": "Line item image or thumbnail" }, "product": { - "$ref": "#/components/schemas/Product" + "$ref": "#/components/schemas/Product", + "description": "Referenced product if this is a product line item" }, "orderDeliveryPositions": { + "description": "Delivery positions for this line item", "type": "array", "items": { "$ref": "#/components/schemas/OrderDeliveryPosition" } }, "downloads": { + "description": "Digital downloads associated with this line item", "type": "array", "items": { "$ref": "#/components/schemas/OrderLineItemDownload" @@ -6230,12 +6287,15 @@ "readOnly": true }, "stateMachineState": { - "$ref": "#/components/schemas/StateMachineState" + "$ref": "#/components/schemas/StateMachineState", + "description": "Current payment transaction state (e.g., open, paid, cancelled)" }, "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethod" + "$ref": "#/components/schemas/PaymentMethod", + "description": "Payment method used for this transaction" }, "captures": { + "description": "Payment captures for this transaction", "type": "array", "items": { "$ref": "#/components/schemas/OrderTransactionCapture" @@ -6836,6 +6896,7 @@ "relationships": { "properties": { "media": { + "description": "Payment method logo or icon image", "properties": { "links": { "type": "object", @@ -6942,7 +7003,8 @@ "description": "Contains the translations of all translated fields." }, "media": { - "$ref": "#/components/schemas/Media" + "$ref": "#/components/schemas/Media", + "description": "Payment method logo or icon image" } }, "type": "object" @@ -7309,6 +7371,7 @@ "relationships": { "properties": { "downloads": { + "description": "Downloadable files associated with the product (e.g., manuals, digital content)", "properties": { "links": { "type": "object", @@ -7369,6 +7432,7 @@ "type": "object" }, "children": { + "description": "Product variants that inherit from this parent product", "properties": { "links": { "type": "object", @@ -7400,6 +7464,7 @@ "type": "object" }, "deliveryTime": { + "description": "Estimated delivery time for the product", "properties": { "links": { "type": "object", @@ -7429,6 +7494,7 @@ "type": "object" }, "tax": { + "description": "Tax configuration (rate and calculation rules)", "properties": { "links": { "type": "object", @@ -7458,6 +7524,7 @@ "type": "object" }, "manufacturer": { + "description": "Product manufacturer or brand information", "properties": { "links": { "type": "object", @@ -7487,6 +7554,7 @@ "type": "object" }, "unit": { + "description": "Product unit of measure (e.g., piece, liter, kg)", "properties": { "links": { "type": "object", @@ -7516,6 +7584,7 @@ "type": "object" }, "cover": { + "description": "Main product image displayed in listings and detail pages", "properties": { "links": { "type": "object", @@ -7545,6 +7614,7 @@ "type": "object" }, "cmsPage": { + "description": "Custom CMS page layout for the product detail page", "properties": { "links": { "type": "object", @@ -7574,6 +7644,7 @@ "type": "object" }, "canonicalProduct": { + "description": "Canonical product reference for variant consolidation and SEO purposes", "properties": { "links": { "type": "object", @@ -7603,6 +7674,7 @@ "type": "object" }, "media": { + "description": "Product images and media gallery", "properties": { "links": { "type": "object", @@ -7634,6 +7706,7 @@ "type": "object" }, "crossSellings": { + "description": "Cross-selling configurations (related products, accessories, similar items)", "properties": { "links": { "type": "object", @@ -7665,6 +7738,7 @@ "type": "object" }, "configuratorSettings": { + "description": "Variant configurator settings defining available options for product variants", "properties": { "links": { "type": "object", @@ -7696,6 +7770,7 @@ "type": "object" }, "productReviews": { + "description": "Customer reviews and ratings for the product", "properties": { "links": { "type": "object", @@ -7727,6 +7802,7 @@ "type": "object" }, "mainCategories": { + "description": "Primary category assignments per sales channel for SEO and navigation", "properties": { "links": { "type": "object", @@ -7758,6 +7834,7 @@ "type": "object" }, "seoUrls": { + "description": "SEO-friendly URLs for the product across different sales channels", "properties": { "links": { "type": "object", @@ -7789,6 +7866,7 @@ "type": "object" }, "options": { + "description": "Product variant options (e.g., size, color) that define different variants", "properties": { "links": { "type": "object", @@ -7820,6 +7898,7 @@ "type": "object" }, "properties": { + "description": "Product properties and characteristics for filtering", "properties": { "links": { "type": "object", @@ -7851,6 +7930,7 @@ "type": "object" }, "categories": { + "description": "Categories this product is assigned to", "properties": { "links": { "type": "object", @@ -7882,6 +7962,7 @@ "type": "object" }, "streams": { + "description": "Dynamic product streams this product belongs to based on defined filters", "properties": { "links": { "type": "object", @@ -7913,6 +7994,7 @@ "type": "object" }, "categoriesRo": { + "description": "Read-only category tree including all parent categories for optimized queries", "properties": { "links": { "type": "object", @@ -7944,6 +8026,7 @@ "type": "object" }, "tags": { + "description": "Tags for organizing and filtering products", "properties": { "links": { "type": "object", @@ -7975,6 +8058,7 @@ "type": "object" }, "seoCategory": { + "description": "Main category used for SEO URL generation in the current sales channel", "properties": { "links": { "type": "object", @@ -8437,6 +8521,7 @@ "description": "Contains the translations of all translated fields." }, "downloads": { + "description": "Downloadable files associated with the product (e.g., manuals, digital content)", "type": "array", "items": { "$ref": "#/components/schemas/ProductDownload" @@ -8446,6 +8531,7 @@ "$ref": "#/components/schemas/Product" }, "children": { + "description": "Product variants that inherit from this parent product", "type": "array", "items": { "$ref": "#/components/schemas/Product" @@ -8456,97 +8542,116 @@ "description": "Time taken for the product to reach the customer. If a delivery time is defined in the product, it overwrites the delivery time of a shipping method." }, "tax": { - "$ref": "#/components/schemas/Tax" + "$ref": "#/components/schemas/Tax", + "description": "Tax configuration (rate and calculation rules)" }, "manufacturer": { - "$ref": "#/components/schemas/ProductManufacturer" + "$ref": "#/components/schemas/ProductManufacturer", + "description": "Product manufacturer or brand information" }, "unit": { - "$ref": "#/components/schemas/Unit" + "$ref": "#/components/schemas/Unit", + "description": "Product unit of measure (e.g., piece, liter, kg)" }, "cover": { - "$ref": "#/components/schemas/ProductMedia" + "$ref": "#/components/schemas/ProductMedia", + "description": "Main product image displayed in listings and detail pages" }, "cmsPage": { - "$ref": "#/components/schemas/CmsPage" + "$ref": "#/components/schemas/CmsPage", + "description": "Custom CMS page layout for the product detail page" }, "canonicalProduct": { - "$ref": "#/components/schemas/Product" + "$ref": "#/components/schemas/Product", + "description": "Canonical product reference for variant consolidation and SEO purposes" }, "media": { + "description": "Product images and media gallery", "type": "array", "items": { "$ref": "#/components/schemas/ProductMedia" } }, "crossSellings": { + "description": "Cross-selling configurations (related products, accessories, similar items)", "type": "array", "items": { "$ref": "#/components/schemas/ProductCrossSelling" } }, "configuratorSettings": { + "description": "Variant configurator settings defining available options for product variants", "type": "array", "items": { "$ref": "#/components/schemas/ProductConfiguratorSetting" } }, "productReviews": { + "description": "Customer reviews and ratings for the product", "type": "array", "items": { "$ref": "#/components/schemas/ProductReview" } }, "mainCategories": { + "description": "Primary category assignments per sales channel for SEO and navigation", "type": "array", "items": { "$ref": "#/components/schemas/MainCategory" } }, "seoUrls": { + "description": "SEO-friendly URLs for the product across different sales channels", "type": "array", "items": { "$ref": "#/components/schemas/SeoUrl" } }, "options": { + "description": "Product variant options (e.g., size, color) that define different variants", "type": "array", "items": { "$ref": "#/components/schemas/PropertyGroupOption" } }, "properties": { + "description": "Product properties and characteristics for filtering", "type": "array", "items": { "$ref": "#/components/schemas/PropertyGroupOption" } }, "categories": { + "description": "Categories this product is assigned to", "type": "array", "items": { "$ref": "#/components/schemas/Category" } }, "streams": { + "description": "Dynamic product streams this product belongs to based on defined filters", "type": "array", "items": { "$ref": "#/components/schemas/ProductStream" } }, "categoriesRo": { + "description": "Read-only category tree including all parent categories for optimized queries", "type": "array", "items": { "$ref": "#/components/schemas/Category" } }, "tags": { + "description": "Tags for organizing and filtering products", "type": "array", "items": { "$ref": "#/components/schemas/Tag" } }, "seoCategory": { - "$ref": "#/components/schemas/Category" + "$ref": "#/components/schemas/Category", + "description": "Main category used for SEO URL generation in the current sales channel" }, "apiAlias": { "type": "string", @@ -9744,34 +9849,43 @@ "description": "Contains the translations of all translated fields." }, "language": { - "$ref": "#/components/schemas/Language" + "$ref": "#/components/schemas/Language", + "description": "Default language for the sales channel" }, "currency": { - "$ref": "#/components/schemas/Currency" + "$ref": "#/components/schemas/Currency", + "description": "Default currency for the sales channel" }, "paymentMethod": { - "$ref": "#/components/schemas/PaymentMethod" + "$ref": "#/components/schemas/PaymentMethod", + "description": "Default payment method for the sales channel" }, "shippingMethod": { - "$ref": "#/components/schemas/ShippingMethod" + "$ref": "#/components/schemas/ShippingMethod", + "description": "Default shipping method for the sales channel" }, "country": { - "$ref": "#/components/schemas/Country" + "$ref": "#/components/schemas/Country", + "description": "Default country for the sales channel" }, "domains": { + "description": "Domain URLs configured for the sales channel", "type": "array", "items": { "$ref": "#/components/schemas/SalesChannelDomain" } }, "navigationCategory": { - "$ref": "#/components/schemas/Category" + "$ref": "#/components/schemas/Category", + "description": "Root category for navigation menu" }, "footerCategory": { - "$ref": "#/components/schemas/Category" + "$ref": "#/components/schemas/Category", + "description": "Root category for footer navigation" }, "serviceCategory": { - "$ref": "#/components/schemas/Category" + "$ref": "#/components/schemas/Category", + "description": "Root category for service pages" }, "hreflangDefaultDomain": { "$ref": "#/components/schemas/SalesChannelDomain" @@ -10301,6 +10415,7 @@ "relationships": { "properties": { "deliveryTime": { + "description": "Estimated delivery time information", "properties": { "links": { "type": "object", @@ -10330,6 +10445,7 @@ "type": "object" }, "availabilityRule": { + "description": "Rule defining when this shipping method is available", "properties": { "links": { "type": "object", @@ -10359,6 +10475,7 @@ "type": "object" }, "prices": { + "description": "Shipping prices based on weight, volume, or cart value", "properties": { "links": { "type": "object", @@ -10390,6 +10507,7 @@ "type": "object" }, "media": { + "description": "Shipping method logo or carrier image", "properties": { "links": { "type": "object", @@ -10419,6 +10537,7 @@ "type": "object" }, "tags": { + "description": "Tags for organizing shipping methods", "properties": { "links": { "type": "object", @@ -10450,6 +10569,7 @@ "type": "object" }, "tax": { + "description": "Tax configuration for shipping costs", "properties": { "links": { "type": "object", @@ -10557,28 +10677,34 @@ "description": "Contains the translations of all translated fields." }, "deliveryTime": { - "$ref": "#/components/schemas/DeliveryTime" + "$ref": "#/components/schemas/DeliveryTime", + "description": "Estimated delivery time information" }, "availabilityRule": { - "$ref": "#/components/schemas/Rule" + "$ref": "#/components/schemas/Rule", + "description": "Rule defining when this shipping method is available" }, "prices": { + "description": "Shipping prices based on weight, volume, or cart value", "type": "array", "items": { "$ref": "#/components/schemas/ShippingMethodPrice" } }, "media": { - "$ref": "#/components/schemas/Media" + "$ref": "#/components/schemas/Media", + "description": "Shipping method logo or carrier image" }, "tags": { + "description": "Tags for organizing shipping methods", "type": "array", "items": { "$ref": "#/components/schemas/Tag" } }, "tax": { - "$ref": "#/components/schemas/Tax" + "$ref": "#/components/schemas/Tax", + "description": "Tax configuration for shipping costs" } }, "type": "object" @@ -12955,7 +13081,7 @@ } }, "cover": { - "$ref": "#/components/schemas/ProductMedia" + "$ref": "#/components/schemas/Media" }, "dataContextHash": { "type": "string" @@ -16651,6 +16777,38 @@ "default": "application/json" } }, + "noAggregations": { + "name": "no-aggregations", + "in": "query", + "description": "Resets all aggregations in the criteria. This parameter is a flag, the value has no effect.", + "required": false, + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "onlyAggregations": { + "name": "only-aggregations", + "in": "query", + "description": "If this flag is set, no products are fetched. Sorting and associations are also ignored. This parameter is a flag, the value has no effect.", + "required": false, + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, "criteriaPage": { "name": "page", "in": "query", @@ -16825,6 +16983,28 @@ }, "style": "deepObject", "explode": true + }, + "CompressedCriteria": { + "name": "_criteria", + "in": "query", + "description": "Compressed and encoded criteria object. Format: base64url(gzip(json_encode(criteria))). This parameter allows passing complex criteria as a single encoded string instead of multiple query parameters. The criteria object should be JSON-encoded, then gzipped, and finally base64url-encoded. The criteria object structure is defined in the Criteria schema (see #/components/schemas/Criteria).", + "required": false, + "schema": { + "type": "string", + "format": "base64url", + "example": "H4sIAAAAAAAAA6tWykpNzFGyqlbKz8lPTSxRslJKSi0pzSsFAGcQr7sHAAAA" + } + }, + "CompressedNoneFieldsCriteria": { + "name": "_criteria", + "in": "query", + "description": "Compressed and encoded criteria object. Format: base64url(gzip(json_encode(criteria))). This parameter allows passing complex criteria as a single encoded string instead of multiple query parameters. The criteria object should be JSON-encoded, then gzipped, and finally base64url-encoded. The criteria object structure is defined in the NoneFieldsCriteria schema (see #/components/schemas/NoneFieldsCriteria).", + "required": false, + "schema": { + "type": "string", + "format": "base64url", + "example": "H4sIAAAAAAAAA6tWykpNzFGyqlbKz8lPTSxRslJKSi0pzSsFAGcQr7sHAAAA" + } } }, "securitySchemes": { @@ -16968,6 +17148,9 @@ }, { "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedNoneFieldsCriteria" } ], "responses": { @@ -17617,7 +17800,7 @@ "Endpoints supporting Criteria " ], "summary": "Get information about current customer", - "description": "Returns information about the current customer.", + "description": "Returns information about the current customer.\n\n**Available Associations:**\n- `group` - Customer group determining pricing and permissions\n- `language` - Preferred language for customer communication\n- `lastPaymentMethod` - Last used payment method by the customer\n- `defaultBillingAddress` - Default billing address for the customer\n- `activeBillingAddress` - Currently active billing address in the session\n- `defaultShippingAddress` - Default shipping address for the customer\n- `activeShippingAddress` - Currently active shipping address in the session\n- `salutation` - Customer salutation (e.g., Mr., Mrs., Ms.)\n- `addresses` - All addresses saved for the customer\n- `tags` - Tags assigned to the customer for organization and segmentation", "operationId": "readCustomer", "requestBody": { "required": false, @@ -18421,7 +18604,7 @@ "Endpoints supporting Criteria " ], "summary": "Fetch languages", - "description": "Perform a filtered search for languages.", + "description": "Perform a filtered search for languages.\n\n**Available Associations:**\n- `locale` - Locale defining regional settings (date, time, number formats)\n- `translationCode` - Locale used for translating content\n- `children` - Child languages inheriting from this parent language", "operationId": "readLanguages", "parameters": [ { @@ -18480,7 +18663,7 @@ "Endpoints supporting Criteria " ], "summary": "Fetch languages", - "description": "Perform a filtered search for languages.", + "description": "Perform a filtered search for languages.\n\n**Available Associations:**\n- `locale` - Locale defining regional settings (date, time, number formats)\n- `translationCode` - Locale used for translating content\n- `children` - Child languages inheriting from this parent language", "operationId": "readLanguagesGet", "parameters": [ { @@ -18537,6 +18720,9 @@ }, { "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" } ], "responses": { @@ -18681,6 +18867,9 @@ }, { "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" } ], "responses": { @@ -18702,7 +18891,7 @@ "Endpoints supporting Criteria " ], "summary": "Fetch a list of categories", - "description": "Perform a filtered search for categories.", + "description": "Perform a filtered search for categories.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", "operationId": "readCategoryList", "parameters": [ { @@ -18761,7 +18950,7 @@ "Endpoints supporting Criteria " ], "summary": "Fetch a list of categories", - "description": "Perform a filtered search for categories.", + "description": "Perform a filtered search for categories.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", "operationId": "readCategoryListGet", "parameters": [ { @@ -18818,6 +19007,9 @@ }, { "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" } ], "responses": { @@ -18839,7 +19031,7 @@ "Endpoints supporting Criteria " ], "summary": "Fetch a single category", - "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.", + "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", "operationId": "readCategory", "parameters": [ { @@ -18931,7 +19123,7 @@ "Endpoints supporting Criteria " ], "summary": "Fetch a single category", - "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.", + "description": "This endpoint returns information about the category, as well as a fully resolved (hydrated with mapping values) CMS page, if one is assigned to the category. You can pass slots which should be resolved exclusively.\n\n**Available Associations:**\n- `children` - Child categories within this category for hierarchical navigation\n- `media` - Category image or banner\n- `tags` - Tags for organizing and filtering categories\n- `cmsPage` - CMS page layout for the category\n- `seoUrls` - SEO-friendly URLs for the category across different sales channels", "operationId": "readCategoryGet", "parameters": [ { @@ -19092,59 +19284,6 @@ "type": "string" } }, - { - "name": "manufacturer-filter", - "in": "query", - "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.", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "name": "price-filter", - "in": "query", - "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.", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "name": "rating-filter", - "in": "query", - "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.", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "name": "shipping-free-filter", - "in": "query", - "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.", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "name": "property-filter", - "in": "query", - "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.", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "name": "property-whitelist", - "in": "query", - "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.", - "schema": { - "type": "string" - } - }, { "name": "reduce-aggregations", "in": "query", @@ -19441,6 +19580,52 @@ "ApiKey": [] } ] + }, + "get": { + "tags": [ + "Content" + ], + "summary": "Fetch and resolve Media Entities", + "description": "Fetch one or multiple Media Entities with the corresponding Identifier.", + "operationId": "readMediaGet", + "parameters": [ + { + "name": "ids[]", + "in": "query", + "description": "Identifier (UUID) of the media entity to be fetched.", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + } + } + ], + "responses": { + "200": { + "description": "The loaded MediaCollection containing the requested Media Entities.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Media" + } + } + } + } + }, + "404": { + "$ref": "#/components/responses/404" + } + }, + "security": [ + { + "ApiKey": [] + } + ] } }, "/country-state/{countryId}": { @@ -19584,6 +19769,9 @@ }, { "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" } ], "responses": { @@ -19894,6 +20082,9 @@ }, { "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" } ], "responses": { @@ -20503,7 +20694,7 @@ "Content" ], "summary": "Fetch and resolve a CMS page", - "description": "Loads a content management page by its identifier and resolve the slot data. This could be media files, product listing and so on.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.", + "description": "Loads a content management page by its identifier and resolve the slot data. This could be media files, product listing and so on.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `sections` - Content sections within the CMS page (layout blocks containing slots)\n- `previewMedia` - Preview image for the CMS page in admin panel and page selection\n- `landingPages` - Landing pages using this CMS layout", "operationId": "readCms", "parameters": [ { @@ -20589,7 +20780,7 @@ "Content" ], "summary": "Fetch and resolve a CMS page", - "description": "Loads a content management page by its identifier and resolve the slot data. This could be media files, product listing and so on.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.", + "description": "Loads a content management page by its identifier and resolve the slot data. This could be media files, product listing and so on.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `sections` - Content sections within the CMS page (layout blocks containing slots)\n- `previewMedia` - Preview image for the CMS page in admin panel and page selection\n- `landingPages` - Landing pages using this CMS layout", "operationId": "readCmsGet", "parameters": [ { @@ -20741,59 +20932,6 @@ "type": "string" } }, - { - "name": "manufacturer-filter", - "in": "query", - "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.", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "name": "price-filter", - "in": "query", - "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.", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "name": "rating-filter", - "in": "query", - "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.", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "name": "shipping-free-filter", - "in": "query", - "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.", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "name": "property-filter", - "in": "query", - "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.", - "schema": { - "type": "boolean", - "default": true - } - }, - { - "name": "property-whitelist", - "in": "query", - "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.", - "schema": { - "type": "string" - } - }, { "name": "reduce-aggregations", "in": "query", @@ -20926,68 +21064,265 @@ "ApiKey": [] } ] - } - }, - "/product-listing/{categoryId}": { - "post": { + }, + "get": { "tags": [ "Product" ], - "summary": "Fetch a product listing by category", - "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.", - "operationId": "readProductListing", + "summary": "Search for products", + "description": "Performs a search for products which can be used to display a product listing.", + "operationId": "searchPageGet", "parameters": [ { - "name": "categoryId", - "in": "path", - "description": "Identifier of a category.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "p", - "in": "query", - "description": "The page number to fetch.", + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", "required": false, "schema": { - "type": "integer" + "type": "string", + "pattern": "^[0-9a-f]{32}$" } }, { - "name": "sw-include-seo-urls", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", "in": "header", - "description": "Determines if the response must contain a SeoUrl entity for a product entity", + "name": "sw-include-seo-urls", "required": false, "schema": { "type": "boolean" } }, { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", + "name": "search", + "in": "query", + "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", "required": false, "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } }, { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, + "$ref": "#/components/parameters/criteriaPage" + }, + { + "name": "limit", + "in": "query", + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" + "type": "integer", + "minimum": 0 } - } + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "name": "order", + "in": "query", + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "schema": { + "type": "string" + } + }, + { + "name": "p", + "in": "query", + "description": "Search result page", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "manufacturer", + "in": "query", + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "min-price", + "in": "query", + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "max-price", + "in": "query", + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "rating", + "in": "query", + "description": "Filter products with a minimum average rating.", + "schema": { + "type": "integer" + } + }, + { + "name": "shipping-free", + "in": "query", + "description": "Filters products that are marked as shipping-free.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "properties", + "in": "query", + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "reduce-aggregations", + "in": "query", + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + { + "$ref": "#/components/parameters/noAggregations" + }, + { + "$ref": "#/components/parameters/onlyAggregations" + } + ], + "responses": { + "200": { + "description": "Returns a product listing containing all products and additional fields to display a listing.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/product-listing/{categoryId}": { + "post": { + "tags": [ + "Product" + ], + "summary": "Fetch a product listing by category", + "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", + "operationId": "readProductListing", + "parameters": [ + { + "name": "categoryId", + "in": "path", + "description": "Identifier of a category.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "p", + "in": "query", + "description": "The page number to fetch.", + "required": false, + "schema": { + "type": "integer" + } + }, + { + "name": "sw-include-seo-urls", + "in": "header", + "description": "Determines if the response must contain a SeoUrl entity for a product entity", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + } ], "requestBody": { "content": { @@ -21022,6 +21357,203 @@ "ApiKey": [] } ] + }, + "get": { + "tags": [ + "Product" + ], + "summary": "Fetch a product listing by category", + "description": "Fetches a product listing for a specific category. It also provides filters, sortings and property aggregations, analogous to the /search endpoint.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", + "operationId": "readProductListingGet", + "parameters": [ + { + "name": "categoryId", + "in": "path", + "description": "Identifier of a category.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "sw-include-seo-urls", + "in": "header", + "description": "Determines if the response must contain a SeoUrl entity for a product entity", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "name": "limit", + "in": "query", + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "schema": { + "type": "integer", + "minimum": 0 + } + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "name": "order", + "in": "query", + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "schema": { + "type": "string" + } + }, + { + "name": "p", + "in": "query", + "description": "Search result page", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "manufacturer", + "in": "query", + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "min-price", + "in": "query", + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "max-price", + "in": "query", + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "rating", + "in": "query", + "description": "Filter products with a minimum average rating.", + "schema": { + "type": "integer" + } + }, + { + "name": "shipping-free", + "in": "query", + "description": "Filters products that are marked as shipping-free.", + "schema": { + "type": "boolean", + "default": false + } + }, + { + "name": "properties", + "in": "query", + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "reduce-aggregations", + "in": "query", + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + { + "$ref": "#/components/parameters/noAggregations" + }, + { + "$ref": "#/components/parameters/onlyAggregations" + } + ], + "responses": { + "200": { + "description": "Returns a product listing containing all products and additional fields to display a listing.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] } }, "/navigation/{activeId}/{rootId}": { @@ -21278,6 +21810,9 @@ }, { "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedNoneFieldsCriteria" } ], "responses": { @@ -21422,6 +21957,9 @@ }, { "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" } ], "responses": { @@ -21809,11 +22347,10 @@ "/document/download/{documentId}/{deepLinkCode}": { "post": { "tags": [ - "Document", - "Endpoints supporting Criteria " + "Document" ], "summary": "Download generated document", - "description": "Returns blob file of a generated document to download.", + "description": "Returns generated document to download.", "operationId": "download", "parameters": [ { @@ -21836,26 +22373,12 @@ { "name": "sw-language-id", "in": "header", - "description": "Instructs Shopware to return the response in the given language.", + "description": "If a document is rendered on the fly the provided language id is added to fallback languages while the order language has priority. It does not change already generated documents.", "required": false, "schema": { "type": "string", "pattern": "^[0-9a-f]{32}$" } - }, - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } } ], "requestBody": { @@ -21863,25 +22386,149 @@ "content": { "application/json": { "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/Criteria" + "type": "object", + "properties": { + "email": { + "type": "string" + }, + "zipcode": { + "type": "string" } - ] + }, + "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." + } + } + } + }, + "responses": { + "200": { + "description": "Success", + "content": { + "application/pdf": { + "schema": { + "type": "string", + "format": "binary" + } + }, + "text/html": { + "schema": { + "type": "string" + } + }, + "application/xml": { + "schema": { + "type": "string" + } } } + }, + "204": { + "description": "DEPRECATED: Returns a no content response when no document is found. Will be changed in v6.8.0.0 and returns a 404 response instead." + }, + "403": { + "description": "Forbidden." + }, + "404": { + "description": "Document not found." + }, + "406": { + "description": "The requested mime type is not supported." + } + }, + "security": [ + { + "ApiKey": [], + "ContextToken": [] + } + ] + }, + "get": { + "tags": [ + "Document" + ], + "summary": "Download generated document", + "description": "Returns generated document to download.", + "operationId": "downloadGet", + "parameters": [ + { + "name": "documentId", + "in": "path", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "deepLinkCode", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + }, + { + "name": "email", + "required": false, + "in": "query", + "schema": { + "type": "string" + }, + "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." + }, + { + "name": "zipcode", + "required": false, + "in": "query", + "schema": { + "type": "string" + }, + "description": "Required for guest orders to verify the user; ignored for orders with logged-in user." + }, + { + "name": "sw-language-id", + "in": "header", + "description": "If a document is rendered on the fly the provided language id is added to fallback languages while the order language has priority. It does not change already generated documents.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } } - }, + ], "responses": { "200": { - "description": "Returns the document information and blob to download.", + "description": "Success", "content": { - "application/json": { + "application/pdf": { + "schema": { + "type": "string", + "format": "binary" + } + }, + "text/html": { + "schema": { + "type": "string" + } + }, + "application/xml": { "schema": { - "$ref": "#/components/schemas/Document" + "type": "string" } } } + }, + "204": { + "description": "DEPRECATED: Returns a no content response when no document is found. Will be changed in v6.8.0.0 and returns a 404 response instead." + }, + "403": { + "description": "Forbidden." + }, + "404": { + "description": "Document not found." + }, + "406": { + "description": "The requested mime type is not supported." } }, "security": [ @@ -21959,7 +22606,7 @@ "Endpoints supporting Criteria " ], "summary": "Fetch shipping methods", - "description": "Perform a filtered search for shipping methods.", + "description": "Perform a filtered search for shipping methods.\n\n**Available Associations:**\n- `prices` - Shipping method price configurations (based on current cart and context)\n- `deliveryTime` - Delivery time information (min/max days, unit)\n- `media` - Media/images associated with the shipping method (loaded by default)\n- `availabilityRule` - Availability rule determining when this method is available\n- `tax` - Tax configuration for the shipping method\n\n**Example with associations:**\n```json\n{\n \"associations\": {\n \"prices\": {},\n \"deliveryTime\": {}\n }\n}\n```\n\nNote: The `prices` association is essential for accessing shipping cost configurations.", "operationId": "readShippingMethod", "parameters": [ { @@ -22059,7 +22706,7 @@ "Endpoints supporting Criteria " ], "summary": "Fetch shipping methods", - "description": "Perform a filtered search for shipping methods.", + "description": "Perform a filtered search for shipping methods.\n\n**Available Associations:**\n- `prices` - Shipping method price configurations (graduated prices, quantity-based pricing)\n- `deliveryTime` - Delivery time information (min/max days, unit)\n- `media` - Media/images associated with the shipping method (loaded by default)\n- `availabilityRule` - Availability rule determining when this method is available\n- `tax` - Tax configuration for the shipping method\n\nNote: The `prices` association is essential for accessing shipping cost configurations.", "operationId": "readShippingMethodGet", "parameters": [ { @@ -22116,6 +22763,9 @@ }, { "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" } ], "responses": { @@ -22137,7 +22787,7 @@ "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.", + "description": "Loads a landing page by its identifier and resolves the CMS page.\n\n**Important notice**\n\nThe criteria passed with this route also affects the listing, if there is one within the cms page.\n\n**Available Associations:**\n- `cmsPage` - CMS page layout for the landing page\n- `seoUrls` - SEO-friendly URLs for the landing page across different sales channels", "operationId": "readLandingPage", "parameters": [ { @@ -22263,7 +22913,7 @@ "Endpoints supporting Criteria " ], "summary": "Fetch countries", - "description": "Perform a filtered search for countries", + "description": "Perform a filtered search for countries\n\n**Available Associations:**\n- `states` - States/provinces/regions within the country", "operationId": "readCountry", "parameters": [ { @@ -22322,7 +22972,7 @@ "Endpoints supporting Criteria " ], "summary": "Fetch countries", - "description": "Perform a filtered search for countries", + "description": "Perform a filtered search for countries\n\n**Available Associations:**\n- `states` - States/provinces/regions within the country", "operationId": "readCountryGet", "parameters": [ { @@ -22379,6 +23029,9 @@ }, { "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" } ], "responses": { @@ -22405,95 +23058,283 @@ { "name": "type", "in": "query", - "description": "Type of the api", + "description": "Type of the api", + "schema": { + "type": "string", + "enum": [ + "jsonapi", + "json" + ] + } + } + ], + "responses": { + "200": { + "$ref": "#/components/responses/OpenApi3" + } + } + } + }, + "/search-suggest": { + "post": { + "tags": [ + "Product" + ], + "summary": "Search for products (suggest)", + "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", + "operationId": "searchSuggest", + "parameters": [ + { + "name": "p", + "in": "query", + "description": "The page number to fetch.", + "required": false, + "schema": { + "type": "integer" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "required": [ + "search" + ], + "properties": { + "search": { + "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", + "type": "string" + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/ProductListingCriteria" + }, + { + "$ref": "#/components/schemas/ProductListingFlags" + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductListingResult" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + }, + "get": { + "tags": [ + "Product" + ], + "summary": "Search for products (suggest)", + "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", + "operationId": "searchSuggestGet", + "parameters": [ + { + "name": "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": "search", + "in": "query", + "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "name": "limit", + "in": "query", + "description": "Number of items per result page. If not set, the limit will be set according to the default products per page, defined in the system settings.", + "schema": { + "type": "integer", + "minimum": 0 + } + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "name": "order", + "in": "query", + "description": "Specifies the sorting of the products by `availableSortings`. If not set, the default sorting will be set according to the shop settings. The available sorting options are sent within the response under the `availableSortings` key. In order to sort by a field, consider using the `sort` parameter from the listing criteria. Do not use both parameters together, as it might lead to unexpected results.", + "schema": { + "type": "string" + } + }, + { + "name": "p", + "in": "query", + "description": "Search result page", + "schema": { + "type": "integer", + "default": 1 + } + }, + { + "name": "manufacturer", + "in": "query", + "description": "Filter by manufacturers. List of manufacturer identifiers separated by a `|`.", + "schema": { + "type": "string" + } + }, + { + "name": "min-price", + "in": "query", + "description": "Filters by a minimum product price. Has to be lower than the `max-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "max-price", + "in": "query", + "description": "Filters by a maximum product price. Has to be higher than the `min-price` filter.", + "schema": { + "type": "integer", + "minimum": 0, + "default": 0 + } + }, + { + "name": "rating", + "in": "query", + "description": "Filter products with a minimum average rating.", "schema": { - "type": "string", - "enum": [ - "jsonapi", - "json" - ] + "type": "integer" } - } - ], - "responses": { - "200": { - "$ref": "#/components/responses/OpenApi3" - } - } - } - }, - "/search-suggest": { - "post": { - "tags": [ - "Product" - ], - "summary": "Search for products (suggest)", - "description": "Can be used to implement search previews or suggestion listings, that don’t require any interaction.", - "operationId": "searchSuggest", - "parameters": [ + }, { - "name": "p", + "name": "shipping-free", "in": "query", - "description": "The page number to fetch.", - "required": false, + "description": "Filters products that are marked as shipping-free.", "schema": { - "type": "integer" + "type": "boolean", + "default": false } }, { - "name": "sw-language-id", - "in": "header", - "description": "Instructs Shopware to return the response in the given language.", - "required": false, + "name": "properties", + "in": "query", + "description": "Filters products by their properties. List of property identifiers separated by a `|`.", "schema": { - "type": "string", - "pattern": "^[0-9a-f]{32}$" + "type": "string" } }, { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, + "name": "reduce-aggregations", + "in": "query", + "description": "By sending the parameter `reduce-aggregations` , the post-filters that were applied by the customer, are also applied to the aggregations. This has the consequence that only values are returned in the aggregations that would lead to further filter results. This parameter is a flag, the value has no effect.", "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] } + }, + { + "$ref": "#/components/parameters/noAggregations" + }, + { + "$ref": "#/components/parameters/onlyAggregations" } ], - "requestBody": { - "required": true, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "required": [ - "search" - ], - "properties": { - "search": { - "description": "Using the search parameter, the server performs a text search on all records based on their data model and weighting as defined in the entity definition using the SearchRanking flag.", - "type": "string" - } - }, - "type": "object" - }, - { - "$ref": "#/components/schemas/ProductListingCriteria" - }, - { - "$ref": "#/components/schemas/ProductListingFlags" - } - ] - } - } - } - }, "responses": { "200": { "description": "Returns a product listing containing all products and additional fields.\n\nNote: Aggregations, currentFilters and availableSortings are empty in this response. If you need them to display a listing, use the /search route instead.", @@ -22580,7 +23421,7 @@ "Endpoints supporting Criteria " ], "summary": "Fetch a list of orders", - "description": "List orders of a customer.", + "description": "List orders of a customer.\n\n**Available Associations:**\n- `stateMachineState` - Current order state (e.g., open, in_progress, completed, cancelled)\n- `primaryOrderDelivery` - Primary delivery information for the order\n- `primaryOrderTransaction` - Primary payment transaction for the order\n- `orderCustomer` - Customer information associated with the order\n- `currency` - Currency used for the order\n- `language` - Language used when placing the order\n- `addresses` - All addresses associated with the order (billing and shipping)\n- `billingAddress` - Billing address for the order\n- `deliveries` - Delivery information including shipping address and tracking\n- `lineItems` - Order line items (products, discounts, fees)\n- `transactions` - Payment transactions for the order\n- `documents` - Generated documents (invoices, delivery notes, credit notes)\n- `tags` - Tags assigned to the order for organization and filtering", "operationId": "readOrder", "parameters": [ { @@ -22870,11 +23711,170 @@ ], "responses": { "200": { - "description": "Found cross sellings", + "description": "Found cross sellings", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrossSellingElementCollection" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + }, + "get": { + "tags": [ + "Product" + ], + "summary": "Fetch cross-selling groups of a product", + "description": "This route is used to load the cross sellings for a product. A product has several cross selling definitions in which several products are linked. The route returns the cross sellings together with the linked products", + "operationId": "readProductCrossSellingsGet", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Product ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "sw-include-seo-urls", + "in": "header", + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "Found cross sellings", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CrossSellingElementCollection" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] + } + }, + "/product/{productId}": { + "post": { + "tags": [ + "Product" + ], + "summary": "Fetch a single product", + "description": "This route is used to load a single product with the corresponding details. In addition to loading the data, the best variant of the product is determined when a parent id is passed.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", + "operationId": "readProductDetail", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Product ID", + "required": true, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$'" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "description": "Instructs Shopware to try and resolve SEO URLs for the given navigation item", + "in": "header", + "name": "sw-include-seo-urls", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "name": "sw-include-search-info", + "in": "header", + "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", + "required": false, + "schema": { + "type": "string", + "enum": [ + "0", + "1" + ], + "default": "1" + } + }, + { + "description": "Instructs Shopware to skip loading the configurator data", + "in": "query", + "name": "skipConfigurator", + "required": false, + "schema": { + "type": "boolean" + } + }, + { + "description": "Instructs Shopware to skip loading the CMS page data", + "in": "query", + "name": "skipCmsPage", + "required": false, + "schema": { + "type": "boolean" + } + } + ], + "requestBody": { + "required": false, + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "$ref": "#/components/schemas/NoneFieldsCriteria" + } + ] + } + } + } + }, + "responses": { + "200": { + "description": "Product information along with variant groups and options", "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/CrossSellingElementCollection" + "$ref": "#/components/schemas/ProductDetailResponse" } } } @@ -22885,16 +23885,14 @@ "ApiKey": [] } ] - } - }, - "/product/{productId}": { - "post": { + }, + "get": { "tags": [ "Product" ], "summary": "Fetch a single product", - "description": "This route is used to load a single product with the corresponding details. In addition to loading the data, the best variant of the product is determined when a parent id is passed.", - "operationId": "readProductDetail", + "description": "This route is used to load a single product with the corresponding details. In addition to loading the data, the best variant of the product is determined when a parent id is passed.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", + "operationId": "readProductDetailGet", "parameters": [ { "name": "productId", @@ -22925,20 +23923,6 @@ "type": "boolean" } }, - { - "name": "sw-include-search-info", - "in": "header", - "description": "Controls whether API search information is included in the response. Default is 1 (enabled), will be 0 (disabled) in the next major version.", - "required": false, - "schema": { - "type": "string", - "enum": [ - "0", - "1" - ], - "default": "1" - } - }, { "description": "Instructs Shopware to skip loading the configurator data", "in": "query", @@ -22956,22 +23940,53 @@ "schema": { "type": "boolean" } + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedNoneFieldsCriteria" } ], - "requestBody": { - "required": false, - "content": { - "application/json": { - "schema": { - "allOf": [ - { - "$ref": "#/components/schemas/NoneFieldsCriteria" - } - ] - } - } - } - }, "responses": { "200": { "description": "Product information along with variant groups and options", @@ -22998,7 +24013,7 @@ "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.", + "description": "List products that match the given criteria. For performance reasons a limit should always be set.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", "operationId": "readProduct", "parameters": [ { @@ -23057,7 +24072,7 @@ "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.", + "description": "List products that match the given criteria. For performance reasons a limit should always be set.\n\n**Available Associations:**\n- `downloads` - Downloadable files associated with the product (e.g., manuals, digital content)\n- `children` - Product variants that inherit from this parent product\n- `deliveryTime` - Estimated delivery time for the product\n- `tax` - Tax configuration (rate and calculation rules)\n- `manufacturer` - Product manufacturer or brand information\n- `unit` - Product unit of measure (e.g., piece, liter, kg)\n- `cover` - Main product image displayed in listings and detail pages\n- `cmsPage` - Custom CMS page layout for the product detail page\n- `canonicalProduct` - Canonical product reference for variant consolidation and SEO purposes\n- `media` - Product images and media gallery\n- `crossSellings` - Cross-selling configurations (related products, accessories, similar items)\n- `configuratorSettings` - Variant configurator settings defining available options for product variants\n- `productReviews` - Customer reviews and ratings for the product\n- `mainCategories` - Primary category assignments per sales channel for SEO and navigation\n- `seoUrls` - SEO-friendly URLs for the product across different sales channels\n- `options` - Product variant options (e.g., size, color) that define different variants\n- `properties` - Product properties and characteristics for filtering\n- `categories` - Categories this product is assigned to\n- `streams` - Dynamic product streams this product belongs to based on defined filters\n- `categoriesRo` - Read-only category tree including all parent categories for optimized queries\n- `tags` - Tags for organizing and filtering products\n- `seoCategory` - Main category used for SEO URL generation in the current sales channel", "operationId": "readProductGet", "parameters": [ { @@ -23114,6 +24129,9 @@ }, { "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" } ], "responses": { @@ -23218,6 +24236,116 @@ "ApiKey": [] } ] + }, + "get": { + "tags": [ + "Product", + "Endpoints supporting Criteria " + ], + "summary": "Fetch product reviews", + "description": "Perform a filtered search for product reviews.", + "operationId": "readProductReviewsGet", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Identifier of the product.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "$ref": "#/components/parameters/criteriaPage" + }, + { + "$ref": "#/components/parameters/criteriaLimit" + }, + { + "$ref": "#/components/parameters/criteriaTerm" + }, + { + "$ref": "#/components/parameters/criteriaFilter" + }, + { + "$ref": "#/components/parameters/criteriaIds" + }, + { + "$ref": "#/components/parameters/criteriaQuery" + }, + { + "$ref": "#/components/parameters/criteriaAssociations" + }, + { + "$ref": "#/components/parameters/criteriaPostFilter" + }, + { + "$ref": "#/components/parameters/criteriaSort" + }, + { + "$ref": "#/components/parameters/criteriaAggregations" + }, + { + "$ref": "#/components/parameters/criteriaFields" + }, + { + "$ref": "#/components/parameters/criteriaGrouping" + }, + { + "$ref": "#/components/parameters/criteriaTotalCountMode" + }, + { + "$ref": "#/components/parameters/criteriaIncludes" + }, + { + "$ref": "#/components/parameters/criteriaExcludes" + }, + { + "$ref": "#/components/parameters/CompressedCriteria" + } + ], + "responses": { + "200": { + "description": "Entity search result containing product reviews", + "content": { + "application/json": { + "schema": { + "allOf": [ + { + "properties": { + "elements": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductReview" + } + } + }, + "type": "object" + }, + { + "$ref": "#/components/schemas/EntitySearchResult" + } + ] + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] } }, "/product/{productId}/review": { @@ -23382,6 +24510,73 @@ "ApiKey": [] } ] + }, + "get": { + "tags": [ + "Product" + ], + "summary": "Search for a matching variant by product options.", + "description": "Performs a search for product variants and returns the best matching variant.", + "operationId": "searchProductVariantIdsGet", + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "Product ID", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "sw-language-id", + "in": "header", + "description": "Instructs Shopware to return the response in the given language.", + "required": false, + "schema": { + "type": "string", + "pattern": "^[0-9a-f]{32}$" + } + }, + { + "name": "options[]", + "in": "query", + "description": "The options parameter for the variant to find. Array of option IDs.", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + { + "name": "switchedGroup", + "in": "query", + "description": "The id of the option group that has been switched.", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "Returns an FoundCombination struct containing the ids matching the search.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FindProductVariantRouteResponse" + } + } + } + } + }, + "security": [ + { + "ApiKey": [] + } + ] } }, "/handle-payment": {