diff --git a/api-specs/api/examples/BusinessUnit/BusinessUnitChangeApprovalRuleModeAction.json b/api-specs/api/examples/BusinessUnit/BusinessUnitChangeApprovalRuleModeAction.json
new file mode 100644
index 0000000000..4d43c24b79
--- /dev/null
+++ b/api-specs/api/examples/BusinessUnit/BusinessUnitChangeApprovalRuleModeAction.json
@@ -0,0 +1,4 @@
+{
+ "action": "changeApprovalRuleMode",
+ "approvalRuleMode": "Explicit"
+}
diff --git a/api-specs/api/examples/Cart/MyCartAddLineItemAction.json b/api-specs/api/examples/Cart/MyCartAddLineItemAction.json
new file mode 100644
index 0000000000..ab36dd130a
--- /dev/null
+++ b/api-specs/api/examples/Cart/MyCartAddLineItemAction.json
@@ -0,0 +1,22 @@
+{
+ "action": "addLineItem",
+ "productId": "{{product-id}}",
+ "variantId": 2,
+ "quantity": 1,
+ "supplyChannel": {
+ "typeId": "channel",
+ "id": "{{channel-id}}"
+ },
+ "distributionChannel": {
+ "typeId": "channel",
+ "id": "{{channel-id}}"
+ },
+ "shippingDetails": {
+ "targets": [
+ {
+ "addressKey": "AddressKeyStringFromAddress",
+ "quantity": 2
+ }
+ ]
+ }
+}
diff --git a/api-specs/api/examples/CustomerSearch/CustomerPagedSearchResponse.json b/api-specs/api/examples/CustomerSearch/CustomerPagedSearchResponse.json
new file mode 100644
index 0000000000..4f398a1c54
--- /dev/null
+++ b/api-specs/api/examples/CustomerSearch/CustomerPagedSearchResponse.json
@@ -0,0 +1,19 @@
+{
+ "results": [
+ {
+ "id": "e41337a0-ea96-4ddc-a9a4-d267976f21e0",
+ "relevance": 0.9264881
+ },
+ {
+ "id": "05cd5998-015c-4232-8943-ff8a1880bcbc",
+ "relevance": 0.6989829
+ },
+ {
+ "id": "09c3c5a2-6569-49dd-b021-af5de4cf4b02",
+ "relevance": 0.6989829
+ }
+ ],
+ "limit": 100,
+ "offset": 0,
+ "total": 3
+}
diff --git a/api-specs/api/examples/CustomerSearch/CustomerSearchIndexingStatusResponse.json b/api-specs/api/examples/CustomerSearch/CustomerSearchIndexingStatusResponse.json
new file mode 100644
index 0000000000..d902676215
--- /dev/null
+++ b/api-specs/api/examples/CustomerSearch/CustomerSearchIndexingStatusResponse.json
@@ -0,0 +1,11 @@
+{
+ "status": "Indexing",
+ "states": {
+ "indexed": 43242,
+ "failed": 0,
+ "estimatedTotal": 100000
+ },
+ "startedAt": "2023-08-15T12:56:07.89Z",
+ "retryCount": 2,
+ "lastModifiedAt": "2023-08-15T12:56:07.89Z"
+}
diff --git a/api-specs/api/examples/CustomerSearch/CustomerSearchRequest.json b/api-specs/api/examples/CustomerSearch/CustomerSearchRequest.json
new file mode 100644
index 0000000000..8fdcca5f06
--- /dev/null
+++ b/api-specs/api/examples/CustomerSearch/CustomerSearchRequest.json
@@ -0,0 +1,8 @@
+{
+ "query": {
+ "fullText": {
+ "field": "all",
+ "value": "john"
+ }
+ }
+}
diff --git a/api-specs/api/examples/ProductTailoring/ProductTailoringAddAssetAction.json b/api-specs/api/examples/ProductTailoring/ProductTailoringAddAssetAction.json
new file mode 100644
index 0000000000..09d553e3bf
--- /dev/null
+++ b/api-specs/api/examples/ProductTailoring/ProductTailoringAddAssetAction.json
@@ -0,0 +1,15 @@
+{
+ "action": "addAsset",
+ "variantId": 1,
+ "asset": {
+ "sources": [
+ {
+ "uri": "//asset.mp4"
+ }
+ ],
+ "name": {
+ "de": "FirstAssetDE",
+ "en": "FirstassetEN"
+ }
+ }
+}
diff --git a/api-specs/api/examples/ProductTailoring/ProductTailoringAddExternalImageAction.json b/api-specs/api/examples/ProductTailoring/ProductTailoringAddExternalImageAction.json
new file mode 100644
index 0000000000..7770b19247
--- /dev/null
+++ b/api-specs/api/examples/ProductTailoring/ProductTailoringAddExternalImageAction.json
@@ -0,0 +1,12 @@
+{
+ "action": "addExternalImage",
+ "variantId": 1,
+ "image": {
+ "url": "//myimage.jpg",
+ "dimensions": {
+ "w": 1400,
+ "h": 1400
+ },
+ "label": "myImage"
+ }
+}
diff --git a/api-specs/api/examples/ProductTailoring/ProductTailoringAddVariantAction.json b/api-specs/api/examples/ProductTailoring/ProductTailoringAddVariantAction.json
new file mode 100644
index 0000000000..ab2ba1986c
--- /dev/null
+++ b/api-specs/api/examples/ProductTailoring/ProductTailoringAddVariantAction.json
@@ -0,0 +1,5 @@
+{
+ "action": "addVariant",
+ "id": 2,
+ "sku": "VariantSKU"
+}
diff --git a/api-specs/api/examples/ProductTailoring/ProductTailoringChangeAssetNameAction.json b/api-specs/api/examples/ProductTailoring/ProductTailoringChangeAssetNameAction.json
new file mode 100644
index 0000000000..8cd6a5ac11
--- /dev/null
+++ b/api-specs/api/examples/ProductTailoring/ProductTailoringChangeAssetNameAction.json
@@ -0,0 +1,9 @@
+{
+ "action": "changeAssetName",
+ "variantId": 1,
+ "assetId": "{{assetId}}",
+ "name": {
+ "de": "Mein Asset",
+ "en": "My asset"
+ }
+}
diff --git a/api-specs/api/examples/ProductTailoring/ProductTailoringChangeAssetOrderAction.json b/api-specs/api/examples/ProductTailoring/ProductTailoringChangeAssetOrderAction.json
new file mode 100644
index 0000000000..6471de9c7c
--- /dev/null
+++ b/api-specs/api/examples/ProductTailoring/ProductTailoringChangeAssetOrderAction.json
@@ -0,0 +1,5 @@
+{
+ "action": "changeAssetOrder",
+ "variantId": 1,
+ "assetOrder": ["{{assetId1}}", "{{assetId2}}"]
+}
diff --git a/api-specs/api/examples/ProductTailoring/ProductTailoringMoveImageToPositionAction.json b/api-specs/api/examples/ProductTailoring/ProductTailoringMoveImageToPositionAction.json
new file mode 100644
index 0000000000..73317966c2
--- /dev/null
+++ b/api-specs/api/examples/ProductTailoring/ProductTailoringMoveImageToPositionAction.json
@@ -0,0 +1,6 @@
+{
+ "action": "moveImageToPosition",
+ "variantId": 1,
+ "imageUrl": "//myimage2.jpg",
+ "position": 1
+}
diff --git a/api-specs/api/examples/ProductTailoring/ProductTailoringRemoveAssetAction.json b/api-specs/api/examples/ProductTailoring/ProductTailoringRemoveAssetAction.json
new file mode 100644
index 0000000000..b4c308b83c
--- /dev/null
+++ b/api-specs/api/examples/ProductTailoring/ProductTailoringRemoveAssetAction.json
@@ -0,0 +1,5 @@
+{
+ "action": "removeAsset",
+ "variantId": 1,
+ "assetId": "{{assetId}}"
+}
diff --git a/api-specs/api/examples/ProductTailoring/ProductTailoringRemoveImageAction.json b/api-specs/api/examples/ProductTailoring/ProductTailoringRemoveImageAction.json
new file mode 100644
index 0000000000..54f43286d3
--- /dev/null
+++ b/api-specs/api/examples/ProductTailoring/ProductTailoringRemoveImageAction.json
@@ -0,0 +1,5 @@
+{
+ "action": "removeImage",
+ "variantId": 1,
+ "imageUrl": "//myimage2.jpg"
+}
diff --git a/api-specs/api/examples/ProductTailoring/ProductTailoringRemoveVariantAction.json b/api-specs/api/examples/ProductTailoring/ProductTailoringRemoveVariantAction.json
new file mode 100644
index 0000000000..abb0c1da33
--- /dev/null
+++ b/api-specs/api/examples/ProductTailoring/ProductTailoringRemoveVariantAction.json
@@ -0,0 +1,4 @@
+{
+ "action": "removeVariant",
+ "id": 2
+}
\ No newline at end of file
diff --git a/api-specs/api/examples/ProductTailoring/ProductTailoringSetAssetCustomFieldAction.json b/api-specs/api/examples/ProductTailoring/ProductTailoringSetAssetCustomFieldAction.json
new file mode 100644
index 0000000000..146336b1af
--- /dev/null
+++ b/api-specs/api/examples/ProductTailoring/ProductTailoringSetAssetCustomFieldAction.json
@@ -0,0 +1,7 @@
+{
+ "action": "setAssetCustomField",
+ "assetId": "{{assetId}}",
+ "variantId": 1,
+ "name": "ExampleStringTypeField",
+ "value": "TextString"
+}
diff --git a/api-specs/api/examples/ProductTailoring/ProductTailoringSetAssetCustomTypeAction.json b/api-specs/api/examples/ProductTailoring/ProductTailoringSetAssetCustomTypeAction.json
new file mode 100644
index 0000000000..0de58e64a7
--- /dev/null
+++ b/api-specs/api/examples/ProductTailoring/ProductTailoringSetAssetCustomTypeAction.json
@@ -0,0 +1,12 @@
+{
+ "action": "setAssetCustomType",
+ "variantId": 1,
+ "assetId": "{{assetId}}",
+ "type": {
+ "id": "{{type-id}}",
+ "typeId": "type"
+ },
+ "fields": {
+ "exampleStringTypeField": "TextString"
+ }
+}
diff --git a/api-specs/api/examples/ProductTailoring/ProductTailoringSetAssetDescriptionAction.json b/api-specs/api/examples/ProductTailoring/ProductTailoringSetAssetDescriptionAction.json
new file mode 100644
index 0000000000..560a176d3b
--- /dev/null
+++ b/api-specs/api/examples/ProductTailoring/ProductTailoringSetAssetDescriptionAction.json
@@ -0,0 +1,9 @@
+{
+ "action": "setAssetDescription",
+ "assetId": "{{assetId}}",
+ "variantId": 1,
+ "description": {
+ "de": "Dies ist eine Asset-Beschreibung",
+ "en": "This is an asset description"
+ }
+}
diff --git a/api-specs/api/examples/ProductTailoring/ProductTailoringSetAssetKeyAction.json b/api-specs/api/examples/ProductTailoring/ProductTailoringSetAssetKeyAction.json
new file mode 100644
index 0000000000..c1ba38107b
--- /dev/null
+++ b/api-specs/api/examples/ProductTailoring/ProductTailoringSetAssetKeyAction.json
@@ -0,0 +1,6 @@
+{
+ "action": "setAssetKey",
+ "variantId": 1,
+ "assetId": "{{assetId}}",
+ "assetKey": "assetKeyString"
+}
diff --git a/api-specs/api/examples/ProductTailoring/ProductTailoringSetAssetSourcesAction.json b/api-specs/api/examples/ProductTailoring/ProductTailoringSetAssetSourcesAction.json
new file mode 100644
index 0000000000..2841073552
--- /dev/null
+++ b/api-specs/api/examples/ProductTailoring/ProductTailoringSetAssetSourcesAction.json
@@ -0,0 +1,11 @@
+{
+ "action": "setAssetSources",
+ "variantId": 1,
+ "assetId": "{{assetId}}",
+ "sources": [
+ {
+ "uri": "https://www.commercetools.de/ct-logo.svg",
+ "key": "vector"
+ }
+ ]
+}
diff --git a/api-specs/api/examples/ProductTailoring/ProductTailoringSetAssetTagsAction.json b/api-specs/api/examples/ProductTailoring/ProductTailoringSetAssetTagsAction.json
new file mode 100644
index 0000000000..51e1590f6e
--- /dev/null
+++ b/api-specs/api/examples/ProductTailoring/ProductTailoringSetAssetTagsAction.json
@@ -0,0 +1,6 @@
+{
+ "action": "setAssetTags",
+ "variantId": 1,
+ "assetId": "{{assetId}}",
+ "tags": ["commercetools", "awesome"]
+}
diff --git a/api-specs/api/examples/ProductTailoring/ProductTailoringSetExternalImagesAction.json b/api-specs/api/examples/ProductTailoring/ProductTailoringSetExternalImagesAction.json
new file mode 100644
index 0000000000..fb69613fe6
--- /dev/null
+++ b/api-specs/api/examples/ProductTailoring/ProductTailoringSetExternalImagesAction.json
@@ -0,0 +1,20 @@
+{
+ "action": "setImages",
+ "variantId": 1,
+ "images": [
+ {
+ "url": "//myimage.jpg",
+ "dimensions": {
+ "w": 100,
+ "h": 100
+ }
+ },
+ {
+ "url": "//myimage2.jpg",
+ "dimensions": {
+ "w": 100,
+ "h": 100
+ }
+ }
+ ]
+}
diff --git a/api-specs/api/examples/ProductTailoring/ProductTailoringSetImageLabelAction.json b/api-specs/api/examples/ProductTailoring/ProductTailoringSetImageLabelAction.json
new file mode 100644
index 0000000000..df3985add7
--- /dev/null
+++ b/api-specs/api/examples/ProductTailoring/ProductTailoringSetImageLabelAction.json
@@ -0,0 +1,7 @@
+{
+ "action": "setImageLabel",
+ "variantId": 2,
+ "imageUrl": "//image.png",
+ "label": "labelString",
+ "staged": true
+}
diff --git a/api-specs/api/examples/Project/ProjectChangeCustomerSearchStatusAction.json b/api-specs/api/examples/Project/ProjectChangeCustomerSearchStatusAction.json
new file mode 100644
index 0000000000..60f7218c4a
--- /dev/null
+++ b/api-specs/api/examples/Project/ProjectChangeCustomerSearchStatusAction.json
@@ -0,0 +1,4 @@
+{
+ "action": "changeCustomerSearchStatus",
+ "status": "Activated"
+}
diff --git a/api-specs/api/examples/TaxCategory/TaxCategoryChangeNameAction.json b/api-specs/api/examples/TaxCategory/TaxCategoryChangeNameAction.json
index 8bfc56241a..722b1bee64 100644
--- a/api-specs/api/examples/TaxCategory/TaxCategoryChangeNameAction.json
+++ b/api-specs/api/examples/TaxCategory/TaxCategoryChangeNameAction.json
@@ -1,4 +1,4 @@
{
"action": "changeName",
- "name": "name"
-}
\ No newline at end of file
+ "name": "New Name"
+}
diff --git a/api-specs/api/examples/business-unit.example.json b/api-specs/api/examples/business-unit.example.json
index 19d573a2b6..97291d961e 100644
--- a/api-specs/api/examples/business-unit.example.json
+++ b/api-specs/api/examples/business-unit.example.json
@@ -16,5 +16,6 @@
"addresses": [],
"associates": [],
"associateMode": "Explicit",
- "inheritedAssociates": []
+ "inheritedAssociates": [],
+ "approvalRuleMode": "Explicit"
}
diff --git a/api-specs/api/examples/business-units.example.json b/api-specs/api/examples/business-units.example.json
index 8a7cbbf8f8..436c632fbd 100644
--- a/api-specs/api/examples/business-units.example.json
+++ b/api-specs/api/examples/business-units.example.json
@@ -21,6 +21,7 @@
"associates": [],
"associateMode": "Explicit",
"inheritedAssociates": [],
+ "approvalRuleMode": "Explicit",
"storeMode": "Explicit",
"stores": []
}
diff --git a/api-specs/api/examples/my-business-unit.example.json b/api-specs/api/examples/my-business-unit.example.json
index 19d573a2b6..97291d961e 100644
--- a/api-specs/api/examples/my-business-unit.example.json
+++ b/api-specs/api/examples/my-business-unit.example.json
@@ -16,5 +16,6 @@
"addresses": [],
"associates": [],
"associateMode": "Explicit",
- "inheritedAssociates": []
+ "inheritedAssociates": [],
+ "approvalRuleMode": "Explicit"
}
diff --git a/api-specs/api/examples/my-business-units.example.json b/api-specs/api/examples/my-business-units.example.json
index 524d5c9057..3f4a4a597e 100644
--- a/api-specs/api/examples/my-business-units.example.json
+++ b/api-specs/api/examples/my-business-units.example.json
@@ -22,7 +22,8 @@
"addresses": [],
"associates": [],
"associateMode": "Explicit",
- "inheritedAssociates": []
+ "inheritedAssociates": [],
+ "approvalRuleMode": "Explicit"
}
]
}
diff --git a/api-specs/api/examples/product-tailoring-create.example.json b/api-specs/api/examples/product-tailoring-create.example.json
index ba85ca16e3..706275ff3c 100644
--- a/api-specs/api/examples/product-tailoring-create.example.json
+++ b/api-specs/api/examples/product-tailoring-create.example.json
@@ -10,5 +10,31 @@
"metaKeywords": { "en": "tailored meta keywords" },
"slug": { "en": "tailored-slug" },
"description": { "en": "tailored description" },
+ "variants": [
+ {
+ "id": 1,
+ "images": [
+ {
+ "url": "//myimage.jpg",
+ "dimensions": {
+ "w": 400,
+ "h": 300
+ }
+ }
+ ]
+ },
+ {
+ "sku": "sku-1",
+ "images": [
+ {
+ "url": "//myimage-2.png",
+ "dimensions": {
+ "w": 400,
+ "h": 300
+ }
+ }
+ ]
+ }
+ ],
"publish": false
}
diff --git a/api-specs/api/examples/product-tailoring-in-store-create.example.json b/api-specs/api/examples/product-tailoring-in-store-create.example.json
index a7eedec06a..75883c0169 100644
--- a/api-specs/api/examples/product-tailoring-in-store-create.example.json
+++ b/api-specs/api/examples/product-tailoring-in-store-create.example.json
@@ -9,5 +9,19 @@
"metaKeywords": { "en": "tailored meta keywords" },
"slug": { "en": "tailored-slug" },
"description": { "en": "tailored description" },
+ "variants": [
+ {
+ "id": 1,
+ "images": [
+ {
+ "url": "//myimage.jpg",
+ "dimensions": {
+ "w": 400,
+ "h": 300
+ }
+ }
+ ]
+ }
+ ],
"publish": false
}
diff --git a/api-specs/api/examples/product-tailoring-list.example.json b/api-specs/api/examples/product-tailoring-list.example.json
index 72ad328543..3242760eb4 100644
--- a/api-specs/api/examples/product-tailoring-list.example.json
+++ b/api-specs/api/examples/product-tailoring-list.example.json
@@ -47,7 +47,34 @@
"slug": {
"en": "tailored-slug"
},
- "variants": []
+ "variants": [
+ {
+ "id": 1,
+ "images": [
+ {
+ "url": "//myimage.jpg",
+ "dimensions": {
+ "w": 400,
+ "h": 300
+ }
+ }
+ ],
+ "assets": []
+ },
+ {
+ "id": 2,
+ "images": [
+ {
+ "url": "//myimage-2.png",
+ "dimensions": {
+ "w": 400,
+ "h": 300
+ }
+ }
+ ],
+ "assets": []
+ }
+ ]
},
"published": false,
"hasStagedChanges": true
diff --git a/api-specs/api/examples/product-tailoring.example.json b/api-specs/api/examples/product-tailoring.example.json
index 4a8528c98e..18756c3d04 100644
--- a/api-specs/api/examples/product-tailoring.example.json
+++ b/api-specs/api/examples/product-tailoring.example.json
@@ -42,7 +42,34 @@
"slug": {
"en": "tailored-slug"
},
- "variants": []
+ "variants": [
+ {
+ "id": 1,
+ "images": [
+ {
+ "url": "//myimage.jpg",
+ "dimensions": {
+ "w": 400,
+ "h": 300
+ }
+ }
+ ],
+ "assets": []
+ },
+ {
+ "id": 2,
+ "images": [
+ {
+ "url": "//myimage-2.png",
+ "dimensions": {
+ "w": 400,
+ "h": 300
+ }
+ }
+ ],
+ "assets": []
+ }
+ ]
},
"published": false,
"hasStagedChanges": true
diff --git a/api-specs/api/examples/tax-categories.example.json b/api-specs/api/examples/tax-categories.example.json
index 359a3cc104..62b807b2f3 100644
--- a/api-specs/api/examples/tax-categories.example.json
+++ b/api-specs/api/examples/tax-categories.example.json
@@ -10,12 +10,21 @@
"name": "test-tax-category",
"rates": [
{
- "name": "test-tax-category",
- "amount": 0.2,
+ "name": "HST Ontario",
+ "amount": 0.13,
"includedInPrice": true,
- "country": "DE",
- "id": "vWTk7VjT",
- "subRates": []
+ "country": "CA",
+ "state": "ON",
+ "subRates": [
+ {
+ "name": "Federal rate (GST 5%)",
+ "amount": 0.05
+ },
+ {
+ "name": "Provincial rate (PST 8%)",
+ "amount": 0.08
+ }
+ ]
}
],
"createdAt": "2016-02-24T15:33:40.811Z",
diff --git a/api-specs/api/examples/tax-category-create.example.json b/api-specs/api/examples/tax-category-create.example.json
index f36b19e487..63cc49d068 100644
--- a/api-specs/api/examples/tax-category-create.example.json
+++ b/api-specs/api/examples/tax-category-create.example.json
@@ -2,10 +2,21 @@
"name": "test-tax-category",
"rates": [
{
- "name": "test-tax-category",
- "amount": 0.2,
+ "name": "HST Ontario",
+ "amount": 0.13,
"includedInPrice": true,
- "country": "DE"
+ "country": "CA",
+ "state": "ON",
+ "subRates": [
+ {
+ "name": "Federal rate (GST 5%)",
+ "amount": 0.05
+ },
+ {
+ "name": "Provincial rate (PST 8%)",
+ "amount": 0.08
+ }
+ ]
}
]
}
diff --git a/api-specs/api/examples/tax-category.example.json b/api-specs/api/examples/tax-category.example.json
index 9cd36ba3d1..4adcc9f55b 100644
--- a/api-specs/api/examples/tax-category.example.json
+++ b/api-specs/api/examples/tax-category.example.json
@@ -4,12 +4,21 @@
"name": "test-tax-category",
"rates": [
{
- "name": "test-tax-category",
- "amount": 0.2,
+ "name": "HST Ontario",
+ "amount": 0.13,
"includedInPrice": true,
- "country": "DE",
- "id": "vWTk7VjT",
- "subRates": []
+ "country": "CA",
+ "state": "ON",
+ "subRates": [
+ {
+ "name": "Federal rate (GST 5%)",
+ "amount": 0.05
+ },
+ {
+ "name": "Provincial rate (PST 8%)",
+ "amount": 0.08
+ }
+ ]
}
],
"createdAt": "2016-02-24T15:33:40.811Z",
diff --git a/api-specs/api/resources/carts.raml b/api-specs/api/resources/carts.raml
index c64b47fd16..5d8f4f58a8 100644
--- a/api-specs/api/resources/carts.raml
+++ b/api-specs/api/resources/carts.raml
@@ -66,7 +66,7 @@ post:
get:
securedBy: [oauth_2_0: { scopes: ['view_orders:{projectKey}'] }]
description: |
- Retrieves the recently modified active Cart of a Customer with [CartOrigin](ctp:api:type:CartOrigin) `Customer`. If no active Cart exists, this method returns a [ResourceNotFound](ctp:api:type:ResourceNotFoundError) error.
+ Retrieves the most recently modified active Cart of a Customer with [CartOrigin](ctp:api:type:CartOrigin) `Customer`. If no active Cart exists, this method returns a [ResourceNotFound](ctp:api:type:ResourceNotFoundError) error.
To ensure the Cart is up-to-date with current values (such as Prices and Discounts), use the [Recalculate](ctp:api:type:CartRecalculateAction) update action.
responses:
diff --git a/api-specs/api/resources/customers.raml b/api-specs/api/resources/customers.raml
index f972f90b8c..429bd4a86b 100644
--- a/api-specs/api/resources/customers.raml
+++ b/api-specs/api/resources/customers.raml
@@ -230,3 +230,42 @@ post:
body:
application/json:
example: !include ../examples/customer.example.json
+/search:
+ type: base
+ displayName: Customer Search
+ description: |
+ This endpoint provides high-performance search queries over Customers.
+ post:
+ displayName: Search Customers
+ securedBy: [oauth_2_0: { scopes: ['view_customers:{projectKey}'] }]
+ body:
+ application/json:
+ type: CustomerSearchRequest
+ responses:
+ 200:
+ body:
+ application/json:
+ type: CustomerPagedSearchResponse
+ head:
+ securedBy: [oauth_2_0: { scopes: ['view_customers:{projectKey}'] }]
+ description: |
+ Checks whether a search index for the Project's Customers exists.
+ Returns a `200 OK` status if the index exists or `404 Not Found` otherwise.
+ responses:
+ 200:
+ description: The search index exists and the Search Customers endpoint is fully operational.
+ 404:
+ description: The search index does not exist and the Search Customers endpoint returns Error 404 only.
+/search/indexing-status:
+ type: base
+ displayName: Customer Search Status
+ description: |
+ This endpoint provides information on the status of a Customer search for a project
+ get:
+ displayName: Customer Search Status
+ securedBy: [oauth_2_0: { scopes: ['view_project_settings:{projectKey}'] }]
+ responses:
+ 200:
+ body:
+ application/json:
+ type: CustomerSearchIndexingStatusResponse
diff --git a/api-specs/api/resources/in-store.raml b/api-specs/api/resources/in-store.raml
index fa7fc6e24f..7a583364ef 100644
--- a/api-specs/api/resources/in-store.raml
+++ b/api-specs/api/resources/in-store.raml
@@ -27,8 +27,8 @@ uriParameters:
],
},
]
- displayName: Query carts in store
- description: Queries carts in a specific [Store](ctp:api:type:Store).
+ displayName: Query Carts in Store
+ description: Queries Carts in a specific [Store](ctp:api:type:Store).
responses:
200:
body:
@@ -51,7 +51,7 @@ uriParameters:
where?:
type: QueryPredicate[]
post:
- displayName: Create cart in store
+ displayName: Create Cart in Store
securedBy:
[
oauth_2_0:
@@ -82,7 +82,7 @@ uriParameters:
uriParameterName: customerId
resourceType: Cart
get:
- displayName: Get cart by customer id in store
+ displayName: Get Cart in Store by Customer ID
securedBy:
[
oauth_2_0:
@@ -95,7 +95,7 @@ uriParameters:
},
]
description: |
- Retrieves the recently modified active Cart of a Customer with [CartOrigin](ctp:api:type:CartOrigin) `Customer`. If no active Cart exists, this method returns a [ResourceNotFound](ctp:api:type:ResourceNotFoundError) error.
+ Retrieves the most recently modified active Cart of a Customer with [CartOrigin](ctp:api:type:CartOrigin) `Customer`. If no active Cart exists, this method returns a [ResourceNotFound](ctp:api:type:ResourceNotFoundError) error.
If the Cart exists in the Project but does not have the `store` field, or the `store` field references a different Store, this method returns a [ResourceNotFound](ctp:api:type:ResourceNotFoundError) error.
@@ -126,7 +126,7 @@ uriParameters:
resourceType: Cart
resourceUpdateType: CartUpdate
get:
- displayName: Get cart by key in store
+ displayName: Get Cart in Store by Key
securedBy:
[
oauth_2_0:
@@ -161,7 +161,7 @@ uriParameters:
]
description: Checks if a Cart exists for a given `key`. Returns a `200 OK` status if the Cart exists or a `404 Not Found` otherwise.
post:
- displayName: Update cart by key in store
+ displayName: Update Cart in Store by Key
securedBy:
[
oauth_2_0:
@@ -184,7 +184,7 @@ uriParameters:
application/json:
example: !include ../examples/cart.example.json
delete:
- displayName: Delete cart by key in store
+ displayName: Delete Cart in Store by Key
description: |
If the Cart exists in the Project but does not have the `store` field, or the `store` field references a different Store, this method returns a [ResourceNotFound](ctp:api:type:ResourceNotFoundError) error.
is:
@@ -208,7 +208,7 @@ uriParameters:
/replicate:
type: base
post:
- displayName: Replicate cart for store
+ displayName: Replicate Cart in Store
description: |
Creates a new Cart by replicating an existing Cart or Order. Can be useful in cases where a customer wants to cancel a recent order to make some changes or reorder a previous order.
@@ -244,7 +244,7 @@ uriParameters:
resourceType: Cart
resourceUpdateType: CartUpdate
get:
- displayName: Get cart by id in store
+ displayName: Get Cart in Store by ID
securedBy:
[
oauth_2_0:
@@ -279,7 +279,7 @@ uriParameters:
]
description: Checks if a Cart exists for a given `id`. Returns a `200 OK` status if the Cart exists or a `404 Not Found` otherwise.
post:
- displayName: Update cart by id in store
+ displayName: Update Cart in Store by ID
securedBy:
[
oauth_2_0:
@@ -303,7 +303,7 @@ uriParameters:
application/json:
example: !include ../examples/cart.example.json
delete:
- displayName: Delete cart by id in store
+ displayName: Delete Cart in Store by ID
description: |
If the Cart exists in the Project but does not have the `store` field, or the `store` field references a different Store, this method returns a [ResourceNotFound](ctp:api:type:ResourceNotFoundError) error.
is:
@@ -339,7 +339,7 @@ uriParameters:
An order can be created from a cart, usually after a checkout process has
been completed.
get:
- displayName: Query orders in store
+ displayName: Query Orders in Store
securedBy:
[
oauth_2_0:
@@ -373,7 +373,7 @@ uriParameters:
where?:
type: QueryPredicate[]
post:
- displayName: Create order in store
+ displayName: Create Order in Store
securedBy:
[
oauth_2_0:
@@ -391,6 +391,9 @@ uriParameters:
Creating an Order produces the [OrderCreated](ctp:api:type:OrderCreatedMessage) Message.
+ If a server-side problem occurs, indicated by a 500 Internal Server Error HTTP response, the Order creation may still successfully complete after the error is returned.
+ If you receive this error, you should verify the status of the Order by querying a unique identifier supplied during the creation request, such as the Order number.
+
Specific Error Codes:
- [OutOfStock](ctp:api:type:OutOfStockError)
@@ -409,6 +412,43 @@ uriParameters:
body:
application/json:
example: !include ../examples/order.example.json
+ /quotes:
+ (methodName): orderQuote
+ type: base
+ displayName: Order from Quote
+ post:
+ displayName: Create an Order from a Quote
+ description: |
+ Creating an Order produces the [OrderCreated](ctp:api:type:OrderCreatedMessage) Message.
+
+ Specific Error Codes:
+
+ - [OutOfStock](ctp:api:type:OutOfStockError)
+ - [PriceChanged](ctp:api:type:PriceChangedError)
+ - [InvalidItemShippingDetails](ctp:api:type:InvalidItemShippingDetailsError)
+ - [InvalidOperation](ctp:api:type:InvalidOperationError)
+ - [CountryNotConfiguredInStore](ctp:api:type:CountryNotConfiguredInStoreError)
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'manage_quotes:{projectKey}',
+ 'manage_quotes:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ body:
+ application/json:
+ example: !include ../examples/order-from-quote.example.json
+ type: OrderFromQuoteDraft
+ responses:
+ 201:
+ body:
+ application/json:
+ example: !include ../examples/order.example.json
+ type: Order
/order-number={orderNumber}:
(methodName): withOrderNumber
uriParameters:
@@ -421,7 +461,7 @@ uriParameters:
resourceType: Order
resourceUpdateType: OrderUpdate
get:
- displayName: Get order by order number in store
+ displayName: Get Order in Store by OrderNumber
securedBy:
[
oauth_2_0:
@@ -454,7 +494,7 @@ uriParameters:
]
description: Checks if an Order exists for a given `orderNumber`. Returns a `200 OK` status if the Order exists or a `404 Not Found` otherwise.
post:
- displayName: Update order by order number in store
+ displayName: Update Order in Store by OrderNumber
securedBy:
[
oauth_2_0:
@@ -477,7 +517,7 @@ uriParameters:
application/json:
example: !include ../examples/order.example.json
delete:
- displayName: Delete order by order number in store
+ displayName: Delete Order in Store by OrderNumber
description: |
If the Order exists in the Project but does not have the `store` field, or the `store` field references a different Store, this method returns a [ResourceNotFound](ctp:api:type:ResourceNotFoundError) error.
@@ -508,7 +548,7 @@ uriParameters:
resourceType: Order
resourceUpdateType: OrderUpdate
get:
- displayName: Get order by id in store
+ displayName: Get Order in Store by ID
securedBy:
[
oauth_2_0:
@@ -541,7 +581,7 @@ uriParameters:
]
description: Checks if an Order exists for a given `id`. Returns a `200 OK` status if the Order exists or a `404 Not Found` otherwise.
post:
- displayName: Update order by id in store
+ displayName: Update Order in Store by ID
securedBy:
[
oauth_2_0:
@@ -564,7 +604,7 @@ uriParameters:
application/json:
example: !include ../examples/order.example.json
delete:
- displayName: Delete order by id in store
+ displayName: Delete Order in Store by ID
description: |
If the Order exists in the Project but does not have the `store` field, or the `store` field references a different Store, this method returns a [ResourceNotFound](ctp:api:type:ResourceNotFoundError) error.
@@ -601,7 +641,7 @@ uriParameters:
(createable): MyCartDraft
description: A shopping cart holds product variants and can be ordered.
get:
- displayName: Query my carts in store
+ displayName: Query My Carts in Store
securedBy:
[
oauth_2_0:
@@ -610,9 +650,13 @@ uriParameters:
[
'manage_my_orders:{projectKey}',
'manage_my_orders:{projectKey}:{storeKey}',
+ 'customer_id:{id}',
+ 'anonymous_id:{id}',
],
},
]
+ description: |
+ Returns all Carts that match a given Query Predicate and contain either a matching `customerId` or `anonymousId` in a Store.
responses:
200:
body:
@@ -627,15 +671,18 @@ uriParameters:
[
'manage_my_orders:{projectKey}',
'manage_my_orders:{projectKey}:{storeKey}',
+ 'customer_id:{id}',
+ 'anonymous_id:{id}',
],
},
]
- description: Checks if a Cart exists for a given Query Predicate. Returns a `200 OK` status if any Carts match the Query Predicate or a `404 Not Found` otherwise.
+ description: |
+ Checks if a Cart exists for a Store that matches the given Query Predicate, and contains a matching `customerId` or `anonymousId`. Returns a `200 OK` status if any Carts match these conditions, or a `404 Not Found` otherwise.
queryParameters:
where?:
type: QueryPredicate[]
post:
- displayName: Create my cart in store
+ displayName: Create My Cart in Store
securedBy:
[
oauth_2_0:
@@ -644,10 +691,14 @@ uriParameters:
[
'manage_my_orders:{projectKey}',
'manage_my_orders:{projectKey}:{storeKey}',
+ 'customer_id:{id}',
+ 'anonymous_id:{id}',
],
},
]
description: |
+ Creates a Cart in the specified Store for a given `customerId` or `anonymousId`.
+
The `store` field in the created [Cart](ctp:api:type:Cart) is set to the Store specified by the `storeKey` path parameter.
Specific Error Codes: [CountryNotConfiguredInStore](ctp:api:type:CountryNotConfiguredInStoreError)
@@ -667,7 +718,7 @@ uriParameters:
resourceType: Cart
resourceUpdateType: MyCartUpdate
get:
- displayName: Get my cart by id in store
+ displayName: Get My Cart in Store by ID
securedBy:
[
oauth_2_0:
@@ -676,9 +727,17 @@ uriParameters:
[
'manage_my_orders:{projectKey}',
'manage_my_orders:{projectKey}:{storeKey}',
+ 'customer_id:{id}',
+ 'anonymous_id:{id}',
],
},
]
+ description: |
+ Returns a Cart for a given `id` in a Store. Returns a `200 OK` status if the Cart exists, or a [ResourceNotFound](ctp:api:type:ResourceNotFoundError) error otherwise.
+
+ If the Cart exists in the Project but does not belong to a Store, or the Cart's `store` field references a different Store, this method returns a [ResourceNotFound](ctp:api:type:ResourceNotFoundError) error.
+
+ If the Cart exists in the Project but does not have a matching `customerId` or `anonymousId`, this method returns a [ResourceNotFound](ctp:api:type:ResourceNotFoundError) error.
responses:
200:
body:
@@ -693,14 +752,13 @@ uriParameters:
[
'manage_my_orders:{projectKey}',
'manage_my_orders:{projectKey}:{storeKey}',
+ 'customer_id:{id}',
+ 'anonymous_id:{id}',
],
},
]
- description: Checks ifa My Cart exists for a given `id`. Returns a `200 OK` status if the My Cart exists or a `404 Not Found` otherwise.
post:
- displayName: Update my cart by id in store
- description: |
- If the Cart exists in the Project but does not have the `store` field, or the `store` field references a different Store, this method returns a [ResourceNotFound](ctp:api:type:ResourceNotFoundError) error.
+ displayName: Update My Cart in Store by ID
securedBy:
[
oauth_2_0:
@@ -709,9 +767,17 @@ uriParameters:
[
'manage_my_orders:{projectKey}',
'manage_my_orders:{projectKey}:{storeKey}',
+ 'customer_id:{id}',
+ 'anonymous_id:{id}',
],
},
]
+ description: |
+ Updates the Cart for a given `id` in a Store. Returns a `200 OK` status if the Cart exists, or a [ResourceNotFound](ctp:api:type:ResourceNotFoundError) error otherwise.
+
+ If the Cart exists in the Project but does not belong to a Store, or the Cart's `store` field references a different Store, this method returns a [ResourceNotFound](ctp:api:type:ResourceNotFoundError) error.
+
+ If the Cart exists in the Project but does not have a matching `customerId` or `anonymousId`, this method returns a [ResourceNotFound](ctp:api:type:ResourceNotFoundError) error.
body:
application/json:
example: !include ../examples/cart-update.example.json
@@ -721,7 +787,7 @@ uriParameters:
application/json:
example: !include ../examples/cart.example.json
delete:
- displayName: Delete my cart by id in store
+ displayName: Delete My Cart in Store by ID
securedBy:
[
oauth_2_0:
@@ -730,9 +796,17 @@ uriParameters:
[
'manage_my_orders:{projectKey}',
'manage_my_orders:{projectKey}:{storeKey}',
+ 'customer_id:{id}',
+ 'anonymous_id:{id}',
],
},
]
+ description: |
+ Deletes the Cart for a given `id` in a Store. Returns a `200 OK` status if the Cart exists, or a [ResourceNotFound](ctp:api:type:ResourceNotFoundError) error otherwise.
+
+ If the Cart exists in the Project but does not belong to a Store, or the Cart's `store` field references a different Store, this method returns a [ResourceNotFound](ctp:api:type:ResourceNotFoundError) error.
+
+ If the Cart exists in the Project but does not have a matching `customerId` or `anonymousId`, this method returns a [ResourceNotFound](ctp:api:type:ResourceNotFoundError) error.
responses:
200:
body:
@@ -750,7 +824,7 @@ uriParameters:
An order can be created from a order, usually after a checkout process has
been completed.
get:
- displayName: Query my orders in store
+ displayName: Query My Orders in Store
securedBy:
[
oauth_2_0:
@@ -786,7 +860,7 @@ uriParameters:
post:
is:
- conflicting
- displayName: Create my order in store
+ displayName: Create My Order in Store
description: |
The Cart must have a [shipping address set](ctp:api:type:CartSetShippingAddressAction) for taxes to be calculated. When creating [B2B Orders](/associates-overview#b2b-resources), the Customer must have the `CreateMyOrdersFromMyCarts` [Permission](ctp:api:type:Permission).
@@ -825,7 +899,7 @@ uriParameters:
uriParameterName: ID
resourceType: Order
get:
- displayName: Get my order by id in store
+ displayName: Get My Order in Store by ID
description: |
If the Order exists in the Project but does not have the `store` field, or the `store` field references a different Store, this method returns a [ResourceNotFound](ctp:api:type:ResourceNotFoundError) error.
securedBy:
@@ -860,7 +934,7 @@ uriParameters:
/active-cart:
type: base
get:
- displayName: Get my active cart in store
+ displayName: Get My Active Cart in Store
description: |
Retrieves the Customer's most recently modified active Cart in the Store specified by the `storeKey` path parameter.
@@ -2657,6 +2731,37 @@ uriParameters:
application/json:
type: ProductTailoring
example: !include ../examples/product-tailoring.example.json
+ /images:
+ post:
+ displayName: Upload a Product Tailoring image
+ queryParameters:
+ filename?:
+ type: string
+ description: Base filename of the image when stored in the Content Delivery Network. The filename will be modified when uploaded to prevent filename conflicts. If not included a random filename will be allocated.
+ variant?:
+ type: number
+ format: int64
+ description: The `id` of the [ProductTailoringVariant](/projects/product-tailoring#productvarianttailoring) the image should be uploaded to. It must correspond to an existing [ProductVariant](/projects/products#productvariant) in the Product.
+ sku?:
+ type: string
+ description: The `sku` of the [ProductTailoringVariant](/projects/product-tailoring#productvarianttailoring) the image should be uploaded to. It must correspond to an existing [ProductVariant](/projects/products#productvariant) in the Product.
+ staged?:
+ type: boolean
+ description: If `true`, only the staged ProductTailoringVariant is updated. If `false`, both the current and staged ProductTailoringVariant are updated.
+ description: |
+ Upload a JPEG, PNG and GIF file to a [ProductTailoringVariant](ctp:api:type:ProductTailoringVariant). The maximum file size of the image is 10MB. `variant` or `sku` is required to update a specific ProductVariant. Produces the [ProductTailoringImageAdded](/projects/messages#product-tailoring-image-added) Message when the `Small` version of the image has been uploaded to the CDN.
+ securedBy: [oauth_2_0: { scopes: ['manage_products:{projectKey}'] }]
+ body:
+ type: file
+ fileTypes: ['image/jpeg', 'image/png', 'image/gif']
+ headers:
+ Content-Type:
+ enum: ['image/jpeg', 'image/png', 'image/gif']
+ responses:
+ 200:
+ body:
+ type: ProductTailoring
+ example: !include ../examples/product-tailoring.example.json
/key={productKey}:
(methodName): withProductKey
uriParameters:
@@ -2735,3 +2840,685 @@ uriParameters:
application/json:
type: ProductTailoring
example: !include ../examples/product-tailoring.example.json
+ /images:
+ post:
+ displayName: Upload a Product Tailoring image
+ queryParameters:
+ filename?:
+ type: string
+ description: Base filename of the image when stored in the Content Delivery Network. The filename will be modified when uploaded to prevent filename conflicts. If not included a random filename will be allocated.
+ variant?:
+ type: number
+ format: int64
+ description: The `id` of the [ProductTailoringVariant](/projects/product-tailoring#productvarianttailoring) the image should be uploaded to. It must correspond to an existing [ProductVariant](/projects/products#productvariant) in the Product.
+ sku?:
+ type: string
+ description: The `sku` of the [ProductTailoringVariant](/projects/product-tailoring#productvarianttailoring) the image should be uploaded to. It must correspond to an existing [ProductVariant](/projects/products#productvariant) in the Product.
+ staged?:
+ type: boolean
+ description: If `true`, only the staged ProductTailoringVariant is updated. If `false`, both the current and staged ProductTailoringVariant are updated.
+ description: |
+ Upload a JPEG, PNG and GIF file to a [ProductTailoringVariant](ctp:api:type:ProductTailoringVariant). The maximum file size of the image is 10MB. `variant` or `sku` is required to update a specific ProductVariant. Produces the [ProductTailoringImageAdded](/projects/messages#product-tailoring-image-added) Message when the `Small` version of the image has been uploaded to the CDN.
+ securedBy: [oauth_2_0: { scopes: ['manage_products:{projectKey}'] }]
+ body:
+ type: file
+ fileTypes: ['image/jpeg', 'image/png', 'image/gif']
+ headers:
+ Content-Type:
+ enum: ['image/jpeg', 'image/png', 'image/gif']
+ responses:
+ 200:
+ body:
+ type: ProductTailoring
+ example: !include ../examples/product-tailoring.example.json
+/quote-requests:
+ type:
+ baseDomain:
+ resourceType: QuoteRequest
+ resourceQueryType: QuoteRequestPagedQueryResponse
+ resourceDraft: QuoteRequestDraft
+ whereExample: 'quoteRequestState = "Submitted"'
+ sortExample: createdAt asc
+ (updateable): QuoteRequest
+ (deleteable): QuoteRequest
+ (createable): QuoteRequestDraft
+ description: A request for a Quote holds product variants and can be ordered.
+ get:
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'view_quote_requests:{projectKey}',
+ 'view_quote_requests:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ responses:
+ 200:
+ body:
+ application/json:
+ example: !include ../examples/quote-requests.example.json
+ head:
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'view_quote_requests:{projectKey}',
+ 'view_quote_requests:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ description: Checks if a QuoteRequest exists for a given Query Predicate. Returns a `200 OK` status if any QuoteRequests match the Query Predicate or a `404 Not Found` otherwise.
+ queryParameters:
+ where?:
+ type: QueryPredicate[]
+ post:
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'manage_quote_requests:{projectKey}',
+ 'manage_quote_requests:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ body:
+ application/json:
+ example: !include ../examples/quote-request-create.example.json
+ responses:
+ 201:
+ body:
+ application/json:
+ example: !include ../examples/quote-request.example.json
+ /key={key}:
+ (methodName): withKey
+ type:
+ baseResource:
+ uriParameterName: key
+ resourceType: QuoteRequest
+ resourceUpdateType: QuoteRequestUpdate
+ get:
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'view_quote_requests:{projectKey}',
+ 'view_quote_requests:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ responses:
+ 200:
+ body:
+ application/json:
+ example: !include ../examples/quote-request.example.json
+ head:
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'view_quote_requests:{projectKey}',
+ 'view_quote_requests:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ description: Checks if a QuoteRequest exists for a given `key`. Returns a `200 OK` status if the QuoteRequest exists or a `404 Not Found` otherwise.
+ post:
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'manage_quote_requests:{projectKey}',
+ 'manage_quote_requests:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ body:
+ application/json:
+ example: !include ../examples/quote-request-update.example.json
+ responses:
+ 200:
+ body:
+ application/json:
+ example: !include ../examples/quote-request-update-response.example.json
+ delete:
+ is:
+ - dataErasure
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'manage_quote_requests:{projectKey}',
+ 'manage_quote_requests:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ responses:
+ 200:
+ body:
+ application/json:
+ example: !include ../examples/quote-request.example.json
+ /{ID}:
+ (methodName): withId
+ type:
+ baseResource:
+ uriParameterName: ID
+ resourceType: QuoteRequest
+ resourceUpdateType: QuoteRequestUpdate
+ get:
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'view_quote_requests:{projectKey}',
+ 'view_quote_requests:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ responses:
+ 200:
+ body:
+ application/json:
+ example: !include ../examples/quote-request.example.json
+ head:
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'view_quote_requests:{projectKey}',
+ 'view_quote_requests:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ description: Checks if a QuoteRequest exists for a given `id`. Returns a `200 OK` status if the QuoteRequest exists or a `404 Not Found` otherwise.
+ post:
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'manage_quote_requests:{projectKey}',
+ 'manage_quote_requests:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ body:
+ application/json:
+ example: !include ../examples/quote-request-update.example.json
+ responses:
+ 200:
+ body:
+ application/json:
+ example: !include ../examples/quote-request-update-response.example.json
+ delete:
+ is:
+ - dataErasure
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'manage_quote_requests:{projectKey}',
+ 'manage_quote_requests:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ responses:
+ 200:
+ body:
+ application/json:
+ example: !include ../examples/quote-request.example.json
+/staged-quotes:
+ type:
+ baseDomain:
+ resourceType: StagedQuote
+ resourceQueryType: StagedQuotePagedQueryResponse
+ resourceDraft: StagedQuoteDraft
+ whereExample: 'stagedQuoteState = "InProgress"'
+ sortExample: createdAt asc
+ (updateable): StagedQuote
+ (deleteable): StagedQuote
+ (createable): StagedQuoteDraft
+ description: A staged quote holds the negotiation between the [Buyer](/../api/quotes-overview#buyer) and the [Seller](/../api/quotes-overview#seller).
+ get:
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'view_staged_quotes:{projectKey}',
+ 'view_staged_quotes:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ responses:
+ 200:
+ body:
+ application/json:
+ example: !include ../examples/staged-quotes.example.json
+ head:
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'view_staged_quotes:{projectKey}',
+ 'view_staged_quotes:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ description: Checks if a StagedQuote exists for a given Query Predicate. Returns a `200 OK` status if any StagedQuotes match the Query Predicate or a `404 Not Found` otherwise.
+ queryParameters:
+ where?:
+ type: QueryPredicate[]
+ post:
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'manage_staged_quotes:{projectKey}',
+ 'manage_staged_quotes:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ body:
+ application/json:
+ example: !include ../examples/staged-quote-create.example.json
+ responses:
+ 201:
+ body:
+ application/json:
+ example: !include ../examples/staged-quote.example.json
+ /key={key}:
+ (methodName): withKey
+ type:
+ baseResource:
+ uriParameterName: key
+ resourceType: StagedQuote
+ resourceUpdateType: StagedQuoteUpdate
+ get:
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'view_staged_quotes:{projectKey}',
+ 'view_staged_quotes:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ responses:
+ 200:
+ body:
+ application/json:
+ example: !include ../examples/staged-quote.example.json
+ head:
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'view_staged_quotes:{projectKey}',
+ 'view_staged_quotes:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ description: Checks if a StagedQuote exists for a given `key`. Returns a `200 OK` status if the StagedQuote exists or a `404 Not Found` otherwise.
+ post:
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'manage_staged_quotes:{projectKey}',
+ 'manage_staged_quotes:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ body:
+ application/json:
+ example: !include ../examples/staged-quote-update.example.json
+ responses:
+ 200:
+ body:
+ application/json:
+ example: !include ../examples/staged-quote.example.json
+ delete:
+ is:
+ - dataErasure
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'manage_staged_quotes:{projectKey}',
+ 'manage_staged_quotes:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ responses:
+ 200:
+ body:
+ application/json:
+ example: !include ../examples/staged-quote.example.json
+ /{ID}:
+ (methodName): withId
+ type:
+ baseResource:
+ uriParameterName: ID
+ resourceType: StagedQuote
+ resourceUpdateType: StagedQuoteUpdate
+ get:
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'view_staged_quotes:{projectKey}',
+ 'view_staged_quotes:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ responses:
+ 200:
+ body:
+ application/json:
+ example: !include ../examples/staged-quote.example.json
+ head:
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'view_staged_quotes:{projectKey}',
+ 'view_staged_quotes:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ description: Checks if a StagedQuote exists for a given `id`. Returns a `200 OK` status if the StagedQuote exists or a `404 Not Found` otherwise.
+ post:
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'manage_staged_quotes:{projectKey}',
+ 'manage_staged_quotes:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ body:
+ application/json:
+ example: !include ../examples/staged-quote-update.example.json
+ responses:
+ 200:
+ body:
+ application/json:
+ example: !include ../examples/staged-quote.example.json
+ delete:
+ is:
+ - dataErasure
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'manage_staged_quotes:{projectKey}',
+ 'manage_staged_quotes:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ responses:
+ 200:
+ body:
+ application/json:
+ example: !include ../examples/staged-quote.example.json
+/quotes:
+ type:
+ baseDomain:
+ resourceType: Quote
+ resourceQueryType: QuotePagedQueryResponse
+ resourceDraft: QuoteDraft
+ whereExample: 'quoteState = "Accepted"'
+ sortExample: createdAt asc
+ (updateable): Quote
+ (deleteable): Quote
+ (createable): QuoteDraft
+ description: A quote holds the negotiated offer.
+ get:
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'view_quotes:{projectKey}',
+ 'view_quotes:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ responses:
+ 200:
+ body:
+ application/json:
+ example: !include ../examples/quotes.example.json
+ head:
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'view_quotes:{projectKey}',
+ 'view_quotes:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ description: Checks if a Quote exists for a given Query Predicate. Returns a `200 OK` status if any Quotes match the Query Predicate or a `404 Not Found` otherwise.
+ queryParameters:
+ where?:
+ type: QueryPredicate[]
+ post:
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'manage_quotes:{projectKey}',
+ 'manage_quotes:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ body:
+ application/json:
+ example: !include ../examples/quote-create.example.json
+ responses:
+ 201:
+ body:
+ application/json:
+ example: !include ../examples/quote.example.json
+ /key={key}:
+ (methodName): withKey
+ type:
+ baseResource:
+ uriParameterName: key
+ resourceType: Quote
+ resourceUpdateType: QuoteUpdate
+ get:
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'view_quotes:{projectKey}',
+ 'view_quotes:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ responses:
+ 200:
+ body:
+ application/json:
+ example: !include ../examples/quote.example.json
+ head:
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'view_quotes:{projectKey}',
+ 'view_quotes:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ description: Checks if a Quote exists for a given `key`. Returns a `200 OK` status if the Quote exists or a `404 Not Found` otherwise.
+ post:
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'manage_quotes:{projectKey}',
+ 'manage_quotes:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ body:
+ application/json:
+ example: !include ../examples/quote-update.example.json
+ responses:
+ 200:
+ body:
+ application/json:
+ example: !include ../examples/quote.example.json
+ delete:
+ is:
+ - dataErasure
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'manage_quotes:{projectKey}',
+ 'manage_quotes:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ responses:
+ 200:
+ body:
+ application/json:
+ example: !include ../examples/quote.example.json
+ /{ID}:
+ (methodName): withId
+ type:
+ baseResource:
+ uriParameterName: ID
+ resourceType: Quote
+ resourceUpdateType: QuoteUpdate
+ get:
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'view_quotes:{projectKey}',
+ 'view_quotes:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ responses:
+ 200:
+ body:
+ application/json:
+ example: !include ../examples/quote.example.json
+ head:
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'view_quotes:{projectKey}',
+ 'view_quotes:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ description: Checks if a Quote exists for a given `id`. Returns a `200 OK` status if the Quote exists or a `404 Not Found` otherwise.
+ post:
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'manage_quotes:{projectKey}',
+ 'manage_quotes:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ body:
+ application/json:
+ example: !include ../examples/quote-update.example.json
+ responses:
+ 200:
+ body:
+ application/json:
+ example: !include ../examples/quote.example.json
+ delete:
+ is:
+ - dataErasure
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'manage_quotes:{projectKey}',
+ 'manage_quotes:{projectKey}:{storeKey}',
+ ],
+ },
+ ]
+ responses:
+ 200:
+ body:
+ application/json:
+ example: !include ../examples/quote.example.json
diff --git a/api-specs/api/resources/me.raml b/api-specs/api/resources/me.raml
index 7146359661..e7faba9166 100644
--- a/api-specs/api/resources/me.raml
+++ b/api-specs/api/resources/me.raml
@@ -299,22 +299,60 @@ delete:
(createable): MyCartDraft
description: A shopping cart holds product variants and can be ordered.
get:
- displayName: Query my carts
- securedBy: [oauth_2_0: { scopes: ['manage_my_orders:{projectKey}'] }]
+ displayName: Query My Carts
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'manage_my_orders:{projectKey}',
+ 'customer_id:{id}',
+ 'anonymous_id:{id}',
+ ],
+ },
+ ]
+ description: |
+ Returns all Carts that match a given Query Predicate and contain either a matching `customerId` or `anonymousId`.
responses:
200:
body:
application/json:
example: !include ../examples/carts.example.json
head:
- securedBy: [oauth_2_0: { scopes: ['manage_my_orders:{projectKey}'] }]
- description: Checks if a Cart exists for a given Query Predicate. Returns a `200 OK` status if any Carts match the Query Predicate or a `404 Not Found` otherwise.
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'manage_my_orders:{projectKey}',
+ 'customer_id:{id}',
+ 'anonymous_id:{id}',
+ ],
+ },
+ ]
+ description: |
+ Checks if a Cart exists that matches a given Query Predicate and contains either a matching `customerId` or `anonymousId`. Returns a `200 OK` status if the Cart exists, or a `404 Not Found` otherwise.
queryParameters:
where?:
type: QueryPredicate[]
post:
- displayName: Create my cart
- securedBy: [oauth_2_0: { scopes: ['manage_my_orders:{projectKey}'] }]
+ displayName: Create My Cart
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'manage_my_orders:{projectKey}',
+ 'customer_id:{id}',
+ 'anonymous_id:{id}',
+ ],
+ },
+ ]
+ description: |
+ Creates a Cart for a given `customerId` or `anonymousId`.
body:
application/json:
example: !include ../examples/cart-create.example.json
@@ -331,7 +369,7 @@ delete:
resourceType: Cart
resourceUpdateType: MyCartUpdate
get:
- displayName: Get my cart by key
+ displayName: Get My Cart by Key
securedBy: [oauth_2_0: { scopes: ['manage_my_orders:{projectKey}'] }]
responses:
200:
@@ -368,19 +406,63 @@ delete:
resourceType: Cart
resourceUpdateType: MyCartUpdate
get:
- displayName: Get my cart by id
- securedBy: [oauth_2_0: { scopes: ['manage_my_orders:{projectKey}'] }]
+ displayName: Get My Cart by ID
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'manage_my_orders:{projectKey}',
+ 'customer_id:{id}',
+ 'anonymous_id:{id}',
+ ],
+ },
+ ]
+ description: |
+ Returns a Cart for a given `id`. Returns a `200 OK` status if the Cart exists, or a [ResourceNotFound](ctp:api:type:ResourceNotFoundError) error otherwise.
+
+ If the Cart exists in the Project but does not have a matching `customerId` or `anonymousId`, this method returns a [ResourceNotFound](ctp:api:type:ResourceNotFoundError) error.
responses:
200:
body:
application/json:
example: !include ../examples/cart.example.json
head:
- securedBy: [oauth_2_0: { scopes: ['manage_my_orders:{projectKey}'] }]
- description: Checks if a Cart exists for a given `id`. Returns a `200 OK` status if the Cart exists or a `404 Not Found` otherwise.
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'manage_my_orders:{projectKey}',
+ 'customer_id:{id}',
+ 'anonymous_id:{id}',
+ ],
+ },
+ ]
+ description: |
+ Checks if a Cart exists for a given `id`. Returns a `200 OK` status if the Cart exists, or a `404 Not Found` otherwise.
+
+ If the Cart exists in the Project but does not have a matching `customerId` or `anonymousId`, this method returns a [ResourceNotFound](ctp:api:type:ResourceNotFoundError) error.
post:
- displayName: Update my cart by id
- securedBy: [oauth_2_0: { scopes: ['manage_my_orders:{projectKey}'] }]
+ displayName: Update My Cart by ID
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'manage_my_orders:{projectKey}',
+ 'customer_id:{id}',
+ 'anonymous_id:{id}',
+ ],
+ },
+ ]
+ description: |
+ Updates the Cart for a given `id`. Returns a `200 OK` status if the Cart exists, or a `404 Not Found` otherwise.
+
+ If the Cart exists in the Project but does not have a matching `customerId` or `anonymousId`, this method returns a [ResourceNotFound](ctp:api:type:ResourceNotFoundError) error.
body:
application/json:
example: !include ../examples/cart-update.example.json
@@ -390,8 +472,23 @@ delete:
application/json:
example: !include ../examples/cart.example.json
delete:
- displayName: Delete my cart by id
- securedBy: [oauth_2_0: { scopes: ['manage_my_orders:{projectKey}'] }]
+ displayName: Delete My Cart by ID
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'manage_my_orders:{projectKey}',
+ 'customer_id:{id}',
+ 'anonymous_id:{id}',
+ ],
+ },
+ ]
+ description: |
+ Deletes the Cart for a given `id`. Returns a `200 OK` status if the Cart exists, or a [ResourceNotFound](ctp:api:type:ResourceNotFoundError) error otherwise.
+
+ If the Cart exists in the Project but does not have a matching `customerId` or `anonymousId`, this method returns a [ResourceNotFound](ctp:api:type:ResourceNotFoundError) error.
responses:
200:
body:
@@ -400,7 +497,7 @@ delete:
/replicate:
type: base
post:
- displayName: Replicate my cart
+ displayName: Replicate My Cart
description: |
Creates a new Cart by replicating an existing Cart or Order of the authenticated Customer.
This can be useful in cases where a customer wants to cancel a recent order to make some changes or reorder a previous order.
@@ -412,7 +509,7 @@ delete:
The new Cart does not contain Payments or Deliveries. The [State](ctp:api:type:ItemState) of Line Items and Custom Line Items is reset to `initial`.
- In case the Cart or Order to be replicated does not belong to the authenticaed Customer, the API returns a [ResourceNotFound](ctp:api:type:ResourceNotFoundError) error
+ If the Cart or Order to be replicated does not belong to the authenticated Customer, the API returns a [ResourceNotFound](ctp:api:type:ResourceNotFoundError) error
body:
application/json:
type: ReplicaMyCartDraft
@@ -422,7 +519,18 @@ delete:
application/json:
example: !include ../examples/cart.example.json
type: Cart
- securedBy: [oauth_2_0: { scopes: ['manage_my_orders:{projectKey}'] }]
+ securedBy:
+ [
+ oauth_2_0:
+ {
+ scopes:
+ [
+ 'manage_my_orders:{projectKey}',
+ 'customer_id:{id}',
+ 'anonymous_id:{id}',
+ ],
+ },
+ ]
/orders:
type:
baseDomain:
@@ -435,7 +543,7 @@ delete:
An order can be created from a cart, usually after a checkout process has
been completed.
get:
- displayName: Query my orders
+ displayName: Query My Orders
securedBy: [oauth_2_0: { scopes: ['manage_my_orders:{projectKey}'] }]
responses:
200:
@@ -451,12 +559,15 @@ delete:
post:
is:
- conflicting
- displayName: Create my order
+ displayName: Create My Order
description: |
The Cart must have a [shipping address set](ctp:api:type:CartSetShippingAddressAction) for taxes to be calculated. When creating [B2B Orders](/associates-overview#b2b-resources), the Customer must have the `CreateMyOrdersFromMyCarts` [Permission](ctp:api:type:Permission).
Creating an Order produces the [OrderCreated](ctp:api:type:OrderCreatedMessage) Message.
+ If a server-side problem occurs, indicated by a 500 Internal Server Error HTTP response, the Order creation may still successfully complete after the error is returned.
+ If you receive this error, you should verify the status of the Order by querying a unique identifier supplied during the creation request, such as the Order number.
+
Specific Error Codes:
- [OutOfStock](ctp:api:type:OutOfStockError)
@@ -480,7 +591,7 @@ delete:
resourceType: Order
resourceUpdateType: MyOrderUpdate
get:
- displayName: Get my order by id
+ displayName: Get My Order by ID
securedBy: [oauth_2_0: { scopes: ['manage_my_orders:{projectKey}'] }]
responses:
200:
@@ -495,7 +606,7 @@ delete:
type: base
displayName: Order from Quote
post:
- displayName: Create my Order from a Quote
+ displayName: Create My Order from Quote
description: |
When creating [B2B Orders](/associates-overview#b2b-resources), the Customer must have the `CreateMyOrdersFromMyQuotes` [Permission](ctp:api:type:Permission).
diff --git a/api-specs/api/resources/orders.raml b/api-specs/api/resources/orders.raml
index 456b6e3654..f8e04a55f1 100644
--- a/api-specs/api/resources/orders.raml
+++ b/api-specs/api/resources/orders.raml
@@ -34,6 +34,9 @@ post:
Creating an Order produces the [OrderCreated](ctp:api:type:OrderCreatedMessage) Message.
+ If a server-side problem occurs, indicated by a 500 Internal Server Error HTTP response, the Order creation may still successfully complete after the error is returned.
+ If you receive this error, you should verify the status of the Order by querying a unique identifier supplied during the creation request, such as the Order number.
+
Specific Error Codes:
- [OutOfStock](ctp:api:type:OutOfStockError)
diff --git a/api-specs/api/resources/products.raml b/api-specs/api/resources/products.raml
index 65318d56b2..3d2e528cf4 100644
--- a/api-specs/api/resources/products.raml
+++ b/api-specs/api/resources/products.raml
@@ -25,7 +25,7 @@ get:
is:
- priceSelecting
description: |-
- If [Price selection](ctp:api:type:ProductPriceSelection) query parameters are provided, the selected Prices are added to the response.
+ If [Product price selection query parameters](/../api/pricing-and-discounts-overview#product-price-selection) are provided, the selected Prices are added to the response.
queryParameters:
where:
type: QueryPredicate[]
@@ -54,7 +54,7 @@ post:
securedBy: [oauth_2_0: { scopes: ['manage_products:{projectKey}'] }]
description: |
To create a new Product, send a representation that is going to become the initial _staged_ and _current_ representation of the new Product in the catalog.
- If [Price Selection](ctp:api:type:ProductPriceSelection) query parameters are provided, selected Prices will be added to the response.
+ If [Product price selection query parameters](/../api/pricing-and-discounts-overview#product-price-selection) are provided, selected Prices will be added to the response.
Produces the [ProductCreated](/projects/messages#product-created) Message.
is:
- priceSelecting
@@ -78,7 +78,7 @@ post:
is:
- priceSelecting
description: |-
- If [Price selection](ctp:api:type:ProductPriceSelection) query parameters are provided, the selected Prices are added to the response.
+ If [Product price selection query parameters]](/../api/pricing-and-discounts-overview#product-price-selection) are provided, the selected Prices are added to the response.
responses:
200:
body:
@@ -102,7 +102,7 @@ post:
example: !include ../examples/product.example.json
delete:
description: |-
- If [Price selection](ctp:api:type:ProductPriceSelection) query parameters are provided, the selected Prices are added to the response.
+ If [Product price selection query parameters](/../api/pricing-and-discounts-overview#product-price-selection) are provided, the selected Prices are added to the response.
Produces the [ProductDeleted](/projects/messages#product-deleted) Message.
securedBy: [oauth_2_0: { scopes: ['manage_products:{projectKey}'] }]
is:
@@ -139,7 +139,7 @@ post:
is:
- priceSelecting
description: |-
- If [Price selection](ctp:api:type:ProductPriceSelection) query parameters are provided, the selected Prices are added to the response.
+ If [Product price selection query parameters](/../api/pricing-and-discounts-overview#product-price-selection) are provided, the selected Prices are added to the response.
responses:
200:
body:
@@ -153,7 +153,7 @@ post:
is:
- priceSelecting
description: |-
- If [Price selection](ctp:api:type:ProductPriceSelection) query parameters are provided, the selected Prices are added to the response.
+ If [Product price selection query parameters](/../api/pricing-and-discounts-overview#product-price-selection) are provided, the selected Prices are added to the response.
A failed response can return a [DuplicatePriceScope](ctp:api:type:DuplicatePriceScopeError), [DuplicateVariantValues](ctp:api:type:DuplicateVariantValuesError), [DuplicateAttributeValue](ctp:api:type:DuplicateAttributeValueError), or [DuplicateAttributeValues](ctp:api:type:DuplicateAttributeValuesError) error.
body:
@@ -166,7 +166,7 @@ post:
example: !include ../examples/product.example.json
delete:
description: |-
- If [Price selection](ctp:api:type:ProductPriceSelection) query parameters are provided, the selected Prices are added to the response.
+ If [Product price selection query parameters](/../api/pricing-and-discounts-overview#product-price-selection) are provided, the selected Prices are added to the response.
Produces the [ProductDeleted](/projects/messages#product-deleted) Message.
securedBy: [oauth_2_0: { scopes: ['manage_products:{projectKey}'] }]
is:
diff --git a/api-specs/api/resources/standalone-prices.raml b/api-specs/api/resources/standalone-prices.raml
index e9aca8d33e..6deec7de01 100644
--- a/api-specs/api/resources/standalone-prices.raml
+++ b/api-specs/api/resources/standalone-prices.raml
@@ -26,7 +26,10 @@ head:
type: QueryPredicate[]
post:
description: |
- Produces the [StandalonePriceCreated](ctp:api:type:StandalonePriceCreatedMessage) Message.
+ Creating a Standalone Price produces the [StandalonePriceCreated](ctp:api:type:StandalonePriceCreatedMessage) Message.
+
+ - If the Standalone Price has the same price scope as an existing Standalone Price, a [DuplicateStandalonePriceScope](ctp:api:type:DuplicateStandalonePriceScopeError) error is returned.
+ - If the Standalone Price has overlapping validity periods within the same price scope, a [OverlappingStandalonePriceValidity](ctp:api:type:OverlappingStandalonePriceValidityError) error is returned. A Price without validity period does not conflict with a Price defined for a time period.
securedBy: [oauth_2_0: { scopes: ['manage_standalone_prices:{projectKey}'] }]
body:
application/json:
diff --git a/api-specs/api/ruleset.xml b/api-specs/api/ruleset.xml
index 05b9e91688..9c44860f9f 100644
--- a/api-specs/api/ruleset.xml
+++ b/api-specs/api/ruleset.xml
@@ -77,6 +77,7 @@
+
diff --git a/api-specs/api/traits/price-selecting.raml b/api-specs/api/traits/price-selecting.raml
index 4fed195f65..063f2554af 100644
--- a/api-specs/api/traits/price-selecting.raml
+++ b/api-specs/api/traits/price-selecting.raml
@@ -1,28 +1,22 @@
#%RAML 1.0 Trait
-
queryParameters:
priceCurrency:
type: CurrencyCode
required: false
description: |
- The currency used for [Price selection](/projects/products#price-selection).
+ The currency used for [Product price selection](/../api/pricing-and-discounts-overview#product-price-selection).
priceCountry:
type: CountryCode
required: false
description: |
- The country used for [Price selection](/projects/products#price-selection). Can only be used **in conjunction with** the `priceCurrency` parameter.
+ The country used for [Product price selection](/../api/pricing-and-discounts-overview#product-price-selection). Can only be used **in conjunction with** the `priceCurrency` parameter.
priceCustomerGroup:
type: string
required: false
description: |
- `id` of an existing [CustomerGroup](ctp:api:type:CustomerGroup) used for [Price selection](ctp:api:type:ProductPriceSelection). Can only be used **in conjunction with** the `priceCurrency` parameter.
+ `id` of an existing [CustomerGroup](ctp:api:type:CustomerGroup) used for [Product price selection](/../api/pricing-and-discounts-overview#product-price-selection). Can only be used **in conjunction with** the `priceCurrency` parameter.
priceChannel:
type: string
required: false
description: |
- `id` of an existing [Channel](ctp:api:type:Channel) used for [Price selection](ctp:api:type:ProductPriceSelection). Can only be used **in conjunction with** the `priceCurrency` parameter.
- localeProjection:
- type: Locale[]
- required: false
- description: |
- Used for [locale-based projection](ctp:api:type:ProductProjectionLocales).
+ `id` of an existing [Channel](ctp:api:type:Channel) used for [Product price selection](/../api/pricing-and-discounts-overview#product-price-selection). Can only be used **in conjunction with** the `priceCurrency` parameter.
diff --git a/api-specs/api/types/annotations.raml b/api-specs/api/types/annotations.raml
index 11816d73d1..ded97bfa6e 100644
--- a/api-specs/api/types/annotations.raml
+++ b/api-specs/api/types/annotations.raml
@@ -102,3 +102,6 @@ enumGroups:
//:
description: |
Specifies the group for the enum value given by the key.
+expandable:
+ type: boolean
+ allowedTargets: TypeDeclaration
diff --git a/api-specs/api/types/associate-role/AssociateRoleKeyReference.raml b/api-specs/api/types/associate-role/AssociateRoleKeyReference.raml
index f93e7205cf..483db644c4 100644
--- a/api-specs/api/types/associate-role/AssociateRoleKeyReference.raml
+++ b/api-specs/api/types/associate-role/AssociateRoleKeyReference.raml
@@ -4,7 +4,7 @@ displayName: AssociateRoleKeyReference
type: KeyReference
discriminatorValue: associate-role
description: |
- [Reference](ctp:api:type:Reference) to an [AssociateRole](ctp:api:type:AssociateRole) by its key.
+ [KeyReference](ctp:api:type:KeyReference) to an [AssociateRole](ctp:api:type:AssociateRole).
properties:
key:
type: string
diff --git a/api-specs/api/types/business-unit/Associate.raml b/api-specs/api/types/business-unit/Associate.raml
index 444065b138..c31d37bf68 100644
--- a/api-specs/api/types/business-unit/Associate.raml
+++ b/api-specs/api/types/business-unit/Associate.raml
@@ -1,6 +1,8 @@
#%RAML 1.0 DataType
(package): BusinessUnit
displayName: Associate
+type: object
+(expandable): true
properties:
associateRoleAssignments:
type: AssociateRoleAssignment[]
diff --git a/api-specs/api/types/business-unit/AssociateRoleAssignment.raml b/api-specs/api/types/business-unit/AssociateRoleAssignment.raml
index e7341d339f..60925727ca 100644
--- a/api-specs/api/types/business-unit/AssociateRoleAssignment.raml
+++ b/api-specs/api/types/business-unit/AssociateRoleAssignment.raml
@@ -1,6 +1,7 @@
#%RAML 1.0 DataType
(package): BusinessUnit
displayName: AssociateRoleAssignment
+type: object
properties:
associateRole:
type: AssociateRoleKeyReference
diff --git a/api-specs/api/types/business-unit/BusinessUnit.raml b/api-specs/api/types/business-unit/BusinessUnit.raml
index c181fdf270..f101aaf66f 100644
--- a/api-specs/api/types/business-unit/BusinessUnit.raml
+++ b/api-specs/api/types/business-unit/BusinessUnit.raml
@@ -114,3 +114,8 @@ properties:
type: BusinessUnitKeyReference
description: |
Top-level unit of the Business Unit. The top-level unit is of `unitType` `Company`.
+ approvalRuleMode:
+ type: BusinessUnitApprovalRuleMode
+ description: |
+ Determines whether the Business Unit can inherit Approval Rules from a parent.
+ Always `Explicit` for [Companies](ctp:api:type:BusinessUnitType) and defaults to `ExplicitAndFromParent` for [Divisions](ctp:api:type:BusinessUnitType).
diff --git a/api-specs/api/types/business-unit/BusinessUnitApprovalRuleMode.raml b/api-specs/api/types/business-unit/BusinessUnitApprovalRuleMode.raml
new file mode 100644
index 0000000000..5fdc2148c1
--- /dev/null
+++ b/api-specs/api/types/business-unit/BusinessUnitApprovalRuleMode.raml
@@ -0,0 +1,14 @@
+#%RAML 1.0 DataType
+(package): BusinessUnit
+displayName: BusinessUnitApprovalRuleMode
+type: string
+description: |
+ Determines whether a Business Unit can inherit [Approval Rules](/projects/approval-rules) from a parent. Only Business Units of type `Division` can use `ExplicitAndFromParent`.
+enum:
+ - Explicit
+ - ExplicitAndFromParent
+(enumDescriptions):
+ Explicit: |
+ Approval Rules of a Business Unit must be explicitly assigned. The Business Unit cannot inherit Approval Rules from a parent.
+ ExplicitAndFromParent: |
+ Approval Rules of a Business Unit are inherited from a parent and can also be explicitly assigned.
diff --git a/api-specs/api/types/business-unit/BusinessUnitDraft.raml b/api-specs/api/types/business-unit/BusinessUnitDraft.raml
index ce310f12e6..c1ee9cb22e 100644
--- a/api-specs/api/types/business-unit/BusinessUnitDraft.raml
+++ b/api-specs/api/types/business-unit/BusinessUnitDraft.raml
@@ -52,6 +52,12 @@ properties:
type: AssociateDraft[]
description: |
List of members that are part of the Business Unit in specific [roles](ctp:api:type:AssociateRole).
+ approvalRuleMode?:
+ type: BusinessUnitApprovalRuleMode
+ description: |
+ Determines whether the Business Unit can inherit Approval Rules from a parent.
+ For [Companies](ctp:api:type:BusinessUnitType), the value of this field is always `Explicit`.
+ For [Divisions](ctp:api:type:BusinessUnitType), the default value is `ExplicitAndFromParent`.
addresses?:
type: BaseAddress[]
description: |
diff --git a/api-specs/api/types/business-unit/BusinessUnitKeyReference.raml b/api-specs/api/types/business-unit/BusinessUnitKeyReference.raml
index 63603a55d6..c059351a86 100644
--- a/api-specs/api/types/business-unit/BusinessUnitKeyReference.raml
+++ b/api-specs/api/types/business-unit/BusinessUnitKeyReference.raml
@@ -4,7 +4,7 @@ displayName: BusinessUnitKeyReference
type: KeyReference
discriminatorValue: business-unit
description: |
- [Reference](ctp:api:type:Reference) to a [BusinessUnit](ctp:api:type:BusinessUnit) by its key.
+ [KeyReference](ctp:api:type:KeyReference) to a [BusinessUnit](ctp:api:type:BusinessUnit).
properties:
key:
type: string
diff --git a/api-specs/api/types/business-unit/Company.raml b/api-specs/api/types/business-unit/Company.raml
index c196461575..c43bcdbc97 100644
--- a/api-specs/api/types/business-unit/Company.raml
+++ b/api-specs/api/types/business-unit/Company.raml
@@ -10,8 +10,13 @@ properties:
storeMode:
type: BusinessUnitStoreMode
description: |
- Is always `Explicit` since a Company cannot have a parent Business Unit that Stores can be inherited from.
+ The value of this field is always `Explicit` because a Company cannot have a parent Business Unit that Stores can be inherited from.
associateMode:
type: BusinessUnitAssociateMode
description: |
- Is always `Explicit` since a Company cannot have a parent Business Unit that Associates can be inherited from.
+ The value of this field is always `Explicit` because a Company cannot have a parent Business Unit that Associates can be inherited from.
+ approvalRuleMode:
+ type: BusinessUnitApprovalRuleMode
+ default: Explicit
+ description: |
+ The value of this field is always `Explicit` because a Company cannot have a parent Business Unit that Approval Rules can be inherited from.
diff --git a/api-specs/api/types/business-unit/Division.raml b/api-specs/api/types/business-unit/Division.raml
index 86fea9b468..72278de7e7 100644
--- a/api-specs/api/types/business-unit/Division.raml
+++ b/api-specs/api/types/business-unit/Division.raml
@@ -21,3 +21,8 @@ properties:
default: ExplicitAndFromParent
description: |
Determines whether the Division can inherit Associates from a parent.
+ approvalRuleMode:
+ type: BusinessUnitApprovalRuleMode
+ default: ExplicitAndFromParent
+ description: |
+ Determines whether a Business Unit can inherit Approval Rules from a parent.
diff --git a/api-specs/api/types/business-unit/DivisionDraft.raml b/api-specs/api/types/business-unit/DivisionDraft.raml
index 5de3cb30dd..aeb54f8079 100644
--- a/api-specs/api/types/business-unit/DivisionDraft.raml
+++ b/api-specs/api/types/business-unit/DivisionDraft.raml
@@ -22,3 +22,8 @@ properties:
default: ExplicitAndFromParent
description: |
Determines whether the Division can inherit Associates from a parent.
+ approvalRuleMode?:
+ type: BusinessUnitApprovalRuleMode
+ default: ExplicitAndFromParent
+ description: |
+ Determines whether the Division can inherit Approval Rules from a parent.
diff --git a/api-specs/api/types/business-unit/InheritedAssociate.raml b/api-specs/api/types/business-unit/InheritedAssociate.raml
index f3ed1aad67..dbf706282f 100644
--- a/api-specs/api/types/business-unit/InheritedAssociate.raml
+++ b/api-specs/api/types/business-unit/InheritedAssociate.raml
@@ -1,6 +1,8 @@
#%RAML 1.0 DataType
(package): BusinessUnit
displayName: InheritedAssociate
+type: object
+(expandable): true
properties:
associateRoleAssignments:
type: InheritedAssociateRoleAssignment[]
diff --git a/api-specs/api/types/business-unit/InheritedAssociateRoleAssignment.raml b/api-specs/api/types/business-unit/InheritedAssociateRoleAssignment.raml
index 4cb5daf2fd..4a35f82175 100644
--- a/api-specs/api/types/business-unit/InheritedAssociateRoleAssignment.raml
+++ b/api-specs/api/types/business-unit/InheritedAssociateRoleAssignment.raml
@@ -1,6 +1,7 @@
#%RAML 1.0 DataType
(package): BusinessUnit
displayName: InheritedAssociateRoleAssignment
+type: object
properties:
associateRole:
type: AssociateRoleKeyReference
diff --git a/api-specs/api/types/business-unit/updates/BusinessUnitChangeApprovalRuleModeAction.raml b/api-specs/api/types/business-unit/updates/BusinessUnitChangeApprovalRuleModeAction.raml
new file mode 100644
index 0000000000..4eb7fbb2a9
--- /dev/null
+++ b/api-specs/api/types/business-unit/updates/BusinessUnitChangeApprovalRuleModeAction.raml
@@ -0,0 +1,17 @@
+#%RAML 1.0 DataType
+(package): BusinessUnit
+type: BusinessUnitUpdateAction
+displayName: BusinessUnitChangeApprovalRuleModeAction
+discriminatorValue: changeApprovalRuleMode
+example: !include ../../../examples/BusinessUnit/BusinessUnitChangeApprovalRuleModeAction.json
+description: |
+ Updates [Approval Rules](/projects/approval-rules) inheritance behavior between Business Units.
+
+ Only Business Units of type `Division` can be changed to `ExplicitAndFromParent`.
+
+ This update action generates a [BusinessUnitApprovalRuleModeChanged](ctp:api:type:BusinessUnitApprovalRuleModeChangedMessage) Message.
+properties:
+ approvalRuleMode:
+ type: BusinessUnitApprovalRuleMode
+ description: |
+ The new value for `approvalRuleMode`.
diff --git a/api-specs/api/types/cart/Cart.raml b/api-specs/api/types/cart/Cart.raml
index e8bcfa3f0e..2f71f31c54 100644
--- a/api-specs/api/types/cart/Cart.raml
+++ b/api-specs/api/types/cart/Cart.raml
@@ -32,7 +32,7 @@ properties:
customerGroup?:
type: CustomerGroupReference
description: |
- [Reference](ctp:api:type:Reference) to the Customer Group of the Customer that the Cart belongs to. Used for [LineItem Price selection](ctp:api:type:LineItemPriceSelection).
+ [Reference](ctp:api:type:Reference) to the Customer Group of the Customer that the Cart belongs to. Used for [Line Item price selection](/../api/pricing-and-discounts-overview#line-item-price-selection).
anonymousId?:
type: string
description: |
@@ -170,7 +170,7 @@ properties:
country?:
type: CountryCode
description: |
- Used for [LineItem Price selection](ctp:api:type:LineItemPriceSelection).
+ Used for [Line Item price selection](/../api/pricing-and-discounts-overview#line-item-price-selection).
locale?:
type: Locale
description: |
diff --git a/api-specs/api/types/cart/CartDraft.raml b/api-specs/api/types/cart/CartDraft.raml
index f3f66fd321..968e25aa88 100644
--- a/api-specs/api/types/cart/CartDraft.raml
+++ b/api-specs/api/types/cart/CartDraft.raml
@@ -25,7 +25,7 @@ properties:
customerGroup?:
type: CustomerGroupResourceIdentifier
description: |
- [ResourceIdentifier](ctp:api:type:ResourceIdentifier) to the Customer Group of the Customer that the Cart belongs to. Used for [LineItem Price selection](ctp:api:type:LineItemPriceSelection).
+ [ResourceIdentifier](ctp:api:type:ResourceIdentifier) to the Customer Group of the Customer that the Cart belongs to. Used for [Line Item price selection](/../api/pricing-and-discounts-overview#line-item-price-selection).
It is automatically set if the Customer referenced in `customerId` belongs to a Customer Group.
It can also be set explicitly when no `customerId` is present.
@@ -123,7 +123,7 @@ properties:
country?:
type: CountryCode
description: |
- Used for [LineItem Price selection](ctp:api:type:LineItemPriceSelection).
+ Used for [Line Item price selection](/../api/pricing-and-discounts-overview#line-item-price-selection).
If used for [Create Cart in Store](ctp:api:endpoint:/{projectKey}/in-store/carts:POST), the provided country must be one of the [Store's](ctp:api:type:Store) `countries`.
locale?:
type: Locale
diff --git a/api-specs/api/types/cart/CartState.raml b/api-specs/api/types/cart/CartState.raml
index 7c494a193a..27de1389c2 100644
--- a/api-specs/api/types/cart/CartState.raml
+++ b/api-specs/api/types/cart/CartState.raml
@@ -11,7 +11,7 @@ enum:
- Frozen
(enumDescriptions):
Active: |
- The default state where a Cart can be updated and ordered.
+ The default state where a Cart can be updated and ordered. A [Customer](ctp:api:type:Customer) can have more than one active Cart.
Merged: |
An anonymous Cart was merged into a Customer's Cart on [sign-in](ctp:api:endpoint:/{projectKey}/login:POST), and no further operations are allowed on the Cart.
Ordered: |
diff --git a/api-specs/api/types/cart/CustomLineItem.raml b/api-specs/api/types/cart/CustomLineItem.raml
index 453692707a..95072e3b9f 100644
--- a/api-specs/api/types/cart/CustomLineItem.raml
+++ b/api-specs/api/types/cart/CustomLineItem.raml
@@ -2,6 +2,7 @@
(package): Cart
displayName: CustomLineItem
type: object
+(expandable): true
description: |
A generic item that can be added to the Cart but is not bound to a Product that can be used for discounts (negative money), vouchers, complex cart rules, additional services, or fees.
You control the lifecycle of this item.
diff --git a/api-specs/api/types/cart/CustomLineItemPriceMode.raml b/api-specs/api/types/cart/CustomLineItemPriceMode.raml
index 534db6fa56..3d48d5634a 100644
--- a/api-specs/api/types/cart/CustomLineItemPriceMode.raml
+++ b/api-specs/api/types/cart/CustomLineItemPriceMode.raml
@@ -13,4 +13,4 @@ enum:
This is the default mode for backwards compatibility.
External: |
- Deactivates application of Cart Discounts for the Custom Line Item despite a matching [CartDiscountCustomLineItemsTarget](ctp:api:type:CartDiscountCustomLineItemsTarget).
+ Deactivates application of Cart Discounts for the Custom Line Item, despite a matching [CartDiscountCustomLineItemsTarget](ctp:api:type:CartDiscountCustomLineItemsTarget) and [MultiBuyCustomLineItemsTarget](ctp:api:type:MultiBuyCustomLineItemsTarget).
diff --git a/api-specs/api/types/cart/DirectDiscountDraft.raml b/api-specs/api/types/cart/DirectDiscountDraft.raml
index d4e809bb56..2c992718ca 100644
--- a/api-specs/api/types/cart/DirectDiscountDraft.raml
+++ b/api-specs/api/types/cart/DirectDiscountDraft.raml
@@ -6,11 +6,7 @@ example: !include ../../examples/Cart/CartDirectDiscountDraft.json
description: |
Represents a [CartDiscount](ctp:api:type:CartDiscount) that can only be associated with a single Cart or Order.
- Direct Discounts are always active and valid, and have the default `Stacking` [StackingMode](ctp:api:type:StackingMode).
- They apply in the order in which they are listed in the `directDiscounts` array of [Carts](ctp:api:type:Cart) or [Orders](ctp:api:type:Order), and do not have a sorting order like Cart Discounts.
-
- If a Direct Discount is present, any matching Cart Discounts in the Project are ignored.
- Additionally, a Cart or Order supports either Discount Codes or Direct Discounts at the same time.
+ For an introduction to Direct Discounts and to understand how they work in Composable Commerce, see the [Direct Discounts overview](/pricing-and-discounts-overview#direct-discounts).
properties:
value:
type: CartDiscountValueDraft
diff --git a/api-specs/api/types/cart/DiscountCodeInfo.raml b/api-specs/api/types/cart/DiscountCodeInfo.raml
index 2e2b17c05a..7f94cb959f 100644
--- a/api-specs/api/types/cart/DiscountCodeInfo.raml
+++ b/api-specs/api/types/cart/DiscountCodeInfo.raml
@@ -1,6 +1,7 @@
#%RAML 1.0 DataType
(package): Cart
displayName: DiscountCodeInfo
+(expandable): true
type: object
properties:
discountCode:
diff --git a/api-specs/api/types/cart/DiscountedTotalPricePortion.raml b/api-specs/api/types/cart/DiscountedTotalPricePortion.raml
index fa5e287bc9..d1a3511293 100644
--- a/api-specs/api/types/cart/DiscountedTotalPricePortion.raml
+++ b/api-specs/api/types/cart/DiscountedTotalPricePortion.raml
@@ -2,6 +2,7 @@
(package): Cart
displayName: DiscountedTotalPricePortion
type: object
+(expandable): true
properties:
discount:
type: CartDiscountReference
diff --git a/api-specs/api/types/cart/ExternalTaxRateDraft.raml b/api-specs/api/types/cart/ExternalTaxRateDraft.raml
index 381873d4db..88d10543b6 100644
--- a/api-specs/api/types/cart/ExternalTaxRateDraft.raml
+++ b/api-specs/api/types/cart/ExternalTaxRateDraft.raml
@@ -35,4 +35,5 @@ properties:
subRates?:
type: SubRate[]
description: |
- For countries (such as the US) where the total tax is a combination of multiple taxes (such as state and local taxes). The total of all subrates must equal the TaxRate `amount`.
+ Used when the total tax is a combination of multiple taxes (for example, local, state/provincial, and/or federal taxes). The total of all subrates must equal the TaxRate `amount`.
+ These subrates are used to calculate the `taxPortions` field of a [Cart](ctp:api:type:Cart) or [Order](ctp:api:type:Order) and the `taxedPrice` field of [LineItems](ctp:api:type:LineItem), [CustomLineItems](ctp:api:type:CustomLineItem), and [ShippingInfos](ctp:api:type:ShippingInfo).
diff --git a/api-specs/api/types/cart/LineItem.raml b/api-specs/api/types/cart/LineItem.raml
index 1602ae63db..a12d042d31 100644
--- a/api-specs/api/types/cart/LineItem.raml
+++ b/api-specs/api/types/cart/LineItem.raml
@@ -2,6 +2,7 @@
(package): Cart
displayName: LineItem
type: object
+(expandable): true
description: |
The representation of a [Line Item](/../api/carts-orders-overview#line-items) in a [Cart](ctp:api:type:Cart) or in an [Order](ctp:api:type:Order).
properties:
@@ -97,7 +98,7 @@ properties:
distributionChannel?:
type: ChannelReference
description: |
- Used to [select](ctp:api:type:LineItemPriceSelection) a Product Price. The referenced Channel has the `ProductDistribution` [ChannelRoleEnum](ctp:api:type:ChannelRoleEnum).
+ Used to [select](/../api/pricing-and-discounts-overview#line-item-price-selection) a Product Price. The referenced Channel has the `ProductDistribution` [ChannelRoleEnum](ctp:api:type:ChannelRoleEnum).
priceMode:
type: LineItemPriceMode
description: |
diff --git a/api-specs/api/types/cart/LineItemDraft.raml b/api-specs/api/types/cart/LineItemDraft.raml
index 62435a743e..b0d6d78400 100644
--- a/api-specs/api/types/cart/LineItemDraft.raml
+++ b/api-specs/api/types/cart/LineItemDraft.raml
@@ -42,7 +42,7 @@ properties:
distributionChannel?:
type: ChannelResourceIdentifier
description: |
- Used to [select](ctp:api:type:LineItemPriceSelection) a Product Price.
+ Used to [select](/../api/pricing-and-discounts-overview#line-item-price-selection) a Product Price.
The referenced Channel must have the `ProductDistribution` [ChannelRoleEnum](ctp:api:type:ChannelRoleEnum).
If the Cart is bound to a [Store](ctp:api:type:Store) with `distributionChannels` set,
@@ -63,7 +63,7 @@ properties:
externalTaxRate?:
type: ExternalTaxRateDraft
description: |
- Sets the external Tax Rate for the Line Item, if the Cart has the `External` [TaxMode](ctp:api:type:TaxMode) and `Single` [ShippingMode](ctp:api:type:ShippingMode).
+ Sets the external Tax Rate for the Line Item, if the Cart has the `External` [TaxMode](ctp:api:type:TaxMode) and `Single` [ShippingMode](ctp:api:type:ShippingMode). If the Cart has `Multiple` [ShippingMode](ctp:api:type:ShippingMode), the Tax Rate is accepted but ignored.
perMethodExternalTaxRate?:
type: MethodExternalTaxRateDraft[]
description: |
diff --git a/api-specs/api/types/cart/LineItemPriceMode.raml b/api-specs/api/types/cart/LineItemPriceMode.raml
index 47ffcfee00..3b2e1ad5c6 100644
--- a/api-specs/api/types/cart/LineItemPriceMode.raml
+++ b/api-specs/api/types/cart/LineItemPriceMode.raml
@@ -10,7 +10,7 @@ enum:
- ExternalTotal
(enumDescriptions):
Platform: |
- The [price is selected](ctp:api:type:LineItemPriceSelection) from the Product Variant.
+ The price is [selected](/../api/pricing-and-discounts-overview#line-item-price-selection) from the Product Variant.
This is the default mode.
ExternalPrice: |
The Line Item price is set externally.
@@ -18,7 +18,7 @@ enum:
All update actions that change the quantity of a Line Item with this price mode require the `externalPrice` field to be given.
ExternalTotal: |
The Line Item price with the total is set externally.
- Cart Discounts are deactivated for Line Items with this price mode.
+ Cart Discounts are deactivated for Line Items with this price mode, despite a matching [CartDiscountLineItemsTarget](ctp:api:type:CartDiscountLineItemsTarget) or [MultiBuyLineItemsTarget](ctp:api:type:MultiBuyLineItemsTarget).
Although a Line Item with this price mode has both `price` and `totalPrice` set externally, only `totalPrice` is used to calculate the total price of a Cart.
All update actions that change the quantity of a Line Item with this price mode can set the new price with the `externalTotal` field.
If the `externalTotal` field is not given in the update actions, the external price is unset and the price mode is set to `Platform`.
diff --git a/api-specs/api/types/cart/ShippingInfo.raml b/api-specs/api/types/cart/ShippingInfo.raml
index ce0407735f..0efe6a7821 100644
--- a/api-specs/api/types/cart/ShippingInfo.raml
+++ b/api-specs/api/types/cart/ShippingInfo.raml
@@ -2,6 +2,7 @@
(package): Cart
displayName: ShippingInfo
type: object
+(expandable): true
properties:
shippingMethodName:
type: string
diff --git a/api-specs/api/types/cart/ShippingMethodState.raml b/api-specs/api/types/cart/ShippingMethodState.raml
index 73f2ea2f41..0757eac194 100644
--- a/api-specs/api/types/cart/ShippingMethodState.raml
+++ b/api-specs/api/types/cart/ShippingMethodState.raml
@@ -3,7 +3,7 @@
displayName: ShippingMethodState
type: string
description: |
- Determines whether a [ShippingMethod](ctp:api:type:ShippingMethod) is allowed for a Cart.
+ Determines whether the selected [ShippingMethod](ctp:api:type:ShippingMethod) is allowed for the Cart. For more information, see [Predicates](/shipping-delivery-overview#predicates).
enum:
- DoesNotMatchCart
- MatchesCart
diff --git a/api-specs/api/types/cart/TaxMode.raml b/api-specs/api/types/cart/TaxMode.raml
index 36abf4d37c..8332ca67bb 100644
--- a/api-specs/api/types/cart/TaxMode.raml
+++ b/api-specs/api/types/cart/TaxMode.raml
@@ -11,24 +11,33 @@ enum:
- Disabled
(enumDescriptions):
Platform: |
- Tax Rates are selected automatically from the [TaxCategories](ctp:api:type:TaxCategory) based on the [Cart](ctp:api:type:Cart) `shippingAddress`.
+ - Tax Rates are selected automatically from the [TaxCategories](ctp:api:type:TaxCategory) based on the [Cart](ctp:api:type:Cart) `shippingAddress`.
This is the default tax mode for a new Cart.
- `totalNet`, `totalGross`, and `taxPortions` fields are calculated based on the `taxRoundingMode`.
+ - The `totalNet`, `totalGross`, and `taxPortions` fields are calculated based on the `taxRoundingMode`.
External: |
- Tax Rates are set externally per [ExternalTaxRateDraft](ctp:api:type:ExternalTaxRateDraft).
+ - Tax Rates are set externally with [ExternalTaxRateDraft](ctp:api:type:ExternalTaxRateDraft).
A Cart can be ordered only if all Line Items, Custom Line Items, and the Shipping Method have an external Tax Rate set.
- `totalNet`, `totalGross`, and `taxPortions` fields are calculated based on the `taxRoundingMode`.
+ - The `totalNet`, `totalGross`, and `taxPortions` fields are calculated based on the `taxRoundingMode`.
ExternalAmount: |
- Tax amounts, Tax Rates, and tax portions are set externally per [ExternalTaxAmountDraft](ctp:api:type:ExternalTaxAmountDraft).
+ - Tax amounts, Tax Rates, and tax portions are set externally with [ExternalTaxAmountDraft](ctp:api:type:ExternalTaxAmountDraft).
A Cart can be ordered only if the Cart and all Line Items, Custom Line Items, and the Shipping Method have an external tax amount and rate set.
- Price-specific update actions on Carts require external recalculation of the total gross price.
- Hence, the `externalTaxAmount` is removed in these cases and must be reset with [Set LineItem TaxAmount](ctp:api:type:CartSetLineItemTaxAmountAction), [Set CustomLineItem TaxAmount](ctp:api:type:CartSetCustomLineItemTaxAmountAction), or [Set ShippingMethod TaxAmount](ctp:api:type:CartSetShippingMethodTaxAmountAction) update actions.
- Also the Cart `taxedPrice` field must be explicitly set via [Set Cart Total Tax](ctp:api:type:CartSetCartTotalTaxAction).
- Since the API currently does not offer an update action for setting the `taxedShippingPrice` field of a Cart with `ExternalAmount` tax mode, it will always be empty.
- Disabled: |
- No taxes are added to the Cart.
+ - The Cart `taxedPrice` field must be set using [Set Cart Total Tax](ctp:api:type:CartSetCartTotalTaxAction). The Cart `taxedShippingPrice` field is always empty in this tax mode.
+
+ - Price-affecting update actions on Carts require external recalculation of the total gross price. In these cases, `taxedPrice` and `taxRate` are removed and must be set again. The order in which the individual update actions are issued is important:
+ 1. Issue the price-affecting update action(s).
+ 2. Update the tax amounts using [Set LineItem TaxAmount](ctp:api:type:CartSetLineItemTaxAmountAction), [Set CustomLineItem TaxAmount](ctp:api:type:CartSetCustomLineItemTaxAmountAction), or [Set ShippingMethod TaxAmount](ctp:api:type:CartSetShippingMethodTaxAmountAction).
+
+ - If the update action changes the Line Item price, for Line Items with `Platform` [LineItemPriceMode](ctp:type:LineItemPriceMode), you must issue [Set LineItem TaxAmount](ctp:api:type:CartSetLineItemTaxAmountAction) in a _separate_ request.
+
+ - If the update action removes the externally set tax amount for the Shipping Method, you must issue [Set ShippingMethod TaxAmount](ctp:api:type:CartSetShippingMethodTaxAmountAction) in a _separate_ request.
- Note that this tax mode cannot be set on the [My Carts](/../api/projects/me-carts) API.
+ 3. Update the `taxedPrice` on Cart using [Set Cart Total Tax](ctp:api:type:CartSetCartTotalTaxAction).
+
+ - Tax-inclusive pricing should be avoided when using TaxMode `ExternalAmount` because `taxedItemPrice.totalNet` is automatically set by the platform to the Line Item's `totalPrice`.
+
+ Disabled: |
+ - No taxes are added to the Cart.
+ - This tax mode cannot be set on the [My Carts](/../api/projects/me-carts) API.
diff --git a/api-specs/api/types/cart/updates/CartAddLineItemAction.raml b/api-specs/api/types/cart/updates/CartAddLineItemAction.raml
index 6a28ef57fd..3fcf117a45 100644
--- a/api-specs/api/types/cart/updates/CartAddLineItemAction.raml
+++ b/api-specs/api/types/cart/updates/CartAddLineItemAction.raml
@@ -8,7 +8,7 @@ description: |
If the Cart contains a [LineItem](ctp:api:type:LineItem) for a Product Variant with the same [LineItemMode](ctp:api:type:LineItemMode), [Custom Fields](/../api/projects/custom-fields), supply and distribution channel, then only the quantity of the existing Line Item is increased.
If [LineItem](ctp:api:type:LineItem) `shippingDetails` is set, it is merged. All addresses will be present afterwards and, for address keys present in both shipping details, the quantity will be summed up.
A new Line Item is added when the `externalPrice` or `externalTotalPrice` is set in this update action.
- The [LineItem](ctp:api:type:LineItem) price is set as described in [LineItem Price selection](ctp:api:type:LineItemPriceSelection).
+ The [LineItem](ctp:api:type:LineItem) price is set as described in [Line Item price selection](/../api/pricing-and-discounts-overview#line-item-price-selection).
If the Tax Rate is not set, a [MissingTaxRateForCountry](ctp:api:type:MissingTaxRateForCountryError) error is returned.
@@ -57,7 +57,7 @@ properties:
distributionChannel?:
type: ChannelResourceIdentifier
description: |
- Used to [select](ctp:api:type:LineItemPriceSelection) a Product Price.
+ Used to [select](/../api/pricing-and-discounts-overview#line-item-price-selection) a Product Price.
The Channel must have the `ProductDistribution` [ChannelRoleEnum](ctp:api:type:ChannelRoleEnum).
If the Cart is bound to a [Store](ctp:api:type:Store) with `distributionChannels` set, the Channel must match one of the Store's distribution channels.
supplyChannel?:
@@ -76,7 +76,7 @@ properties:
externalTaxRate?:
type: ExternalTaxRateDraft
description: |
- External Tax Rate for the Line Item, if the Cart has the `External` [TaxMode](ctp:api:type:TaxMode) and `Single` [ShippingMode](ctp:api:type:ShippingMode).
+ Sets the external Tax Rate for the Line Item, if the Cart has the `External` [TaxMode](ctp:api:type:TaxMode) and `Single` [ShippingMode](ctp:api:type:ShippingMode). If the Cart has `Multiple` [ShippingMode](ctp:api:type:ShippingMode), the Tax Rate is accepted but ignored.
perMethodExternalTaxRate?:
type: MethodExternalTaxRateDraft[]
description: |
diff --git a/api-specs/api/types/cart/updates/CartChangeLineItemQuantityAction.raml b/api-specs/api/types/cart/updates/CartChangeLineItemQuantityAction.raml
index a0e84b5589..bcda95f376 100644
--- a/api-specs/api/types/cart/updates/CartChangeLineItemQuantityAction.raml
+++ b/api-specs/api/types/cart/updates/CartChangeLineItemQuantityAction.raml
@@ -15,7 +15,7 @@ description: |
use this update action in combination with the [Set LineItem ShippingDetails](ctp:api:type:CartSetLineItemShippingDetailsAction) update action
in a single Cart update command.
- The [LineItem](ctp:api:type:LineItem) price is set as described in [LineItem Price selection](ctp:api:type:LineItemPriceSelection).
+ The [LineItem](ctp:api:type:LineItem) price is set as described in [Line Item price selection](/../api/pricing-and-discounts-overview#line-item-price-selection).
properties:
lineItemId?:
type: string
@@ -39,7 +39,7 @@ properties:
Required when the Line Item uses `ExternalPrice` [LineItemPriceMode](ctp:api:type:LineItemPriceMode).
Sets the [LineItem](ctp:api:type:LineItem) `price` to the given value when changing the quantity of a Line Item.
- The LineItem price is updated as described in LineItem Price selection.
+ The LineItem price is updated as described in Line Item price selection.
externalTotalPrice?:
type: ExternalLineItemTotalPrice
description: |
diff --git a/api-specs/api/types/cart/updates/CartRemoveLineItemAction.raml b/api-specs/api/types/cart/updates/CartRemoveLineItemAction.raml
index f52860afeb..253aabac9b 100644
--- a/api-specs/api/types/cart/updates/CartRemoveLineItemAction.raml
+++ b/api-specs/api/types/cart/updates/CartRemoveLineItemAction.raml
@@ -5,7 +5,7 @@ displayName: CartRemoveLineItemAction
discriminatorValue: removeLineItem
example: !include ../../../examples/Cart/CartRemoveLineItemAction.json
description: |
- The [LineItem](ctp:api:type:LineItem) price is updated as described in [LineItem Price selection](ctp:api:type:LineItemPriceSelection).
+ The [LineItem](ctp:api:type:LineItem) price is updated as described in [Line Item price selection](/../api/pricing-and-discounts-overview#line-item-price-selection).
properties:
lineItemId?:
type: string
diff --git a/api-specs/api/types/cart/updates/CartSetCartTotalTaxAction.raml b/api-specs/api/types/cart/updates/CartSetCartTotalTaxAction.raml
index c81f08a3f7..710146db0c 100644
--- a/api-specs/api/types/cart/updates/CartSetCartTotalTaxAction.raml
+++ b/api-specs/api/types/cart/updates/CartSetCartTotalTaxAction.raml
@@ -5,7 +5,8 @@ displayName: CartSetCartTotalTaxAction
discriminatorValue: setCartTotalTax
example: !include ../../../examples/Cart/CartSetCartTotalTaxAction.json
description: |
- This update action results in the `taxedPrice` field being added to the Cart when the `ExternalAmount` [TaxMode](ctp:api:type:TaxMode) is used.
+ Can be used if the Cart has the `ExternalAmount` [TaxMode](ctp:api:type:TaxMode). This update action adds the `taxedPrice` field to the Cart and must be used after any price-affecting change occurs within the Cart.
+
properties:
externalTotalGross:
type: Money
diff --git a/api-specs/api/types/cart/updates/CartSetLineItemDistributionChannelAction.raml b/api-specs/api/types/cart/updates/CartSetLineItemDistributionChannelAction.raml
index 8e8d8479f6..47c8805569 100644
--- a/api-specs/api/types/cart/updates/CartSetLineItemDistributionChannelAction.raml
+++ b/api-specs/api/types/cart/updates/CartSetLineItemDistributionChannelAction.raml
@@ -5,7 +5,7 @@ displayName: CartSetLineItemDistributionChannelAction
discriminatorValue: setLineItemDistributionChannel
example: !include ../../../examples/Cart/CartSetLineItemDistributionChannelAction.json
description: |
- Setting a distribution channel for a [LineItem](ctp:api:type:LineItem) can lead to an updated `price` as described in [LineItem Price selection](ctp:api:type:LineItemPriceSelection).
+ Setting a distribution channel for a [LineItem](ctp:api:type:LineItem) can lead to an updated `price` as described in [Line Item price selection](/../api/pricing-and-discounts-overview#line-item-price-selection).
properties:
lineItemId?:
type: string
diff --git a/api-specs/api/types/cart/updates/CartSetLineItemTaxAmountAction.raml b/api-specs/api/types/cart/updates/CartSetLineItemTaxAmountAction.raml
index d4b6515d84..69fb8e5075 100644
--- a/api-specs/api/types/cart/updates/CartSetLineItemTaxAmountAction.raml
+++ b/api-specs/api/types/cart/updates/CartSetLineItemTaxAmountAction.raml
@@ -5,7 +5,8 @@ displayName: CartSetLineItemTaxAmountAction
discriminatorValue: setLineItemTaxAmount
example: !include ../../../examples/Cart/CartSetLineItemTaxAmountAction.json
description: |
- Can be used if the Cart has the `ExternalAmount` [TaxMode](ctp:api:type:TaxMode).
+ Can be used if the Cart has the `ExternalAmount` [TaxMode](ctp:api:type:TaxMode). This update action sets the `taxedPrice` and `taxRate` on a Line Item and must be used after any price-affecting change occurs.
+
properties:
lineItemId?:
type: string
diff --git a/api-specs/api/types/cart/updates/CartSetShippingAddressAction.raml b/api-specs/api/types/cart/updates/CartSetShippingAddressAction.raml
index 70ec192e7c..976d005159 100644
--- a/api-specs/api/types/cart/updates/CartSetShippingAddressAction.raml
+++ b/api-specs/api/types/cart/updates/CartSetShippingAddressAction.raml
@@ -7,7 +7,7 @@ example: !include ../../../examples/Cart/CartSetShippingAddressAction.json
description: |
Setting the shipping address also sets the [TaxRate](ctp:api:type:TaxRate) of Line Items and calculates the [TaxedPrice](ctp:api:type:TaxedPrice).
- If a matching price cannot be found for the given shipping address during [Line Item Price selection](ctp:api:type:LineItemPriceSelection),
+ If a matching price cannot be found for the given shipping address during [Line Item price selection](/../api/pricing-and-discounts-overview#line-item-price-selection),
a [MissingTaxRateForCountry](ctp:api:type:MissingTaxRateForCountryError) error is returned.
If you want to allow shipping to states inside a country that are not explicitly covered by a TaxRate,
diff --git a/api-specs/api/types/channel/ChannelRoleEnum.raml b/api-specs/api/types/channel/ChannelRoleEnum.raml
index af27245401..e7976ea8a6 100644
--- a/api-specs/api/types/channel/ChannelRoleEnum.raml
+++ b/api-specs/api/types/channel/ChannelRoleEnum.raml
@@ -15,7 +15,7 @@ enum:
Channel can be used to track inventory entries (for example, Channels with this role can be treated as warehouses).
ProductDistribution: |
Channel can be used to expose Products to a specific distribution Channel.
- The Channel can be used by a Cart to [select](ctp:api:type:LineItemPriceSelection) a Product Price.
+ The Channel can be used by a Cart to [select](/../api/pricing-and-discounts-overview#line-item-price-selection) a Product Price.
OrderExport: |
Channel can be used to track order export activities.
OrderImport: |
diff --git a/api-specs/api/types/common/BaseResource.raml b/api-specs/api/types/common/BaseResource.raml
index 8327310ad7..79b9352edc 100644
--- a/api-specs/api/types/common/BaseResource.raml
+++ b/api-specs/api/types/common/BaseResource.raml
@@ -2,6 +2,7 @@
(package): Common
displayName: BaseResource
type: object
+(expandable): true
(abstract): true
(ignoreValidators): [PolymorphicSubtypesRule]
properties:
diff --git a/api-specs/api/types/common/CentPrecisionMoney.raml b/api-specs/api/types/common/CentPrecisionMoney.raml
index 54f3924abe..e383ee6ca5 100644
--- a/api-specs/api/types/common/CentPrecisionMoney.raml
+++ b/api-specs/api/types/common/CentPrecisionMoney.raml
@@ -3,8 +3,7 @@
displayName: CentPrecisionMoney
type: TypedMoney
discriminatorValue: centPrecision
-description: |
- Object that stores cent amounts in a specific currency.
+description: Object that stores money in cent amounts of a specific currency.
example: !include ../../examples/Common/CentPrecisionMoney.json
properties:
fractionDigits:
diff --git a/api-specs/api/types/common/ClientLogging.raml b/api-specs/api/types/common/ClientLogging.raml
index f06d8d09d6..04d5dfebbd 100644
--- a/api-specs/api/types/common/ClientLogging.raml
+++ b/api-specs/api/types/common/ClientLogging.raml
@@ -2,6 +2,7 @@
(package): Common
displayName: ClientLogging
type: object
+(expandable): true
description: |
These objects represent information about which [API Client](/../api/projects/api-clients) created or modified a resource. For more information, see [Client Logging](/../api/general-concepts#client-logging).
(ignoreValidators): [PolymorphicSubtypesRule]
diff --git a/api-specs/api/types/common/DiscountedPrice.raml b/api-specs/api/types/common/DiscountedPrice.raml
index 2d6874712d..e26e699851 100644
--- a/api-specs/api/types/common/DiscountedPrice.raml
+++ b/api-specs/api/types/common/DiscountedPrice.raml
@@ -2,6 +2,7 @@
(package): Common
displayName: DiscountedPrice
type: object
+(expandable): true
properties:
value:
type: TypedMoney
diff --git a/api-specs/api/types/common/HighPrecisionMoney.raml b/api-specs/api/types/common/HighPrecisionMoney.raml
index d5cc902e17..1a16a77ee8 100644
--- a/api-specs/api/types/common/HighPrecisionMoney.raml
+++ b/api-specs/api/types/common/HighPrecisionMoney.raml
@@ -3,7 +3,7 @@
displayName: HighPrecisionMoney
type: TypedMoney
discriminatorValue: highPrecision
-description: Money object that stores an amount of a fraction of the smallest indivisible unit of the specified currency.
+description: Object that stores money as a fraction of the smallest indivisible unit of a specific currency.
example: !include ../../examples/Common/HighPrecisionMoney.json
properties:
preciseAmount:
diff --git a/api-specs/api/types/common/HighPrecisionMoneyDraft.raml b/api-specs/api/types/common/HighPrecisionMoneyDraft.raml
index 9cd0053403..aff2bff3a4 100644
--- a/api-specs/api/types/common/HighPrecisionMoneyDraft.raml
+++ b/api-specs/api/types/common/HighPrecisionMoneyDraft.raml
@@ -3,7 +3,7 @@
displayName: HighPrecisionMoneyDraft
type: TypedMoneyDraft
discriminatorValue: highPrecision
-description: Money draft object to store an amount of a fraction of the smallest indivisible unit of the specified currency.
+description: Draft object to store money as a fraction of the smallest indivisible unit for a specific currency.
example: !include ../../examples/Common/HighPrecisionMoneyDraft.json
properties:
fractionDigits:
diff --git a/api-specs/api/types/common/Money.raml b/api-specs/api/types/common/Money.raml
index 074a7fd6b7..94c6e8f5c4 100644
--- a/api-specs/api/types/common/Money.raml
+++ b/api-specs/api/types/common/Money.raml
@@ -2,8 +2,7 @@
(package): Common
displayName: Money
type: object
-description: |
- Draft type that stores amounts only in cent precision for the specified currency.
+description: Draft object to store money in cent amounts for a specific currency.
example: !include ../../examples/Common/Money.json
(ignoreValidators): [PolymorphicSubtypesRule]
properties:
diff --git a/api-specs/api/types/common/Price.raml b/api-specs/api/types/common/Price.raml
index c99f75f719..cf93b14e99 100644
--- a/api-specs/api/types/common/Price.raml
+++ b/api-specs/api/types/common/Price.raml
@@ -5,6 +5,7 @@ description: |-
The representation for prices embedded in [LineItems](ctp:api:type:LineItem) and in [ProductVariants](ctp:api:type:ProductVariant) when the [ProductPriceMode](ctp:api:type:ProductPriceModeEnum) is `Embedded`.
For the `Standalone` ProductPriceMode refer to [StandalonePrice](ctp:api:type:StandalonePrice).
type: object
+(expandable): true
properties:
id:
type: string
@@ -45,7 +46,7 @@ properties:
type: DiscountedPrice
description: |
Is set if a [ProductDiscount](ctp:api:type:ProductDiscount) has been applied.
- If set, the API uses the DiscountedPrice value for the [Line Item Price selection](ctp:api:type:LineItemPriceSelection).
+ If set, the API uses the DiscountedPrice value for the [Line Item price selection](/../api/pricing-and-discounts-overview#line-item-price-selection).
When a [relative discount](ctp:api:type:ProductDiscountValueRelative) has been applied and the fraction part of the DiscountedPrice `value` is 0.5, the `value` is rounded in favor of the customer with [half-down rounding](https://en.wikipedia.org/wiki/Rounding#Round_half_down).
tiers?:
type: PriceTier[]
diff --git a/api-specs/api/types/common/QueryPrice.raml b/api-specs/api/types/common/QueryPrice.raml
index eac66a78f2..b009b3e076 100644
--- a/api-specs/api/types/common/QueryPrice.raml
+++ b/api-specs/api/types/common/QueryPrice.raml
@@ -2,6 +2,7 @@
(package): Common
displayName: QueryPrice
type: object
+(expandable): true
properties:
id?:
type: string
diff --git a/api-specs/api/types/common/Reference.raml b/api-specs/api/types/common/Reference.raml
index 2f680c592f..baacff3349 100644
--- a/api-specs/api/types/common/Reference.raml
+++ b/api-specs/api/types/common/Reference.raml
@@ -2,6 +2,7 @@
(package): Common
displayName: Reference
type: object
+(expandable): true
discriminator: typeId
description: |
A Reference represents a loose reference to another resource in the same Project identified by its `id`. The `typeId` indicates the type of the referenced resource. Each resource type has its corresponding Reference type, like [ChannelReference](ctp:api:type:ChannelReference). A referenced resource can be embedded through [Reference Expansion](/general-concepts#reference-expansion). The expanded reference is the value of an additional `obj` field then.
diff --git a/api-specs/api/types/common/ReferenceTypeId.raml b/api-specs/api/types/common/ReferenceTypeId.raml
index 22c9199a48..39b83a837f 100644
--- a/api-specs/api/types/common/ReferenceTypeId.raml
+++ b/api-specs/api/types/common/ReferenceTypeId.raml
@@ -93,7 +93,7 @@ enum:
product-discount: |
References a [ProductDiscount](ctp:api:type:ProductDiscount).
product-price: |
- References an [Embedded Price](/projects/products#embedded-price).
+ References an [Embedded Price](ctp:api:type:Price).
product-selection: |
References a [ProductSelection](ctp:api:type:ProductSelection).
product-tailoring: |
diff --git a/api-specs/api/types/common/ScopedPrice.raml b/api-specs/api/types/common/ScopedPrice.raml
index bad452fdf8..5c1f635dcf 100644
--- a/api-specs/api/types/common/ScopedPrice.raml
+++ b/api-specs/api/types/common/ScopedPrice.raml
@@ -2,9 +2,10 @@
(package): Common
displayName: ScopedPrice
type: object
+(expandable): true
description: |
Scoped Price is contained in a [ProductVariant](ctp:api:type:ProductVariant) which is returned in response to a
- [Product Projection Search](ctp:api:type:ProductProjectionSearchFilterScopedPrice) request when [Scoped Price Search](ctp:api:type:ScopedPriceSearch) is used.
+ [Product Projection Search](ctp:api:type:ProductProjectionSearchFilterScopedPrice) request when [Scoped Price Search](/../api/pricing-and-discounts-overview#scoped-price-search) is used.
properties:
id:
type: string
diff --git a/api-specs/api/types/customer-search/CustomerIndexingProgress.raml b/api-specs/api/types/customer-search/CustomerIndexingProgress.raml
new file mode 100644
index 0000000000..a529fdb0fc
--- /dev/null
+++ b/api-specs/api/types/customer-search/CustomerIndexingProgress.raml
@@ -0,0 +1,18 @@
+#%RAML 1.0 DataType
+(package): CustomerSearch
+type: object
+(beta): true
+displayName: CustomerIndexingProgress
+properties:
+ indexed:
+ type: number
+ format: int32
+ description: The number of Customers successfully indexed.
+ failed:
+ type: number
+ format: int32
+ description: The number of Customers that failed to be indexed.
+ estimatedTotal:
+ type: number
+ format: int32
+ description: The estimated total number of Customers to be indexed.
diff --git a/api-specs/api/types/customer-search/CustomerIndexingStatus.raml b/api-specs/api/types/customer-search/CustomerIndexingStatus.raml
new file mode 100644
index 0000000000..7eed68ce17
--- /dev/null
+++ b/api-specs/api/types/customer-search/CustomerIndexingStatus.raml
@@ -0,0 +1,17 @@
+#%RAML 1.0 DataType
+(package): Project
+type: string
+(beta): true
+displayName: CustomerIndexingStatus
+description: |
+ The current indexing status of Customer Search.
+(enumDescriptions):
+ Scheduled: Indexing is scheduled.
+ Indexing: Indexing is in progress.
+ Ready: Indexing is complete and the [Search Customers](/../api/projects/customer-search#search-customers) endpoint returns up-to-date results.
+ Failed: Indexing failed due to an internal error.
+enum:
+ - Scheduled
+ - Indexing
+ - Ready
+ - Failed
diff --git a/api-specs/api/types/customer-search/CustomerPagedSearchResponse.raml b/api-specs/api/types/customer-search/CustomerPagedSearchResponse.raml
new file mode 100644
index 0000000000..cf19ce3e93
--- /dev/null
+++ b/api-specs/api/types/customer-search/CustomerPagedSearchResponse.raml
@@ -0,0 +1,30 @@
+#%RAML 1.0 DataType
+(package): CustomerSearch
+displayName: CustomerPagedSearchResponse
+example: !include ../../examples/CustomerSearch/CustomerPagedSearchResponse.json
+type: object
+(beta): true
+properties:
+ total:
+ type: number
+ format: int64
+ minimum: 0
+ description: Total number of results matching the query.
+ limit:
+ type: number
+ format: int32
+ minimum: 0
+ maximum: 100
+ description: |
+ Number of [results requested](/../api/general-concepts#limit).
+ offset:
+ type: number
+ format: int32
+ minimum: 0
+ maximum: 9900
+ description: |
+ Number of [elements skipped](/../api/general-concepts#offset).
+ results:
+ type: CustomerSearchResult[]
+ description: |
+ Search result containing the Customers matching the search query.
diff --git a/api-specs/api/types/customer-search/CustomerSearchIndexingStatusResponse.raml b/api-specs/api/types/customer-search/CustomerSearchIndexingStatusResponse.raml
new file mode 100644
index 0000000000..6271f4f101
--- /dev/null
+++ b/api-specs/api/types/customer-search/CustomerSearchIndexingStatusResponse.raml
@@ -0,0 +1,24 @@
+#%RAML 1.0 DataType
+(package): CustomerSearch
+displayName: CustomerSearchIndexingStatusResponse
+type: object
+(beta): true
+example: !include ../../examples/CustomerSearch/CustomerSearchIndexingStatusResponse.json
+properties:
+ status:
+ type: CustomerIndexingStatus
+ description: Current status of indexing the Customer Search.
+ states?:
+ type: CustomerIndexingProgress
+ description: Progress of indexing. Only available when indexing is in progress.
+ startedAt?:
+ type: datetime
+ description: Date and time (UTC) when the last indexing started.
+ lastModifiedAt?:
+ type: datetime
+ description: Time when the status was last modified.
+ retryCount?:
+ type: number
+ format: int32
+ description: |
+ Indicates how many times the system tried to start indexing after failed attempts. The counter is set to null after an indexing finished successfully.
diff --git a/api-specs/api/types/customer-search/CustomerSearchRequest.raml b/api-specs/api/types/customer-search/CustomerSearchRequest.raml
new file mode 100644
index 0000000000..7db27488c3
--- /dev/null
+++ b/api-specs/api/types/customer-search/CustomerSearchRequest.raml
@@ -0,0 +1,25 @@
+#%RAML 1.0 DataType
+(package): CustomerSearch
+type: object
+(beta): true
+example: !include ../../examples/CustomerSearch/CustomerSearchRequest.json
+displayName: CustomerSearchRequest
+properties:
+ query?:
+ type: SearchQuery
+ description: The Customer search query.
+ sort?:
+ type: SearchSorting[]
+ description: Controls how results to your query are sorted. If not provided, the results are sorted by relevance in descending order.
+ limit?:
+ type: number
+ format: int32
+ default: 20
+ maximum: 100
+ description: The maximum number of search results to be returned.
+ offset?:
+ type: number
+ format: int32
+ default: 0
+ maximum: 9900
+ description: The number of search results to be skipped in the response for pagination.
diff --git a/api-specs/api/types/customer-search/CustomerSearchResult.raml b/api-specs/api/types/customer-search/CustomerSearchResult.raml
new file mode 100644
index 0000000000..e7577de131
--- /dev/null
+++ b/api-specs/api/types/customer-search/CustomerSearchResult.raml
@@ -0,0 +1,15 @@
+#%RAML 1.0 DataType
+(package): CustomerSearch
+displayName: CustomerSearchResult
+type: object
+(beta): true
+properties:
+ id:
+ (identifier): true
+ type: string
+ description: |
+ `id` of the [Customer](ctp:api:type:Customer) matching the search query.
+ relevance:
+ type: number
+ description: |
+ How closely this customer matches the search query.
diff --git a/api-specs/api/types/customer/updates/CustomerSetDefaultShippingAddressAction.raml b/api-specs/api/types/customer/updates/CustomerSetDefaultShippingAddressAction.raml
index 769a00573f..896b6c1234 100644
--- a/api-specs/api/types/customer/updates/CustomerSetDefaultShippingAddressAction.raml
+++ b/api-specs/api/types/customer/updates/CustomerSetDefaultShippingAddressAction.raml
@@ -8,7 +8,6 @@ description: |
Sets the default shipping address from `addresses`.
The action adds the `id` of the specified address to the `shippingAddressIds` if not contained already. Either `addressId` or `addressKey` is required.
- If the Tax Category of the Cart [ShippingInfo](ctp:api:type:ShippingInfo) is missing the TaxRate matching country and state given in the `shippingAddress` of that Cart, a [MissingTaxRateForCountry](ctp:api:type:MissingTaxRateForCountryError) error is returned.
properties:
addressId?:
type: string
diff --git a/api-specs/api/types/discount-code/DiscountCodeDraft.raml b/api-specs/api/types/discount-code/DiscountCodeDraft.raml
index a807cd0041..ee77202a95 100644
--- a/api-specs/api/types/discount-code/DiscountCodeDraft.raml
+++ b/api-specs/api/types/discount-code/DiscountCodeDraft.raml
@@ -43,11 +43,15 @@ properties:
format: int64
description: |
Number of times the DiscountCode can be applied.
+
+ If not set, the DiscountCode can be applied any number of times.
maxApplicationsPerCustomer?:
type: number
format: int64
description: |
Number of times the DiscountCode can be applied per Customer.
+
+ If not set, the DiscountCode can be applied any number of times.
custom?:
type: CustomFieldsDraft
description: |
diff --git a/api-specs/api/types/discount-code/updates/DiscountCodeSetMaxApplicationsAction.raml b/api-specs/api/types/discount-code/updates/DiscountCodeSetMaxApplicationsAction.raml
index 150b1b4d13..79fff44caf 100644
--- a/api-specs/api/types/discount-code/updates/DiscountCodeSetMaxApplicationsAction.raml
+++ b/api-specs/api/types/discount-code/updates/DiscountCodeSetMaxApplicationsAction.raml
@@ -9,4 +9,6 @@ properties:
type: number
format: int64
description: |
- Value to set. If empty, any existing value will be removed.
+ Value to set.
+
+ If empty, any existing value will be removed and the DiscountCode can be applied any number of times.
diff --git a/api-specs/api/types/discount-code/updates/DiscountCodeSetMaxApplicationsPerCustomerAction.raml b/api-specs/api/types/discount-code/updates/DiscountCodeSetMaxApplicationsPerCustomerAction.raml
index 182bffa362..9f73fe42bb 100644
--- a/api-specs/api/types/discount-code/updates/DiscountCodeSetMaxApplicationsPerCustomerAction.raml
+++ b/api-specs/api/types/discount-code/updates/DiscountCodeSetMaxApplicationsPerCustomerAction.raml
@@ -9,4 +9,6 @@ properties:
type: number
format: int64
description: |
- Value to set. If empty, any existing value will be removed.
+ Value to set.
+
+ If empty, any existing value will be removed and the DiscountCode can be applied any number of times.
diff --git a/api-specs/api/types/error/GeneralError.raml b/api-specs/api/types/error/GeneralError.raml
index aea0ccfa65..ceec8332ce 100644
--- a/api-specs/api/types/error/GeneralError.raml
+++ b/api-specs/api/types/error/GeneralError.raml
@@ -6,7 +6,7 @@ discriminatorValue: General
description: |
Returned when a server-side problem occurs before or after data persistence. In some cases, the requested action may successfully complete after the error is returned. Therefore, it is recommended to verify the status of the requested resource after receiving a 500 error.
- If you encounter this error, report it using the [Support Portal](https://support.commercetools.com).
+ If you encounter this error, report it to the [Composable Commerce support team](https://support.commercetools.com).
properties:
code:
type: string
diff --git a/api-specs/api/types/error/MissingTaxRateForCountryError.raml b/api-specs/api/types/error/MissingTaxRateForCountryError.raml
index 046b85a464..6182250c2d 100644
--- a/api-specs/api/types/error/MissingTaxRateForCountryError.raml
+++ b/api-specs/api/types/error/MissingTaxRateForCountryError.raml
@@ -8,7 +8,7 @@ description: |
The error is returned as a failed response to:
- - [Set Default Shipping Address](ctp:api:type:CustomerSetDefaultShippingAddressAction), [Add LineItem](ctp:api:type:CartAddLineItemAction), [Add CustomLineItem](ctp:api:type:CartAddCustomLineItemAction), [Set Shipping Address](ctp:api:type:CartSetShippingAddressAction), [Add LineItem](ctp:api:type:MyCartAddLineItemAction), [Add LineItem](ctp:api:type:StagedOrderAddLineItemAction), and [Add CustomLineItem](ctp:api:type:StagedOrderAddCustomLineItemAction) update actions
+ - [Add LineItem](ctp:api:type:CartAddLineItemAction), [Add CustomLineItem](ctp:api:type:CartAddCustomLineItemAction), [Set Shipping Address](ctp:api:type:CartSetShippingAddressAction), [Add LineItem](ctp:api:type:MyCartAddLineItemAction), [Add LineItem](ctp:api:type:StagedOrderAddLineItemAction), and [Add CustomLineItem](ctp:api:type:StagedOrderAddCustomLineItemAction) update actions
- [Create Order from Cart](ctp:api:endpoint:/{projectKey}/orders:POST) and [Create Order in Store from Cart](ctp:api:endpoint:/{projectKey}/in-store/orders:POST) requests.
properties:
code:
diff --git a/api-specs/api/types/error/PendingOperationError.raml b/api-specs/api/types/error/PendingOperationError.raml
index fa18db1a78..6a77bd0ecd 100644
--- a/api-specs/api/types/error/PendingOperationError.raml
+++ b/api-specs/api/types/error/PendingOperationError.raml
@@ -7,7 +7,7 @@ description: |
Returned when a previous conflicting operation is still pending and needs to finish before the request can succeed.
The client application should retry the request with exponential backoff up to a point where further delay is unacceptable.
- If the error persists, report it using the [Support Portal](https://support.commercetools.com).
+ If the error persists, report it to the [Composable Commerce support team](https://support.commercetools.com).
properties:
code:
type: string
diff --git a/api-specs/api/types/error/graphql/GraphQLGeneralError.raml b/api-specs/api/types/error/graphql/GraphQLGeneralError.raml
index d4b788638d..f42c03a3fc 100644
--- a/api-specs/api/types/error/graphql/GraphQLGeneralError.raml
+++ b/api-specs/api/types/error/graphql/GraphQLGeneralError.raml
@@ -6,7 +6,7 @@ discriminatorValue: General
description: |
Returned when a server-side problem occurs before or after data persistence. In some cases, the requested action may successfully complete after the error is returned. Therefore, it is recommended to verify the status of the requested resource after receiving a 500 error.
- If you encounter this error, report it using the [Support Portal](https://support.commercetools.com).
+ If you encounter this error, report it to the [Composable Commerce support team](https://support.commercetools.com).
properties:
code:
type: string
diff --git a/api-specs/api/types/error/graphql/GraphQLMissingTaxRateForCountryError.raml b/api-specs/api/types/error/graphql/GraphQLMissingTaxRateForCountryError.raml
index 41959c3420..28435a5141 100644
--- a/api-specs/api/types/error/graphql/GraphQLMissingTaxRateForCountryError.raml
+++ b/api-specs/api/types/error/graphql/GraphQLMissingTaxRateForCountryError.raml
@@ -8,7 +8,7 @@ description: |
The error is returned as a failed response to:
- - [Set Default Shipping Address](ctp:api:type:CustomerSetDefaultShippingAddressAction), [Add LineItem](ctp:api:type:CartAddLineItemAction), [Add CustomLineItem](ctp:api:type:CartAddCustomLineItemAction), [Set Shipping Address](ctp:api:type:CartSetShippingAddressAction), [Add LineItem](ctp:api:type:MyCartAddLineItemAction), [Add LineItem](ctp:api:type:StagedOrderAddLineItemAction), and [Add CustomLineItem](ctp:api:type:StagedOrderAddCustomLineItemAction) update actions
+ - [Add LineItem](ctp:api:type:CartAddLineItemAction), [Add CustomLineItem](ctp:api:type:CartAddCustomLineItemAction), [Set Shipping Address](ctp:api:type:CartSetShippingAddressAction), [Add LineItem](ctp:api:type:MyCartAddLineItemAction), [Add LineItem](ctp:api:type:StagedOrderAddLineItemAction), and [Add CustomLineItem](ctp:api:type:StagedOrderAddCustomLineItemAction) update actions
- [Create Order from Cart](ctp:api:endpoint:/{projectKey}/orders:POST) and [Create Order in Store from Cart](ctp:api:endpoint:/{projectKey}/in-store/orders:POST) requests.
properties:
code:
diff --git a/api-specs/api/types/error/graphql/GraphQLPendingOperationError.raml b/api-specs/api/types/error/graphql/GraphQLPendingOperationError.raml
index 75fb33e4c1..539fb14a33 100644
--- a/api-specs/api/types/error/graphql/GraphQLPendingOperationError.raml
+++ b/api-specs/api/types/error/graphql/GraphQLPendingOperationError.raml
@@ -7,7 +7,7 @@ description: |
Returned when a previous conflicting operation is still pending and needs to finish before the request can succeed.
The client application should retry the request with exponential backoff up to a point where further delay is unacceptable.
- If the error persists, report it using the [Support Portal](https://support.commercetools.com).
+ If the error persists, report it to the [Composable Commerce support team](https://support.commercetools.com).
properties:
code:
type: string
diff --git a/api-specs/api/types/extension/ExtensionDraft.raml b/api-specs/api/types/extension/ExtensionDraft.raml
index ff0c05a81c..661fd32400 100644
--- a/api-specs/api/types/extension/ExtensionDraft.raml
+++ b/api-specs/api/types/extension/ExtensionDraft.raml
@@ -26,5 +26,5 @@ properties:
The maximum value is 10000 ms (10 seconds) for `payment` Extensions and 2000 ms (2 seconds) for all other Extensions.
This limit can be increased per Project after we review the performance impact.
- Please contact our support via the [Support Portal](https://support.commercetools.com) and provide the Region, Project key, and use case.
+ Please contact the [Composable Commerce support team](https://support.commercetools.com) and provide the Region, Project key, and use case.
default: 2000
diff --git a/api-specs/api/types/extension/updates/ExtensionSetTimeoutInMsAction.raml b/api-specs/api/types/extension/updates/ExtensionSetTimeoutInMsAction.raml
index 835bee69db..8473f68529 100644
--- a/api-specs/api/types/extension/updates/ExtensionSetTimeoutInMsAction.raml
+++ b/api-specs/api/types/extension/updates/ExtensionSetTimeoutInMsAction.raml
@@ -12,5 +12,5 @@ properties:
The maximum value is 10000 ms (10 seconds) for `payment` Extensions and 2000 ms (2 seconds) for all other Extensions.
This limit can be increased per Project after we review the performance impact.
- Please contact our support via the [Support Portal](https://support.commercetools.com/) and provide the Region, Project key, and use case.
+ Please contact the [Composable Commerce support team](https://support.commercetools.com/) and provide the Region, Project key, and use case.
default: 2000
diff --git a/api-specs/api/types/me/MyCartDraft.raml b/api-specs/api/types/me/MyCartDraft.raml
index b659dbbf6b..5f54082869 100644
--- a/api-specs/api/types/me/MyCartDraft.raml
+++ b/api-specs/api/types/me/MyCartDraft.raml
@@ -70,7 +70,7 @@ properties:
country?:
type: CountryCode
description: |
- Used for [LineItem Price selection](ctp:api:type:LineItemPriceSelection).
+ Used for [Line Item price selection](/../api/pricing-and-discounts-overview#line-item-price-selection).
If used for [Create Cart in Store](ctp:api:endpoint:/{projectKey}/in-store/me/carts:POST), the provided country must be one of the [Store's](ctp:api:type:Store) `countries`.
locale?:
type: Locale
diff --git a/api-specs/api/types/me/MyLineItemDraft.raml b/api-specs/api/types/me/MyLineItemDraft.raml
index c4297a003e..76813104fa 100644
--- a/api-specs/api/types/me/MyLineItemDraft.raml
+++ b/api-specs/api/types/me/MyLineItemDraft.raml
@@ -47,7 +47,7 @@ properties:
distributionChannel?:
type: ChannelResourceIdentifier
description: |
- Used to [select](ctp:api:type:LineItemPriceSelection) a Product Price.
+ Used to [select](/../api/pricing-and-discounts-overview#line-item-price-selection) a Product Price.
The Channel must have the `ProductDistribution` [ChannelRoleEnum](ctp:api:type:ChannelRoleEnum).
If the Cart is bound to a [Store](ctp:api:type:Store) with `distributionChannels` set,
diff --git a/api-specs/api/types/me/MyPayment.raml b/api-specs/api/types/me/MyPayment.raml
index cbb8878d1a..e8eff949ad 100644
--- a/api-specs/api/types/me/MyPayment.raml
+++ b/api-specs/api/types/me/MyPayment.raml
@@ -2,6 +2,7 @@
(package): Me
type: object
displayName: MyPayment
+(expandable): true
(updateType): MyPaymentUpdate
(actionType): MyPaymentUpdateAction
properties:
diff --git a/api-specs/api/types/me/updates/MyCartAddLineItemAction.raml b/api-specs/api/types/me/updates/MyCartAddLineItemAction.raml
index 9f0a4fbc87..629950030d 100644
--- a/api-specs/api/types/me/updates/MyCartAddLineItemAction.raml
+++ b/api-specs/api/types/me/updates/MyCartAddLineItemAction.raml
@@ -3,11 +3,11 @@
type: MyCartUpdateAction
displayName: MyCartAddLineItemAction
discriminatorValue: addLineItem
-example: !include ../../../examples/Cart/CartAddLineItemAction.json
+example: !include ../../../examples/Cart/MyCartAddLineItemAction.json
description: |
If the Cart contains a [LineItem](ctp:api:type:LineItem) for a Product Variant with the same [LineItemMode](ctp:api:type:LineItemMode), [Custom Fields](/../api/projects/custom-fields), supply and distribution channel, then only the quantity of the existing Line Item is increased.
If [LineItem](ctp:api:type:LineItem) `shippingDetails` is set, it is merged. All addresses will be present afterwards and, for address keys present in both shipping details, the quantity will be summed up.
- The [LineItem](ctp:api:type:LineItem) price is set as described in [LineItem Price selection](ctp:api:type:LineItemPriceSelection).
+ The [LineItem](ctp:api:type:LineItem) price is set as described in [Line Item price selection](/../api/pricing-and-discounts-overview#line-item-price-selection).
If the Tax Rate is not set, a [MissingTaxRateForCountry](ctp:api:type:MissingTaxRateForCountryError) error is returned.
@@ -57,7 +57,7 @@ properties:
distributionChannel?:
type: ChannelResourceIdentifier
description: |
- Used to [select](ctp:api:type:LineItemPriceSelection) a Product Price.
+ Used to [select](/../api/pricing-and-discounts-overview#line-item-price-selection) a Product Price.
The Channel must have the `ProductDistribution` [ChannelRoleEnum](ctp:api:type:ChannelRoleEnum).
If the Cart is bound to a [Store](ctp:api:type:Store) with `distributionChannels` set, the Channel must match one of the Store's distribution channels.
supplyChannel?:
diff --git a/api-specs/api/types/me/updates/MyCartRemoveLineItemAction.raml b/api-specs/api/types/me/updates/MyCartRemoveLineItemAction.raml
index afceaa1afb..65e6055ae4 100644
--- a/api-specs/api/types/me/updates/MyCartRemoveLineItemAction.raml
+++ b/api-specs/api/types/me/updates/MyCartRemoveLineItemAction.raml
@@ -5,7 +5,7 @@ displayName: MyCartRemoveLineItemAction
discriminatorValue: removeLineItem
example: !include ../../../examples/Cart/CartRemoveLineItemAction.json
description: |
- The [LineItem](ctp:api:type:LineItem) price is updated as described in [LineItem Price selection](ctp:api:type:LineItemPriceSelection).
+ The [LineItem](ctp:api:type:LineItem) price is updated as described in [Line Item price selection](/../api/pricing-and-discounts-overview#line-item-price-selection).
properties:
lineItemId?:
type: string
diff --git a/api-specs/api/types/me/updates/MyCartSetLineItemDistributionChannelAction.raml b/api-specs/api/types/me/updates/MyCartSetLineItemDistributionChannelAction.raml
index 086b953eb9..f02657afac 100644
--- a/api-specs/api/types/me/updates/MyCartSetLineItemDistributionChannelAction.raml
+++ b/api-specs/api/types/me/updates/MyCartSetLineItemDistributionChannelAction.raml
@@ -5,7 +5,7 @@ displayName: MyCartSetLineItemDistributionChannelAction
discriminatorValue: setLineItemDistributionChannel
example: !include ../../../examples/Cart/CartSetLineItemDistributionChannelAction.json
description: |
- Setting a distribution channel for a [LineItem](ctp:api:type:LineItem) can lead to an updated `price` as described in [LineItem Price selection](ctp:api:type:LineItemPriceSelection).
+ Setting a distribution channel for a [LineItem](ctp:api:type:LineItem) can lead to an updated `price` as described in [Line Item price selection](/../api/pricing-and-discounts-overview#line-item-price-selection).
properties:
lineItemId?:
type: string
diff --git a/api-specs/api/types/me/updates/MyCartSetShippingAddressAction.raml b/api-specs/api/types/me/updates/MyCartSetShippingAddressAction.raml
index cb1f2d38fb..d028f77cea 100644
--- a/api-specs/api/types/me/updates/MyCartSetShippingAddressAction.raml
+++ b/api-specs/api/types/me/updates/MyCartSetShippingAddressAction.raml
@@ -7,7 +7,7 @@ example: !include ../../../examples/Cart/CartSetShippingAddressAction.json
description: |
Setting the shipping address also sets the [TaxRate](ctp:api:type:TaxRate) of Line Items and calculates the [TaxedPrice](ctp:api:type:TaxedPrice).
- If a matching price cannot be found for the given shipping address during [Line Item Price selection](ctp:api:type:LineItemPriceSelection),
+ If a matching price cannot be found for the given shipping address during [Line Item price selection](/../api/pricing-and-discounts-overview#line-item-price-selection),
a [MissingTaxRateForCountry](ctp:api:type:MissingTaxRateForCountryError) error is returned.
If you want to allow shipping to states inside a country that are not explicitly covered by a TaxRate,
diff --git a/api-specs/api/types/message/BusinessUnitApprovalRuleModeChangedMessage.raml b/api-specs/api/types/message/BusinessUnitApprovalRuleModeChangedMessage.raml
new file mode 100644
index 0000000000..0ecc73f76b
--- /dev/null
+++ b/api-specs/api/types/message/BusinessUnitApprovalRuleModeChangedMessage.raml
@@ -0,0 +1,16 @@
+#%RAML 1.0 DataType
+(package): Message
+type: Message
+displayName: BusinessUnitApprovalRuleModeChangedMessage
+discriminatorValue: BusinessUnitApprovalRuleModeChanged
+description: |
+ Generated after a successful [Change Approval Rule Mode](ctp:api:type:BusinessUnitChangeApprovalRuleModeAction) update action.
+properties:
+ approvalRuleMode:
+ type: BusinessUnitApprovalRuleMode
+ description: |
+ [BusinessUnitApprovalRuleMode](ctp:api:type:BusinessUnitApprovalRuleMode) of the Business Unit after the [Change Approval Rule Mode](ctp:api:type:BusinessUnitChangeApprovalRuleModeAction) update action.
+ oldApprovalRuleMode?:
+ type: BusinessUnitApprovalRuleMode
+ description: |
+ [BusinessUnitApprovalRuleMode](ctp:api:type:BusinessUnitApprovalRuleMode) of the Business Unit before the [Change Approval Rule Mode](ctp:api:type:BusinessUnitChangeApprovalRuleModeAction) update action.
diff --git a/api-specs/api/types/message/OrderLineItemDiscountSetMessage.raml b/api-specs/api/types/message/OrderLineItemDiscountSetMessage.raml
index 6e0bb9e1ea..1e69914d11 100644
--- a/api-specs/api/types/message/OrderLineItemDiscountSetMessage.raml
+++ b/api-specs/api/types/message/OrderLineItemDiscountSetMessage.raml
@@ -19,7 +19,7 @@ properties:
description: |
Array of [DiscountedLineItemPriceForQuantity](ctp:api:type:DiscountedLineItemPriceForQuantity) after the Discount recalculation.
totalPrice:
- type: Money
+ type: CentPrecisionMoney
description: |
Total Price of the [Line Item](ctp:api:type:LineItem) after the Discount recalculation.
taxedPrice?:
diff --git a/api-specs/api/types/message/ProductPriceAddedMessage.raml b/api-specs/api/types/message/ProductPriceAddedMessage.raml
index f496b55d65..f8bca5b020 100644
--- a/api-specs/api/types/message/ProductPriceAddedMessage.raml
+++ b/api-specs/api/types/message/ProductPriceAddedMessage.raml
@@ -14,7 +14,7 @@ properties:
price:
type: Price
description: |
- The [Embedded Price](/projects/products#embedded-price) that was added to the [ProductVariant](ctp:api:type:ProductVariant).
+ The Embedded Price that was added to the [ProductVariant](ctp:api:type:ProductVariant).
staged:
type: boolean
description: |
diff --git a/api-specs/api/types/message/ProductPriceChangedMessage.raml b/api-specs/api/types/message/ProductPriceChangedMessage.raml
index 49d65aae85..ba79df3411 100644
--- a/api-specs/api/types/message/ProductPriceChangedMessage.raml
+++ b/api-specs/api/types/message/ProductPriceChangedMessage.raml
@@ -14,11 +14,11 @@ properties:
oldPrice:
type: Price
description: |
- The current [Embedded Price](/projects/products#embedded-price) before the [Change Embedded Price](ctp:api:type:ProductChangePriceAction) update action.
+ The current Embedded Price before the [Change Embedded Price](ctp:api:type:ProductChangePriceAction) update action.
newPrice:
type: Price
description: |
- The [Embedded Price](/projects/products#embedded-price) after the [Change Embedded Price](ctp:api:type:ProductChangePriceAction) update action.
+ The Embedded Price after the [Change Embedded Price](ctp:api:type:ProductChangePriceAction) update action.
staged:
type: boolean
description: |
@@ -26,4 +26,4 @@ properties:
oldStagedPrice?:
type: Price
description: |
- The staged [Embedded Price](/projects/products#embedded-price) before the [Change Embedded Price](ctp:api:type:ProductChangePriceAction) update action.
+ The staged Embedded Price before the [Change Embedded Price](ctp:api:type:ProductChangePriceAction) update action.
diff --git a/api-specs/api/types/message/ProductPriceCustomFieldAddedMessage.raml b/api-specs/api/types/message/ProductPriceCustomFieldAddedMessage.raml
new file mode 100644
index 0000000000..5c276eaa0f
--- /dev/null
+++ b/api-specs/api/types/message/ProductPriceCustomFieldAddedMessage.raml
@@ -0,0 +1,29 @@
+#%RAML 1.0 DataType
+(package): Message
+type: Message
+displayName: ProductPriceCustomFieldAddedMessage
+discriminatorValue: ProductPriceCustomFieldAdded
+description: |
+ Generated after adding a Custom Field to a Price using the [Set Price CustomField](ctp:api:type:ProductSetProductPriceCustomFieldAction) update action.
+properties:
+ priceId:
+ type: string
+ description: |
+ Unique identifier of the [Price](ctp:api:type:Price) to which the Custom Field was added.
+ variantId:
+ type: number
+ format: int64
+ description: |
+ Unique identifier of the [ProductVariant](ctp:api:type:ProductVariant) to which the Price belongs.
+ staged:
+ type: boolean
+ description: |
+ Whether the update was only applied to the staged [Product Projection](ctp:api:type:ProductProjection).
+ name:
+ type: string
+ description: |
+ Name of the Custom Field that was added.
+ value:
+ type: CustomFieldValue
+ description: |
+ The added [CustomFieldValue](ctp:api:type:CustomFieldValue) based on the [FieldType](ctp:api:type:FieldType).
diff --git a/api-specs/api/types/message/ProductPriceCustomFieldChangedMessage.raml b/api-specs/api/types/message/ProductPriceCustomFieldChangedMessage.raml
new file mode 100644
index 0000000000..6eaa32f72f
--- /dev/null
+++ b/api-specs/api/types/message/ProductPriceCustomFieldChangedMessage.raml
@@ -0,0 +1,29 @@
+#%RAML 1.0 DataType
+(package): Message
+type: Message
+displayName: ProductPriceCustomFieldChangedMessage
+discriminatorValue: ProductPriceCustomFieldChanged
+description: |
+ Generated after changing an existing Custom Field on a Price using the [Set Price CustomField](ctp:api:type:ProductSetProductPriceCustomFieldAction) update action.
+properties:
+ priceId:
+ type: string
+ description: |
+ Unique identifier of the [Price](ctp:api:type:Price) of which the Custom Field was changed.
+ variantId:
+ type: number
+ format: int64
+ description: |
+ Unique identifier of the [ProductVariant](ctp:api:type:ProductVariant) to which the Price belongs.
+ staged:
+ type: boolean
+ description: |
+ Whether the update was only applied to the staged [Product Projection](ctp:api:type:ProductProjection).
+ name:
+ type: string
+ description: |
+ Name of the Custom Field that was changed.
+ value:
+ type: CustomFieldValue
+ description: |
+ [CustomFieldValue](ctp:api:type:CustomFieldValue) based on the [FieldType](ctp:api:type:FieldType) after the [Set Price CustomField](ctp:api:type:ProductSetProductPriceCustomFieldAction) update action.
diff --git a/api-specs/api/types/message/ProductPriceCustomFieldRemovedMessage.raml b/api-specs/api/types/message/ProductPriceCustomFieldRemovedMessage.raml
new file mode 100644
index 0000000000..e13fddf0cd
--- /dev/null
+++ b/api-specs/api/types/message/ProductPriceCustomFieldRemovedMessage.raml
@@ -0,0 +1,25 @@
+#%RAML 1.0 DataType
+(package): Message
+type: Message
+displayName: ProductPriceCustomFieldRemovedMessage
+discriminatorValue: ProductPriceCustomFieldRemoved
+description: |
+ Generated after removing a Custom Field from a Price using the [Set Price CustomField](ctp:api:type:ProductSetProductPriceCustomFieldAction) update action.
+properties:
+ priceId:
+ type: string
+ description: |
+ Unique identifier of the [Price](ctp:api:type:Price) from which the Custom Field was removed.
+ variantId:
+ type: number
+ format: int64
+ description: |
+ Unique identifier of the [ProductVariant](ctp:api:type:ProductVariant) to which the Price belongs.
+ staged:
+ type: boolean
+ description: |
+ Whether the update was only applied to the staged [Product Projection](ctp:api:type:ProductProjection).
+ name:
+ type: string
+ description: |
+ Name of the Custom Field that was removed.
diff --git a/api-specs/api/types/message/ProductPriceCustomFieldsRemovedMessage.raml b/api-specs/api/types/message/ProductPriceCustomFieldsRemovedMessage.raml
new file mode 100644
index 0000000000..010e9414df
--- /dev/null
+++ b/api-specs/api/types/message/ProductPriceCustomFieldsRemovedMessage.raml
@@ -0,0 +1,21 @@
+#%RAML 1.0 DataType
+(package): Message
+type: Message
+displayName: ProductPriceCustomFieldsRemovedMessage
+discriminatorValue: ProductPriceCustomFieldsRemoved
+description: |
+ Generated after removing a Custom Type from a Price using the [Set Price Custom Type](ctp:api:type:ProductSetProductPriceCustomTypeAction) update action.
+properties:
+ priceId:
+ type: string
+ description: |
+ Unique identifier of the [Price](ctp:api:type:Price) from which the Custom Type was removed.
+ variantId:
+ type: number
+ format: int64
+ description: |
+ Unique identifier of the [ProductVariant](ctp:api:type:ProductVariant) to which the Price belongs.
+ staged:
+ type: boolean
+ description: |
+ Whether the update was only applied to the staged [Product Projection](ctp:api:type:ProductProjection).
diff --git a/api-specs/api/types/message/ProductPriceCustomFieldsSetMessage.raml b/api-specs/api/types/message/ProductPriceCustomFieldsSetMessage.raml
new file mode 100644
index 0000000000..edb0f1e6db
--- /dev/null
+++ b/api-specs/api/types/message/ProductPriceCustomFieldsSetMessage.raml
@@ -0,0 +1,29 @@
+#%RAML 1.0 DataType
+(package): Message
+type: Message
+displayName: ProductPriceCustomFieldsSetMessage
+discriminatorValue: ProductPriceCustomFieldsSet
+description: |
+ Generated after a successful [Set Price Custom Type](ctp:api:type:ProductSetProductPriceCustomTypeAction) update action.
+properties:
+ priceId:
+ type: string
+ description: |
+ Unique identifier of the [Price](ctp:api:type:Price) on which the Custom Type was set.
+ variantId:
+ type: number
+ format: int64
+ description: |
+ Unique identifier of the [ProductVariant](ctp:api:type:ProductVariant) to which the Price belongs.
+ staged:
+ type: boolean
+ description: |
+ Whether the update was only applied to the staged [Product Projection](ctp:api:type:ProductProjection).
+ customField:
+ type: CustomFields
+ description: |
+ Custom Fields that were set.
+ oldTypeId?:
+ type: string
+ description: |
+ `id` of the previous [Custom Type](ctp:api:type:Type). Absent if there was no previous Custom Type present.
diff --git a/api-specs/api/types/message/ProductPriceDiscountsSetUpdatedPrice.raml b/api-specs/api/types/message/ProductPriceDiscountsSetUpdatedPrice.raml
index dc66c7a695..5fd8d1a737 100644
--- a/api-specs/api/types/message/ProductPriceDiscountsSetUpdatedPrice.raml
+++ b/api-specs/api/types/message/ProductPriceDiscountsSetUpdatedPrice.raml
@@ -3,7 +3,7 @@
type: object
displayName: ProductPriceDiscountsSetUpdatedPrice
description: |
- Details about a [Embedded Price](/projects/products#embedded-price) that was updated due to a Discount. Specific to [Product Price Discounts Set](ctp:api:type:ProductPriceDiscountsSetMessage) Message.
+ Details about an [Embedded Price](ctp:api:type:Price) that was updated due to a Discount. Specific to [Product Price Discounts Set](ctp:api:type:ProductPriceDiscountsSetMessage) Message.
properties:
variantId:
type: integer
diff --git a/api-specs/api/types/message/ProductPriceRemovedMessage.raml b/api-specs/api/types/message/ProductPriceRemovedMessage.raml
index 61a30ef54a..fa0a3e9651 100644
--- a/api-specs/api/types/message/ProductPriceRemovedMessage.raml
+++ b/api-specs/api/types/message/ProductPriceRemovedMessage.raml
@@ -14,7 +14,7 @@ properties:
price:
type: Price
description: |
- The [Embedded Price](/projects/products#embedded-price) that was removed from the [ProductVariant](ctp:api:type:ProductVariant).
+ The Embedded Price that was removed from the [ProductVariant](ctp:api:type:ProductVariant).
staged:
type: boolean
description: |
diff --git a/api-specs/api/types/message/ProductTailoringCreatedMessage.raml b/api-specs/api/types/message/ProductTailoringCreatedMessage.raml
index 9af229ac74..b4999bbb76 100644
--- a/api-specs/api/types/message/ProductTailoringCreatedMessage.raml
+++ b/api-specs/api/types/message/ProductTailoringCreatedMessage.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Message
type: Message
-(beta): true
displayName: ProductTailoringCreatedMessage
discriminatorValue: ProductTailoringCreated
description: |
@@ -36,6 +35,22 @@ properties:
type: LocalizedString
description: |
The slug of the [Product Tailoring](ctp:api:type:ProductTailoring) at the time of creation.
+ metaTitle?:
+ type: LocalizedString
+ description: |
+ The metaTitle of the [Product Tailoring](ctp:api:type:ProductTailoring) at the time of creation.
+ metaDescription?:
+ type: LocalizedString
+ description: |
+ The metaDescription of the [Product Tailoring](ctp:api:type:ProductTailoring) at the time of creation.
+ metaKeywords?:
+ type: LocalizedString
+ description: |
+ The metaKeywords of the [Product Tailoring](ctp:api:type:ProductTailoring) at the time of creation.
+ variants?:
+ type: ProductVariantTailoring[]
+ description: |
+ The variants of the [Product Tailoring](ctp:api:type:ProductTailoring) at the time of creation.
published:
type: boolean
description: |
diff --git a/api-specs/api/types/message/ProductTailoringDeletedMessage.raml b/api-specs/api/types/message/ProductTailoringDeletedMessage.raml
index 0e8fe07d7a..3b5d2ba23a 100644
--- a/api-specs/api/types/message/ProductTailoringDeletedMessage.raml
+++ b/api-specs/api/types/message/ProductTailoringDeletedMessage.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Message
type: Message
-(beta): true
displayName: ProductTailoringDeletedMessage
discriminatorValue: ProductTailoringDeleted
description: |
diff --git a/api-specs/api/types/message/ProductTailoringDescriptionSetMessage.raml b/api-specs/api/types/message/ProductTailoringDescriptionSetMessage.raml
index 8275706e4c..bf1e37f622 100644
--- a/api-specs/api/types/message/ProductTailoringDescriptionSetMessage.raml
+++ b/api-specs/api/types/message/ProductTailoringDescriptionSetMessage.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Message
type: Message
-(beta): true
displayName: ProductTailoringDescriptionSetMessage
discriminatorValue: ProductTailoringDescriptionSet
description: |
diff --git a/api-specs/api/types/message/ProductTailoringImageAddedMessage.raml b/api-specs/api/types/message/ProductTailoringImageAddedMessage.raml
new file mode 100644
index 0000000000..2444f6b996
--- /dev/null
+++ b/api-specs/api/types/message/ProductTailoringImageAddedMessage.raml
@@ -0,0 +1,31 @@
+#%RAML 1.0 DataType
+(package): Message
+type: Message
+(beta): true
+displayName: ProductTailoringImageAddedMessage
+discriminatorValue: ProductTailoringImageAdded
+description: |
+ Generated after a successful [Add External Image](ctp:api:type:ProductTailoringAddExternalImageAction) update action
+ or after a successful [Upload Product Tailoring image](/projects/product-tailoring#upload-product-tailoring-image) request.
+properties:
+ store:
+ type: StoreKeyReference
+ description: |
+ The Store to which the Product Tailoring belongs.
+ productKey?:
+ type: string
+ description: |
+ `key` of the tailored Product.
+ product:
+ type: ProductReference
+ description: |
+ Reference to the tailored Product.
+ variantId:
+ type: number
+ format: int64
+ description: |
+ `id` of the tailored [ProductVariant](ctp:api:type:ProductVariant).
+ image:
+ type: Image
+ description: |
+ [Image](ctp:api:type:Image) that was added.
diff --git a/api-specs/api/types/message/ProductTailoringImagesSetMessage.raml b/api-specs/api/types/message/ProductTailoringImagesSetMessage.raml
new file mode 100644
index 0000000000..34be4fd94f
--- /dev/null
+++ b/api-specs/api/types/message/ProductTailoringImagesSetMessage.raml
@@ -0,0 +1,36 @@
+#%RAML 1.0 DataType
+(package): Message
+type: Message
+(beta): true
+displayName: ProductTailoringImagesSetMessage
+discriminatorValue: ProductTailoringImagesSet
+description: |
+ Generated after a successful [Set Images](ctp:api:type:ProductTailoringSetExternalImagesAction) update action.
+properties:
+ store:
+ type: StoreKeyReference
+ description: |
+ The Store to which the Product Tailoring belongs.
+ productKey?:
+ type: string
+ description: |
+ `key` of the tailored Product.
+ product:
+ type: ProductReference
+ description: |
+ Reference to the Product the Product Tailoring belongs to.
+ variantId:
+ type: number
+ format: int64
+ description: |
+ `id` of the tailored Product Variant.
+ oldImages?:
+ type: array
+ items: Image
+ description: |
+ [Images](ctp:api:type:Image) on the tailored [Product Variant](ctp:api:type:ProductVariantTailoring) before the [Set Images](ctp:api:type:ProductTailoringSetExternalImagesAction) update action.
+ images?:
+ type: array
+ items: Image
+ description: |
+ [Images](ctp:api:type:Image) on the tailored [Product Variant](ctp:api:type:ProductVariantTailoring) after the [Set Images](ctp:api:type:ProductTailoringSetExternalImagesAction) update action.
diff --git a/api-specs/api/types/message/ProductTailoringNameSetMessage.raml b/api-specs/api/types/message/ProductTailoringNameSetMessage.raml
index a5ecb49983..4c8acc1d76 100644
--- a/api-specs/api/types/message/ProductTailoringNameSetMessage.raml
+++ b/api-specs/api/types/message/ProductTailoringNameSetMessage.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Message
type: Message
-(beta): true
displayName: ProductTailoringNameSetMessage
discriminatorValue: ProductTailoringNameSet
description: |
diff --git a/api-specs/api/types/message/ProductTailoringPublishedMessage.raml b/api-specs/api/types/message/ProductTailoringPublishedMessage.raml
index b3e7384f41..da4770b961 100644
--- a/api-specs/api/types/message/ProductTailoringPublishedMessage.raml
+++ b/api-specs/api/types/message/ProductTailoringPublishedMessage.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Message
type: Message
-(beta): true
displayName: ProductTailoringPublishedMessage
discriminatorValue: ProductTailoringPublished
description: |
diff --git a/api-specs/api/types/message/ProductTailoringSlugSetMessage.raml b/api-specs/api/types/message/ProductTailoringSlugSetMessage.raml
index 3598da411a..0fb899f1ae 100644
--- a/api-specs/api/types/message/ProductTailoringSlugSetMessage.raml
+++ b/api-specs/api/types/message/ProductTailoringSlugSetMessage.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Message
type: Message
-(beta): true
displayName: ProductTailoringSlugSetMessage
discriminatorValue: ProductTailoringSlugSet
description: |
diff --git a/api-specs/api/types/message/ProductTailoringUnpublishedMessage.raml b/api-specs/api/types/message/ProductTailoringUnpublishedMessage.raml
index 64f329a221..8f08bb4870 100644
--- a/api-specs/api/types/message/ProductTailoringUnpublishedMessage.raml
+++ b/api-specs/api/types/message/ProductTailoringUnpublishedMessage.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Message
type: Message
-(beta): true
displayName: ProductTailoringUnpublishedMessage
discriminatorValue: ProductTailoringUnpublished
description: |
diff --git a/api-specs/api/types/message/ProductVariantTailoringAddedMessage.raml b/api-specs/api/types/message/ProductVariantTailoringAddedMessage.raml
new file mode 100644
index 0000000000..e4d3d16aca
--- /dev/null
+++ b/api-specs/api/types/message/ProductVariantTailoringAddedMessage.raml
@@ -0,0 +1,30 @@
+#%RAML 1.0 DataType
+(package): Message
+type: Message
+(beta): true
+displayName: ProductVariantTailoringAddedMessage
+discriminatorValue: ProductVariantTailoringAdded
+description: |
+ Generated after a successful [Add ProductVariant Tailoring](ctp:api:type:ProductTailoringAddVariantAction) update action.
+properties:
+ store:
+ type: StoreKeyReference
+ description: |
+ The Store to which the Product Tailoring belongs.
+ productKey?:
+ type: string
+ description: |
+ `key` of the tailored Product.
+ product:
+ type: ProductReference
+ description: |
+ Reference to the tailored Product.
+ variantId:
+ type: integer
+ format: int64
+ description: |
+ `id` of the [ProductVariant](ctp:api:type:ProductVariant) added to the Tailoring.
+ variant:
+ type: ProductVariantTailoring
+ description: |
+ The [ProductVariantTailoring](ctp:api:type:ProductVariantTailoring) that was added to the ProductTailoring.
diff --git a/api-specs/api/types/message/ProductVariantTailoringRemovedMessage.raml b/api-specs/api/types/message/ProductVariantTailoringRemovedMessage.raml
new file mode 100644
index 0000000000..1e8df183f5
--- /dev/null
+++ b/api-specs/api/types/message/ProductVariantTailoringRemovedMessage.raml
@@ -0,0 +1,30 @@
+#%RAML 1.0 DataType
+(package): Message
+type: Message
+(beta): true
+displayName: ProductVariantTailoringRemovedMessage
+discriminatorValue: ProductVariantTailoringRemoved
+description: |
+ Generated after a successful [Remove ProductVariant Tailoring](ctp:api:type:ProductTailoringRemoveVariantAction) update action.
+properties:
+ store:
+ type: StoreKeyReference
+ description: |
+ The Store to which the Product Tailoring belongs.
+ productKey?:
+ type: string
+ description: |
+ `key` of the tailored Product.
+ product:
+ type: ProductReference
+ description: |
+ Reference to the Product the Product Tailoring belongs to.
+ variantId:
+ type: integer
+ format: int64
+ description: |
+ `id` of the [ProductVariant](ctp:api:type:ProductVariant) removed from the Tailoring.
+ variant:
+ type: ProductVariantTailoring
+ description: |
+ The [ProductVariantTailoring](ctp:api:type:ProductVariantTailoring) that was removed from the ProductTailoring.
diff --git a/api-specs/api/types/message/StandalonePriceValueChangedMessage.raml b/api-specs/api/types/message/StandalonePriceValueChangedMessage.raml
index 24f9869c40..0892ed707a 100644
--- a/api-specs/api/types/message/StandalonePriceValueChangedMessage.raml
+++ b/api-specs/api/types/message/StandalonePriceValueChangedMessage.raml
@@ -7,7 +7,7 @@ description: |
Generated after a successful [Change Value](ctp:api:type:StandalonePriceChangeValueAction) update action.
properties:
value:
- type: Money
+ type: TypedMoney
description: |
The new value of the updated [StandalonePrice](ctp:api:type:StandalonePrice).
staged:
@@ -16,7 +16,7 @@ properties:
description: |
Whether the new value was applied to the current or the staged representation of the StandalonePrice. Staged changes are stored on the [StagedStandalonePrice](ctp:api:type:StagedStandalonePrice).
oldValue?:
- type: Money
+ type: TypedMoney
description: |
The old value of the updated [StandalonePrice](ctp:api:type:StandalonePrice).
Present on Messages created after 3 February 2023. Optional for backwards compatibility.
diff --git a/api-specs/api/types/message/payload/BusinessUnitApprovalRuleModeChangedMessagePayload.raml b/api-specs/api/types/message/payload/BusinessUnitApprovalRuleModeChangedMessagePayload.raml
new file mode 100644
index 0000000000..753da95d8c
--- /dev/null
+++ b/api-specs/api/types/message/payload/BusinessUnitApprovalRuleModeChangedMessagePayload.raml
@@ -0,0 +1,16 @@
+#%RAML 1.0 DataType
+(package): Message
+type: MessagePayload
+displayName: BusinessUnitApprovalRuleModeChangedMessagePayload
+discriminatorValue: BusinessUnitApprovalRuleModeChanged
+description: |
+ Generated after a successful [Change Approval Rule Mode](ctp:api:type:BusinessUnitChangeApprovalRuleModeAction) update action.
+properties:
+ approvalRuleMode:
+ type: BusinessUnitApprovalRuleMode
+ description: |
+ [BusinessUnitApprovalRuleMode](ctp:api:type:BusinessUnitApprovalRuleMode) of the Business Unit after the [Change Approval Rule Mode](ctp:api:type:BusinessUnitChangeApprovalRuleModeAction) update action.
+ oldApprovalRuleMode?:
+ type: BusinessUnitApprovalRuleMode
+ description: |
+ [BusinessUnitApprovalRuleMode](ctp:api:type:BusinessUnitApprovalRuleMode) of the Business Unit before the [Change Approval Rule Mode](ctp:api:type:BusinessUnitChangeApprovalRuleModeAction) update action.
diff --git a/api-specs/api/types/message/payload/OrderLineItemDiscountSetMessagePayload.raml b/api-specs/api/types/message/payload/OrderLineItemDiscountSetMessagePayload.raml
index 2ea5724347..ab83df9d37 100644
--- a/api-specs/api/types/message/payload/OrderLineItemDiscountSetMessagePayload.raml
+++ b/api-specs/api/types/message/payload/OrderLineItemDiscountSetMessagePayload.raml
@@ -19,7 +19,7 @@ properties:
description: |
Array of [DiscountedLineItemPriceForQuantity](ctp:api:type:DiscountedLineItemPriceForQuantity) after the Discount recalculation.
totalPrice:
- type: Money
+ type: CentPrecisionMoney
description: |
Total Price of the [Line Item](ctp:api:type:LineItem) after the Discount recalculation.
taxedPrice?:
diff --git a/api-specs/api/types/message/payload/ProductPriceAddedMessagePayload.raml b/api-specs/api/types/message/payload/ProductPriceAddedMessagePayload.raml
index 7b18fe3d52..80f3dfd58d 100644
--- a/api-specs/api/types/message/payload/ProductPriceAddedMessagePayload.raml
+++ b/api-specs/api/types/message/payload/ProductPriceAddedMessagePayload.raml
@@ -14,7 +14,7 @@ properties:
price:
type: Price
description: |
- The [Embedded Price](/projects/products#embedded-price) that was added to the [ProductVariant](ctp:api:type:ProductVariant).
+ The Embedded Price that was added to the [ProductVariant](ctp:api:type:ProductVariant).
staged:
type: boolean
description: |
diff --git a/api-specs/api/types/message/payload/ProductPriceChangedMessagePayload.raml b/api-specs/api/types/message/payload/ProductPriceChangedMessagePayload.raml
index 4e6c800dcc..0d375f811c 100644
--- a/api-specs/api/types/message/payload/ProductPriceChangedMessagePayload.raml
+++ b/api-specs/api/types/message/payload/ProductPriceChangedMessagePayload.raml
@@ -14,11 +14,11 @@ properties:
oldPrice:
type: Price
description: |
- The current [Embedded Price](/projects/products#embedded-price) before the [Change Embedded Price](ctp:api:type:ProductChangePriceAction) update action.
+ The current Embedded Price before the [Change Embedded Price](ctp:api:type:ProductChangePriceAction) update action.
newPrice:
type: Price
description: |
- The [Embedded Price](/projects/products#embedded-price) after the [Change Embedded Price](ctp:api:type:ProductChangePriceAction) update action.
+ The Embedded Price after the [Change Embedded Price](ctp:api:type:ProductChangePriceAction) update action.
staged:
type: boolean
description: |
@@ -26,4 +26,4 @@ properties:
oldStagedPrice?:
type: Price
description: |
- The staged [Embedded Price](/projects/products#embedded-price) before the [Change Embedded Price](ctp:api:type:ProductChangePriceAction) update action.
+ The staged Embedded Price before the [Change Embedded Price](ctp:api:type:ProductChangePriceAction) update action.
diff --git a/api-specs/api/types/message/payload/ProductPriceCustomFieldAddedMessagePayload.raml b/api-specs/api/types/message/payload/ProductPriceCustomFieldAddedMessagePayload.raml
new file mode 100644
index 0000000000..ea2f61c47e
--- /dev/null
+++ b/api-specs/api/types/message/payload/ProductPriceCustomFieldAddedMessagePayload.raml
@@ -0,0 +1,29 @@
+#%RAML 1.0 DataType
+(package): Message
+type: MessagePayload
+displayName: ProductPriceCustomFieldAddedMessagePayload
+discriminatorValue: ProductPriceCustomFieldAdded
+description: |
+ Generated after adding a Custom Field to a Price using the [Set Price CustomField](ctp:api:type:ProductSetProductPriceCustomFieldAction) update action.
+properties:
+ priceId:
+ type: string
+ description: |
+ Unique identifier of the [Price](ctp:api:type:Price) to which the Custom Field was added.
+ variantId:
+ type: number
+ format: int64
+ description: |
+ Unique identifier of the [ProductVariant](ctp:api:type:ProductVariant) to which the Price belongs.
+ staged:
+ type: boolean
+ description: |
+ Whether the update was only applied to the staged [Product Projection](ctp:api:type:ProductProjection).
+ name:
+ type: string
+ description: |
+ Name of the Custom Field that was added.
+ value:
+ type: CustomFieldValue
+ description: |
+ The added [CustomFieldValue](ctp:api:type:CustomFieldValue) based on the [FieldType](ctp:api:type:FieldType).
diff --git a/api-specs/api/types/message/payload/ProductPriceCustomFieldChangedMessagePayload.raml b/api-specs/api/types/message/payload/ProductPriceCustomFieldChangedMessagePayload.raml
new file mode 100644
index 0000000000..ab3c9ecb05
--- /dev/null
+++ b/api-specs/api/types/message/payload/ProductPriceCustomFieldChangedMessagePayload.raml
@@ -0,0 +1,29 @@
+#%RAML 1.0 DataType
+(package): Message
+type: MessagePayload
+displayName: ProductPriceCustomFieldChangedMessagePayload
+discriminatorValue: ProductPriceCustomFieldChanged
+description: |
+ Generated after changing an existing Custom Field on a Price using the [Set Price CustomField](ctp:api:type:ProductSetProductPriceCustomFieldAction) update action.
+properties:
+ priceId:
+ type: string
+ description: |
+ Unique identifier of the [Price](ctp:api:type:Price) of which the Custom Field was changed.
+ variantId:
+ type: number
+ format: int64
+ description: |
+ Unique identifier of the [ProductVariant](ctp:api:type:ProductVariant) to which the Price belongs.
+ staged:
+ type: boolean
+ description: |
+ Whether the update was only applied to the staged [Product Projection](ctp:api:type:ProductProjection).
+ name:
+ type: string
+ description: |
+ Name of the Custom Field that was changed.
+ value:
+ type: CustomFieldValue
+ description: |
+ [CustomFieldValue](ctp:api:type:CustomFieldValue) based on the [FieldType](ctp:api:type:FieldType) after the [Set Price CustomField](ctp:api:type:ProductSetProductPriceCustomFieldAction) update action.
diff --git a/api-specs/api/types/message/payload/ProductPriceCustomFieldRemovedMessagePayload.raml b/api-specs/api/types/message/payload/ProductPriceCustomFieldRemovedMessagePayload.raml
new file mode 100644
index 0000000000..4df31668bd
--- /dev/null
+++ b/api-specs/api/types/message/payload/ProductPriceCustomFieldRemovedMessagePayload.raml
@@ -0,0 +1,25 @@
+#%RAML 1.0 DataType
+(package): Message
+type: MessagePayload
+displayName: ProductPriceCustomFieldRemovedMessagePayload
+discriminatorValue: ProductPriceCustomFieldRemoved
+description: |
+ Generated after removing a Custom Field from a Price using the [Set Price CustomField](ctp:api:type:ProductSetProductPriceCustomFieldAction) update action.
+properties:
+ priceId:
+ type: string
+ description: |
+ Unique identifier of the [Price](ctp:api:type:Price) from which the Custom Field was removed.
+ variantId:
+ type: number
+ format: int64
+ description: |
+ Unique identifier of the [ProductVariant](ctp:api:type:ProductVariant) to which the Price belongs.
+ staged:
+ type: boolean
+ description: |
+ Whether the update was only applied to the staged [Product Projection](ctp:api:type:ProductProjection).
+ name:
+ type: string
+ description: |
+ Name of the Custom Field that was removed.
diff --git a/api-specs/api/types/message/payload/ProductPriceCustomFieldsRemovedMessagePayload.raml b/api-specs/api/types/message/payload/ProductPriceCustomFieldsRemovedMessagePayload.raml
new file mode 100644
index 0000000000..4d8452e569
--- /dev/null
+++ b/api-specs/api/types/message/payload/ProductPriceCustomFieldsRemovedMessagePayload.raml
@@ -0,0 +1,21 @@
+#%RAML 1.0 DataType
+(package): Message
+type: MessagePayload
+displayName: ProductPriceCustomFieldsRemovedMessagePayload
+discriminatorValue: ProductPriceCustomFieldsRemoved
+description: |
+ Generated after removing a Custom Type from a Price using the [Set Price Custom Type](ctp:api:type:ProductSetProductPriceCustomTypeAction) update action.
+properties:
+ priceId:
+ type: string
+ description: |
+ Unique identifier of the [Price](ctp:api:type:Price) from which the Custom Type was removed.
+ variantId:
+ type: number
+ format: int64
+ description: |
+ Unique identifier of the [ProductVariant](ctp:api:type:ProductVariant) to which the Price belongs.
+ staged:
+ type: boolean
+ description: |
+ Whether the update was only applied to the staged [Product Projection](ctp:api:type:ProductProjection).
diff --git a/api-specs/api/types/message/payload/ProductPriceCustomFieldsSetMessagePayload.raml b/api-specs/api/types/message/payload/ProductPriceCustomFieldsSetMessagePayload.raml
new file mode 100644
index 0000000000..c7b2e2bc4e
--- /dev/null
+++ b/api-specs/api/types/message/payload/ProductPriceCustomFieldsSetMessagePayload.raml
@@ -0,0 +1,29 @@
+#%RAML 1.0 DataType
+(package): Message
+type: MessagePayload
+displayName: ProductPriceCustomFieldsSetMessagePayload
+discriminatorValue: ProductPriceCustomFieldsSet
+description: |
+ Generated after a successful [Set Price Custom Type](ctp:api:type:ProductSetProductPriceCustomTypeAction) update action.
+properties:
+ priceId:
+ type: string
+ description: |
+ Unique identifier of the [Price](ctp:api:type:Price) on which the Custom Type was set.
+ variantId:
+ type: number
+ format: int64
+ description: |
+ Unique identifier of the [ProductVariant](ctp:api:type:ProductVariant) to which the Price belongs.
+ staged:
+ type: boolean
+ description: |
+ Whether the update was only applied to the staged [Product Projection](ctp:api:type:ProductProjection).
+ customField:
+ type: CustomFields
+ description: |
+ Custom Fields that were set.
+ oldTypeId?:
+ type: string
+ description: |
+ `id` of the previous [Custom Type](ctp:api:type:Type). Absent if there was no previous Custom Type present.
diff --git a/api-specs/api/types/message/payload/ProductPriceRemovedMessagePayload.raml b/api-specs/api/types/message/payload/ProductPriceRemovedMessagePayload.raml
index a5b8f74454..800abeb98c 100644
--- a/api-specs/api/types/message/payload/ProductPriceRemovedMessagePayload.raml
+++ b/api-specs/api/types/message/payload/ProductPriceRemovedMessagePayload.raml
@@ -14,7 +14,7 @@ properties:
price:
type: Price
description: |
- The [Embedded Price](/projects/products#embedded-price) that was removed from the [ProductVariant](ctp:api:type:ProductVariant).
+ The Embedded Price that was removed from the [ProductVariant](ctp:api:type:ProductVariant).
staged:
type: boolean
description: |
diff --git a/api-specs/api/types/message/payload/ProductTailoringCreatedMessagePayload.raml b/api-specs/api/types/message/payload/ProductTailoringCreatedMessagePayload.raml
index 422f5531d7..23a4592ef5 100644
--- a/api-specs/api/types/message/payload/ProductTailoringCreatedMessagePayload.raml
+++ b/api-specs/api/types/message/payload/ProductTailoringCreatedMessagePayload.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Message
type: MessagePayload
-(beta): true
displayName: ProductTailoringCreatedMessagePayload
discriminatorValue: ProductTailoringCreated
description: |
@@ -36,6 +35,22 @@ properties:
type: LocalizedString
description: |
The slug of the [Product Tailoring](ctp:api:type:ProductTailoring) at the time of creation.
+ metaTitle?:
+ type: LocalizedString
+ description: |
+ The metaTitle of the [Product Tailoring](ctp:api:type:ProductTailoring) at the time of creation.
+ metaDescription?:
+ type: LocalizedString
+ description: |
+ The metaDescription of the [Product Tailoring](ctp:api:type:ProductTailoring) at the time of creation.
+ metaKeywords?:
+ type: LocalizedString
+ description: |
+ The metaKeywords of the [Product Tailoring](ctp:api:type:ProductTailoring) at the time of creation.
+ variants?:
+ type: ProductVariantTailoring[]
+ description: |
+ The variants of the [Product Tailoring](ctp:api:type:ProductTailoring) at the time of creation.
published:
type: boolean
description: |
diff --git a/api-specs/api/types/message/payload/ProductTailoringDeletedMessagePayload.raml b/api-specs/api/types/message/payload/ProductTailoringDeletedMessagePayload.raml
index e91ec8b559..738c843561 100644
--- a/api-specs/api/types/message/payload/ProductTailoringDeletedMessagePayload.raml
+++ b/api-specs/api/types/message/payload/ProductTailoringDeletedMessagePayload.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Message
type: MessagePayload
-(beta): true
displayName: ProductTailoringDeletedMessagePayload
discriminatorValue: ProductTailoringDeleted
description: |
diff --git a/api-specs/api/types/message/payload/ProductTailoringDescriptionSetMessagePayload.raml b/api-specs/api/types/message/payload/ProductTailoringDescriptionSetMessagePayload.raml
index 1c687ad7e4..7ae337c367 100644
--- a/api-specs/api/types/message/payload/ProductTailoringDescriptionSetMessagePayload.raml
+++ b/api-specs/api/types/message/payload/ProductTailoringDescriptionSetMessagePayload.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Message
type: MessagePayload
-(beta): true
displayName: ProductTailoringDescriptionSetMessagePayload
discriminatorValue: ProductTailoringDescriptionSet
description: |
diff --git a/api-specs/api/types/message/payload/ProductTailoringImageAddedMessagePayload.raml b/api-specs/api/types/message/payload/ProductTailoringImageAddedMessagePayload.raml
new file mode 100644
index 0000000000..b6440f0e4e
--- /dev/null
+++ b/api-specs/api/types/message/payload/ProductTailoringImageAddedMessagePayload.raml
@@ -0,0 +1,31 @@
+#%RAML 1.0 DataType
+(package): Message
+type: MessagePayload
+(beta): true
+displayName: ProductTailoringImageAddedMessagePayload
+discriminatorValue: ProductTailoringImageAdded
+description: |
+ Generated after a successful [Add External Image](ctp:api:type:ProductTailoringAddExternalImageAction) update action
+ or after a successful [Upload Product Tailoring image](/projects/product-tailoring#upload-product-tailoring-image) request.
+properties:
+ store:
+ type: StoreKeyReference
+ description: |
+ The Store to which the Product Tailoring belongs.
+ productKey?:
+ type: string
+ description: |
+ `key` of the tailored Product.
+ product:
+ type: ProductReference
+ description: |
+ Reference to the tailored Product.
+ variantId:
+ type: number
+ format: int64
+ description: |
+ `id` of the tailored [ProductVariant](ctp:api:type:ProductVariant).
+ image:
+ type: Image
+ description: |
+ [Image](ctp:api:type:Image) that was added.
diff --git a/api-specs/api/types/message/payload/ProductTailoringImagesSetMessagePayload.raml b/api-specs/api/types/message/payload/ProductTailoringImagesSetMessagePayload.raml
new file mode 100644
index 0000000000..379f67a6dd
--- /dev/null
+++ b/api-specs/api/types/message/payload/ProductTailoringImagesSetMessagePayload.raml
@@ -0,0 +1,36 @@
+#%RAML 1.0 DataType
+(package): Message
+type: MessagePayload
+(beta): true
+displayName: ProductTailoringImagesSetMessagePayload
+discriminatorValue: ProductTailoringImagesSet
+description: |
+ Generated after a successful [Set Images](ctp:api:type:ProductTailoringSetExternalImagesAction) update action.
+properties:
+ store:
+ type: StoreKeyReference
+ description: |
+ The Store to which the Product Tailoring belongs.
+ productKey?:
+ type: string
+ description: |
+ `key` of the tailored Product.
+ product:
+ type: ProductReference
+ description: |
+ Reference to the Product the Product Tailoring belongs to.
+ variantId:
+ type: number
+ format: int64
+ description: |
+ `id` of the tailored Product Variant.
+ oldImages?:
+ type: array
+ items: Image
+ description: |
+ [Images](ctp:api:type:Image) on the tailored [Product Variant](ctp:api:type:ProductVariantTailoring) before the [Set Images](ctp:api:type:ProductTailoringSetExternalImagesAction) update action.
+ images?:
+ type: array
+ items: Image
+ description: |
+ [Images](ctp:api:type:Image) on the tailored [Product Variant](ctp:api:type:ProductVariantTailoring) after the [Set Images](ctp:api:type:ProductTailoringSetExternalImagesAction) update action.
diff --git a/api-specs/api/types/message/payload/ProductTailoringNameSetMessagePayload.raml b/api-specs/api/types/message/payload/ProductTailoringNameSetMessagePayload.raml
index 41c96a65cf..58c41e93dd 100644
--- a/api-specs/api/types/message/payload/ProductTailoringNameSetMessagePayload.raml
+++ b/api-specs/api/types/message/payload/ProductTailoringNameSetMessagePayload.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Message
type: MessagePayload
-(beta): true
displayName: ProductTailoringNameSetMessagePayload
discriminatorValue: ProductTailoringNameSet
description: |
diff --git a/api-specs/api/types/message/payload/ProductTailoringPublishedMessagePayload.raml b/api-specs/api/types/message/payload/ProductTailoringPublishedMessagePayload.raml
index b8bdabee88..7c30104292 100644
--- a/api-specs/api/types/message/payload/ProductTailoringPublishedMessagePayload.raml
+++ b/api-specs/api/types/message/payload/ProductTailoringPublishedMessagePayload.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Message
type: MessagePayload
-(beta): true
displayName: ProductTailoringPublishedMessagePayload
discriminatorValue: ProductTailoringPublished
description: |
diff --git a/api-specs/api/types/message/payload/ProductTailoringSlugSetMessagePayload.raml b/api-specs/api/types/message/payload/ProductTailoringSlugSetMessagePayload.raml
index 6194539f87..9892970547 100644
--- a/api-specs/api/types/message/payload/ProductTailoringSlugSetMessagePayload.raml
+++ b/api-specs/api/types/message/payload/ProductTailoringSlugSetMessagePayload.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Message
type: MessagePayload
-(beta): true
displayName: ProductTailoringSlugSetMessagePayload
discriminatorValue: ProductTailoringSlugSet
description: |
diff --git a/api-specs/api/types/message/payload/ProductTailoringUnpublishedMessagePayload.raml b/api-specs/api/types/message/payload/ProductTailoringUnpublishedMessagePayload.raml
index 6df3de2b22..59a8ca8f80 100644
--- a/api-specs/api/types/message/payload/ProductTailoringUnpublishedMessagePayload.raml
+++ b/api-specs/api/types/message/payload/ProductTailoringUnpublishedMessagePayload.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Message
type: MessagePayload
-(beta): true
displayName: ProductTailoringUnpublishedMessagePayload
discriminatorValue: ProductTailoringUnpublished
description: |
diff --git a/api-specs/api/types/message/payload/ProductVariantTailoringAddedMessagePayload.raml b/api-specs/api/types/message/payload/ProductVariantTailoringAddedMessagePayload.raml
new file mode 100644
index 0000000000..8eec80dcb9
--- /dev/null
+++ b/api-specs/api/types/message/payload/ProductVariantTailoringAddedMessagePayload.raml
@@ -0,0 +1,30 @@
+#%RAML 1.0 DataType
+(package): Message
+type: MessagePayload
+(beta): true
+displayName: ProductVariantTailoringAddedMessagePayload
+discriminatorValue: ProductVariantTailoringAdded
+description: |
+ Generated after a successful [Add ProductVariant Tailoring](ctp:api:type:ProductTailoringAddVariantAction) update action.
+properties:
+ store:
+ type: StoreKeyReference
+ description: |
+ The Store to which the Product Tailoring belongs.
+ productKey?:
+ type: string
+ description: |
+ `key` of the tailored Product.
+ product:
+ type: ProductReference
+ description: |
+ Reference to the tailored Product.
+ variantId:
+ type: integer
+ format: int64
+ description: |
+ `id` of the [ProductVariant](ctp:api:type:ProductVariant) added to the Tailoring.
+ variant:
+ type: ProductVariantTailoring
+ description: |
+ The [ProductVariantTailoring](ctp:api:type:ProductVariantTailoring) that was added to the ProductTailoring.
diff --git a/api-specs/api/types/message/payload/ProductVariantTailoringRemovedMessagePayload.raml b/api-specs/api/types/message/payload/ProductVariantTailoringRemovedMessagePayload.raml
new file mode 100644
index 0000000000..21dec99df6
--- /dev/null
+++ b/api-specs/api/types/message/payload/ProductVariantTailoringRemovedMessagePayload.raml
@@ -0,0 +1,30 @@
+#%RAML 1.0 DataType
+(package): Message
+type: MessagePayload
+(beta): true
+displayName: ProductVariantTailoringRemovedMessagePayload
+discriminatorValue: ProductVariantTailoringRemoved
+description: |
+ Generated after a successful [Remove ProductVariant Tailoring](ctp:api:type:ProductTailoringRemoveVariantAction) update action.
+properties:
+ store:
+ type: StoreKeyReference
+ description: |
+ The Store to which the Product Tailoring belongs.
+ productKey?:
+ type: string
+ description: |
+ `key` of the tailored Product.
+ product:
+ type: ProductReference
+ description: |
+ Reference to the Product the Product Tailoring belongs to.
+ variantId:
+ type: integer
+ format: int64
+ description: |
+ `id` of the [ProductVariant](ctp:api:type:ProductVariant) removed from the Tailoring.
+ variant:
+ type: ProductVariantTailoring
+ description: |
+ The [ProductVariantTailoring](ctp:api:type:ProductVariantTailoring) that was removed from the ProductTailoring.
diff --git a/api-specs/api/types/message/payload/StandalonePriceValueChangedMessagePayload.raml b/api-specs/api/types/message/payload/StandalonePriceValueChangedMessagePayload.raml
index 3fa381f01e..15f9b7675c 100644
--- a/api-specs/api/types/message/payload/StandalonePriceValueChangedMessagePayload.raml
+++ b/api-specs/api/types/message/payload/StandalonePriceValueChangedMessagePayload.raml
@@ -7,7 +7,7 @@ description: |
Generated after a successful [Change Value](ctp:api:type:StandalonePriceChangeValueAction) update action.
properties:
value:
- type: Money
+ type: TypedMoney
description: |
The new value of the updated [StandalonePrice](ctp:api:type:StandalonePrice).
staged:
@@ -16,7 +16,7 @@ properties:
description: |
Whether the new value was applied to the current or the staged representation of the StandalonePrice. Staged changes are stored on the [StagedStandalonePrice](ctp:api:type:StagedStandalonePrice).
oldValue?:
- type: Money
+ type: TypedMoney
description: |
The old value of the updated [StandalonePrice](ctp:api:type:StandalonePrice).
Present on Messages created after 3 February 2023. Optional for backwards compatibility.
diff --git a/api-specs/api/types/order-edit/updates/StagedOrderAddLineItemAction.raml b/api-specs/api/types/order-edit/updates/StagedOrderAddLineItemAction.raml
index a322d804f1..7432469ac4 100644
--- a/api-specs/api/types/order-edit/updates/StagedOrderAddLineItemAction.raml
+++ b/api-specs/api/types/order-edit/updates/StagedOrderAddLineItemAction.raml
@@ -8,7 +8,7 @@ description: |
If the Cart contains a [LineItem](ctp:api:type:LineItem) for a Product Variant with the same [LineItemMode](ctp:api:type:LineItemMode), [Custom Fields](/../api/projects/custom-fields), supply and distribution channel, then only the quantity of the existing Line Item is increased.
If [LineItem](ctp:api:type:LineItem) `shippingDetails` is set, it is merged. All addresses will be present afterwards and, for address keys present in both shipping details, the quantity will be summed up.
A new Line Item is added when the `externalPrice` or `externalTotalPrice` is set in this update action.
- The [LineItem](ctp:api:type:LineItem) price is set as described in [LineItem Price selection](ctp:api:type:LineItemPriceSelection).
+ The [LineItem](ctp:api:type:LineItem) price is set as described in [Line Item price selection](/../api/pricing-and-discounts-overview#line-item-price-selection).
If the Tax Rate is not set, a [MissingTaxRateForCountry](ctp:api:type:MissingTaxRateForCountryError) error is returned.
@@ -57,7 +57,7 @@ properties:
distributionChannel?:
type: ChannelResourceIdentifier
description: |
- Used to [select](/../api/carts-orders-overview#line-item-price-selection) a Product Price.
+ Used to [select](/../api/pricing-and-discounts-overview#line-item-price-selection) a Product Price.
The Channel must have the `ProductDistribution` [ChannelRoleEnum](ctp:api:type:ChannelRoleEnum).
If the Cart is bound to a [Store](ctp:api:type:Store) with `distributionChannels` set, the Channel must match one of the Store's distribution channels.
supplyChannel?:
@@ -76,7 +76,7 @@ properties:
externalTaxRate?:
type: ExternalTaxRateDraft
description: |
- External Tax Rate for the Line Item, if the Cart has the `External` [TaxMode](ctp:api:type:TaxMode).
+ Sets the external Tax Rate for the Line Item, if the Cart has the `External` [TaxMode](ctp:api:type:TaxMode). If the Cart has `Multiple` [ShippingMode](ctp:api:type:ShippingMode), the Tax Rate is accepted but ignored.
inventoryMode?:
type: InventoryMode
description: |
diff --git a/api-specs/api/types/order-edit/updates/StagedOrderChangeLineItemQuantityAction.raml b/api-specs/api/types/order-edit/updates/StagedOrderChangeLineItemQuantityAction.raml
index 4917d0deb5..c3fa4f9b1e 100644
--- a/api-specs/api/types/order-edit/updates/StagedOrderChangeLineItemQuantityAction.raml
+++ b/api-specs/api/types/order-edit/updates/StagedOrderChangeLineItemQuantityAction.raml
@@ -9,7 +9,7 @@ description: |
To change the Line Item quantity and shipping details together, use this update action in combination with the [Set LineItem ShippingDetails](ctp:api:type:StagedOrderSetLineItemShippingDetailsAction) update action in a single Order update command.
- The [LineItem](ctp:api:type:LineItem) price is updated as described in [LineItem Price selection](ctp:api:type:LineItemPriceSelection).
+ The [LineItem](ctp:api:type:LineItem) price is updated as described in [Line Item price selection](/../api/pricing-and-discounts-overview#line-item-price-selection).
properties:
lineItemId?:
type: string
@@ -32,7 +32,7 @@ properties:
Required when the Line Item uses `ExternalPrice` [LineItemPriceMode](ctp:api:type:LineItemPriceMode).
Sets the [LineItem](ctp:api:type:LineItem) `price` to the given value when changing the quantity of a Line Item.
- The [LineItem](ctp:api:type:LineItem) price is updated as described in [LineItem Price selection](ctp:api:type:LineItemPriceSelection).
+ The [LineItem](ctp:api:type:LineItem) price is updated as described in [Line Item price selection](/../api/pricing-and-discounts-overview#line-item-price-selection).
externalTotalPrice?:
type: ExternalLineItemTotalPrice
description: |
diff --git a/api-specs/api/types/order-edit/updates/StagedOrderRemoveLineItemAction.raml b/api-specs/api/types/order-edit/updates/StagedOrderRemoveLineItemAction.raml
index a11447a47a..2338de8055 100644
--- a/api-specs/api/types/order-edit/updates/StagedOrderRemoveLineItemAction.raml
+++ b/api-specs/api/types/order-edit/updates/StagedOrderRemoveLineItemAction.raml
@@ -5,7 +5,7 @@ type: StagedOrderUpdateAction
displayName: StagedOrderRemoveLineItemAction
discriminatorValue: removeLineItem
description: |
- The [LineItem](ctp:api:type:LineItem) price is updated as described in [LineItem Price selection](ctp:api:type:LineItemPriceSelection).
+ The [LineItem](ctp:api:type:LineItem) price is updated as described in [Line Item price selection](/../api/pricing-and-discounts-overview#line-item-price-selection).
properties:
lineItemId?:
type: string
diff --git a/api-specs/api/types/order-edit/updates/StagedOrderSetLineItemDistributionChannelAction.raml b/api-specs/api/types/order-edit/updates/StagedOrderSetLineItemDistributionChannelAction.raml
index 6e380702a2..3d34889540 100644
--- a/api-specs/api/types/order-edit/updates/StagedOrderSetLineItemDistributionChannelAction.raml
+++ b/api-specs/api/types/order-edit/updates/StagedOrderSetLineItemDistributionChannelAction.raml
@@ -5,7 +5,7 @@ type: StagedOrderUpdateAction
displayName: StagedOrderSetLineItemDistributionChannelAction
discriminatorValue: setLineItemDistributionChannel
description: |
- Setting a distribution channel for a [LineItem](ctp:api:type:LineItem) can lead to an updated `price` as described in [LineItem Price selection](ctp:api:type:LineItemPriceSelection).
+ Setting a distribution channel for a [LineItem](ctp:api:type:LineItem) can lead to an updated `price` as described in [Line Item price selection](/../api/pricing-and-discounts-overview#line-item-price-selection).
Produces the [OrderLineItemDistributionChannelSet](ctp:api:type:OrderLineItemDistributionChannelSetMessage) Message.
properties:
diff --git a/api-specs/api/types/order-edit/updates/StagedOrderSetLineItemTaxAmountAction.raml b/api-specs/api/types/order-edit/updates/StagedOrderSetLineItemTaxAmountAction.raml
index f402f4afa8..a5b262e1e0 100644
--- a/api-specs/api/types/order-edit/updates/StagedOrderSetLineItemTaxAmountAction.raml
+++ b/api-specs/api/types/order-edit/updates/StagedOrderSetLineItemTaxAmountAction.raml
@@ -5,7 +5,8 @@ type: StagedOrderUpdateAction
displayName: StagedOrderSetLineItemTaxAmountAction
discriminatorValue: setLineItemTaxAmount
description: |
- Can be used if the Cart has the `ExternalAmount` [TaxMode](ctp:api:type:TaxMode).
+ Can be used if the Cart has the `ExternalAmount` [TaxMode](ctp:api:type:TaxMode). This update action sets the `taxedPrice` and `taxRate` on a Line Item and must be used after any price-affecting change occurs.
+
properties:
lineItemId?:
type: string
diff --git a/api-specs/api/types/order/ItemState.raml b/api-specs/api/types/order/ItemState.raml
index bd7e372b20..ee0c7411e7 100644
--- a/api-specs/api/types/order/ItemState.raml
+++ b/api-specs/api/types/order/ItemState.raml
@@ -2,6 +2,7 @@
(package): Order
displayName: ItemState
type: object
+(expandable): true
properties:
quantity:
type: number
diff --git a/api-specs/api/types/order/LineItemImportDraft.raml b/api-specs/api/types/order/LineItemImportDraft.raml
index 11e4680dab..547b4de70f 100644
--- a/api-specs/api/types/order/LineItemImportDraft.raml
+++ b/api-specs/api/types/order/LineItemImportDraft.raml
@@ -41,7 +41,7 @@ properties:
distributionChannel?:
type: ChannelResourceIdentifier
description: |-
- The Channel used to [select a Price](ctp:api:type:LineItemPriceSelection).
+ The Channel used to [select a Price](/../api/pricing-and-discounts-overview#line-item-price-selection).
This Channel must have the `ProductDistribution` role.
supplyChannel?:
type: ChannelResourceIdentifier
diff --git a/api-specs/api/types/order/Order.raml b/api-specs/api/types/order/Order.raml
index 9a1d0e4b74..873ecf56d1 100644
--- a/api-specs/api/types/order/Order.raml
+++ b/api-specs/api/types/order/Order.raml
@@ -37,7 +37,7 @@ properties:
type: CustomerGroupReference
description: |-
[Reference](ctp:api:type:Reference) to the Customer Group of the Customer that the Order belongs to.
- Used for [LineItem Price selection](ctp:api:type:LineItemPriceSelection).
+ Used for [Line Item price selection](/../api/pricing-and-discounts-overview#line-item-price-selection).
anonymousId?:
type: string
description: |
@@ -166,7 +166,7 @@ properties:
country?:
type: CountryCode
description: |-
- Used for [LineItem Price selection](ctp:api:type:LineItemPriceSelection).
+ Used for [Line Item price selection](/../api/pricing-and-discounts-overview#line-item-price-selection).
locale?:
type: Locale
description: |
diff --git a/api-specs/api/types/order/PaymentInfo.raml b/api-specs/api/types/order/PaymentInfo.raml
index 3a16b6602e..93977a481e 100644
--- a/api-specs/api/types/order/PaymentInfo.raml
+++ b/api-specs/api/types/order/PaymentInfo.raml
@@ -2,6 +2,7 @@
(package): Order
displayName: PaymentInfo
type: object
+(expandable): true
properties:
payments:
type: PaymentReference[]
diff --git a/api-specs/api/types/order/SyncInfo.raml b/api-specs/api/types/order/SyncInfo.raml
index c4dac9c566..a2033d1dc7 100644
--- a/api-specs/api/types/order/SyncInfo.raml
+++ b/api-specs/api/types/order/SyncInfo.raml
@@ -2,6 +2,7 @@
(package): Order
displayName: SyncInfo
type: object
+(expandable): true
description: |
Contains synchronization activity information of the Order (like export or import).
properties:
diff --git a/api-specs/api/types/payment/PaymentStatus.raml b/api-specs/api/types/payment/PaymentStatus.raml
index ab3e1edb58..46351e97fa 100644
--- a/api-specs/api/types/payment/PaymentStatus.raml
+++ b/api-specs/api/types/payment/PaymentStatus.raml
@@ -1,6 +1,7 @@
#%RAML 1.0 DataType
(package): Payment
type: object
+(expandable): true
displayName: PaymentStatus
properties:
interfaceCode?:
diff --git a/api-specs/api/types/product-search/ProductPagedSearchResponse.raml b/api-specs/api/types/product-search/ProductPagedSearchResponse.raml
index c447dab798..91d883177e 100644
--- a/api-specs/api/types/product-search/ProductPagedSearchResponse.raml
+++ b/api-specs/api/types/product-search/ProductPagedSearchResponse.raml
@@ -2,7 +2,6 @@
(package): ProductSearch
displayName: ProductPagedSearchResponse
type: object
-(beta): true
properties:
total:
type: number
@@ -25,6 +24,7 @@ properties:
Number of [results requested](/../api/general-concepts#limit).
facets:
type: ProductSearchFacetResult[]
+ (beta): true
description: |
Results for [facets](/../api/projects/product-search#facets) when requested.
results:
diff --git a/api-specs/api/types/product-search/ProductSearchErrorResponse.raml b/api-specs/api/types/product-search/ProductSearchErrorResponse.raml
index e3af94da2e..def30932ad 100644
--- a/api-specs/api/types/product-search/ProductSearchErrorResponse.raml
+++ b/api-specs/api/types/product-search/ProductSearchErrorResponse.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): ProductSearch
type: ErrorResponse
-(beta): true
displayName: ProductSearchErrorResponse
properties:
statusCode:
diff --git a/api-specs/api/types/product-search/ProductSearchMatchingVariantEntry.raml b/api-specs/api/types/product-search/ProductSearchMatchingVariantEntry.raml
index e87b764f0e..ab6eece7f9 100644
--- a/api-specs/api/types/product-search/ProductSearchMatchingVariantEntry.raml
+++ b/api-specs/api/types/product-search/ProductSearchMatchingVariantEntry.raml
@@ -2,7 +2,6 @@
(package): ProductSearch
displayName: ProductSearchMatchingVariantEntry
type: object
-(beta): true
properties:
id:
type: number
diff --git a/api-specs/api/types/product-search/ProductSearchMatchingVariants.raml b/api-specs/api/types/product-search/ProductSearchMatchingVariants.raml
index 8def25fb07..bd9ad22800 100644
--- a/api-specs/api/types/product-search/ProductSearchMatchingVariants.raml
+++ b/api-specs/api/types/product-search/ProductSearchMatchingVariants.raml
@@ -2,7 +2,6 @@
(package): ProductSearch
displayName: ProductSearchMatchingVariants
type: object
-(beta): true
properties:
allMatched:
type: boolean
diff --git a/api-specs/api/types/product-search/ProductSearchProjectionParams.raml b/api-specs/api/types/product-search/ProductSearchProjectionParams.raml
index 1408908fa7..b986083838 100644
--- a/api-specs/api/types/product-search/ProductSearchProjectionParams.raml
+++ b/api-specs/api/types/product-search/ProductSearchProjectionParams.raml
@@ -16,19 +16,19 @@ properties:
priceCurrency?:
type: CurrencyCode
description: |
- The currency used for [Price selection](/projects/products#price-selection).
+ The currency used for [Product price selection](/../api/pricing-and-discounts-overview#product-price-selection).
priceCountry?:
type: CountryCode
description: |
- The country used for [Price selection](/projects/products#price-selection). Can only be used **in conjunction with** the `priceCurrency` parameter.
+ The country used for [Product price selection](/../api/pricing-and-discounts-overview#product-price-selection). Can only be used **in conjunction with** the `priceCurrency` parameter.
priceCustomerGroup?:
type: string
description: |
- `id` of an existing [CustomerGroup](ctp:api:type:CustomerGroup) used for [Price selection](ctp:api:type:ProductPriceSelection). Can only be used **in conjunction with** the `priceCurrency` parameter.
+ `id` of an existing [CustomerGroup](ctp:api:type:CustomerGroup) used for [Product price selection](/../api/pricing-and-discounts-overview#product-price-selection). Can only be used **in conjunction with** the `priceCurrency` parameter.
priceChannel?:
type: string
description: |
- `id` of an existing [Channel](ctp:api:type:Channel) used for [Price selection](ctp:api:type:ProductPriceSelection). Can only be used **in conjunction with** the `priceCurrency` parameter.
+ `id` of an existing [Channel](ctp:api:type:Channel) used for [Product price selection](/../api/pricing-and-discounts-overview#product-price-selection). Can only be used **in conjunction with** the `priceCurrency` parameter.
localeProjection?:
type: Locale[]
description: |
@@ -40,4 +40,4 @@ properties:
If the Store has defined some languages, countries, distribution or supply Channels,
they are used for projections based on [locale](ctp:api:type:ProductProjectionLocales), [price](ctp:api:type:ProductProjectionPrices),
and [inventory](ctp:api:type:ProductProjectionInventoryEntries).
- If the Store has defined [Product Selections](ctp:api:type:ProductSelection), they have no effect on the results of this query.
+ If the Store has defined [Product Selections](ctp:api:type:ProductSelection) or [Product Tailoring](ctp:api:type:ProductTailoring), they have no effect on the results of this query.
diff --git a/api-specs/api/types/product-search/ProductSearchRequest.raml b/api-specs/api/types/product-search/ProductSearchRequest.raml
index f66cc79ad2..172a3783f0 100644
--- a/api-specs/api/types/product-search/ProductSearchRequest.raml
+++ b/api-specs/api/types/product-search/ProductSearchRequest.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): ProductSearch
type: object
-(beta): true
displayName: ProductSearchRequest
example: !include ../../examples/ProductSearch/product-search-request.example.json
properties:
@@ -30,12 +29,14 @@ properties:
description: The search can return Products where not all Product Variants match the search criteria. If `true`, the response will include a field called `matchingVariants` that contains the `sku` of Product Variants that match the search query. If the query does not specify any variant-level criteria, `matchingVariants` will be null signifying that all Product Variants are a match.
productProjectionParameters?:
type: ProductSearchProjectionParams
+ (beta): true
description: |
Set this field to `{}` to get the [ProductProjection](ctp:api:type:ProductProjection) included in the [ProductSearchResult](ctp:api:type:ProductSearchResult).
Include query parameters for controlling [Reference Expansion](/../api/general-concepts#reference-expansion) or [projections](/../api/projects/productProjections#projection-dimensions) according to your needs.
If not set, the result does not include the Product Projection.
facets?:
type: ProductSearchFacetExpression[]
+ (beta): true
description: |
Set this field to request [facets](/../api/projects/product-search#facets).
postFilter?:
diff --git a/api-specs/api/types/product-search/ProductSearchResult.raml b/api-specs/api/types/product-search/ProductSearchResult.raml
index f255bb8f1e..186c5dba90 100644
--- a/api-specs/api/types/product-search/ProductSearchResult.raml
+++ b/api-specs/api/types/product-search/ProductSearchResult.raml
@@ -2,7 +2,6 @@
(package): ProductSearch
displayName: ProductSearchResult
type: object
-(beta): true
properties:
id:
(identifier): true
@@ -10,6 +9,7 @@ properties:
description: Unique identifier of the Product.
productProjection?:
type: ProductProjection
+ (beta): true
description: Contains Product Projection data for Products matching the `projection` field in the Search Products request.
matchingVariants?:
type: ProductSearchMatchingVariants
diff --git a/api-specs/api/types/product-selection/AssignedProductReference.raml b/api-specs/api/types/product-selection/AssignedProductReference.raml
index d0b461e27b..4c83a09cc4 100644
--- a/api-specs/api/types/product-selection/AssignedProductReference.raml
+++ b/api-specs/api/types/product-selection/AssignedProductReference.raml
@@ -1,6 +1,7 @@
#%RAML 1.0 DataType
(package): ProductSelection
type: object
+(expandable): true
displayName: AssignedProductReference
properties:
product:
diff --git a/api-specs/api/types/product-selection/AssignedProductSelection.raml b/api-specs/api/types/product-selection/AssignedProductSelection.raml
index 74d82f0405..781bb679e6 100644
--- a/api-specs/api/types/product-selection/AssignedProductSelection.raml
+++ b/api-specs/api/types/product-selection/AssignedProductSelection.raml
@@ -2,6 +2,7 @@
(package): ProductSelection
type: object
displayName: AssignedProductSelection
+(expandable): true
properties:
productSelection:
type: ProductSelectionReference
diff --git a/api-specs/api/types/product-selection/ProductSelectionAssignment.raml b/api-specs/api/types/product-selection/ProductSelectionAssignment.raml
index 878cc8cf02..e327e5cb88 100644
--- a/api-specs/api/types/product-selection/ProductSelectionAssignment.raml
+++ b/api-specs/api/types/product-selection/ProductSelectionAssignment.raml
@@ -1,6 +1,7 @@
#%RAML 1.0 DataType
(package): ProductSelection
type: object
+(expandable): true
displayName: ProductSelectionAssignment
description: |-
diff --git a/api-specs/api/types/product-selection/ProductSelectionProductPagedQueryResponse.raml b/api-specs/api/types/product-selection/ProductSelectionProductPagedQueryResponse.raml
index a6a323b95b..37c6fcce78 100644
--- a/api-specs/api/types/product-selection/ProductSelectionProductPagedQueryResponse.raml
+++ b/api-specs/api/types/product-selection/ProductSelectionProductPagedQueryResponse.raml
@@ -2,6 +2,7 @@
(package): ProductSelection
displayName: ProductSelectionProductPagedQueryResponse
type: object
+(expandable): true
description: |
[PagedQueryResult](/general-concepts#pagedqueryresult) containing an array of [AssignedProductReference](ctp:api:type:AssignedProductReference).
properties:
diff --git a/api-specs/api/types/product-tailoring/ProductTailoring.raml b/api-specs/api/types/product-tailoring/ProductTailoring.raml
index 6968a870a8..0f50a2f476 100644
--- a/api-specs/api/types/product-tailoring/ProductTailoring.raml
+++ b/api-specs/api/types/product-tailoring/ProductTailoring.raml
@@ -2,7 +2,6 @@
(package): ProductTailoring
displayName: ProductTailoring
type: BaseResource
-(beta): true
(updateType): ProductTailoringUpdate
description: |
A single ProductTailoring representation contains the _current_ and the _staged_ representation of its product data tailored per Store.
diff --git a/api-specs/api/types/product-tailoring/ProductTailoringData.raml b/api-specs/api/types/product-tailoring/ProductTailoringData.raml
index ec9e5db182..a6baf545e0 100644
--- a/api-specs/api/types/product-tailoring/ProductTailoringData.raml
+++ b/api-specs/api/types/product-tailoring/ProductTailoringData.raml
@@ -2,7 +2,6 @@
(package): ProductTailoring
displayName: ProductTailoringData
type: object
-(beta): true
description: |
Contains all the tailored data of a Product.
properties:
@@ -31,3 +30,8 @@ properties:
description: |
User-defined identifier used in a deep-link URL for the ProductTailoring.
Matches the pattern `[a-zA-Z0-9_\\-]{2,256}`.
+ variants?:
+ type: ProductVariantTailoring[]
+ (beta): true
+ description: |
+ Tailored Variants of the Product.
diff --git a/api-specs/api/types/product-tailoring/ProductTailoringDraft.raml b/api-specs/api/types/product-tailoring/ProductTailoringDraft.raml
index 1b0829d035..199c37777b 100644
--- a/api-specs/api/types/product-tailoring/ProductTailoringDraft.raml
+++ b/api-specs/api/types/product-tailoring/ProductTailoringDraft.raml
@@ -2,7 +2,6 @@
(package): ProductTailoring
displayName: ProductTailoringDraft
type: object
-(beta): true
description: |
Contains all the tailored data of a Product.
properties:
@@ -48,3 +47,8 @@ properties:
description: |
If `true`, the ProductTailoring is published immediately.
default: false
+ variants?:
+ type: ProductVariantTailoringDraft[]
+ (beta): true
+ description: |
+ Tailored Variants of the Product.
diff --git a/api-specs/api/types/product-tailoring/ProductTailoringInStoreDraft.raml b/api-specs/api/types/product-tailoring/ProductTailoringInStoreDraft.raml
index 9dce8469ce..ab338ef995 100644
--- a/api-specs/api/types/product-tailoring/ProductTailoringInStoreDraft.raml
+++ b/api-specs/api/types/product-tailoring/ProductTailoringInStoreDraft.raml
@@ -2,7 +2,6 @@
(package): ProductTailoring
displayName: ProductTailoringInStoreDraft
type: object
-(beta): true
description: |
Contains all the tailored data of a Product for a specific Store.
properties:
@@ -44,3 +43,8 @@ properties:
description: |
If `true`, the ProductTailoring is published immediately.
default: false
+ variants?:
+ type: ProductVariantTailoringDraft[]
+ (beta): true
+ description: |
+ Tailored Variants of the Product.
diff --git a/api-specs/api/types/product-tailoring/ProductTailoringPagedQueryResponse.raml b/api-specs/api/types/product-tailoring/ProductTailoringPagedQueryResponse.raml
index 91e886cd9f..8fc3ba9d72 100644
--- a/api-specs/api/types/product-tailoring/ProductTailoringPagedQueryResponse.raml
+++ b/api-specs/api/types/product-tailoring/ProductTailoringPagedQueryResponse.raml
@@ -2,7 +2,6 @@
(package): ProductTailoring
displayName: ProductTailoringPagedQueryResponse
type: object
-(beta): true
example: !include ../../examples/product-tailoring-list.example.json
description: |
[PagedQueryResult](/../api/general-concepts#pagedqueryresult) with results containing an array of [ProductTailoring](ctp:api:type:ProductTailoring).
diff --git a/api-specs/api/types/product-tailoring/ProductTailoringReference.raml b/api-specs/api/types/product-tailoring/ProductTailoringReference.raml
index 51e1d31086..31332eed55 100644
--- a/api-specs/api/types/product-tailoring/ProductTailoringReference.raml
+++ b/api-specs/api/types/product-tailoring/ProductTailoringReference.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): ProductTailoring
type: Reference
-(beta): true
displayName: ProductTailoringReference
discriminatorValue: product-tailoring
description: |
diff --git a/api-specs/api/types/product-tailoring/ProductTailoringResourceIdentifier.raml b/api-specs/api/types/product-tailoring/ProductTailoringResourceIdentifier.raml
index 403b5fff40..70388a3ec5 100644
--- a/api-specs/api/types/product-tailoring/ProductTailoringResourceIdentifier.raml
+++ b/api-specs/api/types/product-tailoring/ProductTailoringResourceIdentifier.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): ProductTailoring
type: ResourceIdentifier
-(beta): true
displayName: ProductTailoringResourceIdentifier
discriminatorValue: product-tailoring
description: |
diff --git a/api-specs/api/types/product-tailoring/ProductTailoringUpdate.raml b/api-specs/api/types/product-tailoring/ProductTailoringUpdate.raml
index 4fa11a1107..6355483e42 100644
--- a/api-specs/api/types/product-tailoring/ProductTailoringUpdate.raml
+++ b/api-specs/api/types/product-tailoring/ProductTailoringUpdate.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Cart
type: object
-(beta): true
displayName: ProductTailoringUpdate
properties:
version:
diff --git a/api-specs/api/types/product-tailoring/ProductTailoringUpdateAction.raml b/api-specs/api/types/product-tailoring/ProductTailoringUpdateAction.raml
index 2b02c1a5b1..aba0458aa5 100644
--- a/api-specs/api/types/product-tailoring/ProductTailoringUpdateAction.raml
+++ b/api-specs/api/types/product-tailoring/ProductTailoringUpdateAction.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): ProductTailoring
type: object
-(beta): true
displayName: ProductTailoringUpdateAction
discriminator: action
properties:
diff --git a/api-specs/api/types/product-tailoring/ProductVariantTailoring.raml b/api-specs/api/types/product-tailoring/ProductVariantTailoring.raml
new file mode 100644
index 0000000000..b100a20890
--- /dev/null
+++ b/api-specs/api/types/product-tailoring/ProductVariantTailoring.raml
@@ -0,0 +1,23 @@
+#%RAML 1.0 DataType
+(package): ProductTailoring
+displayName: ProductVariantTailoring
+type: object
+(beta): true
+description: |
+ The tailoring of a [ProductVariant](ctp:api:type:ProductVariant).
+properties:
+ id:
+ type: number
+ format: int64
+ description: |
+ The `id` of the tailored [ProductVariant](ctp:api:type:ProductVariant).
+ images?:
+ type: Image[]
+ description: |
+ Images of the tailored Product Variant.
+ If present, these images will override the images of the corresponding [ProductVariant](ctp:api:type:ProductVariant) in total.
+ assets?:
+ type: Asset[]
+ description: |
+ Media assets of the tailored Product Variant.
+ If present, these assets will override the assets of the corresponding [ProductVariant](ctp:api:type:ProductVariant) in total.
diff --git a/api-specs/api/types/product-tailoring/ProductVariantTailoringDraft.raml b/api-specs/api/types/product-tailoring/ProductVariantTailoringDraft.raml
new file mode 100644
index 0000000000..1ebd97d346
--- /dev/null
+++ b/api-specs/api/types/product-tailoring/ProductVariantTailoringDraft.raml
@@ -0,0 +1,25 @@
+#%RAML 1.0 DataType
+(package): ProductTailoring
+displayName: ProductVariantTailoringDraft
+type: object
+(beta): true
+description: |
+ Either `id` or `sku` is required to reference a [ProductVariant](ctp:api:type:ProductVariant) that exists.
+properties:
+ id?:
+ type: number
+ format: int64
+ description: |
+ The `id` of the [ProductVariant](ctp:api:type:ProductVariant) to be tailored.
+ sku?:
+ type: string
+ description: |
+ The `sku` of the [ProductVariant](ctp:api:type:ProductVariant) to be tailored.
+ images?:
+ type: Image[]
+ description: |
+ Images of the tailored Product Variant.
+ assets?:
+ type: Asset[]
+ description: |
+ Media assets of the tailored Product Variant.
diff --git a/api-specs/api/types/product-tailoring/updates/ProductTailoringAddAssetAction.raml b/api-specs/api/types/product-tailoring/updates/ProductTailoringAddAssetAction.raml
new file mode 100644
index 0000000000..da76adbe9e
--- /dev/null
+++ b/api-specs/api/types/product-tailoring/updates/ProductTailoringAddAssetAction.raml
@@ -0,0 +1,33 @@
+#%RAML 1.0 DataType
+(package): ProductTailoring
+type: ProductTailoringUpdateAction
+(beta): true
+displayName: ProductTailoringAddAssetAction
+discriminatorValue: addAsset
+description: |
+ Either `variantId` or `sku` is required to reference a [ProductVariant](ctp:api:type:ProductVariant) that exists.
+example: !include ../../../examples/ProductTailoring/ProductTailoringAddAssetAction.json
+properties:
+ variantId?:
+ type: number
+ format: int64
+ description: |
+ The `id` of the tailored ProductVariant to update.
+ sku?:
+ type: string
+ description: |
+ The `sku` of the tailored ProductVariant to update.
+ staged?:
+ type: boolean
+ description: |
+ If `true`, only the staged `assets` are updated. If `false`, both the current and staged `assets` are updated.
+ default: true
+ asset:
+ type: AssetDraft
+ description: |
+ Value to append.
+ position?:
+ type: number
+ format: int32
+ description: |
+ Position in `assets` where the Asset should be put. When specified, the value must be between `0` and the total number of Assets minus `1`.
diff --git a/api-specs/api/types/product-tailoring/updates/ProductTailoringAddExternalImageAction.raml b/api-specs/api/types/product-tailoring/updates/ProductTailoringAddExternalImageAction.raml
new file mode 100644
index 0000000000..b431b74bd4
--- /dev/null
+++ b/api-specs/api/types/product-tailoring/updates/ProductTailoringAddExternalImageAction.raml
@@ -0,0 +1,28 @@
+#%RAML 1.0 DataType
+(package): ProductTailoring
+type: ProductTailoringUpdateAction
+(beta): true
+displayName: ProductTailoringAddExternalImageAction
+discriminatorValue: addExternalImage
+description: |
+ Either `variantId` or `sku` is required to reference a [ProductVariant](ctp:api:type:ProductVariant) that exists. Produces the [ProductTailoringImageAdded](/projects/messages#product-tailoring-image-added) Message.
+example: !include ../../../examples/ProductTailoring/ProductTailoringAddExternalImageAction.json
+properties:
+ variantId?:
+ type: number
+ format: int64
+ description: |
+ The `id` of the tailored ProductVariant to update.
+ sku?:
+ type: string
+ description: |
+ The `sku` of the tailored ProductVariant to update.
+ image:
+ type: Image
+ description: |
+ Value to add to `images`.
+ staged?:
+ type: boolean
+ description: |
+ If `true`, only the staged `images` is updated. If `false`, both the current and staged `images` is updated.
+ default: true
diff --git a/api-specs/api/types/product-tailoring/updates/ProductTailoringAddVariantAction.raml b/api-specs/api/types/product-tailoring/updates/ProductTailoringAddVariantAction.raml
new file mode 100644
index 0000000000..7fc8960b2f
--- /dev/null
+++ b/api-specs/api/types/product-tailoring/updates/ProductTailoringAddVariantAction.raml
@@ -0,0 +1,33 @@
+#%RAML 1.0 DataType
+(package): ProductTailoring
+type: ProductTailoringUpdateAction
+(beta): true
+displayName: ProductTailoringAddVariantAction
+discriminatorValue: addVariant
+example: !include ../../../examples/ProductTailoring/ProductTailoringAddVariantAction.json
+description: |
+ Either `id` or `sku` is required to reference a [ProductVariant](ctp:api:type:ProductVariant) that exists.
+ Produces the [ProductVariantTailoringAdded](ctp:api:type:ProductVariantTailoringAddedMessage) Message.
+properties:
+ id?:
+ type: number
+ format: int64
+ description: |
+ The `id` of the tailored ProductVariant to update.
+ sku?:
+ type: string
+ description: |
+ The `sku` of the tailored ProductVariant to update.
+ images?:
+ type: Image[]
+ description: |
+ Images for the Product Variant Tailoring.
+ assets?:
+ type: AssetDraft[]
+ description: |
+ Media assets for the Product Variant Tailoring.
+ staged?:
+ type: boolean
+ description: |
+ If `true` the new Product Variant Tailoring is only staged. If `false` the new Product Variant Tailoring is both current and staged.
+ default: true
diff --git a/api-specs/api/types/product-tailoring/updates/ProductTailoringChangeAssetNameAction.raml b/api-specs/api/types/product-tailoring/updates/ProductTailoringChangeAssetNameAction.raml
new file mode 100644
index 0000000000..53ca158e92
--- /dev/null
+++ b/api-specs/api/types/product-tailoring/updates/ProductTailoringChangeAssetNameAction.raml
@@ -0,0 +1,37 @@
+#%RAML 1.0 DataType
+(package): ProductTailoring
+type: ProductTailoringUpdateAction
+(beta): true
+displayName: ProductTailoringChangeAssetNameAction
+discriminatorValue: changeAssetName
+description: |
+ Either `variantId` or `sku` is required to reference a [ProductVariant](ctp:api:type:ProductVariant) that exists.
+ The Asset to update must be specified using either `assetId` or `assetKey`.
+example: !include ../../../examples/ProductTailoring/ProductTailoringChangeAssetNameAction.json
+properties:
+ variantId?:
+ type: number
+ format: int64
+ description: |
+ The `id` of the tailored ProductVariant to update.
+ sku?:
+ type: string
+ description: |
+ The `sku` of the tailored ProductVariant to update.
+ staged?:
+ type: boolean
+ description: |
+ If `true`, only the staged Asset is updated. If `false`, both the current and staged Asset is updated.
+ default: true
+ assetId?:
+ type: string
+ description: |
+ The `id` of the Asset to update.
+ assetKey?:
+ type: string
+ description: |
+ The `key` of the Asset to update.
+ name:
+ type: LocalizedString
+ description: |
+ New value to set. Must not be empty.
diff --git a/api-specs/api/types/product-tailoring/updates/ProductTailoringChangeAssetOrderAction.raml b/api-specs/api/types/product-tailoring/updates/ProductTailoringChangeAssetOrderAction.raml
new file mode 100644
index 0000000000..6364549359
--- /dev/null
+++ b/api-specs/api/types/product-tailoring/updates/ProductTailoringChangeAssetOrderAction.raml
@@ -0,0 +1,28 @@
+#%RAML 1.0 DataType
+(package): ProductTailoring
+type: ProductTailoringUpdateAction
+(beta): true
+displayName: ProductTailoringChangeAssetOrderAction
+discriminatorValue: changeAssetOrder
+description: |
+ Either `variantId` or `sku` is required to reference a [ProductVariant](ctp:api:type:ProductVariant) that exists.
+example: !include ../../../examples/ProductTailoring/ProductTailoringChangeAssetOrderAction.json
+properties:
+ variantId?:
+ type: number
+ format: int64
+ description: |
+ The `id` of the tailored ProductVariant to update.
+ sku?:
+ type: string
+ description: |
+ The `sku` of the tailored ProductVariant to update.
+ staged?:
+ type: boolean
+ description: |
+ If `true`, only the staged `assets` is updated. If `false`, both the current and staged `assets` are updated.
+ default: true
+ assetOrder:
+ type: string[]
+ description: |
+ All existing Asset `id`s of the ProductTailoringVariant in the desired new order.
diff --git a/api-specs/api/types/product-tailoring/updates/ProductTailoringMoveImageToPositionAction.raml b/api-specs/api/types/product-tailoring/updates/ProductTailoringMoveImageToPositionAction.raml
new file mode 100644
index 0000000000..209163649e
--- /dev/null
+++ b/api-specs/api/types/product-tailoring/updates/ProductTailoringMoveImageToPositionAction.raml
@@ -0,0 +1,33 @@
+#%RAML 1.0 DataType
+(package): ProductTailoring
+type: ProductTailoringUpdateAction
+(beta): true
+displayName: ProductTailoringMoveImageToPositionAction
+discriminatorValue: moveImageToPosition
+description: |
+ Either `variantId` or `sku` is required to reference a [ProductVariant](ctp:api:type:ProductVariant) that exists.
+example: !include ../../../examples/ProductTailoring/ProductTailoringMoveImageToPositionAction.json
+properties:
+ variantId?:
+ type: number
+ format: int64
+ description: |
+ The `id` of the tailored ProductVariant to update.
+ sku?:
+ type: string
+ description: |
+ The `sku` of the tailored ProductVariant to update.
+ imageUrl:
+ type: string
+ description: |
+ The URL of the image to update.
+ position:
+ type: number
+ format: int64
+ description: |
+ Position in `images` where the image should be moved. Must be between `0` and the total number of images minus `1`.
+ staged?:
+ type: boolean
+ description: |
+ If `true`, only the staged `images` is updated. If `false`, both the current and staged `images` is updated.
+ default: true
diff --git a/api-specs/api/types/product-tailoring/updates/ProductTailoringPublishAction.raml b/api-specs/api/types/product-tailoring/updates/ProductTailoringPublishAction.raml
index 1f54459883..c5abe258b7 100644
--- a/api-specs/api/types/product-tailoring/updates/ProductTailoringPublishAction.raml
+++ b/api-specs/api/types/product-tailoring/updates/ProductTailoringPublishAction.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): ProductTailoring
type: ProductTailoringUpdateAction
-(beta): true
displayName: ProductTailoringPublishAction
discriminatorValue: publish
example: !include ../../../examples/ProductTailoring/ProductTailoringPublishAction.json
diff --git a/api-specs/api/types/product-tailoring/updates/ProductTailoringRemoveAssetAction.raml b/api-specs/api/types/product-tailoring/updates/ProductTailoringRemoveAssetAction.raml
new file mode 100644
index 0000000000..e4150a11c8
--- /dev/null
+++ b/api-specs/api/types/product-tailoring/updates/ProductTailoringRemoveAssetAction.raml
@@ -0,0 +1,33 @@
+#%RAML 1.0 DataType
+(package): ProductTailoring
+type: ProductTailoringUpdateAction
+(beta): true
+displayName: ProductTailoringRemoveAssetAction
+discriminatorValue: removeAsset
+description: |
+ Either `variantId` or `sku` is required to reference a [ProductVariant](ctp:api:type:ProductVariant) that exists.
+ The Asset to remove must be specified using either `assetId` or `assetKey`.
+example: !include ../../../examples/ProductTailoring/ProductTailoringRemoveAssetAction.json
+properties:
+ variantId?:
+ type: number
+ format: int64
+ description: |
+ The `id` of the tailored ProductVariant to update.
+ sku?:
+ type: string
+ description: |
+ The `sku` of the tailored ProductVariant to update.
+ staged?:
+ type: boolean
+ description: |
+ If `true`, only the staged Asset is removed. If `false`, both the current and staged Asset is removed.
+ default: true
+ assetId?:
+ type: string
+ description: |
+ The `id` of the Asset to remove.
+ assetKey?:
+ type: string
+ description: |
+ The `key` of the Asset to remove.
diff --git a/api-specs/api/types/product-tailoring/updates/ProductTailoringRemoveImageAction.raml b/api-specs/api/types/product-tailoring/updates/ProductTailoringRemoveImageAction.raml
new file mode 100644
index 0000000000..e358202186
--- /dev/null
+++ b/api-specs/api/types/product-tailoring/updates/ProductTailoringRemoveImageAction.raml
@@ -0,0 +1,28 @@
+#%RAML 1.0 DataType
+(package): ProductTailoring
+type: ProductTailoringUpdateAction
+(beta): true
+displayName: ProductTailoringRemoveImageAction
+discriminatorValue: removeImage
+description: |
+ Either `variantId` or `sku` is required to reference a [ProductVariant](ctp:api:type:ProductVariant) that exists.
+example: !include ../../../examples/ProductTailoring/ProductTailoringRemoveImageAction.json
+properties:
+ variantId?:
+ type: number
+ format: int64
+ description: |
+ The `id` of the tailored ProductVariant to update.
+ sku?:
+ type: string
+ description: |
+ The `sku` of the tailored ProductVariant to update.
+ imageUrl:
+ type: string
+ description: |
+ The URL of the image to remove.
+ staged?:
+ type: boolean
+ description: |
+ If `true`, only the staged image is removed. If `false`, both the current and staged image is removed.
+ default: true
diff --git a/api-specs/api/types/product-tailoring/updates/ProductTailoringRemoveVariantAction.raml b/api-specs/api/types/product-tailoring/updates/ProductTailoringRemoveVariantAction.raml
new file mode 100644
index 0000000000..5153d3dd4a
--- /dev/null
+++ b/api-specs/api/types/product-tailoring/updates/ProductTailoringRemoveVariantAction.raml
@@ -0,0 +1,25 @@
+#%RAML 1.0 DataType
+(package): ProductTailoring
+type: ProductTailoringUpdateAction
+(beta): true
+displayName: ProductTailoringRemoveVariantAction
+discriminatorValue: removeVariant
+description: |
+ Either `id` or `sku` is required.
+ Produces the [ProductVariantTailoringDeleted](ctp:api:type:ProductVariantTailoringRemovedMessage) Message.
+example: !include ../../../examples/ProductTailoring/ProductTailoringRemoveVariantAction.json
+properties:
+ id?:
+ type: number
+ format: int64
+ description: |
+ The `id` of the ProductVariant to remove from the Tailoring.
+ sku?:
+ type: string
+ description: |
+ The `sku` of the ProductVariant to remove from the Tailoring.
+ staged?:
+ type: boolean
+ description: |
+ If `true`, only the staged Product Variant Tailoring is removed. If `false`, both the current and staged Product Variant Tailoring is removed.
+ default: true
diff --git a/api-specs/api/types/product-tailoring/updates/ProductTailoringSetAssetCustomFieldAction.raml b/api-specs/api/types/product-tailoring/updates/ProductTailoringSetAssetCustomFieldAction.raml
new file mode 100644
index 0000000000..f97bff7e06
--- /dev/null
+++ b/api-specs/api/types/product-tailoring/updates/ProductTailoringSetAssetCustomFieldAction.raml
@@ -0,0 +1,43 @@
+#%RAML 1.0 DataType
+(package): ProductTailoring
+type: ProductTailoringUpdateAction
+(beta): true
+displayName: ProductTailoringSetAssetCustomFieldAction
+discriminatorValue: setAssetCustomField
+description: |
+ Either `variantId` or `sku` is required to reference a [ProductVariant](ctp:api:type:ProductVariant) that exists.
+ The [Asset](ctp:api:type:Asset) to update must be specified using either `assetId` or `assetKey`.
+example: !include ../../../examples/ProductTailoring/ProductTailoringSetAssetCustomFieldAction.json
+properties:
+ variantId?:
+ type: number
+ format: int64
+ description: |
+ The `id` of the tailored ProductVariant to update.
+ sku?:
+ type: string
+ description: |
+ The `sku` of the tailored ProductVariant to update.
+ staged?:
+ type: boolean
+ description: |
+ If `true`, only the staged Asset is updated. If `false`, both the current and staged Asset is updated.
+ default: true
+ assetId?:
+ type: string
+ description: |
+ The `id` of the Asset to update.
+ assetKey?:
+ type: string
+ description: |
+ The `key` of the Asset to update.
+ name:
+ type: string
+ description: |
+ Name of the [Custom Field](/../api/projects/custom-fields).
+ value?:
+ type: CustomFieldValue
+ description: |
+ If `value` is absent or `null`, this field will be removed if it exists.
+ Removing a field that does not exist returns an [InvalidOperation](ctp:api:type:InvalidOperationError) error.
+ If `value` is provided, it is set for the field defined by `name`.
diff --git a/api-specs/api/types/product-tailoring/updates/ProductTailoringSetAssetCustomTypeAction.raml b/api-specs/api/types/product-tailoring/updates/ProductTailoringSetAssetCustomTypeAction.raml
new file mode 100644
index 0000000000..c9e23bdcb6
--- /dev/null
+++ b/api-specs/api/types/product-tailoring/updates/ProductTailoringSetAssetCustomTypeAction.raml
@@ -0,0 +1,42 @@
+#%RAML 1.0 DataType
+(package): ProductTailoring
+type: ProductTailoringUpdateAction
+(beta): true
+displayName: ProductTailoringSetAssetCustomTypeAction
+discriminatorValue: setAssetCustomType
+description: |
+ Either `variantId` or `sku` is required to reference a [ProductVariant](ctp:api:type:ProductVariant) that exists.
+ The [Asset](ctp:api:type:Asset) to update must be specified using either `assetId` or `assetKey`.
+example: !include ../../../examples/ProductTailoring/ProductTailoringSetAssetCustomTypeAction.json
+properties:
+ variantId?:
+ type: number
+ format: int64
+ description: |
+ The `id` of the tailored ProductVariant to update.
+ sku?:
+ type: string
+ description: |
+ The `sku` of the tailored ProductVariant to update.
+ staged?:
+ type: boolean
+ description: |
+ If `true`, only the staged Asset is updated. If `false`, both the current and staged Asset is updated.
+ default: true
+ assetId?:
+ type: string
+ description: |
+ The `id` of the Asset to update.
+ assetKey?:
+ type: string
+ description: |
+ The `key` of the Asset to update.
+ type?:
+ type: TypeResourceIdentifier
+ description: |
+ Defines the [Type](ctp:api:type:Type) that extends the Asset with [Custom Fields](/../api/projects/custom-fields).
+ If absent, any existing Type and Custom Fields are removed from the Asset.
+ fields?:
+ type: FieldContainer
+ description: |
+ Sets the [Custom Fields](/../api/projects/custom-fields) fields for the Asset.
diff --git a/api-specs/api/types/product-tailoring/updates/ProductTailoringSetAssetDescriptionAction.raml b/api-specs/api/types/product-tailoring/updates/ProductTailoringSetAssetDescriptionAction.raml
new file mode 100644
index 0000000000..45c0fedcb9
--- /dev/null
+++ b/api-specs/api/types/product-tailoring/updates/ProductTailoringSetAssetDescriptionAction.raml
@@ -0,0 +1,37 @@
+#%RAML 1.0 DataType
+(package): ProductTailoring
+type: ProductTailoringUpdateAction
+(beta): true
+displayName: ProductTailoringSetAssetDescriptionAction
+discriminatorValue: setAssetDescription
+description: |
+ Either `variantId` or `sku` is required to reference a [ProductVariant](ctp:api:type:ProductVariant) that exists.
+ The [Asset](ctp:api:type:Asset) to update must be specified using either `assetId` or `assetKey`.
+example: !include ../../../examples/ProductTailoring/ProductTailoringSetAssetDescriptionAction.json
+properties:
+ variantId?:
+ type: number
+ format: int64
+ description: |
+ The `id` of the tailored ProductVariant to update.
+ sku?:
+ type: string
+ description: |
+ The `sku` of the tailored ProductVariant to update.
+ staged?:
+ type: boolean
+ description: |
+ If `true`, only the staged Asset is updated. If `false`, both the current and staged Asset is updated.
+ default: true
+ assetId?:
+ type: string
+ description: |
+ The `id` of the Asset to update.
+ assetKey?:
+ type: string
+ description: |
+ The `key` of the Asset to update.
+ description?:
+ type: LocalizedString
+ description: |
+ Value to set. If empty, any existing value will be removed.
diff --git a/api-specs/api/types/product-tailoring/updates/ProductTailoringSetAssetKeyAction.raml b/api-specs/api/types/product-tailoring/updates/ProductTailoringSetAssetKeyAction.raml
new file mode 100644
index 0000000000..14907aa91b
--- /dev/null
+++ b/api-specs/api/types/product-tailoring/updates/ProductTailoringSetAssetKeyAction.raml
@@ -0,0 +1,35 @@
+#%RAML 1.0 DataType
+(package): ProductTailoring
+type: ProductTailoringUpdateAction
+(beta): true
+displayName: ProductTailoringSetAssetKeyAction
+discriminatorValue: setAssetKey
+description: |
+ Either `variantId` or `sku` is required to reference a [ProductVariant](ctp:api:type:ProductVariant) that exists.
+example: !include ../../../examples/ProductTailoring/ProductTailoringSetAssetKeyAction.json
+properties:
+ variantId?:
+ type: number
+ format: int64
+ description: |
+ The `id` of the tailored ProductVariant to update.
+ sku?:
+ type: string
+ description: |
+ The `sku` of the tailored ProductVariant to update.
+ staged?:
+ type: boolean
+ description: |
+ If `true`, only the staged Asset is updated. If `false`, both the current and staged Asset is updated.
+ default: true
+ assetId:
+ type: string
+ description: |
+ The `id` of the Asset to update.
+ assetKey?:
+ type: string
+ pattern: ^[A-Za-z0-9_-]+$
+ minLength: 2
+ maxLength: 256
+ description: |
+ Value to set. If empty, any existing value will be removed.
diff --git a/api-specs/api/types/product-tailoring/updates/ProductTailoringSetAssetSourcesAction.raml b/api-specs/api/types/product-tailoring/updates/ProductTailoringSetAssetSourcesAction.raml
new file mode 100644
index 0000000000..780a951842
--- /dev/null
+++ b/api-specs/api/types/product-tailoring/updates/ProductTailoringSetAssetSourcesAction.raml
@@ -0,0 +1,38 @@
+#%RAML 1.0 DataType
+(package): ProductTailoring
+type: ProductTailoringUpdateAction
+(beta): true
+displayName: ProductTailoringSetAssetSourcesAction
+discriminatorValue: setAssetSources
+description: |
+ Either `variantId` or `sku` is required to reference a [ProductVariant](ctp:api:type:ProductVariant) that exists.
+ The [Asset](ctp:api:type:Asset) to update must be specified using either `assetId` or `assetKey`.
+example: !include ../../../examples/ProductTailoring/ProductTailoringSetAssetSourcesAction.json
+properties:
+ variantId?:
+ type: number
+ format: int64
+ description: |
+ The `id` of the tailored ProductVariant to update.
+ sku?:
+ type: string
+ description: |
+ The `sku` of the tailored ProductVariant to update.
+ staged?:
+ type: boolean
+ description: |
+ If `true`, only the staged Asset is updated. If `false` both the current and staged Asset is updated.
+ default: true
+ assetId?:
+ type: string
+ description: |
+ The `id` of the Asset to update.
+ assetKey?:
+ type: string
+ description: |
+ The `key` of the Asset to update.
+ sources:
+ type: AssetSource[]
+ minItems: 1
+ description: |
+ Value to set.
diff --git a/api-specs/api/types/product-tailoring/updates/ProductTailoringSetAssetTagsAction.raml b/api-specs/api/types/product-tailoring/updates/ProductTailoringSetAssetTagsAction.raml
new file mode 100644
index 0000000000..d174bfe678
--- /dev/null
+++ b/api-specs/api/types/product-tailoring/updates/ProductTailoringSetAssetTagsAction.raml
@@ -0,0 +1,37 @@
+#%RAML 1.0 DataType
+(package): ProductTailoring
+type: ProductTailoringUpdateAction
+(beta): true
+displayName: ProductTailoringSetAssetTagsAction
+discriminatorValue: setAssetTags
+description: |
+ Either `variantId` or `sku` is required to reference a [ProductVariant](ctp:api:type:ProductVariant) that exists.
+ The Asset to update must be specified using either `assetId` or `assetKey`.
+example: !include ../../../examples/ProductTailoring/ProductTailoringSetAssetTagsAction.json
+properties:
+ variantId?:
+ type: number
+ format: int64
+ description: |
+ The `id` of the tailored ProductVariant to update.
+ sku?:
+ type: string
+ description: |
+ The `sku` of the tailored ProductVariant to update.
+ staged?:
+ type: boolean
+ description: |
+ If `true`, only the staged Asset is updated. If `false`, both the current and staged Asset is updated.
+ default: true
+ assetId?:
+ type: string
+ description: |
+ The `id` of the Asset to update.
+ assetKey?:
+ type: string
+ description: |
+ The `key` of the Asset to update.
+ tags?:
+ type: string[]
+ description: |
+ Keywords for categorizing and organizing Assets.
diff --git a/api-specs/api/types/product-tailoring/updates/ProductTailoringSetDescriptionAction.raml b/api-specs/api/types/product-tailoring/updates/ProductTailoringSetDescriptionAction.raml
index d0d935dd65..f93e097a92 100644
--- a/api-specs/api/types/product-tailoring/updates/ProductTailoringSetDescriptionAction.raml
+++ b/api-specs/api/types/product-tailoring/updates/ProductTailoringSetDescriptionAction.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): ProductTailoring
type: ProductTailoringUpdateAction
-(beta): true
displayName: ProductTailoringSetDescriptionAction
discriminatorValue: setDescription
example: !include ../../../examples/ProductTailoring/ProductTailoringSetDescriptionAction.json
diff --git a/api-specs/api/types/product-tailoring/updates/ProductTailoringSetExternalImagesAction.raml b/api-specs/api/types/product-tailoring/updates/ProductTailoringSetExternalImagesAction.raml
new file mode 100644
index 0000000000..24d159db25
--- /dev/null
+++ b/api-specs/api/types/product-tailoring/updates/ProductTailoringSetExternalImagesAction.raml
@@ -0,0 +1,29 @@
+#%RAML 1.0 DataType
+(package): ProductTailoring
+type: ProductTailoringUpdateAction
+(beta): true
+displayName: ProductTailoringSetExternalImagesAction
+discriminatorValue: setImages
+description: |
+ Either `variantId` or `sku` is required to reference a [ProductVariant](ctp:api:type:ProductVariant) that exists. Produces the [ProductTailoringImagesSet](/projects/messages#product-tailoring-images-set) Message.
+example: !include ../../../examples/ProductTailoring/ProductTailoringSetExternalImagesAction.json
+properties:
+ variantId?:
+ type: number
+ format: int64
+ description: |
+ The `id` of the tailored ProductVariant to update.
+ sku?:
+ type: string
+ description: |
+ The `sku` of the tailored ProductVariant to update.
+ images:
+ type: array
+ items: Image
+ description: |
+ Value to set to `images`.
+ staged?:
+ type: boolean
+ description: |
+ If `true`, only the staged `images` is updated. If `false`, both the current and staged `images` is updated.
+ default: true
diff --git a/api-specs/api/types/product-tailoring/updates/ProductTailoringSetImageLabelAction.raml b/api-specs/api/types/product-tailoring/updates/ProductTailoringSetImageLabelAction.raml
new file mode 100644
index 0000000000..a7bcb8ffe5
--- /dev/null
+++ b/api-specs/api/types/product-tailoring/updates/ProductTailoringSetImageLabelAction.raml
@@ -0,0 +1,32 @@
+#%RAML 1.0 DataType
+(package): ProductTailoring
+type: ProductTailoringUpdateAction
+(beta): true
+displayName: ProductTailoringSetImageLabelAction
+discriminatorValue: setImageLabel
+description: |
+ Either `variantId` or `sku` is required to reference a [ProductVariant](ctp:api:type:ProductVariant) that exists.
+example: !include ../../../examples/ProductTailoring/ProductTailoringSetImageLabelAction.json
+properties:
+ sku?:
+ type: string
+ description: |
+ The `sku` of the tailored ProductVariant to update.
+ variantId?:
+ type: number
+ format: int64
+ description: |
+ The `id` of the tailored ProductVariant to update.
+ imageUrl:
+ type: string
+ description: |
+ The URL of the image to set the label.
+ label?:
+ type: string
+ description: |
+ Value to set. If empty, any existing value will be removed.
+ staged?:
+ type: boolean
+ description: |
+ If `true`, only the staged image is updated. If `false`, both the current and staged image is updated.
+ default: true
diff --git a/api-specs/api/types/product-tailoring/updates/ProductTailoringSetMetaAttributesAction.raml b/api-specs/api/types/product-tailoring/updates/ProductTailoringSetMetaAttributesAction.raml
index df4844c23e..241ad53087 100644
--- a/api-specs/api/types/product-tailoring/updates/ProductTailoringSetMetaAttributesAction.raml
+++ b/api-specs/api/types/product-tailoring/updates/ProductTailoringSetMetaAttributesAction.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): ProductTailoring
type: ProductTailoringUpdateAction
-(beta): true
displayName: ProductTailoringSetMetaAttributesAction
discriminatorValue: setMetaAttributes
example: !include ../../../examples/ProductTailoring/ProductTailoringSetMetaAttributesAction.json
diff --git a/api-specs/api/types/product-tailoring/updates/ProductTailoringSetMetaDescriptionAction.raml b/api-specs/api/types/product-tailoring/updates/ProductTailoringSetMetaDescriptionAction.raml
index 0a5be2438b..5022b04a8e 100644
--- a/api-specs/api/types/product-tailoring/updates/ProductTailoringSetMetaDescriptionAction.raml
+++ b/api-specs/api/types/product-tailoring/updates/ProductTailoringSetMetaDescriptionAction.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): ProductTailoring
type: ProductTailoringUpdateAction
-(beta): true
displayName: ProductTailoringSetMetaDescriptionAction
discriminatorValue: setMetaDescription
example: !include ../../../examples/ProductTailoring/ProductTailoringSetMetaDescriptionAction.json
diff --git a/api-specs/api/types/product-tailoring/updates/ProductTailoringSetMetaKeywordsAction.raml b/api-specs/api/types/product-tailoring/updates/ProductTailoringSetMetaKeywordsAction.raml
index de8d489f7a..72b9de8bed 100644
--- a/api-specs/api/types/product-tailoring/updates/ProductTailoringSetMetaKeywordsAction.raml
+++ b/api-specs/api/types/product-tailoring/updates/ProductTailoringSetMetaKeywordsAction.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): ProductTailoring
type: ProductTailoringUpdateAction
-(beta): true
displayName: ProductTailoringSetMetaKeywordsAction
discriminatorValue: setMetaKeywords
example: !include ../../../examples/ProductTailoring/ProductTailoringSetMetaKeywordsAction.json
diff --git a/api-specs/api/types/product-tailoring/updates/ProductTailoringSetMetaTitleAction.raml b/api-specs/api/types/product-tailoring/updates/ProductTailoringSetMetaTitleAction.raml
index 74c3a3fe5a..b04a91230b 100644
--- a/api-specs/api/types/product-tailoring/updates/ProductTailoringSetMetaTitleAction.raml
+++ b/api-specs/api/types/product-tailoring/updates/ProductTailoringSetMetaTitleAction.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): ProductTailoring
type: ProductTailoringUpdateAction
-(beta): true
displayName: ProductTailoringSetMetaTitleAction
discriminatorValue: setMetaTitle
example: !include ../../../examples/ProductTailoring/ProductTailoringSetMetaTitleAction.json
diff --git a/api-specs/api/types/product-tailoring/updates/ProductTailoringSetNameAction.raml b/api-specs/api/types/product-tailoring/updates/ProductTailoringSetNameAction.raml
index 4e27ba300d..4f83e2c2b3 100644
--- a/api-specs/api/types/product-tailoring/updates/ProductTailoringSetNameAction.raml
+++ b/api-specs/api/types/product-tailoring/updates/ProductTailoringSetNameAction.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): ProductTailoring
type: ProductTailoringUpdateAction
-(beta): true
displayName: ProductTailoringSetNameAction
discriminatorValue: setName
example: !include ../../../examples/ProductTailoring/ProductTailoringSetNameAction.json
diff --git a/api-specs/api/types/product-tailoring/updates/ProductTailoringSetSlugAction.raml b/api-specs/api/types/product-tailoring/updates/ProductTailoringSetSlugAction.raml
index fdcf89d010..98435d9945 100644
--- a/api-specs/api/types/product-tailoring/updates/ProductTailoringSetSlugAction.raml
+++ b/api-specs/api/types/product-tailoring/updates/ProductTailoringSetSlugAction.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): ProductTailoring
type: ProductTailoringUpdateAction
-(beta): true
displayName: ProductTailoringSetSlugAction
discriminatorValue: setSlug
example: !include ../../../examples/ProductTailoring/ProductTailoringSetSlugAction.json
diff --git a/api-specs/api/types/product-tailoring/updates/ProductTailoringUnpublishAction.raml b/api-specs/api/types/product-tailoring/updates/ProductTailoringUnpublishAction.raml
index 1ed574b8a8..75983ff007 100644
--- a/api-specs/api/types/product-tailoring/updates/ProductTailoringUnpublishAction.raml
+++ b/api-specs/api/types/product-tailoring/updates/ProductTailoringUnpublishAction.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): ProductTailoring
type: ProductTailoringUpdateAction
-(beta): true
displayName: ProductTailoringUnpublishAction
discriminatorValue: unpublish
example: !include ../../../examples/ProductTailoring/ProductTailoringUnpublishAction.json
diff --git a/api-specs/api/types/product-type/AttributeNestedType.raml b/api-specs/api/types/product-type/AttributeNestedType.raml
index 1f22442cea..2111350dcc 100644
--- a/api-specs/api/types/product-type/AttributeNestedType.raml
+++ b/api-specs/api/types/product-type/AttributeNestedType.raml
@@ -1,6 +1,7 @@
#%RAML 1.0 DataType
(package): ProductType
type: AttributeType
+(expandable): true
displayName: AttributeNestedType
discriminatorValue: nested
description: |
diff --git a/api-specs/api/types/product/Attribute.raml b/api-specs/api/types/product/Attribute.raml
index 3e9e4f375c..257256b62b 100644
--- a/api-specs/api/types/product/Attribute.raml
+++ b/api-specs/api/types/product/Attribute.raml
@@ -1,6 +1,7 @@
#%RAML 1.0 DataType
(package): Product
type: object
+(expandable): true
displayName: Attribute
properties:
name:
@@ -10,6 +11,7 @@ properties:
description: |
Name of the Attribute.
value:
+ (expandable): true
# type: AttributeValue | AttributeValue[]
type: any
# type:
diff --git a/api-specs/api/types/product/ProductData.raml b/api-specs/api/types/product/ProductData.raml
index 05606dcd27..9a94fd5cdc 100644
--- a/api-specs/api/types/product/ProductData.raml
+++ b/api-specs/api/types/product/ProductData.raml
@@ -2,6 +2,7 @@
(package): Product
displayName: ProductData
type: object
+(expandable): true
description: |
Contains all the data of a Product and its Product Variants.
properties:
diff --git a/api-specs/api/types/product/ProductPriceModeEnum.raml b/api-specs/api/types/product/ProductPriceModeEnum.raml
index 4d1b9eb706..e67c224d2c 100644
--- a/api-specs/api/types/product/ProductPriceModeEnum.raml
+++ b/api-specs/api/types/product/ProductPriceModeEnum.raml
@@ -4,7 +4,8 @@
displayName: ProductPriceModeEnum
type: string
description: |
- This mode determines the type of Prices used for [Product Price Selection](ctp:api:type:ProductPriceSelection) and for [LineItem Price selection](ctp:api:type:LineItemPriceSelection).
+ This mode determines the type of Prices used for [price selection](/../api/pricing-and-discounts-overview#price-selection) by Line Items and Products.
+ For more information about the difference between the Prices, see [Pricing](/../api/pricing-and-discounts-overview).
(enumDescriptions):
Embedded: Composable Commerce uses the [Embedded Prices](ctp:api:type:Price) located inside the `prices` field in [ProductVariant](ctp:api:type:ProductVariant).
Standalone: Composable Commerce uses [StandalonePrices](ctp:api:type:StandalonePrice), which are associated with the [ProductVariant](ctp:api:type:ProductVariant) through the `sku` field.
diff --git a/api-specs/api/types/product/ProductVariant.raml b/api-specs/api/types/product/ProductVariant.raml
index 938c3141d4..1789fc5ab7 100644
--- a/api-specs/api/types/product/ProductVariant.raml
+++ b/api-specs/api/types/product/ProductVariant.raml
@@ -2,6 +2,7 @@
(package): Product
displayName: ProductVariant
type: object
+(expandable): true
description: |
A concrete sellable good for which inventory can be tracked. Product Variants are generally mapped to specific SKUs.
properties:
@@ -32,7 +33,7 @@ properties:
price?:
type: Price
description: |
- Only available when [Price selection](#price-selection) is used.
+ Only available when [price selection](/../api/pricing-and-discounts-overview#price-selection) is used.
Cannot be used in a [Query Predicate](ctp:api:type:QueryPredicate).
images?:
type: Image[]
@@ -57,10 +58,10 @@ properties:
type: ScopedPrice
description: |
Only available in response to a [Product Projection Search](ctp:api:type:ProductProjectionSearch) request
- with [price selection](ctp:api:type:ProductPriceSelection).
+ with [Product price selection](/../api/pricing-and-discounts-overview#product-price-selection).
Can be used to sort, [filter](ctp:api:type:ProductProjectionSearchFilterScopedPrice), and facet.
scopedPriceDiscounted?:
type: boolean
description: |
Only available in response to a [Product Projection Search](ctp:api:type:ProductProjectionSearchFilterScopedPrice) request
- with [price selection](ctp:api:type:ProductPriceSelection).
+ with [Product price selection](/../api/pricing-and-discounts-overview#product-price-selection).
diff --git a/api-specs/api/types/product/ProductVariantAvailability.raml b/api-specs/api/types/product/ProductVariantAvailability.raml
index bd21f8e678..04c6ebff08 100644
--- a/api-specs/api/types/product/ProductVariantAvailability.raml
+++ b/api-specs/api/types/product/ProductVariantAvailability.raml
@@ -9,7 +9,7 @@ properties:
type: ProductVariantChannelAvailabilityMap
description: |
For each [InventoryEntry](ctp:api:type:InventoryEntry) with a supply Channel, an entry is added to `channels`.
- isOnStock:
+ isOnStock?:
type: boolean
description: |
Indicates whether a Product Variant is in stock.
diff --git a/api-specs/api/types/product/updates/ProductSetPriceKeyAction.raml b/api-specs/api/types/product/updates/ProductSetPriceKeyAction.raml
index 2375764839..3863cf37f3 100644
--- a/api-specs/api/types/product/updates/ProductSetPriceKeyAction.raml
+++ b/api-specs/api/types/product/updates/ProductSetPriceKeyAction.raml
@@ -5,7 +5,7 @@ displayName: ProductSetPriceKeyAction
discriminatorValue: setPriceKey
example: !include ../../../examples/Product/ProductSetPriceKeyAction.json
description: |
- Sets the key of an [Embedded Price](/projects/products#embedded-price). Produces the [ProductPriceKeySet](ctp:api:type:ProductPriceKeySetMessage) Message.
+ Sets the key of an [Embedded Price](ctp:api:type:Price). Produces the [ProductPriceKeySet](ctp:api:type:ProductPriceKeySetMessage) Message.
properties:
priceId:
type: string
@@ -14,7 +14,7 @@ properties:
staged?:
type: boolean
description: |
- If `true`, only the staged [Embedded Price](/projects/products#embedded-price) is updated. If `false`, both the current and staged Embedded Price are updated.
+ If `true`, only the staged [Embedded Price](ctp:api:type:Price) is updated. If `false`, both the current and staged Embedded Price are updated.
default: true
key?:
type: string
diff --git a/api-specs/api/types/product/updates/ProductUnpublishAction.raml b/api-specs/api/types/product/updates/ProductUnpublishAction.raml
index 06e7c3f5d5..4d5c373694 100644
--- a/api-specs/api/types/product/updates/ProductUnpublishAction.raml
+++ b/api-specs/api/types/product/updates/ProductUnpublishAction.raml
@@ -7,4 +7,7 @@ example: !include ../../../examples/Product/ProductUnpublishAction.json
description: |
Removes the current [projection](/../api/projects/productProjections#current--staged) of the Product. The staged projection is unaffected. To retrieve unpublished Products, the `staged` parameter must be set to `false` when [querying](ctp:api:endpoint:/{projectKey}/product-projections:GET)/[searching](/projects/products-search#product-projection-search) Product Projections. Produces the [ProductUnpublished](ctp:api:type:ProductUnpublishedMessage) Message.
- Unpublished Products cannot be added to a Cart. However, if a Cart contains Line Items for Products that were added before the Product was unpublished, the Cart is unaffected and can still be used to create an Order. To prevent this, in addition to unpublishing the Product you should remove the Prices from the Product using [Remove Price](ctp:api:type:ProductRemovePriceAction) for Embedded Prices or [Delete StandalonePrice](/projects/standalone-prices#delete-standaloneprice) for Standalone Prices.
+ When a Product is unpublished, any associated Line Items already present in a Cart remain unaffected and can still be ordered. To prevent this, do the following:
+
+ - If the Product uses Embedded Prices, [remove the Embedded Prices](ctp:api:type:ProductRemovePriceAction) from the unpublished Product.
+ - If the Product uses Standalone Prices, [inactivate](ctp:api:type:StandalonePriceChangeActiveAction) or [delete](/projects/standalone-prices#delete-standaloneprice) the Standalone Prices.
diff --git a/api-specs/api/types/project/CartClassificationType.raml b/api-specs/api/types/project/CartClassificationType.raml
index e08bf2137a..a8a5c86996 100644
--- a/api-specs/api/types/project/CartClassificationType.raml
+++ b/api-specs/api/types/project/CartClassificationType.raml
@@ -5,7 +5,7 @@ type: ShippingRateInputType
example: !include ../../examples/Project/ProjectShippingRateInputTypeCartClassification.json
discriminatorValue: CartClassification
description: |
- Used when the ShippingRate maps to an abstract Cart categorization expressed by strings (for example, `Light`, `Medium`, or `Heavy`).
+ The [ShippingRate](ctp:api:type:ShippingRate) maps to an abstract Cart categorization expressed by strings (for example, `Light`, `Medium`, or `Heavy`).
Only keys defined in the `values` array can be used to create a tier or to set a value of the `shippingRateInput` on the [Cart](ctp:api:type:Cart).
Keys must be unique.
properties:
diff --git a/api-specs/api/types/project/CartScoreType.raml b/api-specs/api/types/project/CartScoreType.raml
index 868ad70d3f..bb3bafff23 100644
--- a/api-specs/api/types/project/CartScoreType.raml
+++ b/api-specs/api/types/project/CartScoreType.raml
@@ -4,4 +4,4 @@ displayName: CartScoreType
type: ShippingRateInputType
discriminatorValue: CartScore
description: |
- Used when the ShippingRate maps to an abstract Cart categorization expressed by integers (such as shipping scores or weight ranges).
+ The [ShippingRate](ctp:api:type:ShippingRate) maps to an abstract [Cart](ctp:api:type:Cart) categorization expressed by integers (such as shipping scores or weight ranges).
diff --git a/api-specs/api/types/project/CartValueType.raml b/api-specs/api/types/project/CartValueType.raml
index 0e2f021741..a003660aa1 100644
--- a/api-specs/api/types/project/CartValueType.raml
+++ b/api-specs/api/types/project/CartValueType.raml
@@ -4,6 +4,6 @@ displayName: CartValueType
type: ShippingRateInputType
discriminatorValue: CartValue
description: |
- Used when the ShippingRate maps to the sum of [LineItem](ctp:api:type:LineItem) Prices.
- The value of the Cart is used to select a tier.
+ The [ShippingRate](ctp:api:type:ShippingRate) maps to the value of the Cart and is used to select a tier.
+ The value of the [Cart](ctp:api:type:Cart) is the sum of all Line Item totals and Custom Line Item totals (via the `totalPrice` field) after any Product Discounts and Cart Discounts have been applied.
If chosen, it is not possible to set a value for the `shippingRateInput` on the [Cart](ctp:api:type:Cart).
diff --git a/api-specs/api/types/project/CustomerSearchStatus.raml b/api-specs/api/types/project/CustomerSearchStatus.raml
new file mode 100644
index 0000000000..a0260abecf
--- /dev/null
+++ b/api-specs/api/types/project/CustomerSearchStatus.raml
@@ -0,0 +1,14 @@
+#%RAML 1.0 DataType
+(package): Project
+type: string
+(beta): true
+displayName: CustomerSearchStatus
+description: |
+ Specifies the status of the [Customer Search](/../api/projects/customer-search) index.
+ You can change the status using the [Change Customer Search Status](ctp:api:type:ProjectChangeCustomerSearchStatusAction) update action.
+(enumDescriptions):
+ Activated: indicates that the [Customer Search](/../api/projects/customer-search#search-customers) endpoint is fully operational.
+ Deactivated: indicates that the Customer Search enpoint is currently not active.
+enum:
+ - Activated
+ - Deactivated
diff --git a/api-specs/api/types/project/updates/ProjectChangeCustomerSearchStatusAction.raml b/api-specs/api/types/project/updates/ProjectChangeCustomerSearchStatusAction.raml
new file mode 100644
index 0000000000..e1ee2d2086
--- /dev/null
+++ b/api-specs/api/types/project/updates/ProjectChangeCustomerSearchStatusAction.raml
@@ -0,0 +1,11 @@
+#%RAML 1.0 DataType
+(package): Project
+type: ProjectUpdateAction
+(beta): true
+displayName: ProjectChangeCustomerSearchStatusAction
+discriminatorValue: changeCustomerSearchStatus
+example: !include ../../../examples/Project/ProjectChangeCustomerSearchStatusAction.json
+properties:
+ status:
+ type: CustomerSearchStatus
+ description: Activates or deactivates the [Customer Search](/../api/projects/customer-search) feature. Activation will trigger building a search index for the Customers in the Project.
diff --git a/api-specs/api/types/search/SearchAndExpression.raml b/api-specs/api/types/search/SearchAndExpression.raml
index 91e0841ddf..4c2acb9fd2 100644
--- a/api-specs/api/types/search/SearchAndExpression.raml
+++ b/api-specs/api/types/search/SearchAndExpression.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Search
type: SearchCompoundExpression
-(beta): true
displayName: SearchAndExpression
properties:
and:
diff --git a/api-specs/api/types/search/SearchAnyValue.raml b/api-specs/api/types/search/SearchAnyValue.raml
index 7cdfb614cc..718b68061b 100644
--- a/api-specs/api/types/search/SearchAnyValue.raml
+++ b/api-specs/api/types/search/SearchAnyValue.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Search
type: SearchQueryExpressionValue
-(beta): true
displayName: SearchAnyValue
properties:
value:
diff --git a/api-specs/api/types/search/SearchCompoundExpression.raml b/api-specs/api/types/search/SearchCompoundExpression.raml
index 643a2dbd51..41338e25c9 100644
--- a/api-specs/api/types/search/SearchCompoundExpression.raml
+++ b/api-specs/api/types/search/SearchCompoundExpression.raml
@@ -1,6 +1,5 @@
#%RAML 1.0 DataType
(package): Search
type: SearchQuery
-(beta): true
displayName: SearchCompoundExpression
(ignoreValidators): [PolymorphicSubtypesRule]
diff --git a/api-specs/api/types/search/SearchDateRangeExpression.raml b/api-specs/api/types/search/SearchDateRangeExpression.raml
index bd5797c24a..66f31cd681 100644
--- a/api-specs/api/types/search/SearchDateRangeExpression.raml
+++ b/api-specs/api/types/search/SearchDateRangeExpression.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Search
type: SearchQueryExpression
-(beta): true
displayName: SearchDateRangeExpression
properties:
range:
diff --git a/api-specs/api/types/search/SearchDateRangeValue.raml b/api-specs/api/types/search/SearchDateRangeValue.raml
index 934f3b87d8..2a9b21c94a 100644
--- a/api-specs/api/types/search/SearchDateRangeValue.raml
+++ b/api-specs/api/types/search/SearchDateRangeValue.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Search
type: SearchQueryExpressionValue
-(beta): true
displayName: SearchDateRangeValue
properties:
gte?:
diff --git a/api-specs/api/types/search/SearchDateTimeRangeExpression.raml b/api-specs/api/types/search/SearchDateTimeRangeExpression.raml
index d4bd97ecd6..536f80b3e9 100644
--- a/api-specs/api/types/search/SearchDateTimeRangeExpression.raml
+++ b/api-specs/api/types/search/SearchDateTimeRangeExpression.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Search
type: SearchQueryExpression
-(beta): true
displayName: SearchDateTimeRangeExpression
properties:
range:
diff --git a/api-specs/api/types/search/SearchDateTimeRangeValue.raml b/api-specs/api/types/search/SearchDateTimeRangeValue.raml
index 20b5e0dee8..9e2a98680e 100644
--- a/api-specs/api/types/search/SearchDateTimeRangeValue.raml
+++ b/api-specs/api/types/search/SearchDateTimeRangeValue.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Search
type: SearchQueryExpressionValue
-(beta): true
displayName: SearchDateTimeRangeValue
properties:
gte?:
diff --git a/api-specs/api/types/search/SearchExactExpression.raml b/api-specs/api/types/search/SearchExactExpression.raml
index 5149efa7f3..2740075c95 100644
--- a/api-specs/api/types/search/SearchExactExpression.raml
+++ b/api-specs/api/types/search/SearchExactExpression.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Search
type: SearchQueryExpression
-(beta): true
displayName: SearchExactExpression
properties:
exact:
diff --git a/api-specs/api/types/search/SearchExistsExpression.raml b/api-specs/api/types/search/SearchExistsExpression.raml
index 89c7f2ef51..d99799d4a9 100644
--- a/api-specs/api/types/search/SearchExistsExpression.raml
+++ b/api-specs/api/types/search/SearchExistsExpression.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Search
type: SearchQueryExpression
-(beta): true
displayName: SearchExistsExpression
properties:
exists:
diff --git a/api-specs/api/types/search/SearchExistsValue.raml b/api-specs/api/types/search/SearchExistsValue.raml
index 0071d2216b..cd9e82efdd 100644
--- a/api-specs/api/types/search/SearchExistsValue.raml
+++ b/api-specs/api/types/search/SearchExistsValue.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Search
type: SearchQueryExpressionValue
-(beta): true
displayName: SearchExistsValue
properties:
language?:
diff --git a/api-specs/api/types/search/SearchFieldType.raml b/api-specs/api/types/search/SearchFieldType.raml
index 3055f32145..2972178444 100644
--- a/api-specs/api/types/search/SearchFieldType.raml
+++ b/api-specs/api/types/search/SearchFieldType.raml
@@ -3,7 +3,6 @@
displayName: SearchFieldType
description: Possible values for the `fieldType` property on [query expressions](/../api/search-query-language#query-expressions) indicating the data type of the `field`.
type: string
-(beta): true
enum:
- boolean
- text
diff --git a/api-specs/api/types/search/SearchFilterExpression.raml b/api-specs/api/types/search/SearchFilterExpression.raml
index 5fa03289a0..40c947b84b 100644
--- a/api-specs/api/types/search/SearchFilterExpression.raml
+++ b/api-specs/api/types/search/SearchFilterExpression.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Search
type: SearchCompoundExpression
-(beta): true
displayName: SearchFilterExpression
properties:
filter:
diff --git a/api-specs/api/types/search/SearchFullTextExpression.raml b/api-specs/api/types/search/SearchFullTextExpression.raml
index f3bad3360c..5279f4f499 100644
--- a/api-specs/api/types/search/SearchFullTextExpression.raml
+++ b/api-specs/api/types/search/SearchFullTextExpression.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Search
type: SearchQueryExpression
-(beta): true
displayName: SearchFullTextExpression
properties:
fullText:
diff --git a/api-specs/api/types/search/SearchFullTextPrefixExpression.raml b/api-specs/api/types/search/SearchFullTextPrefixExpression.raml
index c6ba2a60f3..cfb46abeb4 100644
--- a/api-specs/api/types/search/SearchFullTextPrefixExpression.raml
+++ b/api-specs/api/types/search/SearchFullTextPrefixExpression.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Search
type: SearchQueryExpression
-(beta): true
displayName: SearchFullTextPrefixExpression
properties:
fullTextPrefix:
diff --git a/api-specs/api/types/search/SearchFullTextPrefixValue.raml b/api-specs/api/types/search/SearchFullTextPrefixValue.raml
index 9abd7905df..ea30e47be3 100644
--- a/api-specs/api/types/search/SearchFullTextPrefixValue.raml
+++ b/api-specs/api/types/search/SearchFullTextPrefixValue.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Search
type: SearchQueryExpressionValue
-(beta): true
displayName: SearchFullPrefixTextValue
properties:
value:
diff --git a/api-specs/api/types/search/SearchFullTextValue.raml b/api-specs/api/types/search/SearchFullTextValue.raml
index 2be55f7c0b..13c19281a9 100644
--- a/api-specs/api/types/search/SearchFullTextValue.raml
+++ b/api-specs/api/types/search/SearchFullTextValue.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Search
type: SearchQueryExpressionValue
-(beta): true
displayName: SearchFullTextValue
properties:
value:
diff --git a/api-specs/api/types/search/SearchLongRangeExpression.raml b/api-specs/api/types/search/SearchLongRangeExpression.raml
index f52d994e77..6734c3827a 100644
--- a/api-specs/api/types/search/SearchLongRangeExpression.raml
+++ b/api-specs/api/types/search/SearchLongRangeExpression.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Search
type: SearchQueryExpression
-(beta): true
displayName: SearchLongRangeExpression
properties:
range:
diff --git a/api-specs/api/types/search/SearchLongRangeValue.raml b/api-specs/api/types/search/SearchLongRangeValue.raml
index d8ca375163..d65c2b1196 100644
--- a/api-specs/api/types/search/SearchLongRangeValue.raml
+++ b/api-specs/api/types/search/SearchLongRangeValue.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Search
type: SearchQueryExpressionValue
-(beta): true
displayName: SearchLongRangeValue
properties:
gte?:
diff --git a/api-specs/api/types/search/SearchMatchType.raml b/api-specs/api/types/search/SearchMatchType.raml
index 27b539b690..29631b4cce 100644
--- a/api-specs/api/types/search/SearchMatchType.raml
+++ b/api-specs/api/types/search/SearchMatchType.raml
@@ -2,7 +2,6 @@
(package): Search
displayName: SearchMatchType
type: string
-(beta): true
enum:
- any
- all
diff --git a/api-specs/api/types/search/SearchMatchingVariant.raml b/api-specs/api/types/search/SearchMatchingVariant.raml
index 26aea76c73..0f5afb39c9 100644
--- a/api-specs/api/types/search/SearchMatchingVariant.raml
+++ b/api-specs/api/types/search/SearchMatchingVariant.raml
@@ -2,7 +2,6 @@
(package): Search
displayName: SearchMatchingVariant
type: object
-(beta): true
properties:
id:
type: number
diff --git a/api-specs/api/types/search/SearchNotExpression.raml b/api-specs/api/types/search/SearchNotExpression.raml
index d39738d628..04fde88540 100644
--- a/api-specs/api/types/search/SearchNotExpression.raml
+++ b/api-specs/api/types/search/SearchNotExpression.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Search
type: SearchCompoundExpression
-(beta): true
displayName: SearchNotExpression
properties:
not:
diff --git a/api-specs/api/types/search/SearchNumberRangeExpression.raml b/api-specs/api/types/search/SearchNumberRangeExpression.raml
index 18f7082178..1f3821b3ea 100644
--- a/api-specs/api/types/search/SearchNumberRangeExpression.raml
+++ b/api-specs/api/types/search/SearchNumberRangeExpression.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Search
type: SearchQueryExpression
-(beta): true
displayName: SearchNumberRangeExpression
properties:
range:
diff --git a/api-specs/api/types/search/SearchNumberRangeValue.raml b/api-specs/api/types/search/SearchNumberRangeValue.raml
index 5bbcdbb839..bb33d993be 100644
--- a/api-specs/api/types/search/SearchNumberRangeValue.raml
+++ b/api-specs/api/types/search/SearchNumberRangeValue.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Search
type: SearchQueryExpressionValue
-(beta): true
displayName: SearchNumberRangeValue
properties:
gte?:
diff --git a/api-specs/api/types/search/SearchOrExpression.raml b/api-specs/api/types/search/SearchOrExpression.raml
index 6fe39b43a2..f930eb3e61 100644
--- a/api-specs/api/types/search/SearchOrExpression.raml
+++ b/api-specs/api/types/search/SearchOrExpression.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Search
type: SearchCompoundExpression
-(beta): true
displayName: SearchOrExpression
properties:
or:
diff --git a/api-specs/api/types/search/SearchPrefixExpression.raml b/api-specs/api/types/search/SearchPrefixExpression.raml
index 85a5c58d6a..450e46cf8c 100644
--- a/api-specs/api/types/search/SearchPrefixExpression.raml
+++ b/api-specs/api/types/search/SearchPrefixExpression.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Search
type: SearchQueryExpression
-(beta): true
displayName: SearchPrefixExpression
properties:
prefix:
diff --git a/api-specs/api/types/search/SearchQuery.raml b/api-specs/api/types/search/SearchQuery.raml
index 41c39166ec..585184bb8d 100644
--- a/api-specs/api/types/search/SearchQuery.raml
+++ b/api-specs/api/types/search/SearchQuery.raml
@@ -1,6 +1,5 @@
#%RAML 1.0 DataType
(package): Search
type: object
-(beta): true
displayName: SearchQuery
(ignoreValidators): [PolymorphicSubtypesRule]
diff --git a/api-specs/api/types/search/SearchQueryExpression.raml b/api-specs/api/types/search/SearchQueryExpression.raml
index 5b8018d57b..a21a788068 100644
--- a/api-specs/api/types/search/SearchQueryExpression.raml
+++ b/api-specs/api/types/search/SearchQueryExpression.raml
@@ -1,6 +1,5 @@
#%RAML 1.0 DataType
(package): Search
type: SearchQuery
-(beta): true
displayName: SearchQueryExpression
(ignoreValidators): [PolymorphicSubtypesRule]
diff --git a/api-specs/api/types/search/SearchQueryExpressionValue.raml b/api-specs/api/types/search/SearchQueryExpressionValue.raml
index fff35d97c1..d5e159ad86 100644
--- a/api-specs/api/types/search/SearchQueryExpressionValue.raml
+++ b/api-specs/api/types/search/SearchQueryExpressionValue.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Search
type: object
-(beta): true
displayName: SearchQueryExpressionValue
(ignoreValidators): [PolymorphicSubtypesRule]
properties:
diff --git a/api-specs/api/types/search/SearchSortMode.raml b/api-specs/api/types/search/SearchSortMode.raml
index 19a5cc7001..00fd89da6b 100644
--- a/api-specs/api/types/search/SearchSortMode.raml
+++ b/api-specs/api/types/search/SearchSortMode.raml
@@ -2,7 +2,6 @@
(package): Search
displayName: SearchSortMode
type: string
-(beta): true
description: |
For set-type fields, only a single value of the set is taken into account for sorting.
The sort mode determines whether the minimum or maximum value, or a calculated statistical value should be used as sorting value.
diff --git a/api-specs/api/types/search/SearchSortOrder.raml b/api-specs/api/types/search/SearchSortOrder.raml
index 91253cfda0..56a422a3c2 100644
--- a/api-specs/api/types/search/SearchSortOrder.raml
+++ b/api-specs/api/types/search/SearchSortOrder.raml
@@ -2,7 +2,6 @@
(package): Search
displayName: SearchSortOrder
type: string
-(beta): true
enum:
- asc
- desc
diff --git a/api-specs/api/types/search/SearchSorting.raml b/api-specs/api/types/search/SearchSorting.raml
index bb747f7034..ef22260bd3 100644
--- a/api-specs/api/types/search/SearchSorting.raml
+++ b/api-specs/api/types/search/SearchSorting.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Search
type: object
-(beta): true
displayName: SearchSorting
description: |
Sorting parameters provided with a Search request.
diff --git a/api-specs/api/types/search/SearchTimeRangeExpression.raml b/api-specs/api/types/search/SearchTimeRangeExpression.raml
index 4cda57fa86..61d412c7bf 100644
--- a/api-specs/api/types/search/SearchTimeRangeExpression.raml
+++ b/api-specs/api/types/search/SearchTimeRangeExpression.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Search
type: SearchQueryExpression
-(beta): true
displayName: SearchTimeRangeExpression
properties:
range:
diff --git a/api-specs/api/types/search/SearchTimeRangeValue.raml b/api-specs/api/types/search/SearchTimeRangeValue.raml
index 30663f3bcb..f16d26b57a 100644
--- a/api-specs/api/types/search/SearchTimeRangeValue.raml
+++ b/api-specs/api/types/search/SearchTimeRangeValue.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Search
type: SearchQueryExpressionValue
-(beta): true
displayName: SearchTimeRangeValue
properties:
gte?:
diff --git a/api-specs/api/types/search/SearchWildCardExpression.raml b/api-specs/api/types/search/SearchWildCardExpression.raml
index 19242ab271..4061bf0307 100644
--- a/api-specs/api/types/search/SearchWildCardExpression.raml
+++ b/api-specs/api/types/search/SearchWildCardExpression.raml
@@ -1,7 +1,6 @@
#%RAML 1.0 DataType
(package): Search
type: SearchQueryExpression
-(beta): true
displayName: SearchWildCardExpression
properties:
wildcard:
diff --git a/api-specs/api/types/shipping-method/CartClassificationTier.raml b/api-specs/api/types/shipping-method/CartClassificationTier.raml
index 7219792db2..6893325b72 100644
--- a/api-specs/api/types/shipping-method/CartClassificationTier.raml
+++ b/api-specs/api/types/shipping-method/CartClassificationTier.raml
@@ -3,7 +3,7 @@
displayName: CartClassificationTier
type: ShippingRatePriceTier
description: |
- Used when the ShippingRate maps to an abstract Cart categorization expressed by strings (for example, `Light`, `Medium`, or `Heavy`).
+ The [ShippingRate](ctp:api:type:ShippingRate) maps to an abstract Cart categorization expressed by strings (for example, `Light`, `Medium`, or `Heavy`).
example: !include ../../examples/ShippingMethod/CartClassificationTier.json
discriminatorValue: CartClassification
properties:
diff --git a/api-specs/api/types/shipping-method/CartScoreTier.raml b/api-specs/api/types/shipping-method/CartScoreTier.raml
index 76573c0cd1..4182905033 100644
--- a/api-specs/api/types/shipping-method/CartScoreTier.raml
+++ b/api-specs/api/types/shipping-method/CartScoreTier.raml
@@ -3,7 +3,7 @@
displayName: CartScoreTier
type: ShippingRatePriceTier
description: |
- Used when the ShippingRate maps to an abstract Cart categorization expressed by integers (such as shipping scores or weight ranges).
+ The [ShippingRate](ctp:api:type:ShippingRate) maps to an abstract Cart categorization expressed by integers (such as shipping scores or weight ranges).
Either `price` or `priceFunction` is required.
examples:
price: !include ../../examples/ShippingMethod/CartScoreTierPrice.json
diff --git a/api-specs/api/types/shipping-method/CartValueTier.raml b/api-specs/api/types/shipping-method/CartValueTier.raml
index 47edca6456..11bc7c7a95 100644
--- a/api-specs/api/types/shipping-method/CartValueTier.raml
+++ b/api-specs/api/types/shipping-method/CartValueTier.raml
@@ -3,8 +3,9 @@
displayName: CartValueTier
type: ShippingRatePriceTier
description: |
- Used when the ShippingRate maps to the sum of [LineItem](ctp:api:type:LineItem) Prices.
- The value of the Cart is used to select a tier.
+
+ The [ShippingRate](ctp:api:type:ShippingRate) maps to the value of the Cart and is used to select a tier.
+ The value of the [Cart](ctp:api:type:Cart) is the sum of all Line Item totals and Custom Line Item totals (via the `totalPrice` field) after any Product Discounts and Cart Discounts have been applied.
If chosen, it is not possible to set a value for the `shippingRateInput` on the [Cart](ctp:api:type:Cart).
Tiers contain the `centAmount` (a value of `100` in the currency `USD` corresponds to `$ 1.00`), and start at `1`.'
example: !include ../../examples/ShippingMethod/CartValueTier.json
diff --git a/api-specs/api/types/shipping-method/ShippingRate.raml b/api-specs/api/types/shipping-method/ShippingRate.raml
index dfa4c8b9ad..ba0b7d45ee 100644
--- a/api-specs/api/types/shipping-method/ShippingRate.raml
+++ b/api-specs/api/types/shipping-method/ShippingRate.raml
@@ -4,10 +4,10 @@ displayName: ShippingRate
type: object
properties:
price:
- type: TypedMoney
+ type: CentPrecisionMoney
description: Currency amount of the ShippingRate.
freeAbove?:
- type: TypedMoney
+ type: CentPrecisionMoney
description: |-
[Free shipping](/../api/shipping-delivery-overview#free-shipping) is applied if the sum of the (Custom) Line Item Prices reaches the specified value.
isMatching?:
diff --git a/api-specs/api/types/shipping-method/ZoneRate.raml b/api-specs/api/types/shipping-method/ZoneRate.raml
index d08c2eff50..84cddb8612 100644
--- a/api-specs/api/types/shipping-method/ZoneRate.raml
+++ b/api-specs/api/types/shipping-method/ZoneRate.raml
@@ -4,6 +4,7 @@ displayName: ZoneRate
description: |
Defines shipping rates in different currencies for a specific [Zone](ctp:api:type:Zone).
type: object
+(expandable): true
properties:
zone:
type: ZoneReference
diff --git a/api-specs/api/types/shopping-list/ShoppingListLineItem.raml b/api-specs/api/types/shopping-list/ShoppingListLineItem.raml
index b5d0b846f2..2c76b8187a 100644
--- a/api-specs/api/types/shopping-list/ShoppingListLineItem.raml
+++ b/api-specs/api/types/shopping-list/ShoppingListLineItem.raml
@@ -1,6 +1,7 @@
#%RAML 1.0 DataType
(package): ShoppingList
type: object
+(expandable): true
displayName: ShoppingListLineItem
example: !include ../../examples/ShoppingList/ShoppingListLineItem.json
description: |
diff --git a/api-specs/api/types/shopping-list/TextLineItem.raml b/api-specs/api/types/shopping-list/TextLineItem.raml
index bd9ea3c88f..eee4ff9859 100644
--- a/api-specs/api/types/shopping-list/TextLineItem.raml
+++ b/api-specs/api/types/shopping-list/TextLineItem.raml
@@ -1,6 +1,7 @@
#%RAML 1.0 DataType
(package): ShoppingList
type: object
+(expandable): true
displayName: TextLineItem
example: !include ../../examples/ShoppingList/TextLineItem.json
description: |
diff --git a/api-specs/api/types/staged-quote/StagedQuote.raml b/api-specs/api/types/staged-quote/StagedQuote.raml
index 09cc999d4b..816c4092e3 100644
--- a/api-specs/api/types/staged-quote/StagedQuote.raml
+++ b/api-specs/api/types/staged-quote/StagedQuote.raml
@@ -74,3 +74,7 @@ properties:
type: BusinessUnitKeyReference
description: |
The [BusinessUnit](ctp:api:type:BusinessUnit) for the Staged Quote.
+ store?:
+ type: StoreKeyReference
+ description: |
+ The Store to which the [Buyer](/../api/quotes-overview#buyer) belongs.
diff --git a/api-specs/api/types/standalone-price/StandalonePrice.raml b/api-specs/api/types/standalone-price/StandalonePrice.raml
index 5e3c255d48..5c6d2d9061 100644
--- a/api-specs/api/types/standalone-price/StandalonePrice.raml
+++ b/api-specs/api/types/standalone-price/StandalonePrice.raml
@@ -76,7 +76,7 @@ properties:
discounted?:
type: DiscountedPrice
description: |
- Set if a matching [ProductDiscount](ctp:api:type:ProductDiscount) exists. If set, the API uses the `discounted` value for the [LineItem Price selection](ctp:api:type:LineItemPriceSelection).
+ Set if a matching [ProductDiscount](ctp:api:type:ProductDiscount) exists. If set, the API uses the `discounted` value for the [Line Item price selection](/../api/pricing-and-discounts-overview#line-item-price-selection).
When a [relative discount](/../api/projects/productDiscounts#productdiscountvaluerelative) is applied and the fraction part of the `discounted` price is 0.5, the discounted price is rounded in favor of the customer with the [half down rounding](https://en.wikipedia.org/wiki/Rounding#Round_half_down).
custom?:
type: CustomFields
@@ -90,5 +90,5 @@ properties:
type: boolean
default: true
description: |
- If set to `true`, the StandalonePrice is considered during [price selection](ctp:api:type:ProductPriceSelection).
- If set to `false`, the StandalonePrice is not considered during [price selection](ctp:api:type:ProductPriceSelection).
+ If set to `true`, the StandalonePrice is considered during [Product price selection](/../api/pricing-and-discounts-overview#product-price-selection).
+ If set to `false`, the StandalonePrice is not considered during [Product price selection](/../api/pricing-and-discounts-overview#product-price-selection) and any associated Line Items in a Cart cannot be ordered.
diff --git a/api-specs/api/types/standalone-price/StandalonePriceDraft.raml b/api-specs/api/types/standalone-price/StandalonePriceDraft.raml
index d97a592b9e..8d288c133a 100644
--- a/api-specs/api/types/standalone-price/StandalonePriceDraft.raml
+++ b/api-specs/api/types/standalone-price/StandalonePriceDraft.raml
@@ -2,10 +2,6 @@
(package): StandalonePrice
displayName: StandalonePriceDraft
type: object
-description: |-
- Standalone Prices are defined with a scope consisting of `currency` and optionally `country`, `customerGroup`, and `channel` and/or a validity period (`validFrom` and/or `validTo`). For more information see [price selection](/../api/projects/products#price-selection).
-
- Creating a Standalone Price for an SKU which has a Standalone Price with exactly the same price scope, or with overlapping validity periods within the same price scope returns the [DuplicateStandalonePriceScope](ctp:api:type:DuplicateStandalonePriceScopeError) and [OverlappingStandalonePriceValidity](ctp:api:type:OverlappingStandalonePriceValidityError) errors, respectively. A Price without validity period does not conflict with a Price defined for a time period.
properties:
key?:
type: string
@@ -65,4 +61,4 @@ properties:
type: boolean
default: true
description: |
- Set to `false`, if the StandalonePrice should not be considered during [price selection](ctp:api:type:ProductPriceSelection).
+ Set to `false`, if the StandalonePrice should not be considered during [Product price selection](/../api/pricing-and-discounts-overview#product-price-selection).
diff --git a/api-specs/api/types/standalone-price/StandalonePricePagedQueryResponse.raml b/api-specs/api/types/standalone-price/StandalonePricePagedQueryResponse.raml
index 803f186277..8d130faa15 100644
--- a/api-specs/api/types/standalone-price/StandalonePricePagedQueryResponse.raml
+++ b/api-specs/api/types/standalone-price/StandalonePricePagedQueryResponse.raml
@@ -2,6 +2,8 @@
(package): StandalonePrice
displayName: StandalonePricePagedQueryResponse
type: object
+description: |
+ [PagedQueryResult](/general-concepts#pagedqueryresult) with `results` containing an array of [StandalonePrice](ctp:api:type:StandalonePrice).
properties:
limit:
type: number
diff --git a/api-specs/api/types/store/ProductSelectionSetting.raml b/api-specs/api/types/store/ProductSelectionSetting.raml
index 47b079a207..705fb579e5 100644
--- a/api-specs/api/types/store/ProductSelectionSetting.raml
+++ b/api-specs/api/types/store/ProductSelectionSetting.raml
@@ -1,6 +1,7 @@
#%RAML 1.0 DataType
(package): Store
type: object
+(expandable): true
displayName: ProductSelectionSetting
properties:
productSelection:
diff --git a/api-specs/api/types/store/StoreKeyReference.raml b/api-specs/api/types/store/StoreKeyReference.raml
index 905e3ffd04..ae5f57fb62 100644
--- a/api-specs/api/types/store/StoreKeyReference.raml
+++ b/api-specs/api/types/store/StoreKeyReference.raml
@@ -4,7 +4,7 @@ type: KeyReference
displayName: StoreKeyReference
discriminatorValue: store
description: |
- [Reference](ctp:api:type:Reference) to a [Store](ctp:api:type:Store) by its key.
+ [KeyReference](ctp:api:type:KeyReference) to a [Store](ctp:api:type:Store).
properties:
key:
type: string
diff --git a/api-specs/api/types/subscription/ChangeSubscriptionResourceTypeId.raml b/api-specs/api/types/subscription/ChangeSubscriptionResourceTypeId.raml
index a5f5d74696..5ff7c18809 100644
--- a/api-specs/api/types/subscription/ChangeSubscriptionResourceTypeId.raml
+++ b/api-specs/api/types/subscription/ChangeSubscriptionResourceTypeId.raml
@@ -8,6 +8,7 @@ enum:
- approval-flow
- approval-rule
- associate-role
+ - attribute-group
- business-unit
- cart
- cart-discount
@@ -26,8 +27,8 @@ enum:
- payment
- product
- product-discount
- - product-price
- product-selection
+ - product-tailoring
- product-type
- quote
- quote-request
@@ -49,6 +50,8 @@ enum:
Changes related to [ApprovalRules](ctp:api:type:ApprovalRule).
associate-role: |
Changes related to [AssociateRoles](ctp:api:type:AssociateRole).
+ attribute-group: |
+ Changes related to [AttributeGroups](ctp:api:type:AttributeGroup).
business-unit: |
Changes to [BusinessUnits](ctp:api:type:BusinessUnit).
cart: |
@@ -85,10 +88,10 @@ enum:
Changes to [Products](ctp:api:type:Product).
product-discount: |
Changes to [ProductDiscount](ctp:api:type:ProductDiscount).
- product-price: |
- Changes to [EmbeddedPrices](ctp:api:type:Price).
product-selection: |
Changes to [ProductSelections](ctp:api:type:ProductSelection).
+ product-tailoring: |
+ Changes to [ProductTailorings](ctp:api:type:ProductTailoring).
product-type: |
Changes to [ProductTypes](ctp:api:type:ProductType).
quote: |
diff --git a/api-specs/api/types/subscription/SubscriptionHealthStatus.raml b/api-specs/api/types/subscription/SubscriptionHealthStatus.raml
index 6f27951ee0..eb2ca0462c 100644
--- a/api-specs/api/types/subscription/SubscriptionHealthStatus.raml
+++ b/api-specs/api/types/subscription/SubscriptionHealthStatus.raml
@@ -9,7 +9,7 @@ type: string
ConfigurationError: Messages cannot be delivered with the current configuration. Common causes are deleting the Destination queue, deleting access credentials, or removing the necessary permissions. The configuration can be fixed by re-creating the configuration on the Destination side, or by setting a new configuration with the [Change Destination](/../api/projects/subscriptions#change-destination) update action. If the configuration is fixed, undelivered messages will be delivered and the `status` will change to [Healthy](ctp:api:type:SubscriptionHealthStatus). `ConfigurationError` is automatically turned into `ConfigurationErrorDeliveryStopped` after some time. For more information, see [Delivery Guarantees](#delivery-guarantees).
ConfigurationErrorDeliveryStopped: Does not deliver messages with the current configuration and the delivery of the messages is no longer attempted. If the configuration is fixed, undelivered messages are not retained and will not be delivered. The `status` will change to [Healthy](ctp:api:type:SubscriptionHealthStatus) as soon as new messages can be delivered.
TemporaryError: Does not deliver messages temporarily due to reasons other than a configuration error. For example, the Destination has a temporary outage.
- ManuallySuspended: Does not deliver messages with the current configuration and the delivery of the messages is no longer attempted. Undelivered messages are not retained and will not be delivered. The `status` will not automatically change to [Healthy](ctp:api:type:SubscriptionHealthStatus). To return your subscriptions to a [Healthy](ctp:api:type:SubscriptionHealthStatus) status, please contact our [support team](https://commercetools.atlassian.net/servicedesk/customer/portal/22).
+ ManuallySuspended: Does not deliver messages with the current configuration and the delivery of the messages is no longer attempted. Undelivered messages are not retained and will not be delivered. The `status` will not automatically change to [Healthy](ctp:api:type:SubscriptionHealthStatus). To return your subscriptions to a [Healthy](ctp:api:type:SubscriptionHealthStatus) status, contact the [Composable Commerce support team](https://support.commercetools.com/).
enum:
- Healthy
diff --git a/api-specs/api/types/tax-category/TaxRate.raml b/api-specs/api/types/tax-category/TaxRate.raml
index 58835b7dd3..e194d7169a 100644
--- a/api-specs/api/types/tax-category/TaxRate.raml
+++ b/api-specs/api/types/tax-category/TaxRate.raml
@@ -41,4 +41,5 @@ properties:
subRates?:
type: SubRate[]
description: |
- Used to calculate the [taxPortions](/../api/projects/carts#taxedprice) field in a Cart or Order. It is useful if the total tax of a country (such as the US) is a combination of multiple taxes (such as state and local taxes). The total of all subrates equals the TaxRate `amount`.
+ Used when the total tax is a combination of multiple taxes (for example, local, state/provincial, and/or federal taxes). The total of all subrates must equal the TaxRate `amount`.
+ These subrates are used to calculate the `taxPortions` field of a [Cart](ctp:api:type:Cart) or [Order](ctp:api:type:Order) and the `taxedPrice` field of [LineItems](ctp:api:type:LineItem), [CustomLineItems](ctp:api:type:CustomLineItem), and [ShippingInfos](ctp:api:type:ShippingInfo).
diff --git a/api-specs/api/types/tax-category/TaxRateDraft.raml b/api-specs/api/types/tax-category/TaxRateDraft.raml
index 5aa1f8edc4..fffb525b34 100644
--- a/api-specs/api/types/tax-category/TaxRateDraft.raml
+++ b/api-specs/api/types/tax-category/TaxRateDraft.raml
@@ -29,7 +29,9 @@ properties:
subRates?:
type: SubRate[]
description: |
- Used to calculate the `taxPortions` field in a [Cart or Order](/../api/projects/carts#taxedprice) or [(Custom) Line Items](/../api/projects/carts#taxeditemprice). It is useful if the total tax of a country (such as the US) is a combination of multiple taxes (such as state and local taxes). The total of all subrates must equal the TaxRate `amount`.
+ Used when the total tax is a combination of multiple taxes (for example, local, state/provincial, and/or federal taxes). The total of all subrates must equal the TaxRate `amount`.
+ These subrates are used to calculate the `taxPortions` field of a [Cart](ctp:api:type:Cart) or [Order](ctp:api:type:Order) and the `taxedPrice` field of [LineItems](ctp:api:type:LineItem), [CustomLineItems](ctp:api:type:CustomLineItem), and [ShippingInfos](ctp:api:type:ShippingInfo).
+
key?:
type: string
description: |
diff --git a/api-specs/api/types/type/CustomFieldValue.raml b/api-specs/api/types/type/CustomFieldValue.raml
index 81b9156ef9..b7f648a4d4 100644
--- a/api-specs/api/types/type/CustomFieldValue.raml
+++ b/api-specs/api/types/type/CustomFieldValue.raml
@@ -2,6 +2,7 @@
(package): Type
# This is a union type that we cannot support in SDKs due to lack of discriminator fields
type: any
+(expandable): true
displayName: CustomFieldValue
description: |-
The value of a Custom Field.
diff --git a/api-specs/api/types/type/CustomFields.raml b/api-specs/api/types/type/CustomFields.raml
index 926285f694..178bc860da 100644
--- a/api-specs/api/types/type/CustomFields.raml
+++ b/api-specs/api/types/type/CustomFields.raml
@@ -2,6 +2,7 @@
(package): Type
displayName: CustomFields
type: object
+(expandable): true
description: |
Serves as value of the `custom` field on a resource or data type customized with a [Type](ctp:api:type:Type).
properties:
diff --git a/api-specs/api/types/type/FieldContainer.raml b/api-specs/api/types/type/FieldContainer.raml
index a204451df7..4ef8eccd2f 100644
--- a/api-specs/api/types/type/FieldContainer.raml
+++ b/api-specs/api/types/type/FieldContainer.raml
@@ -2,6 +2,7 @@
(package): Type
displayName: FieldContainer
type: object
+(expandable): true
(asMap):
key: string
value: any
@@ -9,6 +10,7 @@ example: !include ../../examples/Type/FieldContainer.json
properties:
# field naming constraint: https://docs.commercetools.com/api/projects/types#fielddefinition
/^[a-zA-Z0-9_-]{2,36}$/:
+ (expandable): true
type: CustomFieldValue
description: |
JSON object with keys matching the names of Custom Fields (that is, `name`s in the [FieldDefinitions](ctp:api:type:FieldDefinition)) and values given by [CustomFieldValue](ctp:api:type:CustomFieldValue).
diff --git a/api-specs/api/types/type/ResourceTypeId.raml b/api-specs/api/types/type/ResourceTypeId.raml
index 788e7a1548..9adff3c82e 100644
--- a/api-specs/api/types/type/ResourceTypeId.raml
+++ b/api-specs/api/types/type/ResourceTypeId.raml
@@ -83,7 +83,7 @@ enum:
payment-interface-interaction: |
[InterfaceInteraction](ctp:api:type:PaymentAddInterfaceInteractionAction) on [Payment](ctp:api:type:Payment)
product-price: |
- [Embedded Price](/projects/products#embedded-price) on [ProductVariant](ctp:api:type:ProductVariant)
+ [Embedded Price](ctp:api:type:Price) on [ProductVariant](ctp:api:type:ProductVariant)
product-selection: |
[ProductSelection](ctp:api:type:ProductSelection)
quote: |
diff --git a/api-specs/api/types/type/updates/TypeChangeLabelAction.raml b/api-specs/api/types/type/updates/TypeChangeLabelAction.raml
index defa6916d7..72f90fe4c3 100644
--- a/api-specs/api/types/type/updates/TypeChangeLabelAction.raml
+++ b/api-specs/api/types/type/updates/TypeChangeLabelAction.raml
@@ -11,3 +11,6 @@ properties:
Name of the [Field Definition](ctp:api:type:FieldDefinition) to update.
label:
type: LocalizedString
+ description: |
+ New value to set.
+ Must not be empty.
diff --git a/api-specs/api/types/types.raml b/api-specs/api/types/types.raml
index 4df4d7dbe7..47ff18bc71 100644
--- a/api-specs/api/types/types.raml
+++ b/api-specs/api/types/types.raml
@@ -75,6 +75,7 @@ AssociateRoleAssignmentDraft: !include business-unit/AssociateRoleAssignmentDraf
AssociateRoleDeprecated: !include business-unit/AssociateRoleDeprecated.raml
AssociateRoleInheritanceMode: !include business-unit/AssociateRoleInheritanceMode.raml
BusinessUnit: !include business-unit/BusinessUnit.raml
+BusinessUnitApprovalRuleMode: !include business-unit/BusinessUnitApprovalRuleMode.raml
BusinessUnitAssociateMode: !include business-unit/BusinessUnitAssociateMode.raml
BusinessUnitDraft: !include business-unit/BusinessUnitDraft.raml
BusinessUnitKeyReference: !include business-unit/BusinessUnitKeyReference.raml
@@ -98,6 +99,7 @@ BusinessUnitAddBillingAddressIdAction: !include business-unit/updates/BusinessUn
BusinessUnitAddShippingAddressIdAction: !include business-unit/updates/BusinessUnitAddShippingAddressIdAction.raml
BusinessUnitAddStoreAction: !include business-unit/updates/BusinessUnitAddStoreAction.raml
BusinessUnitChangeAddressAction: !include business-unit/updates/BusinessUnitChangeAddressAction.raml
+BusinessUnitChangeApprovalRuleModeAction: !include business-unit/updates/BusinessUnitChangeApprovalRuleModeAction.raml
BusinessUnitChangeAssociateAction: !include business-unit/updates/BusinessUnitChangeAssociateAction.raml
BusinessUnitChangeAssociateModeAction: !include business-unit/updates/BusinessUnitChangeAssociateModeAction.raml
BusinessUnitChangeNameAction: !include business-unit/updates/BusinessUnitChangeNameAction.raml
@@ -403,6 +405,12 @@ CustomerGroupChangeNameAction: !include customer-group/updates/CustomerGroupChan
CustomerGroupSetCustomFieldAction: !include customer-group/updates/CustomerGroupSetCustomFieldAction.raml
CustomerGroupSetCustomTypeAction: !include customer-group/updates/CustomerGroupSetCustomTypeAction.raml
CustomerGroupSetKeyAction: !include customer-group/updates/CustomerGroupSetKeyAction.raml
+CustomerIndexingProgress: !include customer-search/CustomerIndexingProgress.raml
+CustomerIndexingStatus: !include customer-search/CustomerIndexingStatus.raml
+CustomerPagedSearchResponse: !include customer-search/CustomerPagedSearchResponse.raml
+CustomerSearchIndexingStatusResponse: !include customer-search/CustomerSearchIndexingStatusResponse.raml
+CustomerSearchRequest: !include customer-search/CustomerSearchRequest.raml
+CustomerSearchResult: !include customer-search/CustomerSearchResult.raml
AnonymousCartSignInMode: !include customer/AnonymousCartSignInMode.raml
AuthenticationMode: !include customer/AuthenticationMode.raml
Customer: !include customer/Customer.raml
@@ -838,6 +846,7 @@ BusinessUnitAddressCustomFieldRemovedMessage: !include message/BusinessUnitAddre
BusinessUnitAddressCustomTypeRemovedMessage: !include message/BusinessUnitAddressCustomTypeRemovedMessage.raml
BusinessUnitAddressCustomTypeSetMessage: !include message/BusinessUnitAddressCustomTypeSetMessage.raml
BusinessUnitAddressRemovedMessage: !include message/BusinessUnitAddressRemovedMessage.raml
+BusinessUnitApprovalRuleModeChangedMessage: !include message/BusinessUnitApprovalRuleModeChangedMessage.raml
BusinessUnitAssociateAddedMessage: !include message/BusinessUnitAssociateAddedMessage.raml
BusinessUnitAssociateChangedMessage: !include message/BusinessUnitAssociateChangedMessage.raml
BusinessUnitAssociateModeChangedMessage: !include message/BusinessUnitAssociateModeChangedMessage.raml
@@ -972,6 +981,11 @@ ProductDeletedMessage: !include message/ProductDeletedMessage.raml
ProductImageAddedMessage: !include message/ProductImageAddedMessage.raml
ProductPriceAddedMessage: !include message/ProductPriceAddedMessage.raml
ProductPriceChangedMessage: !include message/ProductPriceChangedMessage.raml
+ProductPriceCustomFieldAddedMessage: !include message/ProductPriceCustomFieldAddedMessage.raml
+ProductPriceCustomFieldChangedMessage: !include message/ProductPriceCustomFieldChangedMessage.raml
+ProductPriceCustomFieldRemovedMessage: !include message/ProductPriceCustomFieldRemovedMessage.raml
+ProductPriceCustomFieldsRemovedMessage: !include message/ProductPriceCustomFieldsRemovedMessage.raml
+ProductPriceCustomFieldsSetMessage: !include message/ProductPriceCustomFieldsSetMessage.raml
ProductPriceDiscountsSetMessage: !include message/ProductPriceDiscountsSetMessage.raml
ProductPriceDiscountsSetUpdatedPrice: !include message/ProductPriceDiscountsSetUpdatedPrice.raml
ProductPriceExternalDiscountSetMessage: !include message/ProductPriceExternalDiscountSetMessage.raml
@@ -994,6 +1008,8 @@ ProductStateTransitionMessage: !include message/ProductStateTransitionMessage.ra
ProductTailoringCreatedMessage: !include message/ProductTailoringCreatedMessage.raml
ProductTailoringDeletedMessage: !include message/ProductTailoringDeletedMessage.raml
ProductTailoringDescriptionSetMessage: !include message/ProductTailoringDescriptionSetMessage.raml
+ProductTailoringImageAddedMessage: !include message/ProductTailoringImageAddedMessage.raml
+ProductTailoringImagesSetMessage: !include message/ProductTailoringImagesSetMessage.raml
ProductTailoringNameSetMessage: !include message/ProductTailoringNameSetMessage.raml
ProductTailoringPublishedMessage: !include message/ProductTailoringPublishedMessage.raml
ProductTailoringSlugSetMessage: !include message/ProductTailoringSlugSetMessage.raml
@@ -1001,6 +1017,8 @@ ProductTailoringUnpublishedMessage: !include message/ProductTailoringUnpublished
ProductUnpublishedMessage: !include message/ProductUnpublishedMessage.raml
ProductVariantAddedMessage: !include message/ProductVariantAddedMessage.raml
ProductVariantDeletedMessage: !include message/ProductVariantDeletedMessage.raml
+ProductVariantTailoringAddedMessage: !include message/ProductVariantTailoringAddedMessage.raml
+ProductVariantTailoringRemovedMessage: !include message/ProductVariantTailoringRemovedMessage.raml
QuoteCreatedMessage: !include message/QuoteCreatedMessage.raml
QuoteCustomerChangedMessage: !include message/QuoteCustomerChangedMessage.raml
QuoteDeletedMessage: !include message/QuoteDeletedMessage.raml
@@ -1080,6 +1098,8 @@ BusinessUnitAddressCustomTypeRemovedMessagePayload: !include message/payload/Bus
# yamllint disable-line rule:line-length
BusinessUnitAddressCustomTypeSetMessagePayload: !include message/payload/BusinessUnitAddressCustomTypeSetMessagePayload.raml
BusinessUnitAddressRemovedMessagePayload: !include message/payload/BusinessUnitAddressRemovedMessagePayload.raml
+# yamllint disable-line rule:line-length
+BusinessUnitApprovalRuleModeChangedMessagePayload: !include message/payload/BusinessUnitApprovalRuleModeChangedMessagePayload.raml
BusinessUnitAssociateAddedMessagePayload: !include message/payload/BusinessUnitAssociateAddedMessagePayload.raml
BusinessUnitAssociateChangedMessagePayload: !include message/payload/BusinessUnitAssociateChangedMessagePayload.raml
# yamllint disable-line rule:line-length
@@ -1226,6 +1246,12 @@ ProductDeletedMessagePayload: !include message/payload/ProductDeletedMessagePayl
ProductImageAddedMessagePayload: !include message/payload/ProductImageAddedMessagePayload.raml
ProductPriceAddedMessagePayload: !include message/payload/ProductPriceAddedMessagePayload.raml
ProductPriceChangedMessagePayload: !include message/payload/ProductPriceChangedMessagePayload.raml
+ProductPriceCustomFieldAddedMessagePayload: !include message/payload/ProductPriceCustomFieldAddedMessagePayload.raml
+ProductPriceCustomFieldChangedMessagePayload: !include message/payload/ProductPriceCustomFieldChangedMessagePayload.raml
+ProductPriceCustomFieldRemovedMessagePayload: !include message/payload/ProductPriceCustomFieldRemovedMessagePayload.raml
+# yamllint disable-line rule:line-length
+ProductPriceCustomFieldsRemovedMessagePayload: !include message/payload/ProductPriceCustomFieldsRemovedMessagePayload.raml
+ProductPriceCustomFieldsSetMessagePayload: !include message/payload/ProductPriceCustomFieldsSetMessagePayload.raml
ProductPriceDiscountsSetMessagePayload: !include message/payload/ProductPriceDiscountsSetMessagePayload.raml
# yamllint disable-line rule:line-length
ProductPriceExternalDiscountSetMessagePayload: !include message/payload/ProductPriceExternalDiscountSetMessagePayload.raml
@@ -1251,6 +1277,8 @@ ProductStateTransitionMessagePayload: !include message/payload/ProductStateTrans
ProductTailoringCreatedMessagePayload: !include message/payload/ProductTailoringCreatedMessagePayload.raml
ProductTailoringDeletedMessagePayload: !include message/payload/ProductTailoringDeletedMessagePayload.raml
ProductTailoringDescriptionSetMessagePayload: !include message/payload/ProductTailoringDescriptionSetMessagePayload.raml
+ProductTailoringImageAddedMessagePayload: !include message/payload/ProductTailoringImageAddedMessagePayload.raml
+ProductTailoringImagesSetMessagePayload: !include message/payload/ProductTailoringImagesSetMessagePayload.raml
ProductTailoringNameSetMessagePayload: !include message/payload/ProductTailoringNameSetMessagePayload.raml
ProductTailoringPublishedMessagePayload: !include message/payload/ProductTailoringPublishedMessagePayload.raml
ProductTailoringSlugSetMessagePayload: !include message/payload/ProductTailoringSlugSetMessagePayload.raml
@@ -1258,6 +1286,8 @@ ProductTailoringUnpublishedMessagePayload: !include message/payload/ProductTailo
ProductUnpublishedMessagePayload: !include message/payload/ProductUnpublishedMessagePayload.raml
ProductVariantAddedMessagePayload: !include message/payload/ProductVariantAddedMessagePayload.raml
ProductVariantDeletedMessagePayload: !include message/payload/ProductVariantDeletedMessagePayload.raml
+ProductVariantTailoringAddedMessagePayload: !include message/payload/ProductVariantTailoringAddedMessagePayload.raml
+ProductVariantTailoringRemovedMessagePayload: !include message/payload/ProductVariantTailoringRemovedMessagePayload.raml
QuoteCreatedMessagePayload: !include message/payload/QuoteCreatedMessagePayload.raml
QuoteCustomerChangedMessagePayload: !include message/payload/QuoteCustomerChangedMessagePayload.raml
QuoteDeletedMessagePayload: !include message/payload/QuoteDeletedMessagePayload.raml
@@ -1698,8 +1728,31 @@ ProductTailoringReference: !include product-tailoring/ProductTailoringReference.
ProductTailoringResourceIdentifier: !include product-tailoring/ProductTailoringResourceIdentifier.raml
ProductTailoringUpdate: !include product-tailoring/ProductTailoringUpdate.raml
ProductTailoringUpdateAction: !include product-tailoring/ProductTailoringUpdateAction.raml
+ProductVariantTailoring: !include product-tailoring/ProductVariantTailoring.raml
+ProductVariantTailoringDraft: !include product-tailoring/ProductVariantTailoringDraft.raml
+ProductTailoringAddAssetAction: !include product-tailoring/updates/ProductTailoringAddAssetAction.raml
+ProductTailoringAddExternalImageAction: !include product-tailoring/updates/ProductTailoringAddExternalImageAction.raml
+ProductTailoringAddVariantAction: !include product-tailoring/updates/ProductTailoringAddVariantAction.raml
+ProductTailoringChangeAssetNameAction: !include product-tailoring/updates/ProductTailoringChangeAssetNameAction.raml
+ProductTailoringChangeAssetOrderAction: !include product-tailoring/updates/ProductTailoringChangeAssetOrderAction.raml
+# yamllint disable-line rule:line-length
+ProductTailoringMoveImageToPositionAction: !include product-tailoring/updates/ProductTailoringMoveImageToPositionAction.raml
ProductTailoringPublishAction: !include product-tailoring/updates/ProductTailoringPublishAction.raml
+ProductTailoringRemoveAssetAction: !include product-tailoring/updates/ProductTailoringRemoveAssetAction.raml
+ProductTailoringRemoveImageAction: !include product-tailoring/updates/ProductTailoringRemoveImageAction.raml
+ProductTailoringRemoveVariantAction: !include product-tailoring/updates/ProductTailoringRemoveVariantAction.raml
+# yamllint disable-line rule:line-length
+ProductTailoringSetAssetCustomFieldAction: !include product-tailoring/updates/ProductTailoringSetAssetCustomFieldAction.raml
+# yamllint disable-line rule:line-length
+ProductTailoringSetAssetCustomTypeAction: !include product-tailoring/updates/ProductTailoringSetAssetCustomTypeAction.raml
+# yamllint disable-line rule:line-length
+ProductTailoringSetAssetDescriptionAction: !include product-tailoring/updates/ProductTailoringSetAssetDescriptionAction.raml
+ProductTailoringSetAssetKeyAction: !include product-tailoring/updates/ProductTailoringSetAssetKeyAction.raml
+ProductTailoringSetAssetSourcesAction: !include product-tailoring/updates/ProductTailoringSetAssetSourcesAction.raml
+ProductTailoringSetAssetTagsAction: !include product-tailoring/updates/ProductTailoringSetAssetTagsAction.raml
ProductTailoringSetDescriptionAction: !include product-tailoring/updates/ProductTailoringSetDescriptionAction.raml
+ProductTailoringSetExternalImagesAction: !include product-tailoring/updates/ProductTailoringSetExternalImagesAction.raml
+ProductTailoringSetImageLabelAction: !include product-tailoring/updates/ProductTailoringSetImageLabelAction.raml
ProductTailoringSetMetaAttributesAction: !include product-tailoring/updates/ProductTailoringSetMetaAttributesAction.raml
# yamllint disable-line rule:line-length
ProductTailoringSetMetaDescriptionAction: !include product-tailoring/updates/ProductTailoringSetMetaDescriptionAction.raml
@@ -1857,6 +1910,7 @@ CartClassificationType: !include project/CartClassificationType.raml
CartScoreType: !include project/CartScoreType.raml
CartValueType: !include project/CartValueType.raml
CartsConfiguration: !include project/CartsConfiguration.raml
+CustomerSearchStatus: !include project/CustomerSearchStatus.raml
ExternalOAuth: !include project/ExternalOAuth.raml
OrderSearchStatus: !include project/OrderSearchStatus.raml
ProductSearchIndexingMode: !include project/ProductSearchIndexingMode.raml
@@ -1876,6 +1930,7 @@ ProjectChangeCountriesAction: !include project/updates/ProjectChangeCountriesAct
# yamllint disable-line rule:line-length
ProjectChangeCountryTaxRateFallbackEnabledAction: !include project/updates/ProjectChangeCountryTaxRateFallbackEnabledAction.raml
ProjectChangeCurrenciesAction: !include project/updates/ProjectChangeCurrenciesAction.raml
+ProjectChangeCustomerSearchStatusAction: !include project/updates/ProjectChangeCustomerSearchStatusAction.raml
ProjectChangeLanguagesAction: !include project/updates/ProjectChangeLanguagesAction.raml
ProjectChangeMessagesConfigurationAction: !include project/updates/ProjectChangeMessagesConfigurationAction.raml
ProjectChangeMessagesEnabledAction: !include project/updates/ProjectChangeMessagesEnabledAction.raml