@jetshop/template-trend 5.17.0-alpha.f7018eb5 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc +9 -1
- package/cypress/plugins/index.js +4 -4
- package/package.json +10 -12
- package/schema.graphql +1649 -1716
- package/src/components/CategoryPage/Filters/BooleanFilters.js +1 -0
- package/src/components/Layout/Footer/FooterLinks.js +1 -1
- package/src/components/Layout/Header/CategoryMenu/CategoryMenuContainer.js +0 -1
- package/src/components/Layout/Header/Header.js +1 -2
- package/src/components/MyPages/CustomerNameHeader.js +1 -1
- package/src/components/MyPages/MyPagesStartPage.js +1 -1
- package/src/components/NavigationTree/NavTree.js +2 -1
- package/src/components/ProductList/AddToCart.js +1 -1
- package/src/components/ProductList/Favourites.js +1 -0
- package/src/components/ProductList/ProductLists.gql +8 -0
- package/src/components/ProductPage/AddToCart/AddToCartForm.js +6 -4
- package/src/components/ProductPage/PriceHistory.js +1 -1
- package/src/components/ProductPage/ProductPageFragment.gql +1 -0
- package/src/components/SearchPage/EmptySearchResults.js +1 -1
- package/src/components/StartPage/StartPage.js +1 -1
- package/src/components/Store/Store.js +1 -1
- package/src/components/StoreLocator/StoreLocator.js +2 -1
- package/src/components/ui/Button.js +1 -1
- package/src/theme-variables.js +2 -2
- package/translations/default.json +741 -6
- package/.linaria-cache/packages/template-trend/src/components/Auth/LogInPage.linaria.css +0 -4
- package/.linaria-cache/packages/template-trend/src/components/Auth/Signup/Address.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/Auth/Signup/CustomerType.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/Auth/Signup/LoginFields.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/Auth/Signup/SignUpPage.linaria.css +0 -2
- package/.linaria-cache/packages/template-trend/src/components/Auth/UI/Form.linaria.css +0 -2
- package/.linaria-cache/packages/template-trend/src/components/Cart/CartButton.linaria.css +0 -2
- package/.linaria-cache/packages/template-trend/src/components/Cart/CartFlyout.linaria.css +0 -7
- package/.linaria-cache/packages/template-trend/src/components/Cart/CartItem.linaria.css +0 -8
- package/.linaria-cache/packages/template-trend/src/components/Cart/FreeShipping.linaria.css +0 -2
- package/.linaria-cache/packages/template-trend/src/components/CategoryPage/CategoryHeader.linaria.css +0 -8
- package/.linaria-cache/packages/template-trend/src/components/CategoryPage/Filters/ActiveFilters.linaria.css +0 -6
- package/.linaria-cache/packages/template-trend/src/components/CategoryPage/Filters/Filter.linaria.css +0 -4
- package/.linaria-cache/packages/template-trend/src/components/CategoryPage/Filters/FilterDrawer.linaria.css +0 -4
- package/.linaria-cache/packages/template-trend/src/components/CategoryPage/Filters/FilterDropdownMenu.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/CategoryPage/Filters/Mobile/ActiveCarot.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/CategoryPage/Filters/Mobile/FilterButton.linaria.css +0 -5
- package/.linaria-cache/packages/template-trend/src/components/CategoryPage/Filters/Mobile/ListAccordion.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/CategoryPage/Filters/Mobile/shared/styles.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/CategoryPage/Filters/RangeFilters.linaria.css +0 -2
- package/.linaria-cache/packages/template-trend/src/components/CategoryPage/ProductCard.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/CategoryPage/ProductGrid.linaria.css +0 -2
- package/.linaria-cache/packages/template-trend/src/components/CategoryPage/ProductGridWindow.linaria.css +0 -2
- package/.linaria-cache/packages/template-trend/src/components/CategoryPage/StandardCategoryPage.linaria.css +0 -3
- package/.linaria-cache/packages/template-trend/src/components/CategoryPage/WindowedCategoryPage.linaria.css +0 -4
- package/.linaria-cache/packages/template-trend/src/components/ContentPage/ContentPage.linaria.css +0 -5
- package/.linaria-cache/packages/template-trend/src/components/ContentPage/SubPageNavigation.linaria.css +0 -4
- package/.linaria-cache/packages/template-trend/src/components/CookieConsent.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/Forms/GlobalError.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/Forms/Input.linaria.css +0 -4
- package/.linaria-cache/packages/template-trend/src/components/Forms/InputStatus.linaria.css +0 -3
- package/.linaria-cache/packages/template-trend/src/components/Forms/Success.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/Layout/Container.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/Layout/Content/index.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/Layout/Footer/Footer.linaria.css +0 -4
- package/.linaria-cache/packages/template-trend/src/components/Layout/Footer/SocialLinks.linaria.css +0 -2
- package/.linaria-cache/packages/template-trend/src/components/Layout/Header/Categories/MobileCategories.linaria.css +0 -6
- package/.linaria-cache/packages/template-trend/src/components/Layout/Header/CategoryMenu/CategoryMenu.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/Layout/Header/CategoryMenu/CategoryMenuContainer.linaria.css +0 -2
- package/.linaria-cache/packages/template-trend/src/components/Layout/Header/CategoryMenu/SubMenuSection.linaria.css +0 -2
- package/.linaria-cache/packages/template-trend/src/components/Layout/Header/CategoryMenu/SubMenuWrapper.linaria.css +0 -5
- package/.linaria-cache/packages/template-trend/src/components/Layout/Header/ChannelSelector/ChannelSelector.linaria.css +0 -2
- package/.linaria-cache/packages/template-trend/src/components/Layout/Header/ChannelSelector/ChannelSelectorModal.linaria.css +0 -2
- package/.linaria-cache/packages/template-trend/src/components/Layout/Header/ChannelSelector/Selector.linaria.css +0 -5
- package/.linaria-cache/packages/template-trend/src/components/Layout/Header/Header.linaria.css +0 -7
- package/.linaria-cache/packages/template-trend/src/components/Layout/Header/Logo.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/Layout/Header/LogoSearchBar.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/Layout/Header/MobileMenu.linaria.css +0 -6
- package/.linaria-cache/packages/template-trend/src/components/Layout/Header/RecommendedChannel/ChannelBanner.linaria.css +0 -5
- package/.linaria-cache/packages/template-trend/src/components/Layout/Header/RecommendedChannel/RecommendedChannelSelector.linaria.css +0 -9
- package/.linaria-cache/packages/template-trend/src/components/Layout/Header/SearchBar.linaria.css +0 -3
- package/.linaria-cache/packages/template-trend/src/components/Layout/Header/SearchButton.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/Layout/Header/TopNav.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/Layout/MaxWidth.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/Layout/Notifications.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/LoadingPage.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/MyPages/CustomerNameHeader.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/MyPages/DeleteAccount.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/MyPages/MyPages.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/MyPages/MyPagesSidebar.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/MyPages/MyPagesStartPage.linaria.css +0 -2
- package/.linaria-cache/packages/template-trend/src/components/MyPages/Orders/ListOrder.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/MyPages/Orders/OrderDetail/ListDetail.linaria.css +0 -4
- package/.linaria-cache/packages/template-trend/src/components/MyPages/Orders/OrderDetail/OrderTotals.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/MyPages/Orders/OrderDetail/ShippingPayment.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/MyPages/Orders/OrderListPage.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/MyPages/ProfileDeliveryAddresses.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/MyPages/ProfilePage.linaria.css +0 -4
- package/.linaria-cache/packages/template-trend/src/components/NavigationTree/NavTree.linaria.css +0 -2
- package/.linaria-cache/packages/template-trend/src/components/Newsletter/NewsletterField.linaria.css +0 -3
- package/.linaria-cache/packages/template-trend/src/components/NotFoundPage.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/Pagination/Pagination.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/ProductList/AddToCart.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/ProductList/Favourite.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/ProductList/Favourites.linaria.css +0 -2
- package/.linaria-cache/packages/template-trend/src/components/ProductList/Product.linaria.css +0 -2
- package/.linaria-cache/packages/template-trend/src/components/ProductPage/AddToCart/AddToCartForm.linaria.css +0 -3
- package/.linaria-cache/packages/template-trend/src/components/ProductPage/AddToCart/ProductToast.linaria.css +0 -9
- package/.linaria-cache/packages/template-trend/src/components/ProductPage/Campaigns.linaria.css +0 -2
- package/.linaria-cache/packages/template-trend/src/components/ProductPage/ConfigurationSelector.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/ProductPage/Images/ImageContainer.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/ProductPage/PackageProduct/IncludedInPackages.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/ProductPage/PackageProduct/PackageProduct.linaria.css +0 -2
- package/.linaria-cache/packages/template-trend/src/components/ProductPage/PackageProduct/PackageProductItem.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/ProductPage/PriceHistory.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/ProductPage/ProductInfo.linaria.css +0 -3
- package/.linaria-cache/packages/template-trend/src/components/ProductPage/ProductInfoAccordion.linaria.css +0 -3
- package/.linaria-cache/packages/template-trend/src/components/ProductPage/ProductPage.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/ProductPage/ProductPageLoadingState.linaria.css +0 -3
- package/.linaria-cache/packages/template-trend/src/components/ProductPage/RelatedProducts.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/ProductPage/StockStatus/NotifyWhenBack.linaria.css +0 -5
- package/.linaria-cache/packages/template-trend/src/components/ProductPage/StockStatus/StockOrb.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/ProductPage/StockStatus/StockStatusIndicator.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/ProductPage/StockStatus/WarehouseStock.linaria.css +0 -2
- package/.linaria-cache/packages/template-trend/src/components/ProductPage/VariantSelector.linaria.css +0 -3
- package/.linaria-cache/packages/template-trend/src/components/ProductPage/styledComponents.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/SearchPage/CategoryList.linaria.css +0 -7
- package/.linaria-cache/packages/template-trend/src/components/SearchPage/SearchMeta.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/SearchPage/SearchPage.linaria.css +0 -3
- package/.linaria-cache/packages/template-trend/src/components/SearchPage/SearchResults.linaria.css +0 -4
- package/.linaria-cache/packages/template-trend/src/components/SearchPage/SearchTerm.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/SearchPage/WindowedSearchResults.linaria.css +0 -5
- package/.linaria-cache/packages/template-trend/src/components/StartPage/Content/Row.linaria.css +0 -3
- package/.linaria-cache/packages/template-trend/src/components/StartPage/Content/StartPageCampaign.linaria.css +0 -7
- package/.linaria-cache/packages/template-trend/src/components/StartPage/Content/StartPageCategories.linaria.css +0 -3
- package/.linaria-cache/packages/template-trend/src/components/StartPage/Content/StartPageHTMLContent.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/StartPage/Content/StartPageHero.linaria.css +0 -6
- package/.linaria-cache/packages/template-trend/src/components/StartPage/Content/StartPageProductGrid.linaria.css +0 -2
- package/.linaria-cache/packages/template-trend/src/components/StartPage/StartPage.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/Store/Store.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/StoreLocator/StoreList.linaria.css +0 -5
- package/.linaria-cache/packages/template-trend/src/components/StoreLocator/StoreLocator.linaria.css +0 -5
- package/.linaria-cache/packages/template-trend/src/components/StoreLocator/StoreMap.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/StoreLocator/StoreMarker.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/StoreLocator/StoreSearch.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/StoreLocator/UserLocation.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/ui/Badge.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/ui/Button.linaria.css +0 -4
- package/.linaria-cache/packages/template-trend/src/components/ui/CloseButton.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/components/ui/Headings.linaria.css +0 -2
- package/.linaria-cache/packages/template-trend/src/components/ui/Spinner.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/fonts/loadFontCss.linaria.css +0 -1
- package/.linaria-cache/packages/template-trend/src/globalStyles.linaria.css +0 -1
- package/.linaria-cache/packages/ui/Breadcrumbs/Breadcrumbs.linaria.css +0 -2
- package/.linaria-cache/packages/ui/Button/Button.linaria.css +0 -2
- package/.linaria-cache/packages/ui/Button/SecondaryButton.linaria.css +0 -1
- package/.linaria-cache/packages/ui/Button/TrendButton.linaria.css +0 -1
- package/.linaria-cache/packages/ui/ChannelSelector/ChannelSelector.linaria.css +0 -3
- package/.linaria-cache/packages/ui/ChannelSelector/ChannelSelectorButtons.linaria.css +0 -2
- package/.linaria-cache/packages/ui/ChannelSelector/LargeSelector.linaria.css +0 -1
- package/.linaria-cache/packages/ui/ChannelSelector/MiniSelector.linaria.css +0 -1
- package/.linaria-cache/packages/ui/Checkbox/Checkbox.linaria.css +0 -4
- package/.linaria-cache/packages/ui/Checkbox/CheckboxGroup.linaria.css +0 -3
- package/.linaria-cache/packages/ui/DropdownMenu/DropdownMenu.linaria.css +0 -2
- package/.linaria-cache/packages/ui/ErrorBoundary/Generic.linaria.css +0 -1
- package/.linaria-cache/packages/ui/Gallery/Gallery.linaria.css +0 -2
- package/.linaria-cache/packages/ui/JetshopText.linaria.css +0 -1
- package/.linaria-cache/packages/ui/Loading/LoadingBar.linaria.css +0 -2
- package/.linaria-cache/packages/ui/Modal/Drawer/Drawer.linaria.css +0 -1
- package/.linaria-cache/packages/ui/Modal/ModalProvider.linaria.css +0 -1
- package/.linaria-cache/packages/ui/Modal/ModalRoot.linaria.css +0 -1
- package/.linaria-cache/packages/ui/Pagination/Pagination.linaria.css +0 -1
- package/.linaria-cache/packages/ui/Pagination/usePagination.linaria.css +0 -1
- package/.linaria-cache/packages/ui/PreOrderDateSelector/PreOrderDateSelector.linaria.css +0 -1
- package/.linaria-cache/packages/ui/Price/Price.linaria.css +0 -4
- package/.linaria-cache/packages/ui/ProductList/Badges.linaria.css +0 -7
- package/.linaria-cache/packages/ui/ProductSpecifications/ProductSpecifications.linaria.css +0 -1
- package/.linaria-cache/packages/ui/Search/SearchField.linaria.css +0 -5
- package/.linaria-cache/packages/ui/Search/SearchPage/SearchMeta.linaria.css +0 -1
- package/.linaria-cache/packages/ui/Select/Components.linaria.css +0 -10
- package/.linaria-cache/packages/ui/Theme/sanitizeCss.linaria.css +0 -1
- package/src/components/Forms/ValidationTooltip.js +0 -51
package/schema.graphql
CHANGED
|
@@ -1,84 +1,108 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
scalar Uri
|
|
2
|
+
|
|
3
|
+
type CustomStringField implements CustomField {
|
|
4
|
+
value: String!
|
|
5
|
+
type: ProductCustomFieldType
|
|
6
|
+
key: String
|
|
7
|
+
title: String
|
|
3
8
|
}
|
|
4
9
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
10
|
+
enum ProductCustomFieldType {
|
|
11
|
+
STRING
|
|
12
|
+
BOOL
|
|
13
|
+
LIST
|
|
14
|
+
HTML
|
|
15
|
+
MULTI_LEVEL_LIST
|
|
8
16
|
}
|
|
9
17
|
|
|
10
|
-
|
|
11
|
-
|
|
18
|
+
interface CustomField {
|
|
19
|
+
type: ProductCustomFieldType
|
|
20
|
+
key: String
|
|
21
|
+
title: String
|
|
12
22
|
}
|
|
13
23
|
|
|
14
|
-
type
|
|
15
|
-
|
|
16
|
-
|
|
24
|
+
type CustomBoolField implements CustomField {
|
|
25
|
+
value: Boolean!
|
|
26
|
+
type: ProductCustomFieldType
|
|
27
|
+
key: String
|
|
28
|
+
title: String
|
|
17
29
|
}
|
|
18
30
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
COUNTRY_NOT_VALID
|
|
31
|
+
type CustomHtmlField implements CustomField {
|
|
32
|
+
value: String!
|
|
33
|
+
type: ProductCustomFieldType
|
|
34
|
+
key: String
|
|
35
|
+
title: String
|
|
25
36
|
}
|
|
26
37
|
|
|
27
|
-
|
|
28
|
-
|
|
38
|
+
type CustomListField implements CustomField {
|
|
39
|
+
value: [String]
|
|
40
|
+
type: ProductCustomFieldType
|
|
41
|
+
key: String
|
|
42
|
+
title: String
|
|
43
|
+
}
|
|
29
44
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
45
|
+
type CustomMultiLevelListField implements CustomField {
|
|
46
|
+
items: [CustomMultiLevelListFieldItem]
|
|
47
|
+
type: ProductCustomFieldType
|
|
48
|
+
key: String
|
|
49
|
+
title: String
|
|
35
50
|
}
|
|
36
51
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
52
|
+
type CustomMultiLevelListFieldItem {
|
|
53
|
+
id: Int!
|
|
54
|
+
parentId: Int
|
|
55
|
+
title: String!
|
|
56
|
+
value: String!
|
|
57
|
+
}
|
|
41
58
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
preOrderDate: DateTime
|
|
59
|
+
type ListFilter implements Filter {
|
|
60
|
+
items: [ListFilterItem]!
|
|
61
|
+
id: String!
|
|
62
|
+
name: String!
|
|
47
63
|
}
|
|
48
64
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
65
|
+
type ListFilterItem {
|
|
66
|
+
text: String!
|
|
67
|
+
id: String!
|
|
68
|
+
value: String!
|
|
69
|
+
resultCount: Int
|
|
53
70
|
}
|
|
54
71
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
72
|
+
interface Filter {
|
|
73
|
+
id: String!
|
|
74
|
+
name: String!
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
type NumericRangeFilter implements Filter {
|
|
78
|
+
min: Decimal!
|
|
79
|
+
max: Decimal!
|
|
80
|
+
id: String!
|
|
81
|
+
name: String!
|
|
60
82
|
}
|
|
61
83
|
|
|
84
|
+
scalar Decimal
|
|
85
|
+
|
|
62
86
|
type BooleanFilter implements Filter {
|
|
63
87
|
default: Boolean
|
|
64
88
|
id: String!
|
|
65
89
|
name: String!
|
|
66
90
|
}
|
|
67
91
|
|
|
68
|
-
|
|
92
|
+
type MultiListFilter implements Filter {
|
|
93
|
+
lists: [MultiListFilterList]!
|
|
69
94
|
id: String!
|
|
70
|
-
|
|
71
|
-
"""null is equivalent to excluding the filter."""
|
|
72
|
-
value: Boolean
|
|
95
|
+
name: String!
|
|
73
96
|
}
|
|
74
97
|
|
|
75
|
-
type
|
|
76
|
-
|
|
98
|
+
type MultiListFilterList {
|
|
99
|
+
id: String!
|
|
100
|
+
name: String!
|
|
101
|
+
items: [ListFilterItem]!
|
|
77
102
|
}
|
|
78
103
|
|
|
79
|
-
type
|
|
80
|
-
|
|
81
|
-
organizationNumber: String
|
|
104
|
+
type PrivateCustomer implements Customer {
|
|
105
|
+
pid: String
|
|
82
106
|
id: ID!
|
|
83
107
|
memberId: String
|
|
84
108
|
email: String
|
|
@@ -113,233 +137,109 @@ type BusinessCustomer implements Customer {
|
|
|
113
137
|
googleUserId: String
|
|
114
138
|
}
|
|
115
139
|
|
|
116
|
-
type
|
|
117
|
-
id: String
|
|
118
|
-
totalQuantity: Int
|
|
119
|
-
productTotal: Price
|
|
120
|
-
productPreviousTotal: Price
|
|
121
|
-
discountTotal: Price
|
|
122
|
-
aggregatedDiscounts: [Discount]
|
|
123
|
-
externalCheckoutUrl: Uri
|
|
124
|
-
items: [CartItem]
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
type CartItem {
|
|
140
|
+
type Language {
|
|
128
141
|
id: String!
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
variant: ProductVariant
|
|
134
|
-
variantOptionNames: [String]
|
|
135
|
-
customerComments: [CartItemComment]
|
|
136
|
-
discounts: [Discount]
|
|
137
|
-
|
|
138
|
-
"""Total price, including discounts"""
|
|
139
|
-
total: Price!
|
|
140
|
-
|
|
141
|
-
"""Total price, excluding discounts"""
|
|
142
|
-
previousTotal: Price!
|
|
143
|
-
|
|
144
|
-
"""Unit price, including discounts"""
|
|
145
|
-
unitPrice: Price!
|
|
146
|
-
|
|
147
|
-
"""Unit price, excluding discounts"""
|
|
148
|
-
previousUnitPrice: Price!
|
|
142
|
+
name: String!
|
|
143
|
+
culture: String!
|
|
144
|
+
isDefault: Boolean
|
|
145
|
+
}
|
|
149
146
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
147
|
+
type CustomerAddress {
|
|
148
|
+
id: Int
|
|
149
|
+
addressName: String
|
|
150
|
+
firstName: String
|
|
151
|
+
lastName: String
|
|
152
|
+
companyAtt: String
|
|
153
|
+
company: String
|
|
154
|
+
department: String
|
|
155
|
+
streetName: String
|
|
156
|
+
co: String
|
|
157
|
+
postalCode: String
|
|
158
|
+
city: String
|
|
159
|
+
municipality: String
|
|
160
|
+
region: String
|
|
161
|
+
country: Country
|
|
162
|
+
phone: String
|
|
163
|
+
mobilePhone: String
|
|
155
164
|
}
|
|
156
165
|
|
|
157
|
-
type
|
|
166
|
+
type Country {
|
|
167
|
+
id: ID!
|
|
168
|
+
code: String
|
|
158
169
|
name: String
|
|
159
|
-
|
|
170
|
+
isDefault: Boolean
|
|
160
171
|
}
|
|
161
172
|
|
|
162
|
-
type
|
|
163
|
-
|
|
173
|
+
type OrderHeaderResult {
|
|
174
|
+
result: [OrderHeader]
|
|
175
|
+
totalResults: Int
|
|
164
176
|
}
|
|
165
177
|
|
|
166
|
-
type
|
|
167
|
-
id:
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
"""The time interval of the campaign/category"""
|
|
173
|
-
activeDateSpan: CategoryActiveDateSpan
|
|
174
|
-
|
|
175
|
-
"""
|
|
176
|
-
Whether or not this category and all its children are considered hidden
|
|
177
|
-
"""
|
|
178
|
-
isHidden: Boolean! @deprecated(reason: "This field should no longer be used and will always be false.")
|
|
179
|
-
|
|
180
|
-
"""When empty will display the value of the name field"""
|
|
181
|
-
mainHeader: String
|
|
182
|
-
content: String
|
|
183
|
-
externalId: String
|
|
184
|
-
externalDiscountId: String
|
|
185
|
-
images: [CategoryImage]
|
|
178
|
+
type OrderHeader {
|
|
179
|
+
id: ID!
|
|
180
|
+
orderNumber: String
|
|
181
|
+
status: OrderStatus
|
|
182
|
+
statusTimeline: [OrderStatus]
|
|
186
183
|
|
|
187
184
|
"""
|
|
188
|
-
|
|
185
|
+
If this is false, a call to `order` for this order will result in a failure.
|
|
189
186
|
"""
|
|
190
|
-
|
|
187
|
+
hasOrderDetails: Boolean
|
|
188
|
+
total: Price
|
|
189
|
+
orderDate: DateTime
|
|
190
|
+
trackingId: String
|
|
191
|
+
currency: Currency
|
|
192
|
+
}
|
|
191
193
|
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
194
|
+
type OrderStatus {
|
|
195
|
+
id: ID
|
|
196
|
+
description: String
|
|
197
|
+
timestamp: DateTime
|
|
198
|
+
}
|
|
196
199
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
primaryRoute: Route
|
|
202
|
-
breadcrumbText: String
|
|
203
|
-
hasSubcategories: Boolean
|
|
204
|
-
subcategories: [Category]
|
|
205
|
-
parentCategory: Category @deprecated(reason: "Use parent instead")
|
|
206
|
-
parent: Category
|
|
200
|
+
"""
|
|
201
|
+
The `DateTime` scalar type represents a date and time. `DateTime` expects timestamps to be formatted in accordance with the [ISO-8601](https://en.wikipedia.org/wiki/ISO_8601) standard.
|
|
202
|
+
"""
|
|
203
|
+
scalar DateTime
|
|
207
204
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
"""
|
|
214
|
-
isDynamic: Boolean!
|
|
205
|
+
type Price {
|
|
206
|
+
incVat: Decimal!
|
|
207
|
+
exVat: Decimal!
|
|
208
|
+
vat: Decimal!
|
|
209
|
+
}
|
|
215
210
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
this will result in a separate API call in the backend.
|
|
219
|
-
"""
|
|
220
|
-
dynamicFiltering: [CategoryDynamicFilter]
|
|
221
|
-
|
|
222
|
-
"""
|
|
223
|
-
Get content data set via the Content Editor. NB: Carries a performance cost,
|
|
224
|
-
as asking for this will result in a separate API call in the backend.
|
|
225
|
-
"""
|
|
226
|
-
data: Content
|
|
227
|
-
|
|
228
|
-
"""
|
|
229
|
-
When set to false, the category will be excluded from sitemap. The frontend
|
|
230
|
-
implementation should use this value to set meta tags to exclude the category
|
|
231
|
-
from being indexed by crawlers. Defaults to true.
|
|
232
|
-
"""
|
|
233
|
-
allowWebIndexing: Boolean
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
type CategoryActiveDateSpan {
|
|
237
|
-
startDate: DateTime
|
|
238
|
-
endDate: DateTime
|
|
239
|
-
}
|
|
240
|
-
|
|
241
|
-
type CategoryAutoCompleteResult {
|
|
242
|
-
result: [Category]
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
type CategoryDynamicFilter {
|
|
246
|
-
type: String
|
|
247
|
-
value: CategoryDynamicFilterValue
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
union CategoryDynamicFilterValue = StringValue | ListStringValue | BoolValue
|
|
251
|
-
|
|
252
|
-
type CategoryImage {
|
|
253
|
-
width: Int
|
|
254
|
-
height: Int
|
|
255
|
-
url: Uri
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
type CategorySearchResult {
|
|
259
|
-
result: [Category]
|
|
260
|
-
totalResults: Int
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
input ChangeByOneItemQuantityInput {
|
|
264
|
-
cartId: String!
|
|
265
|
-
itemId: String!
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
"""
|
|
269
|
-
Every channel has its own URL and can have different design, selection of
|
|
270
|
-
products, prices and own settings for example shipping and payment.
|
|
271
|
-
"""
|
|
272
|
-
type Channel {
|
|
273
|
-
id: Int!
|
|
211
|
+
type Currency {
|
|
212
|
+
id: String!
|
|
274
213
|
name: String
|
|
275
|
-
displayName: String
|
|
276
|
-
groupName: String
|
|
277
214
|
isDefault: Boolean
|
|
278
|
-
|
|
279
|
-
settings: ChannelSettings
|
|
280
|
-
languages: [Language]
|
|
281
|
-
defaultLanguage: Language
|
|
282
|
-
currencies: [Currency]
|
|
283
|
-
defaultCurrency: Currency
|
|
284
|
-
countries: [Country]
|
|
285
|
-
|
|
286
|
-
"""
|
|
287
|
-
The root url of images, this can be used to build image urls if needed.
|
|
288
|
-
"""
|
|
289
|
-
imageUrl: String
|
|
290
|
-
|
|
291
|
-
"""This channel requires a user to be authorized."""
|
|
292
|
-
requiresAuth: Boolean
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
type ChannelSettings {
|
|
296
|
-
pricesIncVat: Boolean
|
|
297
|
-
countrySettings: [CountrySettings]
|
|
298
|
-
tracking: Tracking
|
|
299
|
-
nostoAccountId: String
|
|
215
|
+
format: CurrencyFormat
|
|
300
216
|
}
|
|
301
217
|
|
|
302
|
-
type
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
text: String
|
|
307
|
-
linkText: String
|
|
308
|
-
page: Page
|
|
309
|
-
isMandatory: Boolean
|
|
218
|
+
type CurrencyFormat {
|
|
219
|
+
culture: String! @deprecated(reason: "For currency formatting to a specific culture, instead use whichever culture makes sense contextually.")
|
|
220
|
+
code: String!
|
|
221
|
+
decimals: Int!
|
|
310
222
|
}
|
|
311
223
|
|
|
312
|
-
type
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
tags: [String]
|
|
224
|
+
type CustomerCommunication {
|
|
225
|
+
acceptsEmail: Boolean
|
|
226
|
+
acceptsPostal: Boolean
|
|
227
|
+
acceptsSms: Boolean
|
|
317
228
|
}
|
|
318
229
|
|
|
319
|
-
type
|
|
230
|
+
type Store {
|
|
231
|
+
id: Int!
|
|
232
|
+
externalId: String
|
|
320
233
|
name: String
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
type ContentItemProperty {
|
|
332
|
-
name: String!
|
|
333
|
-
type: String!
|
|
334
|
-
valueType: ContentPropertyValueType
|
|
335
|
-
value: ContentItemPropertyValue
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
union ContentItemPropertyValue = StringValue | ImageValue | BoolValue | Product | Category
|
|
339
|
-
|
|
340
|
-
enum ContentPropertyValueType {
|
|
341
|
-
OBJECT
|
|
342
|
-
SCALAR
|
|
234
|
+
city: String
|
|
235
|
+
region: String
|
|
236
|
+
address1: String
|
|
237
|
+
address2: String
|
|
238
|
+
description: String
|
|
239
|
+
other: String
|
|
240
|
+
openHours: String
|
|
241
|
+
contact: String
|
|
242
|
+
coordinates: Coordinates
|
|
343
243
|
}
|
|
344
244
|
|
|
345
245
|
type Coordinates {
|
|
@@ -347,73 +247,49 @@ type Coordinates {
|
|
|
347
247
|
longitude: Decimal!
|
|
348
248
|
}
|
|
349
249
|
|
|
350
|
-
type
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
name: String
|
|
354
|
-
isDefault: Boolean
|
|
250
|
+
type CustomerExternalAttribute {
|
|
251
|
+
name: String!
|
|
252
|
+
value: String!
|
|
355
253
|
}
|
|
356
254
|
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
255
|
+
interface Customer {
|
|
256
|
+
id: ID!
|
|
257
|
+
memberId: String
|
|
258
|
+
email: String
|
|
360
259
|
|
|
361
|
-
"""
|
|
362
|
-
|
|
363
|
-
""
|
|
364
|
-
|
|
260
|
+
"""Customer id for external system"""
|
|
261
|
+
externalId: String
|
|
262
|
+
subscribedToNewsletter: Boolean @deprecated(reason: "Use communication.acceptsEmail")
|
|
263
|
+
language: Language
|
|
264
|
+
billingAddress: CustomerAddress
|
|
265
|
+
deliveryAddresses: [CustomerAddress]
|
|
365
266
|
|
|
366
267
|
"""
|
|
367
268
|
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
368
269
|
"""
|
|
369
|
-
|
|
370
|
-
|
|
270
|
+
orderHeaders(
|
|
271
|
+
"""Will fetch all if this is set to 0"""
|
|
272
|
+
first: Int = 0
|
|
273
|
+
offset: Int = 0
|
|
274
|
+
): OrderHeaderResult
|
|
275
|
+
communication: CustomerCommunication
|
|
371
276
|
|
|
372
277
|
"""
|
|
373
278
|
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
374
|
-
|
|
375
|
-
This will use localization, and will work well when requesting one `channel`,
|
|
376
|
-
but may give unpredictable results when getting multiple channels via `channels`
|
|
377
279
|
"""
|
|
378
|
-
|
|
280
|
+
store: Store
|
|
281
|
+
dynamicContent: String
|
|
282
|
+
externalAttributes: [CustomerExternalAttribute]
|
|
379
283
|
|
|
380
284
|
"""
|
|
381
285
|
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
382
|
-
|
|
383
|
-
This will use localization, and will work well when requesting one `channel`,
|
|
384
|
-
but may give unpredictable results when getting multiple channels via `channels`
|
|
385
286
|
"""
|
|
386
|
-
|
|
387
|
-
}
|
|
388
|
-
|
|
389
|
-
input CreateCustomerProductListInput {
|
|
390
|
-
"""The type of list created. Omit this and the default type will be used."""
|
|
391
|
-
typeId: Int
|
|
392
|
-
name: String!
|
|
393
|
-
description: String
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
type Currency {
|
|
397
|
-
id: String!
|
|
398
|
-
name: String
|
|
399
|
-
isDefault: Boolean
|
|
400
|
-
format: CurrencyFormat
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
type CurrencyFormat {
|
|
404
|
-
culture: String! @deprecated(reason: "For currency formatting to a specific culture, instead use whichever culture makes sense contextually.")
|
|
405
|
-
code: String!
|
|
406
|
-
decimals: Int!
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
type CustomBoolField implements CustomField {
|
|
410
|
-
value: Boolean!
|
|
411
|
-
type: ProductCustomFieldType
|
|
412
|
-
key: String
|
|
413
|
-
title: String
|
|
287
|
+
googleUserId: String
|
|
414
288
|
}
|
|
415
289
|
|
|
416
|
-
|
|
290
|
+
type BusinessCustomer implements Customer {
|
|
291
|
+
organizationId: String @deprecated(reason: "Use `organizationNumber` instead.")
|
|
292
|
+
organizationNumber: String
|
|
417
293
|
id: ID!
|
|
418
294
|
memberId: String
|
|
419
295
|
email: String
|
|
@@ -448,416 +324,428 @@ interface Customer {
|
|
|
448
324
|
googleUserId: String
|
|
449
325
|
}
|
|
450
326
|
|
|
451
|
-
type
|
|
452
|
-
id: Int
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
company: String
|
|
458
|
-
department: String
|
|
459
|
-
streetName: String
|
|
460
|
-
co: String
|
|
461
|
-
postalCode: String
|
|
462
|
-
city: String
|
|
463
|
-
municipality: String
|
|
464
|
-
region: String
|
|
465
|
-
country: Country
|
|
466
|
-
phone: String
|
|
467
|
-
mobilePhone: String
|
|
468
|
-
}
|
|
469
|
-
|
|
470
|
-
type CustomerCommunication {
|
|
471
|
-
acceptsEmail: Boolean
|
|
472
|
-
acceptsPostal: Boolean
|
|
473
|
-
acceptsSms: Boolean
|
|
474
|
-
}
|
|
475
|
-
|
|
476
|
-
type CustomerExternalAttribute {
|
|
477
|
-
name: String!
|
|
478
|
-
value: String!
|
|
479
|
-
}
|
|
327
|
+
type Query {
|
|
328
|
+
store(id: Int!): Store
|
|
329
|
+
stores(includeInactive: Boolean! = false): [Store]!
|
|
330
|
+
startPage(id: Int): StartPage
|
|
331
|
+
searchAutoComplete(term: String!): SearchAutoCompleteResult
|
|
332
|
+
search(term: String!): SearchResult
|
|
480
333
|
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
fields: [CustomerField]
|
|
486
|
-
name: ID!
|
|
487
|
-
}
|
|
334
|
+
"""get product, category or page by path."""
|
|
335
|
+
route(path: String!): Route
|
|
336
|
+
product(articleNumber: String, id: Int, barcode: String): Product
|
|
337
|
+
products(articleNumbers: [String], ids: [Int], barcodes: [String]): [Product]!
|
|
488
338
|
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
pointCards: [CustomerLoyaltyPointCard]
|
|
492
|
-
discounts(includeRedeemed: Boolean! = false): [CustomerLoyaltyDiscount]
|
|
339
|
+
"""Fetch a single page by ID."""
|
|
340
|
+
page(id: Int!): Page
|
|
493
341
|
|
|
494
342
|
"""
|
|
495
|
-
|
|
343
|
+
Fetch all non-hidden pages. If you are using nested pages, only root level pages will be returned.
|
|
496
344
|
"""
|
|
497
|
-
|
|
498
|
-
}
|
|
345
|
+
pages: [Page]!
|
|
499
346
|
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
347
|
+
"""fetch order by id"""
|
|
348
|
+
order(
|
|
349
|
+
"""Deprecated, please use the `orderId`-argument"""
|
|
350
|
+
id: Int
|
|
351
|
+
orderId: ID
|
|
352
|
+
): Order
|
|
353
|
+
|
|
354
|
+
"""Fetches my pages content"""
|
|
355
|
+
myPagesContent: MyPagesContent
|
|
356
|
+
|
|
357
|
+
"""get customer product list by id, null gets default product list"""
|
|
358
|
+
customerProductList(id: ID, shareToken: String): CustomerProductList
|
|
359
|
+
customerProductLists: [CustomerProductList]!
|
|
360
|
+
|
|
361
|
+
"""Fetches customer-unique offers"""
|
|
362
|
+
customerLoyalty: CustomerLoyalty
|
|
363
|
+
|
|
364
|
+
"""Lookup a customer by a mobile phone number"""
|
|
365
|
+
customerLookup(phoneNumber: String): Customer
|
|
366
|
+
customer: Customer
|
|
507
367
|
|
|
508
368
|
"""
|
|
509
|
-
|
|
369
|
+
Used in the sign up process when the shop has a third party customer repository, e.g. Voyado.
|
|
370
|
+
|
|
371
|
+
Error codes: INVALID_VALUE (if `key` is null), ExternalCustomerLookupFailed
|
|
510
372
|
"""
|
|
511
|
-
|
|
512
|
-
value: Decimal
|
|
513
|
-
}
|
|
373
|
+
externalCustomerLookup(key: String): ExternalCustomerResult
|
|
514
374
|
|
|
515
|
-
|
|
516
|
-
|
|
375
|
+
"""Get information on person by Key(personal id number or phone number)"""
|
|
376
|
+
personLookup(key: String!): PersonLookup
|
|
377
|
+
|
|
378
|
+
"""
|
|
379
|
+
Returns content found, either by a list of content Ids, or filtered by tags. In the case of filtering by ids, not found content Ids are listed as well.
|
|
380
|
+
"""
|
|
381
|
+
content(ids: [String], tags: [String]): MultipleContent
|
|
382
|
+
|
|
383
|
+
"""get channel by id, null gets default channel"""
|
|
384
|
+
channel(id: String): Channel
|
|
385
|
+
|
|
386
|
+
"""get all channels"""
|
|
387
|
+
channels: [Channel]!
|
|
388
|
+
|
|
389
|
+
"""get categories by channel id, culture, root and culture"""
|
|
390
|
+
categories(
|
|
391
|
+
"""category id of root parent, null or omit means all"""
|
|
392
|
+
root: Int
|
|
393
|
+
|
|
394
|
+
"""
|
|
395
|
+
number of levels to traverse in the category tree, null or omit means all
|
|
396
|
+
"""
|
|
397
|
+
levels: Int = 1
|
|
398
|
+
|
|
399
|
+
"""Deprecated, this argument does not affect the result"""
|
|
400
|
+
includeHidden: Boolean = false
|
|
401
|
+
): [Category]!
|
|
402
|
+
|
|
403
|
+
"""get category by id"""
|
|
404
|
+
category(id: ID!): Category
|
|
405
|
+
cart(id: String): Cart
|
|
517
406
|
}
|
|
518
407
|
|
|
519
|
-
type
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
408
|
+
type StartPage implements Document {
|
|
409
|
+
id: Int!
|
|
410
|
+
name: String!
|
|
411
|
+
images: [Image]
|
|
412
|
+
isActive: Boolean
|
|
413
|
+
content: String
|
|
414
|
+
items: [StartPageItem]
|
|
525
415
|
|
|
526
416
|
"""
|
|
527
417
|
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
528
418
|
"""
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
419
|
+
head: HtmlHead
|
|
420
|
+
|
|
421
|
+
"""The primary route of this StartPage"""
|
|
422
|
+
primaryRoute: Route
|
|
423
|
+
breadcrumbText: String
|
|
424
|
+
|
|
425
|
+
"""
|
|
426
|
+
Get content data set via the Content Editor. NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
427
|
+
"""
|
|
428
|
+
data: Content
|
|
532
429
|
}
|
|
533
430
|
|
|
534
|
-
type
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
externalId: String
|
|
540
|
-
externalReference: String
|
|
541
|
-
heading: String
|
|
542
|
-
redeemed: Boolean
|
|
543
|
-
redeemedOn: DateTime
|
|
544
|
-
imageUrl: String
|
|
545
|
-
link: String
|
|
431
|
+
type Image {
|
|
432
|
+
title: String
|
|
433
|
+
url: Uri
|
|
434
|
+
width: Int
|
|
435
|
+
height: Int
|
|
546
436
|
}
|
|
547
437
|
|
|
548
|
-
type
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
numberOfSlotsRemaining: Int
|
|
554
|
-
isActive: Boolean
|
|
438
|
+
type StartPageItem {
|
|
439
|
+
id: Int!
|
|
440
|
+
row: Int
|
|
441
|
+
column: Int
|
|
442
|
+
item: StartPageItemObject!
|
|
555
443
|
}
|
|
556
444
|
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
445
|
+
union StartPageItemObject = Product | CustomItem
|
|
446
|
+
|
|
447
|
+
type Product implements Document {
|
|
448
|
+
id: Int!
|
|
449
|
+
articleNumber: String!
|
|
450
|
+
name: String!
|
|
451
|
+
subName: String!
|
|
452
|
+
shortDescription: String!
|
|
453
|
+
description: String!
|
|
562
454
|
|
|
563
455
|
"""
|
|
564
|
-
|
|
456
|
+
Product header if it differs from the actual product name, usually displayed instead of the product name in the header tag at the product page.
|
|
565
457
|
"""
|
|
566
|
-
|
|
458
|
+
mainHeader: String!
|
|
459
|
+
publishedDate: DateTime
|
|
567
460
|
|
|
568
461
|
"""
|
|
569
462
|
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
570
463
|
"""
|
|
571
|
-
|
|
572
|
-
}
|
|
464
|
+
canonicalCategory: Category
|
|
573
465
|
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
466
|
+
"""
|
|
467
|
+
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
468
|
+
"""
|
|
469
|
+
categories(
|
|
470
|
+
"""Deprecated, this argument does not affect the result"""
|
|
471
|
+
includeHidden: Boolean = false
|
|
472
|
+
): [Category]
|
|
578
473
|
|
|
579
474
|
"""
|
|
580
475
|
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
581
476
|
"""
|
|
582
|
-
|
|
583
|
-
|
|
477
|
+
campaigns: [Category]
|
|
478
|
+
hasVariants: Boolean!
|
|
479
|
+
hasVariantsWithDifferingPrices: Boolean!
|
|
480
|
+
variants: ProductVariants
|
|
481
|
+
images(
|
|
482
|
+
"""
|
|
483
|
+
Set this to false if you prefer to manually collate these images with the images found on the Variant.
|
|
484
|
+
"""
|
|
485
|
+
includeVariantImages: Boolean = true
|
|
584
486
|
|
|
585
|
-
|
|
586
|
-
|
|
487
|
+
"""
|
|
488
|
+
Limit the number of images you get back. Defaults to null, which will return all images.
|
|
489
|
+
"""
|
|
490
|
+
limit: Int
|
|
491
|
+
): [ProductImage]
|
|
587
492
|
|
|
588
493
|
"""
|
|
589
494
|
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
590
495
|
"""
|
|
591
|
-
|
|
592
|
-
}
|
|
496
|
+
relatedProducts: [Product]
|
|
593
497
|
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
498
|
+
"""
|
|
499
|
+
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
500
|
+
"""
|
|
501
|
+
badges: [ProductBadge]
|
|
598
502
|
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
503
|
+
"""
|
|
504
|
+
The current price.
|
|
505
|
+
- Will be a Customer specific price if that Customer has a separate price list.
|
|
506
|
+
- Will be the member price if Customer is logged in and `Product.hasMemberPrice` is true.
|
|
507
|
+
- Will be the non-member price if Customer is not logged in and `Product.hasMemberPrice` is true.
|
|
508
|
+
"""
|
|
509
|
+
price: Price
|
|
510
|
+
hidePrice: Boolean
|
|
603
511
|
|
|
604
|
-
"""
|
|
605
|
-
|
|
606
|
-
"""
|
|
607
|
-
|
|
608
|
-
mobilePhone: String
|
|
609
|
-
phone: String
|
|
610
|
-
region: String
|
|
611
|
-
countryCode: String
|
|
612
|
-
city: String
|
|
613
|
-
postalCode: String
|
|
614
|
-
streetName: String
|
|
615
|
-
co: String
|
|
616
|
-
department: String
|
|
617
|
-
municipality: String
|
|
618
|
-
companyAtt: String
|
|
619
|
-
company: String
|
|
620
|
-
lastName: String
|
|
621
|
-
firstName: String
|
|
622
|
-
addressName: String
|
|
623
|
-
}
|
|
512
|
+
"""
|
|
513
|
+
The previous price (i.e. this will be higher than `price` if the product is discounted). Will be a Customer specific previous price, if that Customer has a separate price list.
|
|
514
|
+
"""
|
|
515
|
+
previousPrice: Price
|
|
624
516
|
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
517
|
+
"""
|
|
518
|
+
Default price for the product in the channel, disregards Customer specific prices.
|
|
519
|
+
"""
|
|
520
|
+
defaultPrice: Price
|
|
629
521
|
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
phone: String
|
|
635
|
-
region: String
|
|
636
|
-
countryCode: String
|
|
637
|
-
city: String
|
|
638
|
-
postalCode: String
|
|
639
|
-
streetName: String
|
|
640
|
-
co: String
|
|
641
|
-
department: String
|
|
642
|
-
municipality: String
|
|
643
|
-
companyAtt: String
|
|
644
|
-
company: String
|
|
645
|
-
lastName: String
|
|
646
|
-
firstName: String
|
|
647
|
-
addressName: String
|
|
648
|
-
}
|
|
522
|
+
"""
|
|
523
|
+
Default previous price for the product in the channel, disregards Customer specific prices.
|
|
524
|
+
"""
|
|
525
|
+
defaultPreviousPrice: Price
|
|
649
526
|
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
value: String!
|
|
653
|
-
}
|
|
527
|
+
"""Not in use. Always null."""
|
|
528
|
+
recommendedPrice: Price
|
|
654
529
|
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
deliveryAddresses: [CustomerUpdateDeliveryAddressInput]
|
|
660
|
-
preferences: CustomerUpdatePreferenceInput
|
|
661
|
-
consents: [CustomerUpdateConsentInput]
|
|
662
|
-
externalAttributes: [CustomerUpdateExternalAttribute]
|
|
663
|
-
dynamicContent: String
|
|
664
|
-
}
|
|
530
|
+
"""
|
|
531
|
+
The time interval of the discounted price. If the product has variants, the time interval will be that of the variant which price is shown on the product.
|
|
532
|
+
"""
|
|
533
|
+
priceDateSpan: ProductPriceDateSpan
|
|
665
534
|
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
storeLocationId: Int
|
|
669
|
-
}
|
|
535
|
+
"""Indicates if this product and its variants has member prices."""
|
|
536
|
+
hasMemberPrice: Boolean
|
|
670
537
|
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
538
|
+
"""
|
|
539
|
+
The price a Customer would get if member prices are active and the Customer is logged in.
|
|
540
|
+
- Will be null if `Product.hasMemberPrice` is false.
|
|
541
|
+
- Will be set if `Product.hasMemberPrice` is true.
|
|
542
|
+
"""
|
|
543
|
+
memberPrice: Price
|
|
677
544
|
|
|
678
|
-
"""
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
}
|
|
545
|
+
"""
|
|
546
|
+
Specifies input field(s) for the Customer to populate on the Product that will then carry through to the Order.
|
|
547
|
+
If 'required' is true the Product should not be purchasable until the field is populated.
|
|
548
|
+
"""
|
|
549
|
+
customerComments: [ProductComment]
|
|
684
550
|
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
551
|
+
"""
|
|
552
|
+
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
553
|
+
"""
|
|
554
|
+
stockStatus: StockStatus
|
|
555
|
+
customFields: [CustomField]
|
|
690
556
|
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
}
|
|
557
|
+
"""
|
|
558
|
+
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
559
|
+
"""
|
|
560
|
+
warehouseStock(includeInactive: Boolean = false): [Warehouse]
|
|
561
|
+
head: HtmlHead
|
|
697
562
|
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
}
|
|
563
|
+
"""
|
|
564
|
+
The primary route of this Product. NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
565
|
+
"""
|
|
566
|
+
primaryRoute: Route
|
|
567
|
+
breadcrumbText: String
|
|
568
|
+
recommendedProducts: RecommendedProducts
|
|
705
569
|
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
}
|
|
570
|
+
"""
|
|
571
|
+
The product is recommended to only be purchasable in multiples of the distributionPackageSize. (Different shops may have different levels of leniency on this rule).
|
|
572
|
+
"""
|
|
573
|
+
distributionPackageSize: Int!
|
|
574
|
+
barcode: String
|
|
712
575
|
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
576
|
+
"""
|
|
577
|
+
Configurations on a product are used to assemble a complete product,
|
|
578
|
+
|
|
579
|
+
For example, if the product is a ring then the ring may have two configurations; measures of circumference and choice of engraving
|
|
580
|
+
|
|
581
|
+
In this field, all the configurations of the product will be presented, the configuration name and its various options.
|
|
582
|
+
"""
|
|
583
|
+
configurations: [ProductConfiguration]
|
|
584
|
+
hasConfigurations: Boolean!
|
|
585
|
+
hasFamilyMembers: Boolean!
|
|
719
586
|
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
value: String!
|
|
725
|
-
}
|
|
587
|
+
"""
|
|
588
|
+
Calculates the price of the product based on the configuration choices that's been made. NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
589
|
+
"""
|
|
590
|
+
configurationPrice(options: [ProductConfigurationPriceInput!]): ProductConfigurationPrice
|
|
726
591
|
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
}
|
|
592
|
+
"""Quantity suffix e.g pcs, box, etc."""
|
|
593
|
+
quantitySuffix: String
|
|
594
|
+
isPreOrder: Boolean
|
|
595
|
+
preOrder: ProductPreOrder
|
|
596
|
+
isPackage: Boolean
|
|
733
597
|
|
|
734
|
-
"""
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
598
|
+
"""
|
|
599
|
+
## Description
|
|
600
|
+
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
601
|
+
## Error Codes
|
|
602
|
+
### InvalidAmountOfArticleNumbers
|
|
603
|
+
Number of input products doesn't match package products
|
|
604
|
+
### InvalidArticleNumber
|
|
605
|
+
Product or variant article number doesn't match any products
|
|
606
|
+
### UnableToGetPackagePrice
|
|
607
|
+
Failed to calculate package price
|
|
608
|
+
|
|
609
|
+
"""
|
|
610
|
+
package(articleNumbers: [PackagePriceInput]): Package
|
|
740
611
|
|
|
741
|
-
|
|
612
|
+
"""
|
|
613
|
+
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
614
|
+
"""
|
|
615
|
+
upsell: Upsell
|
|
616
|
+
inPackages: [Product!]
|
|
617
|
+
hasUpsell: Boolean
|
|
742
618
|
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
619
|
+
"""
|
|
620
|
+
All other products in the same family as the product. NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
621
|
+
"""
|
|
622
|
+
familyMembers: [Product!]
|
|
746
623
|
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
description: String
|
|
753
|
-
campaign: Category
|
|
624
|
+
"""Get Product History within the set number of days"""
|
|
625
|
+
history(
|
|
626
|
+
"""number of days, default is 30"""
|
|
627
|
+
days: Int = 30
|
|
628
|
+
): ProductHistory
|
|
754
629
|
}
|
|
755
630
|
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
FIXED_AMOUNT
|
|
631
|
+
type Category implements Document {
|
|
632
|
+
id: Int!
|
|
633
|
+
parentId: Int @deprecated(reason: "Use parent.id instead")
|
|
634
|
+
name: String!
|
|
635
|
+
level: Int!
|
|
762
636
|
|
|
763
|
-
"""
|
|
764
|
-
|
|
637
|
+
"""The time interval of the campaign/category"""
|
|
638
|
+
activeDateSpan: CategoryActiveDateSpan
|
|
765
639
|
|
|
766
640
|
"""
|
|
767
|
-
|
|
641
|
+
Whether or not this category and all its children are considered hidden
|
|
768
642
|
"""
|
|
769
|
-
|
|
643
|
+
isHidden: Boolean! @deprecated(reason: "This field should no longer be used and will always be false.")
|
|
644
|
+
|
|
645
|
+
"""When empty will display the value of the name field"""
|
|
646
|
+
mainHeader: String
|
|
647
|
+
content: String
|
|
648
|
+
externalId: String
|
|
649
|
+
externalDiscountId: String
|
|
650
|
+
images: [CategoryImage]
|
|
770
651
|
|
|
771
652
|
"""
|
|
772
|
-
|
|
653
|
+
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
773
654
|
"""
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
"""Only a collection of products"""
|
|
777
|
-
ONLY_USE_LANDING_PAGE
|
|
778
|
-
|
|
779
|
-
"""Discount drops price of the least expensive product in cart"""
|
|
780
|
-
PERCENT_ON_LEAST_EXPENSIVE_ITEM
|
|
781
|
-
|
|
782
|
-
"""Discount drops price of the most expensive product in cart"""
|
|
783
|
-
PERCENT_ON_MOST_EXPENSIVE_ITEM
|
|
655
|
+
products(first: Paging = 12, offset: Int = 0, orderBy: ProductOrderOptions, orderByDirection: SortDirection, filters: FilterInput): PagedResult
|
|
784
656
|
|
|
785
|
-
"""
|
|
786
|
-
|
|
657
|
+
"""
|
|
658
|
+
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
659
|
+
"""
|
|
660
|
+
head: HtmlHead
|
|
787
661
|
|
|
788
|
-
"""
|
|
789
|
-
|
|
662
|
+
"""
|
|
663
|
+
The primary route of this Category. NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
664
|
+
"""
|
|
665
|
+
primaryRoute: Route
|
|
666
|
+
breadcrumbText: String
|
|
667
|
+
hasSubcategories: Boolean
|
|
668
|
+
subcategories: [Category]
|
|
669
|
+
parentCategory: Category @deprecated(reason: "Use parent instead")
|
|
670
|
+
parent: Category
|
|
790
671
|
|
|
791
672
|
"""
|
|
792
|
-
|
|
673
|
+
A dynamic category has no fixed products; products are dynamically included based on filters defined on the category in Admin. N.B. Products found on a dynamic category has no route that includes said category, instead product.primaryRoute will have to be used.
|
|
793
674
|
"""
|
|
794
|
-
|
|
675
|
+
isDynamic: Boolean!
|
|
795
676
|
|
|
796
|
-
"""
|
|
797
|
-
|
|
677
|
+
"""
|
|
678
|
+
The category's dynamic filtersNB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
679
|
+
"""
|
|
680
|
+
dynamicFiltering: [CategoryDynamicFilter]
|
|
798
681
|
|
|
799
682
|
"""
|
|
800
|
-
|
|
683
|
+
Get content data set via the Content Editor. NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
801
684
|
"""
|
|
802
|
-
|
|
803
|
-
}
|
|
685
|
+
data: Content
|
|
804
686
|
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
687
|
+
"""
|
|
688
|
+
When set to false, the category will be excluded from sitemap. The frontend implementation should use this value to set meta tags to exclude the category from being indexed by crawlers. Defaults to true.
|
|
689
|
+
"""
|
|
690
|
+
allowWebIndexing: Boolean
|
|
809
691
|
}
|
|
810
692
|
|
|
811
|
-
type
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
firstName: MaskedProperty
|
|
815
|
-
lastName: MaskedProperty
|
|
816
|
-
co: MaskedProperty
|
|
817
|
-
address: MaskedProperty
|
|
818
|
-
city: MaskedProperty
|
|
819
|
-
postalCode: MaskedProperty
|
|
820
|
-
country: MaskedProperty
|
|
821
|
-
countryCode: String
|
|
822
|
-
phoneNumber: MaskedProperty
|
|
823
|
-
mobilePhoneNumber: MaskedProperty
|
|
824
|
-
pid: MaskedProperty
|
|
693
|
+
type CategoryActiveDateSpan {
|
|
694
|
+
startDate: DateTime
|
|
695
|
+
endDate: DateTime
|
|
825
696
|
}
|
|
826
697
|
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
ADDITIONAL_USER_DATA_REQUIRED: Additional data needed to register the customer,
|
|
833
|
-
the existing customer info will be available with masking on customer.
|
|
834
|
-
NON_EXISTING_CUSTOMER: Customer does not exist in any system and will have to do a sign up.
|
|
835
|
-
COUNTRY_NOT_VALID: The customer account may not be activated on this channel as
|
|
836
|
-
it's missing the customer country. Email (masked), FirstName (masked),
|
|
837
|
-
externalId and countryCode will be the only fields set on `customer`.
|
|
698
|
+
type CategoryImage {
|
|
699
|
+
width: Int
|
|
700
|
+
height: Int
|
|
701
|
+
url: Uri
|
|
702
|
+
}
|
|
838
703
|
|
|
704
|
+
type PagedResult {
|
|
705
|
+
totalResults: Int
|
|
839
706
|
|
|
840
|
-
"""
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
707
|
+
"""
|
|
708
|
+
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
709
|
+
"""
|
|
710
|
+
sortOrders: [ProductSortOrder]
|
|
711
|
+
|
|
712
|
+
"""
|
|
713
|
+
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
714
|
+
"""
|
|
715
|
+
filters(
|
|
716
|
+
"""
|
|
717
|
+
Optional: ID's of filters to fetch. If not set all filters will be returned.
|
|
718
|
+
"""
|
|
719
|
+
ids: [String]
|
|
720
|
+
): [Filter]
|
|
721
|
+
result: [Product]!
|
|
844
722
|
}
|
|
845
723
|
|
|
846
|
-
type
|
|
847
|
-
|
|
848
|
-
value:
|
|
724
|
+
type ProductSortOrder {
|
|
725
|
+
text: String!
|
|
726
|
+
value: ProductOrderOptions!
|
|
727
|
+
isDefault: Boolean!
|
|
728
|
+
defaultDirection: SortDirection!
|
|
849
729
|
}
|
|
850
730
|
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
731
|
+
enum ProductOrderOptions {
|
|
732
|
+
ARTICLE_NUMBER
|
|
733
|
+
NAME
|
|
734
|
+
PUBLISH_DATE
|
|
735
|
+
PRICE
|
|
736
|
+
SUB_HEADING
|
|
737
|
+
CUSTOM
|
|
738
|
+
BESTSELLER
|
|
854
739
|
}
|
|
855
740
|
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
741
|
+
enum SortDirection {
|
|
742
|
+
ASCENDING
|
|
743
|
+
DESCENDING
|
|
859
744
|
}
|
|
860
745
|
|
|
746
|
+
"""The `Paging` scalar type represents a numeric values between <1; 100>"""
|
|
747
|
+
scalar Paging
|
|
748
|
+
|
|
861
749
|
input FilterInput {
|
|
862
750
|
listFilters: [ListFilterInput]
|
|
863
751
|
rangeFilters: [RangeFilterInput]
|
|
@@ -865,24 +753,27 @@ input FilterInput {
|
|
|
865
753
|
multiListFilters: [MultiListFilterInput]
|
|
866
754
|
}
|
|
867
755
|
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
756
|
+
input ListFilterInput {
|
|
757
|
+
id: String!
|
|
758
|
+
values: [String]
|
|
871
759
|
}
|
|
872
760
|
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
761
|
+
input RangeFilterInput {
|
|
762
|
+
id: String!
|
|
763
|
+
min: Decimal
|
|
764
|
+
max: Decimal
|
|
876
765
|
}
|
|
877
766
|
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
767
|
+
input BooleanFilterInput {
|
|
768
|
+
id: String!
|
|
769
|
+
|
|
770
|
+
"""null is equivalent to excluding the filter."""
|
|
771
|
+
value: Boolean
|
|
881
772
|
}
|
|
882
773
|
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
774
|
+
input MultiListFilterInput {
|
|
775
|
+
id: String!
|
|
776
|
+
values: [String]
|
|
886
777
|
}
|
|
887
778
|
|
|
888
779
|
type HtmlHead {
|
|
@@ -895,483 +786,331 @@ type HtmlMetaTag {
|
|
|
895
786
|
content: String
|
|
896
787
|
}
|
|
897
788
|
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
789
|
+
"""
|
|
790
|
+
Represents a route to either a Category, a Product, a Page or the StartPage.
|
|
791
|
+
"""
|
|
792
|
+
type Route {
|
|
793
|
+
id: String!
|
|
794
|
+
path: String!
|
|
795
|
+
canonicalPath: String
|
|
796
|
+
slug: String!
|
|
904
797
|
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
}
|
|
798
|
+
"""
|
|
799
|
+
The Category, Product, Page or StartPage that the Route resolves to. NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
800
|
+
"""
|
|
801
|
+
object: Document
|
|
910
802
|
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
803
|
+
"""
|
|
804
|
+
Parents are resolved by traversing the path, starting from the end, and are guaranteed to be returned in that order. NB: Carries a performance cost, as asking for this will result in a different, slightly more expensive (the more categories a shop has, the more expensive this gets), route query in the backend.
|
|
805
|
+
"""
|
|
806
|
+
parents: [Route]
|
|
915
807
|
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
isDefault: Boolean
|
|
921
|
-
}
|
|
808
|
+
"""
|
|
809
|
+
Alternative routes for this object, if it exists in another channel and/or in another language.NB: Carries no additional performance cost.
|
|
810
|
+
"""
|
|
811
|
+
alternateRoutes: [AlternateRoute]
|
|
922
812
|
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
link: Uri
|
|
926
|
-
}
|
|
813
|
+
"""N.B. for troubleshooting routes only!"""
|
|
814
|
+
debug: String
|
|
927
815
|
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
id: String!
|
|
931
|
-
name: String!
|
|
816
|
+
"""Breadcrumb texts; starting with the root parent, ending on this route."""
|
|
817
|
+
breadcrumbs: [String]
|
|
932
818
|
}
|
|
933
819
|
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
820
|
+
interface Document {
|
|
821
|
+
head: HtmlHead
|
|
822
|
+
primaryRoute: Route
|
|
823
|
+
breadcrumbText: String
|
|
937
824
|
}
|
|
938
825
|
|
|
939
|
-
type
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
826
|
+
type AlternateRoute {
|
|
827
|
+
channelId: Int
|
|
828
|
+
culture: String
|
|
829
|
+
route: String
|
|
830
|
+
alias: String
|
|
944
831
|
}
|
|
945
832
|
|
|
946
|
-
type
|
|
947
|
-
|
|
833
|
+
type CategoryDynamicFilter {
|
|
834
|
+
type: String
|
|
835
|
+
value: CategoryDynamicFilterValue
|
|
948
836
|
}
|
|
949
837
|
|
|
950
|
-
|
|
951
|
-
externalCustomerToken: String!
|
|
952
|
-
}
|
|
838
|
+
union CategoryDynamicFilterValue = StringValue | ListStringValue | BoolValue
|
|
953
839
|
|
|
954
|
-
type
|
|
955
|
-
|
|
840
|
+
type StringValue {
|
|
841
|
+
value: String
|
|
956
842
|
}
|
|
957
843
|
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
"""
|
|
961
|
-
type LoginResponse {
|
|
962
|
-
token: Token!
|
|
844
|
+
type ListStringValue {
|
|
845
|
+
value: [String]
|
|
963
846
|
}
|
|
964
847
|
|
|
965
|
-
type
|
|
966
|
-
|
|
967
|
-
encrypted: String
|
|
848
|
+
type BoolValue {
|
|
849
|
+
value: Boolean
|
|
968
850
|
}
|
|
969
851
|
|
|
970
|
-
type
|
|
971
|
-
|
|
972
|
-
id:
|
|
973
|
-
|
|
852
|
+
type Content {
|
|
853
|
+
name: String
|
|
854
|
+
id: ID!
|
|
855
|
+
items: [ContentItem]
|
|
856
|
+
tags: [String]
|
|
974
857
|
}
|
|
975
858
|
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
859
|
+
type ContentItem {
|
|
860
|
+
name: String
|
|
861
|
+
type: String!
|
|
862
|
+
properties(
|
|
863
|
+
"""
|
|
864
|
+
If true image content property will return `ImageValue` instead of a string
|
|
865
|
+
"""
|
|
866
|
+
getImageAsImageValue: Boolean = false
|
|
867
|
+
): [ContentItemProperty]
|
|
868
|
+
children: [ContentItem]
|
|
979
869
|
}
|
|
980
870
|
|
|
981
|
-
type
|
|
982
|
-
id: String!
|
|
871
|
+
type ContentItemProperty {
|
|
983
872
|
name: String!
|
|
984
|
-
|
|
873
|
+
type: String!
|
|
874
|
+
valueType: ContentPropertyValueType
|
|
875
|
+
value: ContentItemPropertyValue
|
|
985
876
|
}
|
|
986
877
|
|
|
987
|
-
|
|
988
|
-
|
|
989
|
-
|
|
878
|
+
enum ContentPropertyValueType {
|
|
879
|
+
OBJECT
|
|
880
|
+
SCALAR
|
|
990
881
|
}
|
|
991
882
|
|
|
992
|
-
|
|
993
|
-
subscribeToStockNotifications(email: String!, articleNumber: String!): Boolean
|
|
994
|
-
|
|
995
|
-
"""
|
|
996
|
-
This mutation's purpose is to subscribe a customer to a newsletter. In order
|
|
997
|
-
to subscribe a customer a valid email address is required
|
|
998
|
-
|
|
999
|
-
Responds with a boolean value whether the subscription has been successful or not
|
|
1000
|
-
"""
|
|
1001
|
-
subscribeToNewsletter(email: String!): Boolean
|
|
1002
|
-
|
|
1003
|
-
"""
|
|
1004
|
-
## Description
|
|
1005
|
-
Adds items to product list, null id adds items to the default product list.
|
|
1006
|
-
## Error Codes
|
|
1007
|
-
### Unauthorized
|
|
1008
|
-
Unauthorized
|
|
1009
|
-
### AddToProductListFailed
|
|
1010
|
-
Error in underlying API call, more info may be contained in the error message.
|
|
1011
|
-
### InvalidArticleNumber
|
|
1012
|
-
Article number cannot be empty
|
|
1013
|
-
### ProductNotFound
|
|
1014
|
-
No match on article number
|
|
1015
|
-
### MoreThanOneMatchOnArticleNumber
|
|
1016
|
-
Article number matched more than one article
|
|
1017
|
-
|
|
1018
|
-
"""
|
|
1019
|
-
addToCustomerProductList(id: ID, items: [AddToCustomerProductListInput!]!): CustomerProductListResult
|
|
1020
|
-
|
|
1021
|
-
"""
|
|
1022
|
-
## Description
|
|
1023
|
-
Creates a product list for a logged in customer
|
|
1024
|
-
## Error Codes
|
|
1025
|
-
### Unauthorized
|
|
1026
|
-
|
|
1027
|
-
### UnableToCreateProductList
|
|
1028
|
-
Error in underlying API call, more info may be contained in the error message.
|
|
1029
|
-
|
|
1030
|
-
"""
|
|
1031
|
-
createCustomerProductList(input: CreateCustomerProductListInput!): CustomerProductListResult
|
|
1032
|
-
|
|
1033
|
-
"""
|
|
1034
|
-
## Description
|
|
1035
|
-
Deletes a product list for a logged in customer
|
|
1036
|
-
## Error Codes
|
|
1037
|
-
### Unauthorized
|
|
1038
|
-
|
|
1039
|
-
### ProductListNotFound
|
|
1040
|
-
Argument `id` did not match any list for this customer.
|
|
1041
|
-
### UnableToDeleteProductList
|
|
1042
|
-
Error in underlying API call, more info may be contained in the error message.
|
|
1043
|
-
|
|
1044
|
-
"""
|
|
1045
|
-
deleteCustomerProductList(id: ID!): DeleteCustomerProductListResult
|
|
1046
|
-
|
|
1047
|
-
"""
|
|
1048
|
-
## Description
|
|
1049
|
-
Removes an item from a product list for a logged in customer, null id removes item in the default product list.
|
|
1050
|
-
## Error Codes
|
|
1051
|
-
### Unauthorized
|
|
1052
|
-
|
|
1053
|
-
### ProductListNotFound
|
|
1054
|
-
Argument `id` did not match any list for this customer.
|
|
1055
|
-
### RemoveFromProductListFailed
|
|
1056
|
-
Error in underlying API call, more info may be contained in the error message.
|
|
1057
|
-
### ProductNotFound
|
|
1058
|
-
Argument `articleNumbers` did not match any products or variants.
|
|
1059
|
-
### MoreThanOneMatchOnArticleNumber
|
|
1060
|
-
Argument `articleNumbers` matched more than one product/variant.
|
|
1061
|
-
### InvalidArticleNumber
|
|
1062
|
-
Argument `articleNumbers` cannot be null or empty.
|
|
1063
|
-
|
|
1064
|
-
"""
|
|
1065
|
-
removeFromCustomerProductList(id: ID, articleNumbers: [String!]): CustomerProductListResult
|
|
1066
|
-
|
|
1067
|
-
"""
|
|
1068
|
-
## Description
|
|
1069
|
-
Updates an item in product list, null id updates item in the default product list.
|
|
1070
|
-
## Error Codes
|
|
1071
|
-
### Unauthorized
|
|
1072
|
-
|
|
1073
|
-
### ProductListNotFound
|
|
1074
|
-
Argument `id` did not match any list for this customer.
|
|
1075
|
-
### UnableToUpdateProductListItem
|
|
1076
|
-
Error in underlying API call, more info may be contained in the error message.
|
|
1077
|
-
### ProductNotFound
|
|
1078
|
-
Argument `articleNumber` did not match any products or variants.
|
|
1079
|
-
### MoreThanOneMatchOnArticleNumber
|
|
1080
|
-
Argument `articleNumber` matched more than one product/variant.
|
|
1081
|
-
### InvalidArticleNumber
|
|
1082
|
-
Argument `articleNumber` cannot be null or empty.
|
|
1083
|
-
|
|
1084
|
-
"""
|
|
1085
|
-
updateCustomerProductListItem(input: UpdateCustomerProductListItemInput!): CustomerProductListResult
|
|
1086
|
-
|
|
1087
|
-
"""
|
|
1088
|
-
## Description
|
|
1089
|
-
Updates a product list for a logged in customer
|
|
1090
|
-
## Error Codes
|
|
1091
|
-
### Unauthorized
|
|
1092
|
-
|
|
1093
|
-
### ProductListNotFound
|
|
1094
|
-
Argument `id` did not match any list for this customer.
|
|
1095
|
-
### UnableToUpdateProductList
|
|
1096
|
-
Error in underlying API call, more info may be contained in the error message.
|
|
1097
|
-
|
|
1098
|
-
"""
|
|
1099
|
-
updateCustomerProductList(input: UpdateCustomerProductListInput!): CustomerProductListResult
|
|
1100
|
-
|
|
1101
|
-
"""
|
|
1102
|
-
Error codes: CustomerNotFound, CustomerAlreadyActivated,
|
|
1103
|
-
UnableToActivateCustomer, UnableToLoginCustomer, InvalidCustomerActivateInput
|
|
1104
|
-
"""
|
|
1105
|
-
activateExternalCustomerById(input: ActivateExternalCustomerByIdInput): ActivateExternalCustomerByIdResult
|
|
1106
|
-
|
|
1107
|
-
"""
|
|
1108
|
-
Error codes: CustomerNotFound, CustomerAlreadyActivated,
|
|
1109
|
-
UnableToActivateCustomer, UnableToLoginCustomer, InvalidCustomerActivateInput
|
|
1110
|
-
"""
|
|
1111
|
-
activateExternalCustomerByToken(input: ActivateExternalCustomerByTokenInput): ActivateExternalCustomerByTokenResult
|
|
883
|
+
union ContentItemPropertyValue = StringValue | ImageValue | BoolValue | Product | Category
|
|
1112
884
|
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
loginExternalCustomer(input: LoginExternalCustomerInput): LoginExternalCustomerResult
|
|
885
|
+
type ImageValue {
|
|
886
|
+
value: String
|
|
887
|
+
focalPointX: Int
|
|
888
|
+
focalPointY: Int
|
|
889
|
+
}
|
|
1119
890
|
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
Returns an authorization token if the login was successful.
|
|
1124
|
-
"""
|
|
1125
|
-
login(password: String, email: String, pid: String, externalId: String, memberNumber: String, externalHashId: String, timeStamp: String, customerId: Int): LoginResponse
|
|
891
|
+
type ProductVariants {
|
|
892
|
+
"""Available product variant options."""
|
|
893
|
+
options: [ProductVariantOption]!
|
|
1126
894
|
|
|
1127
|
-
"""
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
requestPasswordReset(email: String!): RequestPasswordResetResult
|
|
895
|
+
"""Product variants, contains all possible values of options."""
|
|
896
|
+
values: [ProductVariant]!
|
|
897
|
+
}
|
|
1131
898
|
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
"""A reset password token that is solely used during a password reset"""
|
|
1137
|
-
resetPasswordToken: String!
|
|
1138
|
-
newPassword: String!
|
|
1139
|
-
): ResetPassword
|
|
899
|
+
type ProductVariantOption {
|
|
900
|
+
name: String
|
|
901
|
+
values: [String]!
|
|
902
|
+
}
|
|
1140
903
|
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
If the sign up is successful the customer may be considered to be logged on and an authentication token will be returned
|
|
1145
|
-
"""
|
|
1146
|
-
signUp(input: SignUpInput!): SignUpResponse
|
|
904
|
+
type ProductVariant {
|
|
905
|
+
id: String!
|
|
906
|
+
articleNumber: String!
|
|
1147
907
|
|
|
1148
|
-
"""
|
|
1149
|
-
|
|
1150
|
-
This mutation's purpose is to update a existing customer's group using an
|
|
1151
|
-
access code. An authorization token is needed in the request, in order to be
|
|
1152
|
-
able to update the customer.
|
|
1153
|
-
## Error Codes
|
|
1154
|
-
### Unauthorized
|
|
1155
|
-
Unauthorized
|
|
1156
|
-
### UnableToUpdateCustomer
|
|
1157
|
-
Error in underlying API call, more info may be contained in the error message.
|
|
1158
|
-
### CustomerAlreadyUpdated
|
|
1159
|
-
Customer already in the customer group
|
|
1160
|
-
### CustomerNotFound
|
|
1161
|
-
No match on customer with access code
|
|
1162
|
-
|
|
1163
|
-
"""
|
|
1164
|
-
updateCustomerGroup(customerGroupAccessCode: String!): UpdateCustomerGroupResult
|
|
908
|
+
"""Variant values (combination of option values)"""
|
|
909
|
+
values: [String]!
|
|
1165
910
|
|
|
1166
911
|
"""
|
|
1167
|
-
|
|
1168
|
-
|
|
912
|
+
The current price.
|
|
913
|
+
- Will be a Customer specific price if that Customer has a separate price list.
|
|
914
|
+
- Will be the member price if Customer is logged in and `Product.hasMemberPrice` is true.
|
|
915
|
+
- Will be the non-member price if Customer is not logged in and `Product.hasMemberPrice` is true.
|
|
1169
916
|
"""
|
|
1170
|
-
|
|
917
|
+
price: Price
|
|
1171
918
|
|
|
1172
919
|
"""
|
|
1173
|
-
|
|
1174
|
-
access code. An authorization token is needed in the request, in order to be
|
|
1175
|
-
able to update the customer.
|
|
920
|
+
The previous price (i.e. this will be higher than `price` if the product is discounted). Will be a Customer specific previous price, if that Customer has a separate price list.
|
|
1176
921
|
"""
|
|
1177
|
-
|
|
922
|
+
previousPrice: Price
|
|
1178
923
|
|
|
1179
924
|
"""
|
|
1180
|
-
|
|
925
|
+
Default price for the product in the channel, disregards Customer specific prices.
|
|
1181
926
|
"""
|
|
1182
|
-
|
|
927
|
+
defaultPrice: Price
|
|
1183
928
|
|
|
1184
929
|
"""
|
|
1185
|
-
|
|
1186
|
-
determine their quantities. Replies with the affected cart if a cartId has
|
|
1187
|
-
been presented, otherwise a new cart will be created.
|
|
930
|
+
Default previous price for the product in the channel, disregards Customer specific prices.
|
|
1188
931
|
"""
|
|
1189
|
-
|
|
1190
|
-
"""Not specifying cart id will create new cart."""
|
|
1191
|
-
cartId: String
|
|
1192
|
-
items: [AddMultipleToCartInput]!
|
|
1193
|
-
): CartMutation
|
|
932
|
+
defaultPreviousPrice: Price
|
|
1194
933
|
|
|
1195
|
-
"""
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
addToCart(input: AddToCartInput!): CartMutation
|
|
934
|
+
"""Not in use. Always null."""
|
|
935
|
+
recommendedPrice: Price
|
|
936
|
+
|
|
937
|
+
"""The time interval of the discounted price."""
|
|
938
|
+
priceDateSpan: ProductPriceDateSpan
|
|
1201
939
|
|
|
1202
940
|
"""
|
|
1203
|
-
|
|
1204
|
-
|
|
941
|
+
The price a Customer would get if member prices are active and the Customer is logged in.
|
|
942
|
+
- Will be null if `Product.hasMemberPrice` is false.
|
|
943
|
+
- Will be set if `Product.hasMemberPrice` is true.
|
|
1205
944
|
"""
|
|
1206
|
-
|
|
945
|
+
memberPrice: Price
|
|
1207
946
|
|
|
1208
947
|
"""
|
|
1209
|
-
|
|
948
|
+
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
1210
949
|
"""
|
|
1211
|
-
|
|
950
|
+
stockStatus: StockStatus
|
|
1212
951
|
|
|
1213
952
|
"""
|
|
1214
|
-
|
|
1215
|
-
replies with the affected cart ruled by the cartId in the input
|
|
953
|
+
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
1216
954
|
"""
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
removeFromCart(input: RemoveFromCartInput!): CartMutation
|
|
1221
|
-
|
|
1222
|
-
"""Removes specific items from the cart, replies with the affected cart"""
|
|
1223
|
-
removeMultipleFromCart(input: RemoveMultipleFromCartInput!): CartMutation
|
|
955
|
+
warehouseStock(includeInactive: Boolean = false): [Warehouse]
|
|
956
|
+
images: [ProductImage]
|
|
957
|
+
barcode: String
|
|
1224
958
|
|
|
1225
|
-
"""
|
|
1226
|
-
|
|
959
|
+
"""Get Product History within the set number of days"""
|
|
960
|
+
history(
|
|
961
|
+
"""number of days, default is 30"""
|
|
962
|
+
days: Int = 30
|
|
963
|
+
): ProductVariantHistory
|
|
1227
964
|
}
|
|
1228
965
|
|
|
1229
|
-
type
|
|
1230
|
-
|
|
1231
|
-
|
|
966
|
+
type ProductPriceDateSpan {
|
|
967
|
+
startDate: DateTime
|
|
968
|
+
endDate: DateTime
|
|
1232
969
|
}
|
|
1233
970
|
|
|
1234
|
-
type
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
971
|
+
type StockStatus {
|
|
972
|
+
"""Globally unique id."""
|
|
973
|
+
id: ID!
|
|
974
|
+
|
|
975
|
+
"""The stock status id, not globally unique."""
|
|
976
|
+
stockStatusId: ID!
|
|
977
|
+
text: String
|
|
978
|
+
buyable: Boolean!
|
|
979
|
+
stockNotificationEnabled: Boolean
|
|
980
|
+
stockDate: DateTime
|
|
981
|
+
maxOrderQuantity: Int
|
|
1239
982
|
}
|
|
1240
983
|
|
|
1241
|
-
type
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
status: OrderStatus
|
|
1245
|
-
items(
|
|
1246
|
-
"""Will fetch all if this is set to 0"""
|
|
1247
|
-
first: Int = 0
|
|
1248
|
-
offset: Int = 0
|
|
1249
|
-
): [OrderItem]
|
|
1250
|
-
billingInfo: OrderInfo
|
|
1251
|
-
deliveryInfo: OrderInfo
|
|
1252
|
-
paymentMethod: OrderPaymentMethod
|
|
1253
|
-
deliveryMethod: OrderDeliveryMethod
|
|
1254
|
-
giftVouchers: [OrderGiftVoucher]
|
|
1255
|
-
total: Price
|
|
1256
|
-
orderDate: DateTime
|
|
1257
|
-
currency: Currency
|
|
1258
|
-
attachments: [OrderAttachment]
|
|
1259
|
-
orderPurchaseLocation: String
|
|
984
|
+
type Warehouse {
|
|
985
|
+
stockLevel: Int
|
|
986
|
+
location: Store
|
|
1260
987
|
}
|
|
1261
988
|
|
|
1262
|
-
type
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
989
|
+
type ProductImage {
|
|
990
|
+
"""
|
|
991
|
+
Alternate text for the image, commonly used for the alt attribute of img-tags.
|
|
992
|
+
"""
|
|
993
|
+
alt: String
|
|
1267
994
|
|
|
1268
995
|
"""
|
|
1269
|
-
|
|
996
|
+
Extra information, commonly used for the title attribute of img-tag. Should be shown on hover.
|
|
1270
997
|
"""
|
|
1271
|
-
|
|
998
|
+
title: String
|
|
999
|
+
sizes: [ProductImageSize]! @deprecated(reason: "Images will no longer be offered in different sizes. Instead use 'url' in conjunction with our image resizing service.")
|
|
1000
|
+
url: Uri
|
|
1001
|
+
modifiedDate: String
|
|
1272
1002
|
}
|
|
1273
1003
|
|
|
1274
|
-
type
|
|
1275
|
-
|
|
1276
|
-
|
|
1004
|
+
type ProductImageSize {
|
|
1005
|
+
width: Int
|
|
1006
|
+
height: Int
|
|
1007
|
+
url: Uri
|
|
1277
1008
|
}
|
|
1278
1009
|
|
|
1279
|
-
type
|
|
1280
|
-
|
|
1281
|
-
fee: Price
|
|
1282
|
-
tracking: OrderDeliveryMethodTracking
|
|
1010
|
+
type ProductVariantHistory {
|
|
1011
|
+
previousPrice: [PriceHistory]
|
|
1283
1012
|
}
|
|
1284
1013
|
|
|
1285
|
-
type
|
|
1286
|
-
|
|
1287
|
-
|
|
1014
|
+
type PriceHistory {
|
|
1015
|
+
timestamp: DateTime
|
|
1016
|
+
price: Price
|
|
1288
1017
|
}
|
|
1289
1018
|
|
|
1290
|
-
type
|
|
1019
|
+
type ProductBadge {
|
|
1291
1020
|
name: String
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1021
|
+
url: Uri
|
|
1022
|
+
location: ProductBadgeLocation
|
|
1023
|
+
style: String
|
|
1024
|
+
text: String
|
|
1295
1025
|
}
|
|
1296
1026
|
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1027
|
+
enum ProductBadgeLocation {
|
|
1028
|
+
CUSTOM
|
|
1029
|
+
TOP_LEFT
|
|
1030
|
+
TOP_RIGHT
|
|
1031
|
+
BOTTOM_LEFT
|
|
1032
|
+
BOTTOM_RIGHT
|
|
1033
|
+
}
|
|
1302
1034
|
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
hasOrderDetails: Boolean
|
|
1307
|
-
total: Price
|
|
1308
|
-
orderDate: DateTime
|
|
1309
|
-
trackingId: String
|
|
1310
|
-
currency: Currency
|
|
1035
|
+
type ProductComment {
|
|
1036
|
+
name: String!
|
|
1037
|
+
required: Boolean!
|
|
1311
1038
|
}
|
|
1312
1039
|
|
|
1313
|
-
type
|
|
1314
|
-
|
|
1315
|
-
|
|
1040
|
+
type RecommendedProducts {
|
|
1041
|
+
"""Customers who bought this product also bought these products."""
|
|
1042
|
+
bought(
|
|
1043
|
+
"""number of recommended products to fetch"""
|
|
1044
|
+
count: Int = 4
|
|
1045
|
+
): [Product]
|
|
1046
|
+
|
|
1047
|
+
"""Customers who viewed this product also viewed these products."""
|
|
1048
|
+
viewed(
|
|
1049
|
+
"""number of recommended products to fetch"""
|
|
1050
|
+
count: Int = 4
|
|
1051
|
+
): [Product]
|
|
1052
|
+
|
|
1053
|
+
"""A shuffled top list of popular products."""
|
|
1054
|
+
shuffledToplist(
|
|
1055
|
+
"""number of recommended products to fetch"""
|
|
1056
|
+
count: Int = 4
|
|
1057
|
+
): [Product]
|
|
1316
1058
|
}
|
|
1317
1059
|
|
|
1318
|
-
type
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
company: String
|
|
1322
|
-
phone: String
|
|
1323
|
-
address: OrderAddress
|
|
1060
|
+
type ProductConfiguration {
|
|
1061
|
+
name: String
|
|
1062
|
+
options: [ProductConfigurationOption]!
|
|
1324
1063
|
}
|
|
1325
1064
|
|
|
1326
|
-
|
|
1327
|
-
|
|
1065
|
+
"""
|
|
1066
|
+
Options by which you can configure a product.
|
|
1328
1067
|
|
|
1329
|
-
|
|
1330
|
-
Name of the Product at the time the order was placed (may since have changed).
|
|
1331
|
-
Use this as a fallback if the 'product' field itself is null.
|
|
1332
|
-
"""
|
|
1333
|
-
name: String
|
|
1334
|
-
quantity: Int
|
|
1335
|
-
unitPrice: Price
|
|
1336
|
-
total: Price
|
|
1337
|
-
discounts: [OrderItemDiscount]
|
|
1068
|
+
For instance, if you're selling rope the available options might be the dimensions; 10mm, 20mm, 30mm, etc.
|
|
1338
1069
|
|
|
1339
|
-
|
|
1340
|
-
|
|
1070
|
+
Price is either used as is, or if the configuration is using a price calculation (e.g. the rope is priced by length) it will be used in the calculation formula; e.g. (Length * Price).
|
|
1071
|
+
"""
|
|
1072
|
+
type ProductConfigurationOption {
|
|
1073
|
+
id: ID!
|
|
1074
|
+
name: String
|
|
1075
|
+
price: Price
|
|
1341
1076
|
|
|
1342
1077
|
"""
|
|
1343
|
-
|
|
1078
|
+
This will be set if the configuration requires price calculation, e.g. you might sell rope and price it by length.
|
|
1344
1079
|
"""
|
|
1345
|
-
|
|
1080
|
+
priceCalculation: ProductConfigurationPriceCalculation
|
|
1081
|
+
}
|
|
1346
1082
|
|
|
1347
|
-
|
|
1348
|
-
|
|
1083
|
+
"""
|
|
1084
|
+
Describes how the price is calculated on a configuration option.
|
|
1349
1085
|
|
|
1350
|
-
|
|
1351
|
-
Value of the Variant at the time the order was placed (may since have
|
|
1352
|
-
changed). Use this as a fallback if the 'variant' field itself is null. Will
|
|
1353
|
-
be null when the OrderItem is not a Variant.
|
|
1354
|
-
"""
|
|
1355
|
-
variantValue: String
|
|
1356
|
-
preOrderDate: DateTime
|
|
1086
|
+
E.g. the configuration is for a carpet and it has a price calculation formula that reads: 'Width * Length * Price / 10000'.
|
|
1357
1087
|
|
|
1358
|
-
|
|
1359
|
-
|
|
1088
|
+
In this case, the variables would contain 'Width' and 'Length' whereas the 'Price' is taken from the selected option.
|
|
1089
|
+
"""
|
|
1090
|
+
type ProductConfigurationPriceCalculation {
|
|
1091
|
+
id: ID!
|
|
1092
|
+
name: String
|
|
1093
|
+
formula: String
|
|
1094
|
+
variables: [ProductConfigurationPriceCalculationVariable]
|
|
1360
1095
|
}
|
|
1361
1096
|
|
|
1362
|
-
type
|
|
1363
|
-
|
|
1097
|
+
type ProductConfigurationPriceCalculationVariable {
|
|
1098
|
+
id: ID!
|
|
1099
|
+
name: String
|
|
1364
1100
|
}
|
|
1365
1101
|
|
|
1366
|
-
type
|
|
1367
|
-
|
|
1368
|
-
|
|
1102
|
+
type ProductConfigurationPrice {
|
|
1103
|
+
price: Price
|
|
1104
|
+
previousPrice: Price
|
|
1369
1105
|
}
|
|
1370
1106
|
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1107
|
+
input ProductConfigurationPriceInput {
|
|
1108
|
+
optionId: ID!
|
|
1109
|
+
}
|
|
1110
|
+
|
|
1111
|
+
type ProductPreOrder {
|
|
1112
|
+
fromDate: DateTime
|
|
1113
|
+
toDate: DateTime
|
|
1375
1114
|
}
|
|
1376
1115
|
|
|
1377
1116
|
type Package {
|
|
@@ -1391,6 +1130,18 @@ type Package {
|
|
|
1391
1130
|
discountPercentage: Decimal
|
|
1392
1131
|
}
|
|
1393
1132
|
|
|
1133
|
+
type PackageItem {
|
|
1134
|
+
product: Product
|
|
1135
|
+
minQuantity: Int!
|
|
1136
|
+
discount: PackageDiscount
|
|
1137
|
+
|
|
1138
|
+
"""The current package price with any potential discount"""
|
|
1139
|
+
price: Price
|
|
1140
|
+
|
|
1141
|
+
"""The previous package price without any potential discount"""
|
|
1142
|
+
previousPrice: Price
|
|
1143
|
+
}
|
|
1144
|
+
|
|
1394
1145
|
union PackageDiscount = PackageDiscountPercentage | PackageDiscountValue
|
|
1395
1146
|
|
|
1396
1147
|
type PackageDiscountPercentage {
|
|
@@ -1403,21 +1154,89 @@ type PackageDiscountValue {
|
|
|
1403
1154
|
valueVat: Decimal!
|
|
1404
1155
|
}
|
|
1405
1156
|
|
|
1406
|
-
|
|
1157
|
+
input PackagePriceInput {
|
|
1158
|
+
product: ID!
|
|
1159
|
+
variant: ID
|
|
1160
|
+
}
|
|
1161
|
+
|
|
1162
|
+
type Upsell {
|
|
1163
|
+
id: ID!
|
|
1164
|
+
items: [UpsellItem!]!
|
|
1165
|
+
}
|
|
1166
|
+
|
|
1167
|
+
type UpsellItem {
|
|
1407
1168
|
product: Product
|
|
1408
1169
|
minQuantity: Int!
|
|
1409
|
-
discount:
|
|
1170
|
+
discount: UpsellDiscount!
|
|
1171
|
+
}
|
|
1410
1172
|
|
|
1411
|
-
|
|
1412
|
-
price: Price
|
|
1173
|
+
union UpsellDiscount = UpsellDiscountPercentage | UpsellDiscountValue
|
|
1413
1174
|
|
|
1414
|
-
|
|
1415
|
-
|
|
1175
|
+
type UpsellDiscountPercentage {
|
|
1176
|
+
percentage: Decimal!
|
|
1416
1177
|
}
|
|
1417
1178
|
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1179
|
+
type UpsellDiscountValue {
|
|
1180
|
+
valueIncVat: Decimal!
|
|
1181
|
+
valueExVat: Decimal!
|
|
1182
|
+
valueVat: Decimal!
|
|
1183
|
+
}
|
|
1184
|
+
|
|
1185
|
+
type ProductHistory {
|
|
1186
|
+
previousPrice: [PriceHistory]
|
|
1187
|
+
}
|
|
1188
|
+
|
|
1189
|
+
type CustomItem {
|
|
1190
|
+
id: Int!
|
|
1191
|
+
name: String!
|
|
1192
|
+
content: String
|
|
1193
|
+
linkUrl: Uri
|
|
1194
|
+
image: Image
|
|
1195
|
+
}
|
|
1196
|
+
|
|
1197
|
+
type SearchAutoCompleteResult {
|
|
1198
|
+
"""
|
|
1199
|
+
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
1200
|
+
"""
|
|
1201
|
+
products: ProductAutoCompleteResult
|
|
1202
|
+
|
|
1203
|
+
"""
|
|
1204
|
+
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
1205
|
+
"""
|
|
1206
|
+
categories(first: Paging = 12): CategoryAutoCompleteResult
|
|
1207
|
+
}
|
|
1208
|
+
|
|
1209
|
+
type ProductAutoCompleteResult {
|
|
1210
|
+
result: [Product]!
|
|
1211
|
+
}
|
|
1212
|
+
|
|
1213
|
+
type CategoryAutoCompleteResult {
|
|
1214
|
+
result: [Category]
|
|
1215
|
+
}
|
|
1216
|
+
|
|
1217
|
+
type SearchResult {
|
|
1218
|
+
products(paging: PagingInput = {first: 12, offset: 0}, filters: FilterInput = {listFilters: [], rangeFilters: [], booleanFilters: [], multiListFilters: []}): ProductSearchResult
|
|
1219
|
+
|
|
1220
|
+
"""
|
|
1221
|
+
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
1222
|
+
"""
|
|
1223
|
+
categories(paging: PagingInput = {first: 12, offset: 0}): CategorySearchResult
|
|
1224
|
+
}
|
|
1225
|
+
|
|
1226
|
+
type ProductSearchResult {
|
|
1227
|
+
result: [Product]!
|
|
1228
|
+
filters: [Filter]
|
|
1229
|
+
totalResults: Int
|
|
1230
|
+
}
|
|
1231
|
+
|
|
1232
|
+
input PagingInput {
|
|
1233
|
+
first: Paging = 12
|
|
1234
|
+
offset: Int = 0
|
|
1235
|
+
}
|
|
1236
|
+
|
|
1237
|
+
type CategorySearchResult {
|
|
1238
|
+
result: [Category]
|
|
1239
|
+
totalResults: Int
|
|
1421
1240
|
}
|
|
1422
1241
|
|
|
1423
1242
|
type Page implements Document {
|
|
@@ -1437,15 +1256,13 @@ type Page implements Document {
|
|
|
1437
1256
|
head: HtmlHead
|
|
1438
1257
|
|
|
1439
1258
|
"""
|
|
1440
|
-
The primary route of this Page. NB: Carries a performance cost, as asking for
|
|
1441
|
-
this will result in a separate API call in the backend.
|
|
1259
|
+
The primary route of this Page. NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
1442
1260
|
"""
|
|
1443
1261
|
primaryRoute: Route
|
|
1444
1262
|
breadcrumbText: String
|
|
1445
1263
|
|
|
1446
1264
|
"""
|
|
1447
|
-
Get content data set via the Content Editor. NB: Carries a performance cost,
|
|
1448
|
-
as asking for this will result in a separate API call in the backend.
|
|
1265
|
+
Get content data set via the Content Editor. NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
1449
1266
|
"""
|
|
1450
1267
|
data: Content
|
|
1451
1268
|
|
|
@@ -1456,747 +1273,886 @@ type Page implements Document {
|
|
|
1456
1273
|
parent: Page
|
|
1457
1274
|
|
|
1458
1275
|
"""
|
|
1459
|
-
* If this page was fetched by ID using the `page(id)` query, `subPages` will
|
|
1460
|
-
be returned
|
|
1461
|
-
`includeHidden` flag.
|
|
1462
|
-
* If this page was fetched using the `pages` query, `subPages` will not be
|
|
1463
|
-
returned if they are hidden. The `includeHidden` flag has no effect on this.
|
|
1276
|
+
* If this page was fetched by ID using the `page(id)` query, `subPages` will be returned even if they are hidden. This can be overridden with the `includeHidden` flag.
|
|
1277
|
+
* If this page was fetched using the `pages` query, `subPages` will not be returned if they are hidden. The `includeHidden` flag has no effect on this.
|
|
1464
1278
|
"""
|
|
1465
1279
|
subPages(includeHidden: Boolean = true): [Page!]
|
|
1466
1280
|
|
|
1467
1281
|
"""
|
|
1468
|
-
When set to false, the page will be excluded from sitemap. The frontend
|
|
1469
|
-
implementation should use this value to set meta tags to exclude the page from
|
|
1470
|
-
being indexed by crawlers. Defaults to true.
|
|
1282
|
+
When set to false, the page will be excluded from sitemap. The frontend implementation should use this value to set meta tags to exclude the page from being indexed by crawlers. Defaults to true.
|
|
1471
1283
|
"""
|
|
1472
1284
|
allowWebIndexing: Boolean
|
|
1473
1285
|
}
|
|
1474
1286
|
|
|
1475
|
-
type
|
|
1476
|
-
|
|
1287
|
+
type Link {
|
|
1288
|
+
target: String
|
|
1289
|
+
link: Uri
|
|
1290
|
+
}
|
|
1291
|
+
|
|
1292
|
+
type Order {
|
|
1293
|
+
id: ID!
|
|
1294
|
+
orderNumber: String
|
|
1295
|
+
status: OrderStatus
|
|
1296
|
+
items(
|
|
1297
|
+
"""Will fetch all if this is set to 0"""
|
|
1298
|
+
first: Int = 0
|
|
1299
|
+
offset: Int = 0
|
|
1300
|
+
): [OrderItem]
|
|
1301
|
+
billingInfo: OrderInfo
|
|
1302
|
+
deliveryInfo: OrderInfo
|
|
1303
|
+
paymentMethod: OrderPaymentMethod
|
|
1304
|
+
deliveryMethod: OrderDeliveryMethod
|
|
1305
|
+
giftVouchers: [OrderGiftVoucher]
|
|
1306
|
+
total: Price
|
|
1307
|
+
orderDate: DateTime
|
|
1308
|
+
currency: Currency
|
|
1309
|
+
attachments: [OrderAttachment]
|
|
1310
|
+
orderPurchaseLocation: String
|
|
1311
|
+
}
|
|
1312
|
+
|
|
1313
|
+
type OrderItem {
|
|
1314
|
+
articleNumber: String
|
|
1477
1315
|
|
|
1478
1316
|
"""
|
|
1479
|
-
|
|
1317
|
+
Name of the Product at the time the order was placed (may since have changed). Use this as a fallback if the 'product' field itself is null.
|
|
1480
1318
|
"""
|
|
1481
|
-
|
|
1319
|
+
name: String
|
|
1320
|
+
quantity: Int
|
|
1321
|
+
unitPrice: Price
|
|
1322
|
+
total: Price
|
|
1323
|
+
discounts: [OrderItemDiscount]
|
|
1324
|
+
|
|
1325
|
+
"""N.B. this may be null if the Product has since been removed."""
|
|
1326
|
+
product: Product
|
|
1482
1327
|
|
|
1483
1328
|
"""
|
|
1484
|
-
|
|
1329
|
+
N.B. this may be null if the Product itself or the Variant has since been removed.
|
|
1485
1330
|
"""
|
|
1486
|
-
|
|
1487
|
-
"""
|
|
1488
|
-
Optional: ID's of filters to fetch. If not set all filters will be returned.
|
|
1489
|
-
"""
|
|
1490
|
-
ids: [String]
|
|
1491
|
-
): [Filter]
|
|
1492
|
-
result: [Product]!
|
|
1493
|
-
}
|
|
1331
|
+
variant: ProductVariant
|
|
1494
1332
|
|
|
1495
|
-
"""
|
|
1496
|
-
|
|
1333
|
+
"""N.B. this may be null if the Product has since been removed."""
|
|
1334
|
+
variantOptionNames: [String]
|
|
1497
1335
|
|
|
1498
|
-
|
|
1499
|
-
|
|
1500
|
-
|
|
1501
|
-
|
|
1336
|
+
"""
|
|
1337
|
+
Value of the Variant at the time the order was placed (may since have changed). Use this as a fallback if the 'variant' field itself is null. Will be null when the OrderItem is not a Variant.
|
|
1338
|
+
"""
|
|
1339
|
+
variantValue: String
|
|
1340
|
+
preOrderDate: DateTime
|
|
1502
1341
|
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
apiClientId: String!
|
|
1506
|
-
availableForBusiness: Boolean!
|
|
1507
|
-
availableForPrivate: Boolean!
|
|
1342
|
+
"""list of name, value fields from orders coming from external systems."""
|
|
1343
|
+
externalOrderData: [ExternalOrderData]
|
|
1508
1344
|
}
|
|
1509
1345
|
|
|
1510
|
-
type
|
|
1511
|
-
|
|
1512
|
-
lastName: MaskedProperty
|
|
1513
|
-
co: MaskedProperty
|
|
1514
|
-
address: MaskedProperty
|
|
1515
|
-
city: MaskedProperty
|
|
1516
|
-
postalCode: MaskedProperty
|
|
1517
|
-
country: MaskedProperty
|
|
1518
|
-
phoneNumber: MaskedProperty
|
|
1519
|
-
mobilePhoneNumber: MaskedProperty
|
|
1346
|
+
type OrderItemDiscount {
|
|
1347
|
+
value: Price
|
|
1520
1348
|
}
|
|
1521
1349
|
|
|
1522
|
-
type
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
vat: Decimal!
|
|
1350
|
+
type ExternalOrderData {
|
|
1351
|
+
name: String!
|
|
1352
|
+
value: String!
|
|
1526
1353
|
}
|
|
1527
1354
|
|
|
1528
|
-
type
|
|
1529
|
-
|
|
1530
|
-
|
|
1355
|
+
type OrderInfo {
|
|
1356
|
+
firstName: String
|
|
1357
|
+
lastName: String
|
|
1358
|
+
company: String
|
|
1359
|
+
phone: String
|
|
1360
|
+
address: OrderAddress
|
|
1531
1361
|
}
|
|
1532
1362
|
|
|
1533
|
-
type
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
"""Customer id for external system"""
|
|
1540
|
-
externalId: String
|
|
1541
|
-
subscribedToNewsletter: Boolean @deprecated(reason: "Use communication.acceptsEmail")
|
|
1542
|
-
language: Language
|
|
1543
|
-
billingAddress: CustomerAddress
|
|
1544
|
-
deliveryAddresses: [CustomerAddress]
|
|
1363
|
+
type OrderAddress {
|
|
1364
|
+
street: String
|
|
1365
|
+
postcode: String
|
|
1366
|
+
city: String
|
|
1367
|
+
region: String
|
|
1545
1368
|
|
|
1546
1369
|
"""
|
|
1547
1370
|
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
1548
1371
|
"""
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1372
|
+
country: Country
|
|
1373
|
+
}
|
|
1374
|
+
|
|
1375
|
+
type OrderPaymentMethod {
|
|
1376
|
+
name: String
|
|
1377
|
+
fee: Price
|
|
1378
|
+
}
|
|
1379
|
+
|
|
1380
|
+
type OrderDeliveryMethod {
|
|
1381
|
+
name: String
|
|
1382
|
+
fee: Price
|
|
1383
|
+
tracking: OrderDeliveryMethodTracking
|
|
1384
|
+
}
|
|
1385
|
+
|
|
1386
|
+
type OrderDeliveryMethodTracking {
|
|
1387
|
+
trackingUrl: String
|
|
1388
|
+
trackingUrlText: String
|
|
1389
|
+
}
|
|
1390
|
+
|
|
1391
|
+
type OrderGiftVoucher {
|
|
1392
|
+
name: String
|
|
1393
|
+
amount: Decimal
|
|
1394
|
+
charged: Decimal
|
|
1395
|
+
validUntil: DateTime
|
|
1396
|
+
}
|
|
1397
|
+
|
|
1398
|
+
type OrderAttachment {
|
|
1399
|
+
id: ID!
|
|
1400
|
+
url: String
|
|
1401
|
+
}
|
|
1402
|
+
|
|
1403
|
+
type MyPagesContent {
|
|
1404
|
+
"""Text that will show on the landing page on MyPages"""
|
|
1405
|
+
welcomeText: String
|
|
1406
|
+
}
|
|
1407
|
+
|
|
1408
|
+
type CustomerProductList {
|
|
1409
|
+
id: ID!
|
|
1410
|
+
shareToken: String
|
|
1411
|
+
name: String
|
|
1412
|
+
description: String
|
|
1555
1413
|
|
|
1556
1414
|
"""
|
|
1557
1415
|
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
1558
1416
|
"""
|
|
1559
|
-
|
|
1560
|
-
dynamicContent: String
|
|
1561
|
-
externalAttributes: [CustomerExternalAttribute]
|
|
1417
|
+
type: CustomerProductListType
|
|
1562
1418
|
|
|
1563
1419
|
"""
|
|
1564
1420
|
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
1565
1421
|
"""
|
|
1566
|
-
|
|
1422
|
+
items: [CustomerProductListItem]
|
|
1567
1423
|
}
|
|
1568
1424
|
|
|
1569
|
-
type
|
|
1570
|
-
id:
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
subName: String!
|
|
1574
|
-
shortDescription: String!
|
|
1575
|
-
description: String!
|
|
1425
|
+
type CustomerProductListType {
|
|
1426
|
+
id: ID!
|
|
1427
|
+
name: String
|
|
1428
|
+
}
|
|
1576
1429
|
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
mainHeader: String!
|
|
1582
|
-
publishedDate: DateTime
|
|
1430
|
+
type CustomerProductListItem {
|
|
1431
|
+
description: String
|
|
1432
|
+
quantity: Int
|
|
1433
|
+
variant: ProductVariant
|
|
1583
1434
|
|
|
1584
1435
|
"""
|
|
1585
1436
|
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
1586
1437
|
"""
|
|
1587
|
-
|
|
1438
|
+
product: Product
|
|
1439
|
+
}
|
|
1588
1440
|
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
"""Deprecated, this argument does not affect the result"""
|
|
1594
|
-
includeHidden: Boolean = false
|
|
1595
|
-
): [Category]
|
|
1441
|
+
type CustomerLoyalty {
|
|
1442
|
+
bonusChecks: [CustomerLoyaltyBonusCheck]
|
|
1443
|
+
pointCards: [CustomerLoyaltyPointCard]
|
|
1444
|
+
discounts(includeRedeemed: Boolean! = false): [CustomerLoyaltyDiscount]
|
|
1596
1445
|
|
|
1597
1446
|
"""
|
|
1598
1447
|
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
1599
1448
|
"""
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
hasVariantsWithDifferingPrices: Boolean!
|
|
1603
|
-
variants: ProductVariants
|
|
1604
|
-
images(
|
|
1605
|
-
"""
|
|
1606
|
-
Set this to false if you prefer to manually collate these images with the images found on the Variant.
|
|
1607
|
-
"""
|
|
1608
|
-
includeVariantImages: Boolean = true
|
|
1449
|
+
bonusPoints: CustomerLoyaltyBonusPoints
|
|
1450
|
+
}
|
|
1609
1451
|
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1452
|
+
type CustomerLoyaltyBonusCheck {
|
|
1453
|
+
externalId: String
|
|
1454
|
+
name: String
|
|
1455
|
+
startDate: DateTime
|
|
1456
|
+
endDate: DateTime
|
|
1457
|
+
redeemed: Boolean
|
|
1458
|
+
redeemedOn: DateTime
|
|
1615
1459
|
|
|
1616
1460
|
"""
|
|
1617
|
-
|
|
1461
|
+
For display purposes, not guaranteed to match up with a currency on the channel.
|
|
1618
1462
|
"""
|
|
1619
|
-
|
|
1463
|
+
currency: String
|
|
1464
|
+
value: Decimal
|
|
1465
|
+
}
|
|
1466
|
+
|
|
1467
|
+
type CustomerLoyaltyPointCard {
|
|
1468
|
+
externalId: String
|
|
1469
|
+
name: String
|
|
1470
|
+
lastStampTime: DateTime
|
|
1471
|
+
numberOfSlots: Int
|
|
1472
|
+
numberOfSlotsRemaining: Int
|
|
1473
|
+
isActive: Boolean
|
|
1474
|
+
}
|
|
1475
|
+
|
|
1476
|
+
type CustomerLoyaltyDiscount {
|
|
1477
|
+
name: String
|
|
1478
|
+
description: String
|
|
1479
|
+
startDate: DateTime
|
|
1480
|
+
endDate: DateTime
|
|
1481
|
+
externalData: CustomerLoyaltyDiscountOfferExternalData
|
|
1620
1482
|
|
|
1621
1483
|
"""
|
|
1622
1484
|
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
1623
1485
|
"""
|
|
1624
|
-
|
|
1486
|
+
category: Category
|
|
1487
|
+
isActivatedByDiscountCode: Boolean!
|
|
1488
|
+
discountCode: String
|
|
1489
|
+
}
|
|
1625
1490
|
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1491
|
+
type CustomerLoyaltyDiscountOfferExternalData {
|
|
1492
|
+
name: String
|
|
1493
|
+
description: String
|
|
1494
|
+
startDate: DateTime
|
|
1495
|
+
endDate: DateTime
|
|
1496
|
+
externalId: String
|
|
1497
|
+
externalReference: String
|
|
1498
|
+
heading: String
|
|
1499
|
+
redeemed: Boolean
|
|
1500
|
+
redeemedOn: DateTime
|
|
1501
|
+
imageUrl: String
|
|
1502
|
+
link: String
|
|
1503
|
+
}
|
|
1634
1504
|
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
a separate price list.
|
|
1639
|
-
"""
|
|
1640
|
-
previousPrice: Price
|
|
1505
|
+
type CustomerLoyaltyBonusPoints {
|
|
1506
|
+
points: Int
|
|
1507
|
+
}
|
|
1641
1508
|
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1509
|
+
"""
|
|
1510
|
+
The activation status has 4 states;
|
|
1511
|
+
PREEXISTING_CUSTOMER: No customer info will be returned and the customer is advised to login to the preexisting account.
|
|
1512
|
+
ACTIVATION_REQUIRED: The customer account needs to be activated. Email (masked), FirstName (masked) and externalId will be the only fields set on `customer`.
|
|
1513
|
+
ADDITIONAL_USER_DATA_REQUIRED: Additional data needed to register the customer, the existing customer info will be available with masking on customer.
|
|
1514
|
+
NON_EXISTING_CUSTOMER: Customer does not exist in any system and will have to do a sign up.
|
|
1515
|
+
COUNTRY_NOT_VALID: The customer account may not be activated on this channel as it's missing the customer country. Email (masked), FirstName (masked), externalId and countryCode will be the only fields set on `customer`.
|
|
1646
1516
|
|
|
1647
|
-
"""
|
|
1648
|
-
Default previous price for the product in the channel, disregards Customer specific prices.
|
|
1649
|
-
"""
|
|
1650
|
-
defaultPreviousPrice: Price
|
|
1651
1517
|
|
|
1652
|
-
|
|
1653
|
-
|
|
1518
|
+
"""
|
|
1519
|
+
type ExternalCustomerResult {
|
|
1520
|
+
status: ActivationStatusSource
|
|
1521
|
+
customer: ExternalCustomer
|
|
1522
|
+
}
|
|
1654
1523
|
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1524
|
+
enum ActivationStatusSource {
|
|
1525
|
+
PREEXISTING_CUSTOMER
|
|
1526
|
+
ACTIVATION_REQUIRED
|
|
1527
|
+
ADDITIONAL_USER_DATA_REQUIRED
|
|
1528
|
+
NON_EXISTING_CUSTOMER
|
|
1529
|
+
COUNTRY_NOT_VALID
|
|
1530
|
+
}
|
|
1660
1531
|
|
|
1661
|
-
|
|
1662
|
-
|
|
1532
|
+
type ExternalCustomer {
|
|
1533
|
+
externalId: String
|
|
1534
|
+
email: MaskedProperty
|
|
1535
|
+
firstName: MaskedProperty
|
|
1536
|
+
lastName: MaskedProperty
|
|
1537
|
+
co: MaskedProperty
|
|
1538
|
+
address: MaskedProperty
|
|
1539
|
+
city: MaskedProperty
|
|
1540
|
+
postalCode: MaskedProperty
|
|
1541
|
+
country: MaskedProperty
|
|
1542
|
+
countryCode: String
|
|
1543
|
+
phoneNumber: MaskedProperty
|
|
1544
|
+
mobilePhoneNumber: MaskedProperty
|
|
1545
|
+
pid: MaskedProperty
|
|
1546
|
+
}
|
|
1663
1547
|
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
"""
|
|
1669
|
-
memberPrice: Price
|
|
1548
|
+
type MaskedProperty {
|
|
1549
|
+
masked: String
|
|
1550
|
+
encrypted: String
|
|
1551
|
+
}
|
|
1670
1552
|
|
|
1671
|
-
|
|
1672
|
-
|
|
1673
|
-
|
|
1674
|
-
|
|
1675
|
-
|
|
1553
|
+
type PersonLookup {
|
|
1554
|
+
firstName: MaskedProperty
|
|
1555
|
+
lastName: MaskedProperty
|
|
1556
|
+
co: MaskedProperty
|
|
1557
|
+
address: MaskedProperty
|
|
1558
|
+
city: MaskedProperty
|
|
1559
|
+
postalCode: MaskedProperty
|
|
1560
|
+
country: MaskedProperty
|
|
1561
|
+
phoneNumber: MaskedProperty
|
|
1562
|
+
mobilePhoneNumber: MaskedProperty
|
|
1563
|
+
}
|
|
1676
1564
|
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
customFields: [CustomField]
|
|
1565
|
+
type MultipleContent {
|
|
1566
|
+
notFoundIds: [ID]!
|
|
1567
|
+
content: [Content]!
|
|
1568
|
+
}
|
|
1682
1569
|
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1570
|
+
"""
|
|
1571
|
+
Every channel has its own URL and can have different design, selection of products, prices and own settings for example shipping and payment.
|
|
1572
|
+
"""
|
|
1573
|
+
type Channel {
|
|
1574
|
+
id: Int!
|
|
1575
|
+
name: String
|
|
1576
|
+
displayName: String
|
|
1577
|
+
groupName: String
|
|
1578
|
+
isDefault: Boolean
|
|
1579
|
+
url: Uri
|
|
1580
|
+
settings: ChannelSettings
|
|
1581
|
+
languages: [Language]
|
|
1582
|
+
defaultLanguage: Language
|
|
1583
|
+
currencies: [Currency]
|
|
1584
|
+
defaultCurrency: Currency
|
|
1585
|
+
countries: [Country]
|
|
1688
1586
|
|
|
1689
1587
|
"""
|
|
1690
|
-
The
|
|
1691
|
-
for this will result in a separate API call in the backend.
|
|
1588
|
+
The root url of images, this can be used to build image urls if needed.
|
|
1692
1589
|
"""
|
|
1693
|
-
|
|
1694
|
-
breadcrumbText: String
|
|
1695
|
-
recommendedProducts: RecommendedProducts
|
|
1590
|
+
imageUrl: String
|
|
1696
1591
|
|
|
1697
|
-
"""
|
|
1698
|
-
|
|
1699
|
-
|
|
1700
|
-
leniency on this rule).
|
|
1701
|
-
"""
|
|
1702
|
-
distributionPackageSize: Int!
|
|
1703
|
-
barcode: String
|
|
1592
|
+
"""This channel requires a user to be authorized."""
|
|
1593
|
+
requiresAuth: Boolean
|
|
1594
|
+
}
|
|
1704
1595
|
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
|
|
1712
|
-
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
hasFamilyMembers: Boolean!
|
|
1596
|
+
type ChannelSettings {
|
|
1597
|
+
pricesIncVat: Boolean
|
|
1598
|
+
countrySettings: [CountrySettings]
|
|
1599
|
+
tracking: Tracking
|
|
1600
|
+
nostoAccountId: String
|
|
1601
|
+
}
|
|
1602
|
+
|
|
1603
|
+
type CountrySettings {
|
|
1604
|
+
countryCode: String!
|
|
1605
|
+
paymentTypes: [paymentType]
|
|
1716
1606
|
|
|
1717
1607
|
"""
|
|
1718
|
-
|
|
1719
|
-
been made. NB: Carries a performance cost, as asking for this will result in a
|
|
1720
|
-
separate API call in the backend.
|
|
1608
|
+
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
1721
1609
|
"""
|
|
1722
|
-
|
|
1610
|
+
privateCustomerFields: [CustomerField]
|
|
1723
1611
|
|
|
1724
|
-
"""
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1612
|
+
"""
|
|
1613
|
+
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
1614
|
+
"""
|
|
1615
|
+
businessCustomerFields: [CustomerField]
|
|
1616
|
+
shipping: Shipping
|
|
1729
1617
|
|
|
1730
1618
|
"""
|
|
1731
|
-
## Description
|
|
1732
1619
|
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
1733
|
-
## Error Codes
|
|
1734
|
-
### InvalidAmountOfArticleNumbers
|
|
1735
|
-
Number of input products doesn't match package products
|
|
1736
|
-
### InvalidArticleNumber
|
|
1737
|
-
Product or variant article number doesn't match any products
|
|
1738
|
-
### UnableToGetPackagePrice
|
|
1739
|
-
Failed to calculate package price
|
|
1740
1620
|
|
|
1621
|
+
This will use localization, and will work well when requesting one `channel`, but may give unpredictable results when getting multiple channels via `channels`
|
|
1741
1622
|
"""
|
|
1742
|
-
|
|
1623
|
+
privateCustomerConsents: [Consent]
|
|
1743
1624
|
|
|
1744
1625
|
"""
|
|
1745
1626
|
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
1627
|
+
|
|
1628
|
+
This will use localization, and will work well when requesting one `channel`, but may give unpredictable results when getting multiple channels via `channels`
|
|
1746
1629
|
"""
|
|
1747
|
-
|
|
1748
|
-
|
|
1749
|
-
|
|
1630
|
+
businessCustomerConsents: [Consent]
|
|
1631
|
+
}
|
|
1632
|
+
|
|
1633
|
+
type paymentType {
|
|
1634
|
+
name: String!
|
|
1635
|
+
apiClientId: String!
|
|
1636
|
+
availableForBusiness: Boolean!
|
|
1637
|
+
availableForPrivate: Boolean!
|
|
1638
|
+
}
|
|
1639
|
+
|
|
1640
|
+
type CustomerField {
|
|
1641
|
+
id: ID!
|
|
1642
|
+
required: Boolean!
|
|
1643
|
+
pattern: String
|
|
1644
|
+
fields: [CustomerField]
|
|
1645
|
+
name: ID!
|
|
1646
|
+
}
|
|
1750
1647
|
|
|
1648
|
+
type Shipping {
|
|
1751
1649
|
"""
|
|
1752
|
-
|
|
1753
|
-
performance cost, as asking for this will result in a separate API call in the backend.
|
|
1650
|
+
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
1754
1651
|
"""
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
"""Get Product History within the set number of days"""
|
|
1758
|
-
history(
|
|
1759
|
-
"""number of days, default is 30"""
|
|
1760
|
-
days: Int = 30
|
|
1761
|
-
): ProductHistory
|
|
1652
|
+
freeShippingLimit: FreeShippingLimit
|
|
1762
1653
|
}
|
|
1763
1654
|
|
|
1764
|
-
type
|
|
1765
|
-
|
|
1655
|
+
type FreeShippingLimit {
|
|
1656
|
+
incVat: Decimal
|
|
1657
|
+
exVat: Decimal
|
|
1766
1658
|
}
|
|
1767
1659
|
|
|
1768
|
-
type
|
|
1660
|
+
type Consent {
|
|
1661
|
+
id: ID!
|
|
1769
1662
|
name: String
|
|
1770
|
-
|
|
1771
|
-
location: ProductBadgeLocation
|
|
1772
|
-
style: String
|
|
1663
|
+
title: String
|
|
1773
1664
|
text: String
|
|
1665
|
+
linkText: String
|
|
1666
|
+
page: Page
|
|
1667
|
+
isMandatory: Boolean
|
|
1774
1668
|
}
|
|
1775
1669
|
|
|
1776
|
-
|
|
1777
|
-
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
1781
|
-
BOTTOM_RIGHT
|
|
1670
|
+
type Tracking {
|
|
1671
|
+
ga: GoogleAnalytics
|
|
1672
|
+
ga4: GoogleAnalytics4
|
|
1673
|
+
gtm: GoogleTagManager
|
|
1674
|
+
fca: FacebookConversionsApi
|
|
1782
1675
|
}
|
|
1783
1676
|
|
|
1784
|
-
type
|
|
1785
|
-
|
|
1786
|
-
|
|
1677
|
+
type GoogleAnalytics {
|
|
1678
|
+
trackingId: String
|
|
1679
|
+
useArticleNumberAsId: Boolean
|
|
1787
1680
|
}
|
|
1788
1681
|
|
|
1789
|
-
type
|
|
1790
|
-
|
|
1791
|
-
|
|
1682
|
+
type GoogleAnalytics4 {
|
|
1683
|
+
trackingId: String
|
|
1684
|
+
useArticleNumberAsId: Boolean
|
|
1792
1685
|
}
|
|
1793
1686
|
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
|
|
1797
|
-
|
|
1687
|
+
type GoogleTagManager {
|
|
1688
|
+
containerId: String
|
|
1689
|
+
useGa4Events: Boolean
|
|
1690
|
+
}
|
|
1798
1691
|
|
|
1799
|
-
|
|
1800
|
-
|
|
1801
|
-
|
|
1802
|
-
|
|
1803
|
-
type ProductConfigurationOption {
|
|
1804
|
-
id: ID!
|
|
1805
|
-
name: String
|
|
1806
|
-
price: Price
|
|
1692
|
+
type FacebookConversionsApi {
|
|
1693
|
+
accessToken: String
|
|
1694
|
+
pixelId: String
|
|
1695
|
+
}
|
|
1807
1696
|
|
|
1808
|
-
|
|
1809
|
-
|
|
1810
|
-
|
|
1811
|
-
|
|
1697
|
+
type Cart {
|
|
1698
|
+
id: String
|
|
1699
|
+
totalQuantity: Int
|
|
1700
|
+
productTotal: Price
|
|
1701
|
+
productPreviousTotal: Price
|
|
1702
|
+
discountTotal: Price
|
|
1703
|
+
aggregatedDiscounts: [Discount]
|
|
1704
|
+
externalCheckoutUrl: Uri
|
|
1705
|
+
items: [CartItem]
|
|
1812
1706
|
}
|
|
1813
1707
|
|
|
1814
|
-
type
|
|
1815
|
-
|
|
1816
|
-
|
|
1708
|
+
type Discount {
|
|
1709
|
+
externalId: ID
|
|
1710
|
+
name: String
|
|
1711
|
+
value: Price
|
|
1712
|
+
type: DiscountType
|
|
1713
|
+
description: String
|
|
1714
|
+
campaign: Category
|
|
1817
1715
|
}
|
|
1818
1716
|
|
|
1819
|
-
|
|
1820
|
-
|
|
1717
|
+
enum DiscountType {
|
|
1718
|
+
"""No discount defined"""
|
|
1719
|
+
UNDEFINED
|
|
1821
1720
|
|
|
1822
|
-
|
|
1721
|
+
"""Discount drops price of the order total by defined amount"""
|
|
1722
|
+
FIXED_AMOUNT
|
|
1823
1723
|
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
type ProductConfigurationPriceCalculation {
|
|
1827
|
-
id: ID!
|
|
1828
|
-
name: String
|
|
1829
|
-
formula: String
|
|
1830
|
-
variables: [ProductConfigurationPriceCalculationVariable]
|
|
1831
|
-
}
|
|
1724
|
+
"""Discount drops price of the product by X %"""
|
|
1725
|
+
PERCENT
|
|
1832
1726
|
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
1836
|
-
|
|
1727
|
+
"""
|
|
1728
|
+
Discount will get the amount of the cheapest product and use this as a discount
|
|
1729
|
+
"""
|
|
1730
|
+
ITEMS
|
|
1837
1731
|
|
|
1838
|
-
|
|
1839
|
-
|
|
1840
|
-
|
|
1732
|
+
"""
|
|
1733
|
+
Discount drops total price of the product if there is at least X of them in cart
|
|
1734
|
+
"""
|
|
1735
|
+
ITEMS_PERCENTAGE_LIMIT
|
|
1841
1736
|
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
BOOL
|
|
1845
|
-
LIST
|
|
1846
|
-
HTML
|
|
1847
|
-
MULTI_LEVEL_LIST
|
|
1848
|
-
}
|
|
1737
|
+
"""Only a collection of products"""
|
|
1738
|
+
ONLY_USE_LANDING_PAGE
|
|
1849
1739
|
|
|
1850
|
-
|
|
1851
|
-
|
|
1852
|
-
|
|
1740
|
+
"""Discount drops price of the least expensive product in cart"""
|
|
1741
|
+
PERCENT_ON_LEAST_EXPENSIVE_ITEM
|
|
1742
|
+
|
|
1743
|
+
"""Discount drops price of the most expensive product in cart"""
|
|
1744
|
+
PERCENT_ON_MOST_EXPENSIVE_ITEM
|
|
1745
|
+
|
|
1746
|
+
"""Discount allows to get a free gift when the product is added"""
|
|
1747
|
+
FREE_PRODUCT
|
|
1748
|
+
|
|
1749
|
+
"""Discount allows to get free shipping option for the product"""
|
|
1750
|
+
FREE_SHIPPING
|
|
1853
1751
|
|
|
1854
|
-
type ProductImage {
|
|
1855
1752
|
"""
|
|
1856
|
-
|
|
1753
|
+
Discount drops price for the package when all products in the package is added to cart
|
|
1857
1754
|
"""
|
|
1858
|
-
|
|
1755
|
+
PACKAGE_DISCOUNT
|
|
1756
|
+
|
|
1757
|
+
"""Discount on the order total from a voucher"""
|
|
1758
|
+
BONUS_VOUCHER_DISCOUNT
|
|
1859
1759
|
|
|
1860
1760
|
"""
|
|
1861
|
-
|
|
1761
|
+
Discount allows to buy amount of X of the article, but pay only for amount of Y
|
|
1862
1762
|
"""
|
|
1863
|
-
|
|
1864
|
-
sizes: [ProductImageSize]! @deprecated(reason: "Images will no longer be offered in different sizes. Instead use 'url' in conjunction with our image resizing service.")
|
|
1865
|
-
url: Uri
|
|
1866
|
-
modifiedDate: String
|
|
1763
|
+
BUY_X_ARTICLES_PAY_Y_AMOUNT
|
|
1867
1764
|
}
|
|
1868
1765
|
|
|
1869
|
-
type
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1766
|
+
type CartItem {
|
|
1767
|
+
id: String!
|
|
1768
|
+
quantity: Int!
|
|
1769
|
+
articleNumber: String!
|
|
1770
|
+
images: [ProductImage] @deprecated(reason: "Please use images on product instead.")
|
|
1771
|
+
subHeading: String
|
|
1772
|
+
variant: ProductVariant
|
|
1773
|
+
variantOptionNames: [String]
|
|
1774
|
+
customerComments: [CartItemComment]
|
|
1775
|
+
discounts: [Discount]
|
|
1874
1776
|
|
|
1875
|
-
|
|
1876
|
-
|
|
1877
|
-
NAME
|
|
1878
|
-
PUBLISH_DATE
|
|
1879
|
-
PRICE
|
|
1880
|
-
SUB_HEADING
|
|
1881
|
-
CUSTOM
|
|
1882
|
-
BESTSELLER
|
|
1883
|
-
}
|
|
1777
|
+
"""Total price, including discounts"""
|
|
1778
|
+
total: Price!
|
|
1884
1779
|
|
|
1885
|
-
|
|
1886
|
-
|
|
1887
|
-
toDate: DateTime
|
|
1888
|
-
}
|
|
1780
|
+
"""Total price, excluding discounts"""
|
|
1781
|
+
previousTotal: Price!
|
|
1889
1782
|
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1783
|
+
"""Unit price, including discounts"""
|
|
1784
|
+
unitPrice: Price!
|
|
1785
|
+
|
|
1786
|
+
"""Unit price, excluding discounts"""
|
|
1787
|
+
previousUnitPrice: Price!
|
|
1788
|
+
|
|
1789
|
+
"""Discount total"""
|
|
1790
|
+
discount: Price
|
|
1791
|
+
product: Product
|
|
1792
|
+
configurations: [SelectedProductConfiguration]
|
|
1793
|
+
preOrderDate: DateTime
|
|
1893
1794
|
}
|
|
1894
1795
|
|
|
1895
|
-
type
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
totalResults: Int
|
|
1796
|
+
type CartItemComment {
|
|
1797
|
+
name: String
|
|
1798
|
+
value: String
|
|
1899
1799
|
}
|
|
1900
1800
|
|
|
1901
|
-
type
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
isDefault: Boolean!
|
|
1905
|
-
defaultDirection: SortDirection!
|
|
1801
|
+
type SelectedProductConfiguration {
|
|
1802
|
+
name: String
|
|
1803
|
+
option: SelectedProductConfigurationOption!
|
|
1906
1804
|
}
|
|
1907
1805
|
|
|
1908
|
-
type
|
|
1909
|
-
id:
|
|
1910
|
-
|
|
1806
|
+
type SelectedProductConfigurationOption {
|
|
1807
|
+
id: ID!
|
|
1808
|
+
name: String
|
|
1809
|
+
}
|
|
1911
1810
|
|
|
1912
|
-
|
|
1913
|
-
|
|
1811
|
+
type Mutation {
|
|
1812
|
+
subscribeToStockNotifications(email: String!, articleNumber: String!): Boolean
|
|
1914
1813
|
|
|
1915
1814
|
"""
|
|
1916
|
-
|
|
1917
|
-
|
|
1918
|
-
|
|
1919
|
-
- Will be the non-member price if Customer is not logged in and `Product.hasMemberPrice` is true.
|
|
1815
|
+
This mutation's purpose is to subscribe a customer to a newsletter. In order to subscribe a customer a valid email address is required
|
|
1816
|
+
|
|
1817
|
+
Responds with a boolean value whether the subscription has been successful or not
|
|
1920
1818
|
"""
|
|
1921
|
-
|
|
1819
|
+
subscribeToNewsletter(email: String!): Boolean
|
|
1922
1820
|
|
|
1923
1821
|
"""
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
1822
|
+
## Description
|
|
1823
|
+
Adds items to product list, null id adds items to the default product list.
|
|
1824
|
+
## Error Codes
|
|
1825
|
+
### Unauthorized
|
|
1826
|
+
Unauthorized
|
|
1827
|
+
### AddToProductListFailed
|
|
1828
|
+
Error in underlying API call, more info may be contained in the error message.
|
|
1829
|
+
### InvalidArticleNumber
|
|
1830
|
+
Article number cannot be empty
|
|
1831
|
+
### ProductNotFound
|
|
1832
|
+
No match on article number
|
|
1833
|
+
### MoreThanOneMatchOnArticleNumber
|
|
1834
|
+
Article number matched more than one article
|
|
1835
|
+
|
|
1927
1836
|
"""
|
|
1928
|
-
|
|
1837
|
+
addToCustomerProductList(id: ID, items: [AddToCustomerProductListInput!]!): CustomerProductListResult
|
|
1929
1838
|
|
|
1930
1839
|
"""
|
|
1931
|
-
|
|
1840
|
+
## Description
|
|
1841
|
+
Creates a product list for a logged in customer
|
|
1842
|
+
## Error Codes
|
|
1843
|
+
### Unauthorized
|
|
1844
|
+
|
|
1845
|
+
### UnableToCreateProductList
|
|
1846
|
+
Error in underlying API call, more info may be contained in the error message.
|
|
1847
|
+
|
|
1932
1848
|
"""
|
|
1933
|
-
|
|
1849
|
+
createCustomerProductList(input: CreateCustomerProductListInput!): CustomerProductListResult
|
|
1934
1850
|
|
|
1935
1851
|
"""
|
|
1936
|
-
|
|
1852
|
+
## Description
|
|
1853
|
+
Deletes a product list for a logged in customer
|
|
1854
|
+
## Error Codes
|
|
1855
|
+
### Unauthorized
|
|
1856
|
+
|
|
1857
|
+
### ProductListNotFound
|
|
1858
|
+
Argument `id` did not match any list for this customer.
|
|
1859
|
+
### UnableToDeleteProductList
|
|
1860
|
+
Error in underlying API call, more info may be contained in the error message.
|
|
1861
|
+
|
|
1937
1862
|
"""
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
"""Not in use. Always null."""
|
|
1941
|
-
recommendedPrice: Price
|
|
1942
|
-
|
|
1943
|
-
"""The time interval of the discounted price."""
|
|
1944
|
-
priceDateSpan: ProductPriceDateSpan
|
|
1863
|
+
deleteCustomerProductList(id: ID!): DeleteCustomerProductListResult
|
|
1945
1864
|
|
|
1946
1865
|
"""
|
|
1947
|
-
|
|
1948
|
-
|
|
1949
|
-
|
|
1866
|
+
## Description
|
|
1867
|
+
Removes an item from a product list for a logged in customer, null id removes item in the default product list.
|
|
1868
|
+
## Error Codes
|
|
1869
|
+
### Unauthorized
|
|
1870
|
+
|
|
1871
|
+
### ProductListNotFound
|
|
1872
|
+
Argument `id` did not match any list for this customer.
|
|
1873
|
+
### RemoveFromProductListFailed
|
|
1874
|
+
Error in underlying API call, more info may be contained in the error message.
|
|
1875
|
+
### ProductNotFound
|
|
1876
|
+
Argument `articleNumbers` did not match any products or variants.
|
|
1877
|
+
### MoreThanOneMatchOnArticleNumber
|
|
1878
|
+
Argument `articleNumbers` matched more than one product/variant.
|
|
1879
|
+
### InvalidArticleNumber
|
|
1880
|
+
Argument `articleNumbers` cannot be null or empty.
|
|
1881
|
+
|
|
1950
1882
|
"""
|
|
1951
|
-
|
|
1883
|
+
removeFromCustomerProductList(id: ID, articleNumbers: [String!]): CustomerProductListResult
|
|
1952
1884
|
|
|
1953
1885
|
"""
|
|
1954
|
-
|
|
1886
|
+
## Description
|
|
1887
|
+
Updates an item in product list, null id updates item in the default product list.
|
|
1888
|
+
## Error Codes
|
|
1889
|
+
### Unauthorized
|
|
1890
|
+
|
|
1891
|
+
### ProductListNotFound
|
|
1892
|
+
Argument `id` did not match any list for this customer.
|
|
1893
|
+
### UnableToUpdateProductListItem
|
|
1894
|
+
Error in underlying API call, more info may be contained in the error message.
|
|
1895
|
+
### ProductNotFound
|
|
1896
|
+
Argument `articleNumber` did not match any products or variants.
|
|
1897
|
+
### MoreThanOneMatchOnArticleNumber
|
|
1898
|
+
Argument `articleNumber` matched more than one product/variant.
|
|
1899
|
+
### InvalidArticleNumber
|
|
1900
|
+
Argument `articleNumber` cannot be null or empty.
|
|
1901
|
+
|
|
1955
1902
|
"""
|
|
1956
|
-
|
|
1903
|
+
updateCustomerProductListItem(input: UpdateCustomerProductListItemInput!): CustomerProductListResult
|
|
1957
1904
|
|
|
1958
1905
|
"""
|
|
1959
|
-
|
|
1906
|
+
## Description
|
|
1907
|
+
Updates a product list for a logged in customer
|
|
1908
|
+
## Error Codes
|
|
1909
|
+
### Unauthorized
|
|
1910
|
+
|
|
1911
|
+
### ProductListNotFound
|
|
1912
|
+
Argument `id` did not match any list for this customer.
|
|
1913
|
+
### UnableToUpdateProductList
|
|
1914
|
+
Error in underlying API call, more info may be contained in the error message.
|
|
1915
|
+
|
|
1960
1916
|
"""
|
|
1961
|
-
|
|
1962
|
-
images: [ProductImage]
|
|
1963
|
-
barcode: String
|
|
1964
|
-
|
|
1965
|
-
"""Get Product History within the set number of days"""
|
|
1966
|
-
history(
|
|
1967
|
-
"""number of days, default is 30"""
|
|
1968
|
-
days: Int = 30
|
|
1969
|
-
): ProductVariantHistory
|
|
1970
|
-
}
|
|
1917
|
+
updateCustomerProductList(input: UpdateCustomerProductListInput!): CustomerProductListResult
|
|
1971
1918
|
|
|
1972
|
-
|
|
1973
|
-
|
|
1974
|
-
|
|
1919
|
+
"""
|
|
1920
|
+
Error codes: CustomerNotFound, CustomerAlreadyActivated, UnableToActivateCustomer, UnableToLoginCustomer, InvalidCustomerActivateInput
|
|
1921
|
+
"""
|
|
1922
|
+
activateExternalCustomerById(input: ActivateExternalCustomerByIdInput): ActivateExternalCustomerByIdResult
|
|
1975
1923
|
|
|
1976
|
-
|
|
1977
|
-
|
|
1978
|
-
|
|
1979
|
-
|
|
1924
|
+
"""
|
|
1925
|
+
Error codes: CustomerNotFound, CustomerAlreadyActivated, UnableToActivateCustomer, UnableToLoginCustomer, InvalidCustomerActivateInput
|
|
1926
|
+
"""
|
|
1927
|
+
activateExternalCustomerByToken(input: ActivateExternalCustomerByTokenInput): ActivateExternalCustomerByTokenResult
|
|
1980
1928
|
|
|
1981
|
-
|
|
1982
|
-
|
|
1983
|
-
|
|
1929
|
+
"""
|
|
1930
|
+
This mutation deletes a customer. An authorization token is needed in the request, in order to be able to delete the customer.
|
|
1931
|
+
"""
|
|
1932
|
+
deleteCustomer: Boolean
|
|
1933
|
+
loginExternalCustomer(input: LoginExternalCustomerInput): LoginExternalCustomerResult
|
|
1984
1934
|
|
|
1985
|
-
"""
|
|
1986
|
-
|
|
1987
|
-
|
|
1935
|
+
"""
|
|
1936
|
+
LoginMutation will log a user in.
|
|
1937
|
+
One of email, pid, externalId, memberNumber or customerId is required, along with a password.
|
|
1938
|
+
Returns an authorization token if the login was successful.
|
|
1939
|
+
"""
|
|
1940
|
+
login(password: String, email: String, pid: String, externalId: String, memberNumber: String, externalHashId: String, timeStamp: String, customerId: Int): LoginResponse
|
|
1988
1941
|
|
|
1989
|
-
|
|
1990
|
-
|
|
1991
|
-
|
|
1992
|
-
|
|
1993
|
-
searchAutoComplete(term: String!): SearchAutoCompleteResult
|
|
1994
|
-
search(term: String!): SearchResult
|
|
1942
|
+
"""
|
|
1943
|
+
Requires a valid email and returns boolean value if successful, otherwise an error will be thrown
|
|
1944
|
+
"""
|
|
1945
|
+
requestPasswordReset(email: String!): RequestPasswordResetResult
|
|
1995
1946
|
|
|
1996
|
-
"""
|
|
1997
|
-
|
|
1998
|
-
|
|
1999
|
-
|
|
1947
|
+
"""
|
|
1948
|
+
Requires a valid resetPasswordToken and a new password and if successful will return a authentication token
|
|
1949
|
+
"""
|
|
1950
|
+
resetPassword(
|
|
1951
|
+
"""A reset password token that is solely used during a password reset"""
|
|
1952
|
+
resetPasswordToken: String!
|
|
1953
|
+
newPassword: String!
|
|
1954
|
+
): ResetPassword
|
|
2000
1955
|
|
|
2001
|
-
"""
|
|
2002
|
-
|
|
1956
|
+
"""
|
|
1957
|
+
The SignUp-mutation is used for creating a customer.
|
|
1958
|
+
|
|
1959
|
+
If the sign up is successful the customer may be considered to be logged on and an authentication token will be returned
|
|
1960
|
+
"""
|
|
1961
|
+
signUp(input: SignUpInput!): SignUpResponse
|
|
2003
1962
|
|
|
2004
1963
|
"""
|
|
2005
|
-
|
|
1964
|
+
## Description
|
|
1965
|
+
This mutation's purpose is to update a existing customer's group using an access code. An authorization token is needed in the request, in order to be able to update the customer.
|
|
1966
|
+
## Error Codes
|
|
1967
|
+
### Unauthorized
|
|
1968
|
+
Unauthorized
|
|
1969
|
+
### UnableToUpdateCustomer
|
|
1970
|
+
Error in underlying API call, more info may be contained in the error message.
|
|
1971
|
+
### CustomerAlreadyUpdated
|
|
1972
|
+
Customer already in the customer group
|
|
1973
|
+
### CustomerNotFound
|
|
1974
|
+
No match on customer with access code
|
|
1975
|
+
|
|
2006
1976
|
"""
|
|
2007
|
-
|
|
1977
|
+
updateCustomerGroup(customerGroupAccessCode: String!): UpdateCustomerGroupResult
|
|
2008
1978
|
|
|
2009
|
-
"""
|
|
2010
|
-
order
|
|
2011
|
-
|
|
2012
|
-
|
|
2013
|
-
orderId: ID
|
|
2014
|
-
): Order
|
|
1979
|
+
"""
|
|
1980
|
+
This mutation's purpose is to update an existing customer's information. An authorization token is needed in the request, in order to be able to update the customer.
|
|
1981
|
+
"""
|
|
1982
|
+
updateCustomer(input: CustomerUpdateInput!): CustomerUpdateResponse
|
|
2015
1983
|
|
|
2016
|
-
"""
|
|
2017
|
-
|
|
1984
|
+
"""
|
|
1985
|
+
This mutation's purpose is to update a existing customer's price list using an access code. An authorization token is needed in the request, in order to be able to update the customer.
|
|
1986
|
+
"""
|
|
1987
|
+
updateCustomerPriceList(priceListAccessCode: String!): UpdateCustomerPriceListResult
|
|
2018
1988
|
|
|
2019
|
-
"""
|
|
2020
|
-
|
|
2021
|
-
|
|
1989
|
+
"""
|
|
1990
|
+
The updatePassword mutation updates the customers password. Both the old password and a new password is a requirement.
|
|
1991
|
+
"""
|
|
1992
|
+
updatePassword(oldPassword: String!, newPassword: String!): UpdatePasswordResult
|
|
2022
1993
|
|
|
2023
|
-
"""
|
|
2024
|
-
|
|
1994
|
+
"""
|
|
1995
|
+
Adds products to the cart where you can add comments to the products and determine their quantities. Replies with the affected cart if a cartId has been presented, otherwise a new cart will be created.
|
|
1996
|
+
"""
|
|
1997
|
+
addMultipleToCart(
|
|
1998
|
+
"""Not specifying cart id will create new cart."""
|
|
1999
|
+
cartId: String
|
|
2000
|
+
items: [AddMultipleToCartInput]!
|
|
2001
|
+
): CartMutation
|
|
2025
2002
|
|
|
2026
|
-
"""
|
|
2027
|
-
|
|
2028
|
-
|
|
2003
|
+
"""
|
|
2004
|
+
Adds a product to the cart where you can add a comment to the product and determine the quantity. Replies with the affected cart if a cartId has been presented, otherwise a new cart will be created.
|
|
2005
|
+
"""
|
|
2006
|
+
addToCart(input: AddToCartInput!): CartMutation
|
|
2029
2007
|
|
|
2030
2008
|
"""
|
|
2031
|
-
|
|
2032
|
-
|
|
2033
|
-
Error codes: INVALID_VALUE (if `key` is null), ExternalCustomerLookupFailed
|
|
2009
|
+
This mutation is used to reduce the quantity of a product in the cart, replies with the affected cart ruled by the cartId in the input.
|
|
2034
2010
|
"""
|
|
2035
|
-
|
|
2011
|
+
decrementItemQuantity(input: ChangeByOneItemQuantityInput!): CartMutation
|
|
2036
2012
|
|
|
2037
|
-
"""
|
|
2038
|
-
|
|
2013
|
+
"""
|
|
2014
|
+
Used to add a specific quantity to a product in the cart. Replies with the affected cart ruled by the cartId in the input
|
|
2015
|
+
"""
|
|
2016
|
+
setItemQuantity(input: SetItemQuantityInput!): CartMutation
|
|
2039
2017
|
|
|
2040
2018
|
"""
|
|
2041
|
-
|
|
2042
|
-
In the case of filtering by ids, not found content Ids are listed as well.
|
|
2019
|
+
This mutation is used to increase the quantity of a product in the cart, replies with the affected cart ruled by the cartId in the input
|
|
2043
2020
|
"""
|
|
2044
|
-
|
|
2045
|
-
|
|
2046
|
-
"""get channel by id, null gets default channel"""
|
|
2047
|
-
channel(id: String): Channel
|
|
2021
|
+
incrementItemQuantity(input: ChangeByOneItemQuantityInput!): CartMutation
|
|
2048
2022
|
|
|
2049
|
-
"""
|
|
2050
|
-
|
|
2023
|
+
"""Removes a specific product in the cart, replies with the affected cart"""
|
|
2024
|
+
removeFromCart(input: RemoveFromCartInput!): CartMutation
|
|
2051
2025
|
|
|
2052
|
-
"""
|
|
2053
|
-
|
|
2054
|
-
"""category id of root parent, null or omit means all"""
|
|
2055
|
-
root: Int
|
|
2026
|
+
"""Removes specific items from the cart, replies with the affected cart"""
|
|
2027
|
+
removeMultipleFromCart(input: RemoveMultipleFromCartInput!): CartMutation
|
|
2056
2028
|
|
|
2057
|
-
|
|
2058
|
-
|
|
2059
|
-
|
|
2060
|
-
levels: Int = 1
|
|
2029
|
+
"""Responds with the affected cart."""
|
|
2030
|
+
updateCart(input: UpdateCartInput!): UpdateCartMutation
|
|
2031
|
+
}
|
|
2061
2032
|
|
|
2062
|
-
|
|
2063
|
-
|
|
2064
|
-
): [Category]!
|
|
2033
|
+
type CustomerProductListResult {
|
|
2034
|
+
success: Boolean
|
|
2065
2035
|
|
|
2066
|
-
"""
|
|
2067
|
-
|
|
2068
|
-
|
|
2036
|
+
"""
|
|
2037
|
+
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
2038
|
+
"""
|
|
2039
|
+
customerProductList: CustomerProductList
|
|
2069
2040
|
}
|
|
2070
2041
|
|
|
2071
|
-
input
|
|
2072
|
-
|
|
2073
|
-
|
|
2074
|
-
|
|
2042
|
+
input AddToCustomerProductListInput {
|
|
2043
|
+
articleNumber: String!
|
|
2044
|
+
quantity: Int = 1
|
|
2045
|
+
description: String
|
|
2075
2046
|
}
|
|
2076
2047
|
|
|
2077
|
-
|
|
2078
|
-
"""
|
|
2079
|
-
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
): [Product]
|
|
2083
|
-
|
|
2084
|
-
"""Customers who viewed this product also viewed these products."""
|
|
2085
|
-
viewed(
|
|
2086
|
-
"""number of recommended products to fetch"""
|
|
2087
|
-
count: Int = 4
|
|
2088
|
-
): [Product]
|
|
2089
|
-
|
|
2090
|
-
"""A shuffled top list of popular products."""
|
|
2091
|
-
shuffledToplist(
|
|
2092
|
-
"""number of recommended products to fetch"""
|
|
2093
|
-
count: Int = 4
|
|
2094
|
-
): [Product]
|
|
2048
|
+
input CreateCustomerProductListInput {
|
|
2049
|
+
"""The type of list created. Omit this and the default type will be used."""
|
|
2050
|
+
typeId: Int
|
|
2051
|
+
name: String!
|
|
2052
|
+
description: String
|
|
2095
2053
|
}
|
|
2096
2054
|
|
|
2097
|
-
|
|
2098
|
-
|
|
2099
|
-
itemId: String!
|
|
2055
|
+
type DeleteCustomerProductListResult {
|
|
2056
|
+
success: Boolean
|
|
2100
2057
|
}
|
|
2101
2058
|
|
|
2102
|
-
input
|
|
2103
|
-
|
|
2104
|
-
|
|
2059
|
+
input UpdateCustomerProductListItemInput {
|
|
2060
|
+
id: ID!
|
|
2061
|
+
articleNumber: String!
|
|
2062
|
+
|
|
2063
|
+
"""Default value is 1."""
|
|
2064
|
+
quantity: Int
|
|
2065
|
+
description: String
|
|
2105
2066
|
}
|
|
2106
2067
|
|
|
2107
|
-
|
|
2108
|
-
|
|
2068
|
+
input UpdateCustomerProductListInput {
|
|
2069
|
+
id: ID!
|
|
2070
|
+
typeId: ID!
|
|
2071
|
+
name: String!
|
|
2072
|
+
description: String
|
|
2109
2073
|
}
|
|
2110
2074
|
|
|
2111
|
-
type
|
|
2112
|
-
|
|
2075
|
+
type ActivateExternalCustomerByIdResult {
|
|
2076
|
+
success: Boolean!
|
|
2077
|
+
token: Token
|
|
2113
2078
|
}
|
|
2114
2079
|
|
|
2115
2080
|
"""
|
|
2116
|
-
|
|
2081
|
+
Authorization token that is used for customer actions such as login, delete or update
|
|
2082
|
+
The token contains three different roles:
|
|
2083
|
+
0: Standard.
|
|
2084
|
+
1: Lite
|
|
2085
|
+
2: VoyadoSemiLogin
|
|
2117
2086
|
"""
|
|
2118
|
-
type
|
|
2119
|
-
|
|
2120
|
-
|
|
2121
|
-
canonicalPath: String
|
|
2122
|
-
slug: String!
|
|
2123
|
-
|
|
2124
|
-
"""
|
|
2125
|
-
The Category, Product, Page or StartPage that the Route resolves to. NB:
|
|
2126
|
-
Carries a performance cost, as asking for this will result in a separate API
|
|
2127
|
-
call in the backend.
|
|
2128
|
-
"""
|
|
2129
|
-
object: Document
|
|
2130
|
-
|
|
2131
|
-
"""
|
|
2132
|
-
Parents are resolved by traversing the path, starting from the end, and are
|
|
2133
|
-
guaranteed to be returned in that order. NB: Carries a performance cost, as
|
|
2134
|
-
asking for this will result in a different, slightly more expensive (the more
|
|
2135
|
-
categories a shop has, the more expensive this gets), route query in the backend.
|
|
2136
|
-
"""
|
|
2137
|
-
parents: [Route]
|
|
2087
|
+
type Token {
|
|
2088
|
+
value: String!
|
|
2089
|
+
}
|
|
2138
2090
|
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2142
|
-
"""
|
|
2143
|
-
alternateRoutes: [AlternateRoute]
|
|
2091
|
+
input ActivateExternalCustomerByIdInput {
|
|
2092
|
+
externalCustomerId: String!
|
|
2093
|
+
}
|
|
2144
2094
|
|
|
2145
|
-
|
|
2146
|
-
|
|
2095
|
+
type ActivateExternalCustomerByTokenResult {
|
|
2096
|
+
success: Boolean!
|
|
2097
|
+
customer: ExternalCustomer
|
|
2098
|
+
}
|
|
2147
2099
|
|
|
2148
|
-
|
|
2149
|
-
|
|
2100
|
+
input ActivateExternalCustomerByTokenInput {
|
|
2101
|
+
externalCustomerToken: String!
|
|
2150
2102
|
}
|
|
2151
2103
|
|
|
2152
|
-
type
|
|
2153
|
-
|
|
2154
|
-
|
|
2155
|
-
"""
|
|
2156
|
-
products: ProductAutoCompleteResult
|
|
2104
|
+
type LoginExternalCustomerResult {
|
|
2105
|
+
token: Token
|
|
2106
|
+
}
|
|
2157
2107
|
|
|
2158
|
-
|
|
2159
|
-
|
|
2160
|
-
"""
|
|
2161
|
-
categories(first: Paging = 12): CategoryAutoCompleteResult
|
|
2108
|
+
input LoginExternalCustomerInput {
|
|
2109
|
+
externalCustomerToken: String!
|
|
2162
2110
|
}
|
|
2163
2111
|
|
|
2164
|
-
|
|
2165
|
-
|
|
2112
|
+
"""
|
|
2113
|
+
The response will contain a authorization token if the login was successful
|
|
2114
|
+
"""
|
|
2115
|
+
type LoginResponse {
|
|
2116
|
+
token: Token!
|
|
2117
|
+
}
|
|
2166
2118
|
|
|
2167
|
-
|
|
2168
|
-
|
|
2169
|
-
"""
|
|
2170
|
-
categories(paging: PagingInput = {first: 12, offset: 0}): CategorySearchResult
|
|
2119
|
+
type RequestPasswordResetResult {
|
|
2120
|
+
success: Boolean!
|
|
2171
2121
|
}
|
|
2172
2122
|
|
|
2173
|
-
type
|
|
2174
|
-
|
|
2175
|
-
option: SelectedProductConfigurationOption!
|
|
2123
|
+
type ResetPassword {
|
|
2124
|
+
token: Token!
|
|
2176
2125
|
}
|
|
2177
2126
|
|
|
2178
|
-
type
|
|
2179
|
-
|
|
2180
|
-
name: String
|
|
2127
|
+
type SignUpResponse {
|
|
2128
|
+
token: Token!
|
|
2181
2129
|
}
|
|
2182
2130
|
|
|
2183
|
-
input
|
|
2184
|
-
|
|
2185
|
-
|
|
2186
|
-
|
|
2131
|
+
input SignUpInput {
|
|
2132
|
+
type: CustomerType!
|
|
2133
|
+
pid: String
|
|
2134
|
+
organizationNumber: String
|
|
2135
|
+
emailAddress: String!
|
|
2136
|
+
password: String
|
|
2137
|
+
|
|
2138
|
+
"""Customer id for external system"""
|
|
2139
|
+
externalId: String
|
|
2140
|
+
billingAddress: SignUpBillingAddressInput!
|
|
2141
|
+
deliveryAddresses: [SignUpDeliveryAddressInput]
|
|
2142
|
+
preferences: SignUpPreferencesInput
|
|
2143
|
+
consents: [SignUpConsentInput]
|
|
2144
|
+
externalAttributes: [SignUpExternalAttribute]
|
|
2145
|
+
dynamicContent: String
|
|
2146
|
+
priceListAccessCode: String
|
|
2187
2147
|
}
|
|
2188
2148
|
|
|
2189
|
-
|
|
2190
|
-
|
|
2191
|
-
|
|
2192
|
-
"""
|
|
2193
|
-
freeShippingLimit: FreeShippingLimit
|
|
2149
|
+
enum CustomerType {
|
|
2150
|
+
PRIVATE
|
|
2151
|
+
COMPANY
|
|
2194
2152
|
}
|
|
2195
2153
|
|
|
2196
2154
|
"""
|
|
2197
|
-
BillingAddress itself is a required field. Whether fields belonging to
|
|
2198
|
-
BillingAddress are required is determined by privateCustomerFields or
|
|
2199
|
-
businessCustomerFields, found on channel.settings.countrySettings.
|
|
2155
|
+
BillingAddress itself is a required field. Whether fields belonging to BillingAddress are required is determined by privateCustomerFields or businessCustomerFields, found on channel.settings.countrySettings.
|
|
2200
2156
|
"""
|
|
2201
2157
|
input SignUpBillingAddressInput {
|
|
2202
2158
|
mobilePhone: SignUpPropertyInput
|
|
@@ -2215,12 +2171,86 @@ input SignUpBillingAddressInput {
|
|
|
2215
2171
|
firstName: SignUpPropertyInput
|
|
2216
2172
|
}
|
|
2217
2173
|
|
|
2218
|
-
|
|
2219
|
-
|
|
2220
|
-
|
|
2174
|
+
"""
|
|
2175
|
+
This input is used for fields that can be auto filled with PersonLookup
|
|
2176
|
+
"""
|
|
2177
|
+
input SignUpPropertyInput {
|
|
2178
|
+
"""
|
|
2179
|
+
If the user has made no change this should contain the encrypted value from PersonLookup, otherwise populate with the user input.
|
|
2180
|
+
"""
|
|
2181
|
+
value: String
|
|
2182
|
+
|
|
2183
|
+
"""Specifies if the value field is encrypted or not."""
|
|
2184
|
+
hasChanged: Boolean
|
|
2185
|
+
}
|
|
2186
|
+
|
|
2187
|
+
input SignUpDeliveryAddressInput {
|
|
2188
|
+
mobilePhone: String
|
|
2189
|
+
phone: String
|
|
2190
|
+
region: String
|
|
2191
|
+
countryCode: String
|
|
2192
|
+
city: String
|
|
2193
|
+
postalCode: String
|
|
2194
|
+
streetName: String
|
|
2195
|
+
co: String
|
|
2196
|
+
department: String
|
|
2197
|
+
municipality: String
|
|
2198
|
+
companyAtt: String
|
|
2199
|
+
company: String
|
|
2200
|
+
lastName: String
|
|
2201
|
+
firstName: String
|
|
2202
|
+
addressName: String
|
|
2203
|
+
}
|
|
2204
|
+
|
|
2205
|
+
input SignUpPreferencesInput {
|
|
2206
|
+
type: SignUpPreferencesCommunicationInput
|
|
2207
|
+
storeLocationId: Int
|
|
2208
|
+
}
|
|
2209
|
+
|
|
2210
|
+
input SignUpPreferencesCommunicationInput {
|
|
2211
|
+
acceptsEmail: Boolean
|
|
2212
|
+
acceptsPostal: Boolean
|
|
2213
|
+
acceptsSms: Boolean
|
|
2214
|
+
culture: String
|
|
2215
|
+
}
|
|
2216
|
+
|
|
2217
|
+
input SignUpConsentInput {
|
|
2218
|
+
id: String
|
|
2219
|
+
value: Boolean
|
|
2220
|
+
}
|
|
2221
|
+
|
|
2222
|
+
input SignUpExternalAttribute {
|
|
2223
|
+
name: String!
|
|
2224
|
+
value: String!
|
|
2225
|
+
}
|
|
2226
|
+
|
|
2227
|
+
type UpdateCustomerGroupResult {
|
|
2228
|
+
success: Boolean!
|
|
2229
|
+
}
|
|
2230
|
+
|
|
2231
|
+
"""
|
|
2232
|
+
Responds with a bool value whether the update has been successful or not
|
|
2233
|
+
"""
|
|
2234
|
+
type CustomerUpdateResponse {
|
|
2235
|
+
success: Boolean!
|
|
2236
|
+
}
|
|
2237
|
+
|
|
2238
|
+
input CustomerUpdateInput {
|
|
2239
|
+
pid: String
|
|
2240
|
+
emailAddress: String
|
|
2241
|
+
organizationNumber: String
|
|
2242
|
+
billingAddress: CustomerUpdateBillingAddressInput!
|
|
2243
|
+
deliveryAddresses: [CustomerUpdateDeliveryAddressInput]
|
|
2244
|
+
preferences: CustomerUpdatePreferenceInput
|
|
2245
|
+
consents: [CustomerUpdateConsentInput]
|
|
2246
|
+
externalAttributes: [CustomerUpdateExternalAttribute]
|
|
2247
|
+
dynamicContent: String
|
|
2221
2248
|
}
|
|
2222
2249
|
|
|
2223
|
-
|
|
2250
|
+
"""
|
|
2251
|
+
Fields that are required to have a value is determined by CustomerFields found in CountrySettings
|
|
2252
|
+
"""
|
|
2253
|
+
input CustomerUpdateBillingAddressInput {
|
|
2224
2254
|
mobilePhone: String
|
|
2225
2255
|
phone: String
|
|
2226
2256
|
region: String
|
|
@@ -2238,220 +2268,123 @@ input SignUpDeliveryAddressInput {
|
|
|
2238
2268
|
addressName: String
|
|
2239
2269
|
}
|
|
2240
2270
|
|
|
2241
|
-
input
|
|
2242
|
-
|
|
2243
|
-
|
|
2271
|
+
input CustomerUpdateDeliveryAddressInput {
|
|
2272
|
+
"""If this field is left empty, a new DeliveryAddress will be created."""
|
|
2273
|
+
id: Int
|
|
2274
|
+
mobilePhone: String
|
|
2275
|
+
phone: String
|
|
2276
|
+
region: String
|
|
2277
|
+
countryCode: String
|
|
2278
|
+
city: String
|
|
2279
|
+
postalCode: String
|
|
2280
|
+
streetName: String
|
|
2281
|
+
co: String
|
|
2282
|
+
department: String
|
|
2283
|
+
municipality: String
|
|
2284
|
+
companyAtt: String
|
|
2285
|
+
company: String
|
|
2286
|
+
lastName: String
|
|
2287
|
+
firstName: String
|
|
2288
|
+
addressName: String
|
|
2244
2289
|
}
|
|
2245
2290
|
|
|
2246
|
-
input
|
|
2247
|
-
type:
|
|
2248
|
-
|
|
2249
|
-
organizationNumber: String
|
|
2250
|
-
emailAddress: String!
|
|
2251
|
-
password: String
|
|
2252
|
-
|
|
2253
|
-
"""Customer id for external system"""
|
|
2254
|
-
externalId: String
|
|
2255
|
-
billingAddress: SignUpBillingAddressInput!
|
|
2256
|
-
deliveryAddresses: [SignUpDeliveryAddressInput]
|
|
2257
|
-
preferences: SignUpPreferencesInput
|
|
2258
|
-
consents: [SignUpConsentInput]
|
|
2259
|
-
externalAttributes: [SignUpExternalAttribute]
|
|
2260
|
-
dynamicContent: String
|
|
2261
|
-
priceListAccessCode: String
|
|
2291
|
+
input CustomerUpdatePreferenceInput {
|
|
2292
|
+
type: CustomerUpdatePreferencesCommunicationInput
|
|
2293
|
+
storeLocationId: Int
|
|
2262
2294
|
}
|
|
2263
2295
|
|
|
2264
|
-
input
|
|
2296
|
+
input CustomerUpdatePreferencesCommunicationInput {
|
|
2265
2297
|
acceptsEmail: Boolean
|
|
2266
2298
|
acceptsPostal: Boolean
|
|
2267
2299
|
acceptsSms: Boolean
|
|
2268
2300
|
culture: String
|
|
2269
2301
|
}
|
|
2270
2302
|
|
|
2271
|
-
input
|
|
2272
|
-
|
|
2273
|
-
|
|
2274
|
-
}
|
|
2275
|
-
|
|
2276
|
-
"""
|
|
2277
|
-
This input is used for fields that can be auto filled with PersonLookup
|
|
2278
|
-
"""
|
|
2279
|
-
input SignUpPropertyInput {
|
|
2280
|
-
"""
|
|
2281
|
-
If the user has made no change this should contain the encrypted value from
|
|
2282
|
-
PersonLookup, otherwise populate with the user input.
|
|
2283
|
-
"""
|
|
2284
|
-
value: String
|
|
2285
|
-
|
|
2286
|
-
"""Specifies if the value field is encrypted or not."""
|
|
2287
|
-
hasChanged: Boolean
|
|
2288
|
-
}
|
|
2289
|
-
|
|
2290
|
-
type SignUpResponse {
|
|
2291
|
-
token: Token!
|
|
2292
|
-
}
|
|
2293
|
-
|
|
2294
|
-
enum SortDirection {
|
|
2295
|
-
ASCENDING
|
|
2296
|
-
DESCENDING
|
|
2303
|
+
input CustomerUpdateConsentInput {
|
|
2304
|
+
id: String
|
|
2305
|
+
value: Boolean
|
|
2297
2306
|
}
|
|
2298
2307
|
|
|
2299
|
-
|
|
2300
|
-
id: Int!
|
|
2308
|
+
input CustomerUpdateExternalAttribute {
|
|
2301
2309
|
name: String!
|
|
2302
|
-
|
|
2303
|
-
isActive: Boolean
|
|
2304
|
-
content: String
|
|
2305
|
-
items: [StartPageItem]
|
|
2306
|
-
|
|
2307
|
-
"""
|
|
2308
|
-
NB: Carries a performance cost, as asking for this will result in a separate API call in the backend.
|
|
2309
|
-
"""
|
|
2310
|
-
head: HtmlHead
|
|
2311
|
-
|
|
2312
|
-
"""The primary route of this StartPage"""
|
|
2313
|
-
primaryRoute: Route
|
|
2314
|
-
breadcrumbText: String
|
|
2315
|
-
|
|
2316
|
-
"""
|
|
2317
|
-
Get content data set via the Content Editor. NB: Carries a performance cost,
|
|
2318
|
-
as asking for this will result in a separate API call in the backend.
|
|
2319
|
-
"""
|
|
2320
|
-
data: Content
|
|
2321
|
-
}
|
|
2322
|
-
|
|
2323
|
-
type StartPageItem {
|
|
2324
|
-
id: Int!
|
|
2325
|
-
row: Int
|
|
2326
|
-
column: Int
|
|
2327
|
-
item: StartPageItemObject!
|
|
2328
|
-
}
|
|
2329
|
-
|
|
2330
|
-
union StartPageItemObject = Product | CustomItem
|
|
2331
|
-
|
|
2332
|
-
type StockStatus {
|
|
2333
|
-
"""Globally unique id."""
|
|
2334
|
-
id: ID!
|
|
2335
|
-
|
|
2336
|
-
"""The stock status id, not globally unique."""
|
|
2337
|
-
stockStatusId: ID!
|
|
2338
|
-
text: String
|
|
2339
|
-
buyable: Boolean!
|
|
2340
|
-
stockNotificationEnabled: Boolean
|
|
2341
|
-
stockDate: DateTime
|
|
2342
|
-
maxOrderQuantity: Int
|
|
2343
|
-
}
|
|
2344
|
-
|
|
2345
|
-
type Store {
|
|
2346
|
-
id: Int!
|
|
2347
|
-
externalId: String
|
|
2348
|
-
name: String
|
|
2349
|
-
city: String
|
|
2350
|
-
region: String
|
|
2351
|
-
address1: String
|
|
2352
|
-
address2: String
|
|
2353
|
-
description: String
|
|
2354
|
-
other: String
|
|
2355
|
-
openHours: String
|
|
2356
|
-
contact: String
|
|
2357
|
-
coordinates: Coordinates
|
|
2310
|
+
value: String!
|
|
2358
2311
|
}
|
|
2359
2312
|
|
|
2360
|
-
type
|
|
2361
|
-
|
|
2313
|
+
type UpdateCustomerPriceListResult {
|
|
2314
|
+
success: Boolean!
|
|
2362
2315
|
}
|
|
2363
2316
|
|
|
2364
2317
|
"""
|
|
2365
|
-
|
|
2366
|
-
The token contains three different roles:
|
|
2367
|
-
0: Standard.
|
|
2368
|
-
1: Lite
|
|
2369
|
-
2: VoyadoSemiLogin
|
|
2318
|
+
Responds with a boolean value whether the update has been successful or not
|
|
2370
2319
|
"""
|
|
2371
|
-
type
|
|
2372
|
-
|
|
2320
|
+
type UpdatePasswordResult {
|
|
2321
|
+
success: Boolean!
|
|
2373
2322
|
}
|
|
2374
2323
|
|
|
2375
|
-
type
|
|
2376
|
-
|
|
2377
|
-
ga4: GoogleAnalytics4
|
|
2378
|
-
gtm: GoogleTagManager
|
|
2379
|
-
fca: FacebookConversionsApi
|
|
2324
|
+
type CartMutation {
|
|
2325
|
+
cart: Cart
|
|
2380
2326
|
}
|
|
2381
2327
|
|
|
2382
|
-
input
|
|
2383
|
-
|
|
2384
|
-
items: [UpdateCartItemInput!]
|
|
2385
|
-
}
|
|
2328
|
+
input AddMultipleToCartInput {
|
|
2329
|
+
articleNumber: String!
|
|
2386
2330
|
|
|
2387
|
-
|
|
2388
|
-
|
|
2389
|
-
quantity: Int! = 1
|
|
2331
|
+
"""Default value is 1."""
|
|
2332
|
+
quantity: Int
|
|
2390
2333
|
comments: [InputComment]
|
|
2334
|
+
configurationIds: [ID]
|
|
2391
2335
|
preOrderDate: DateTime
|
|
2392
2336
|
}
|
|
2393
2337
|
|
|
2394
|
-
|
|
2395
|
-
cart: Cart
|
|
2396
|
-
}
|
|
2397
|
-
|
|
2398
|
-
type UpdateCustomerGroupResult {
|
|
2399
|
-
success: Boolean!
|
|
2400
|
-
}
|
|
2401
|
-
|
|
2402
|
-
type UpdateCustomerPriceListResult {
|
|
2403
|
-
success: Boolean!
|
|
2404
|
-
}
|
|
2405
|
-
|
|
2406
|
-
input UpdateCustomerProductListInput {
|
|
2407
|
-
id: ID!
|
|
2408
|
-
typeId: ID!
|
|
2338
|
+
input InputComment {
|
|
2409
2339
|
name: String!
|
|
2410
|
-
|
|
2340
|
+
value: String
|
|
2411
2341
|
}
|
|
2412
2342
|
|
|
2413
|
-
input
|
|
2414
|
-
id
|
|
2343
|
+
input AddToCartInput {
|
|
2344
|
+
"""Not specifying cart id will create new cart."""
|
|
2345
|
+
cartId: String
|
|
2415
2346
|
articleNumber: String!
|
|
2416
2347
|
|
|
2417
2348
|
"""Default value is 1."""
|
|
2418
2349
|
quantity: Int
|
|
2419
|
-
|
|
2350
|
+
comments: [InputComment]
|
|
2351
|
+
configurationIds: [ID]
|
|
2352
|
+
preOrderDate: DateTime
|
|
2420
2353
|
}
|
|
2421
2354
|
|
|
2422
|
-
|
|
2423
|
-
|
|
2424
|
-
|
|
2425
|
-
type UpdatePasswordResult {
|
|
2426
|
-
success: Boolean!
|
|
2355
|
+
input ChangeByOneItemQuantityInput {
|
|
2356
|
+
cartId: String!
|
|
2357
|
+
itemId: String!
|
|
2427
2358
|
}
|
|
2428
2359
|
|
|
2429
|
-
|
|
2430
|
-
|
|
2431
|
-
|
|
2360
|
+
input SetItemQuantityInput {
|
|
2361
|
+
cartId: String!
|
|
2362
|
+
itemId: String!
|
|
2363
|
+
quantity: Int!
|
|
2432
2364
|
}
|
|
2433
2365
|
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
2437
|
-
percentage: Decimal!
|
|
2366
|
+
input RemoveFromCartInput {
|
|
2367
|
+
cartId: String!
|
|
2368
|
+
itemId: String!
|
|
2438
2369
|
}
|
|
2439
2370
|
|
|
2440
|
-
|
|
2441
|
-
|
|
2442
|
-
|
|
2443
|
-
valueVat: Decimal!
|
|
2371
|
+
input RemoveMultipleFromCartInput {
|
|
2372
|
+
cartId: String!
|
|
2373
|
+
itemIds: [String!]!
|
|
2444
2374
|
}
|
|
2445
2375
|
|
|
2446
|
-
type
|
|
2447
|
-
|
|
2448
|
-
minQuantity: Int!
|
|
2449
|
-
discount: UpsellDiscount!
|
|
2376
|
+
type UpdateCartMutation {
|
|
2377
|
+
cart: Cart
|
|
2450
2378
|
}
|
|
2451
2379
|
|
|
2452
|
-
|
|
2380
|
+
input UpdateCartInput {
|
|
2381
|
+
cartId: String
|
|
2382
|
+
items: [UpdateCartItemInput!]
|
|
2383
|
+
}
|
|
2453
2384
|
|
|
2454
|
-
|
|
2455
|
-
|
|
2456
|
-
|
|
2385
|
+
input UpdateCartItemInput {
|
|
2386
|
+
id: String!
|
|
2387
|
+
quantity: Int! = 1
|
|
2388
|
+
comments: [InputComment]
|
|
2389
|
+
preOrderDate: DateTime
|
|
2457
2390
|
}
|